• 沒有找到結果。

圖 46、John、Johnson 以及 TOM 的衍生關聯

關連是否具有遞移性,無法從關聯的組合方式直接推論,必需審視衍生關聯是否具有 意義。並非所有的衍生關聯都具有遞移性。假設,衍生關聯不具有遞移性,就有可能會產 生錯誤或是不合理的資料。

本研究對於上述的衍生關聯是否具有遞移性,進行研究,並提出數種具有遞移性關聯 的特性:

(1) Composition

例如圖 47 中,汽車是由各種模組裝置組合而成;也可以將汽車視為由許多更小的 零件所構成。

圖 47、汽車與零件的 Composition 衍生關聯

(2) Inheritance

John Johnson 父子關聯

Johnson L.

父子關聯

親族關聯

John Johnson 父子關聯

TOM 同事關聯

?

例如圖 48 中,汽車繼承車的特性且混合動力油汽車繼承汽車的特性,混合動力汽 車必定繼承車的特性。

圖 48、車子種類間的 Inheritance 衍生關聯

(3) Generalization/Specification

例如圖 49 中,某一銷售網站網頁資料分類方式,是以產品種類由大而小進行切割。大 的產品種類中包含許多較小的產品種類。例如電子產品包含電視類的產品、電話類的產品 等。而電視類產品又包含各種不同廠牌的產品。

圖 49、產品種類間的 Generalization/Specification 衍生關聯

網站資料匯整

萃取不同網站的資料,是 Web 資料管理的一件非常重要工作。例如,消費者想要在購 買商品之前,先從不同的銷售網站,取得產品銷售資訊。進行規格及售價上的比較。為了 方便進行比較的工作,往往需要整合這些萃取資料到同一組資料表。在 BODE 系統中,可 使用兩種方式來完成:

(1) 在萃取網站網頁資料的時候,將來自不同網站的萃取資料,直接存入同一組資料類 別。並且以不同的 DOMAIN 來區分來自不同網站的網頁內容。此一方式較適用於結 構相似的網站。

例如,圖 50、圖 51、圖 52 三個不同網站,因為三個不同網站的結構及資料內容大致 相符;如果想要整合來自 A、B、C 三個不同網站的產品資訊,可以採用第一種方式。

首先是聯合三個不同網站的資料項目,定義共用的資料類別,圖 53 為其示意圖。接著 是針對不同的網頁,撰寫個別的 BODED script 及描述個別的資料對應方式,並且指定個別

的 DOMAIN,區別不同的資料來源。

最後是執行個別的 BODED script,萃取不同網站的產品資訊儲存到資料庫中。圖 54 為使用此方式整合不同網站資料的示意圖。

</TABLE>

圖 52、Web_C.html

圖 53、聯合來自不同的網站的資料欄位型成資料類別

圖 54、整合不同網站資料的示意圖

(2) 先將網站網頁資料萃取出來,並且將來自不同網站的萃取資料,存入個別的資料表 中。接者再將萃取的網站資料匯整到共同資料表。也就是說,我們可以用 CCMDL 來 描述資料整合作業,然後交一般化的資料整合系統來完成。

在撰寫 CCMDL 之前,我們要進行網頁資料的結構分析。找出網頁資料的結構特性,

判斷是否適合用 BODE 資料轉換語言進行資料匯整。

假設,有一 BODE 的使用者,要進行筆記型電腦的比價,並且以名人購物網(MREN),

順發以及燦坤等銷售網站,作為商品資訊的來源。首先,要先針對網頁資料的結構進行分 析。

以上述網站為例,名人購物網(MREN)的階層結構如圖 55。順發購物網(SUNFAR)的階

層結構如圖 56。燦坤購物網(TKEC)的階層結構如圖 57。

圖 55、名人購物網(MREN)的階層結構

圖 56、順發購物網(SUNFAR)的階層結構

圖 57、燦坤購物網(TKEC)的階層結構

根據以上的網站的結構分析,可以發現以上三個網站的網頁結構都具備 Specification 的特性,資料的衍生關聯具有遞移性,也就是名人購物網(MREN),順發(SUNFAR)以及燦 坤(TKEC)等銷售網站的網頁資料,適合用 BODE 資料轉換語言進行資料重組。

依據網站的結構以及資料內容,分別定義以上三個網站使用的資料類別。名人購物網 (MREN)的資料類別定義如圖 58。順發(SUNFQAR) 銷售網站的資料類別定義如圖 59。燦 坤(TKEC)銷售網站的資料類別定義如圖 60:

<CLASS name="MREN_PRODUCT_MAINCAT" key="CATEGORY" >

<FIELD name="CATEGORY" type="STRING" length="32" />

</CLASS>

<CLASS name="MREN_PRODUCT_2NDCAT" key="CATEGORY" >

<FIELD name="CATEGORY" type="STRING" length="32" />

</CLASS>

<CLASS name="MREN_PRODUCT_3THCAT" key="PRODUCT_TYPE, PRODUCER">

<FIELD name="PRODUCT_TYPE" type="STRING" length="32" />

<FIELD name="PRODUCER" type="STRING" length="64" />

</CLASS>

<CLASS name="MREN_PRODUCT" key ="PRODUCT_SN” >

<FIELD name="PRODUCT_SN" type="STRING" length="64" />

<FIELD name="PRODUCT_TYPE" type="STRING" length="32" />

<FIELD name="PRICE" type="NUM,BER" length="7" />

</CLASS>

圖 58、名人(MREN)購物網的資料類別定義

<CLASS name="SUNFAR_PRODUCT_MAINCAT" key="TITLE">

<FIELD name="CATEGORY" type="STRING" length="32" />

</CLASS>

<CLASS name="SUNFAR_PRODUCT_2NDCAT" key="TITLE">

<FIELD name="CATEGORY" type="STRING" length="32" />

</CLASS>

<CLASS name="SUNFAR_PRODUCT_3THCAT" key="TITLE">

<FIELD name="PRODUCT_TYPE" type="STRING" length="32" />

<FIELD name="PRODUCER" type="STRING" length="64" />

</CLASS>

<CLASS name="SUNFAR_PRODUCT" key="PRODUCT_NO">

<FIELD name="PRODUCT_TYPE" type="STRING" length="32" />

<FIELD name="PRODUCT_NO" type="STRING" length="64" />

<FIELD name="PRICE" type="NUMBER" length="7" />

</CLASS>

圖 59、順發(SUNFQAR) 銷售網站的資料類別定義

<CLASS name="TKEC_PRODUCT_MAINCAT" key="CATEGORY">

<FIELD name="CATEGORY" type="STRING" length="32" />

</CLASS>

<CLASS name="TKEC_PRODUCT_SUBCAT" key="PRODUCT_TYPE">

<FIELD name="PRODUCT_TYPE" type="STRING" length="32" />

</CLASS>

<CLASS name="TKEC_PRODUCT">

<FIELD name="PRODUCT_NAME" type="STRING" length="64" />

<FIELD name="PRODUCT_TYPE" type="STRING" length="32" />

<FIELD name="PRICE" type="NUM,BER" length="7" />

</CLASS>

圖 60、燦坤(TKEC) 銷售網站的資料類別定義

經由 BODE Scrip 萃取名人購物網(MREN),順發(SUNFQAR)以及燦坤(TKEC)等三個 銷售網站的資料之後,BODE 系統便會將萃取所得的資料存入資料庫中。

但是,為了要進行比價,使用者必需匯整資料。於是,定義了一個匯整資料的類別。

其定義如圖 61。且其架構如圖 62。

<CLASS name="PRODUCT_TYPE" key="PRODUCER,TYPE">

<FIELD name="PRODUCER" type="STRING" length="64" />

<FIELD name="TYPE" type="STRING" length="64" />

</CLASS>

<CLASS name="PRODUCT" key="SN">

<FIELD name="SN" type="STRING" length="64" />

<FIELD name="PRICE" type="NUM,BER" length="7" />

</CLASS>

圖 61、名人、順發與燦坤網站資料匯整的資料類別定義

圖 62、名人、順發與燦坤網站資料匯整的資料類別架構

接著是,利用資料轉換語言,將名人購物網(MREN),順發(SUNFAR)以及燦坤(TKEC) 等銷售網站的資料,匯入匯整資料的類別。其示意圖如圖 63。

圖 63、將名人、順發與燦坤網站資料匯整到匯整資料類別示意圖

為了要讓來自不同來源的資料能夠並存,資料轉換語言將以 AGGREGATION 模式轉換 資料。名人(MREN)購物網的資料轉換程式如圖 64。順發(SUNFAR)銷售網站的資料轉換程 式如圖 65。燦坤(TKEC) 銷售網站的資料轉換程式如圖 66。

<TRANSLATIONS>

<TRANSLATION mode="AGGREGATION">

<SOURCE>

<CLASS>MREN_PRODUCT_MAINCAT</CLASS>

<CLASS>MREN_PRODUCT_2NDCAT</CLASS>

<CLASS>MREN_PRODUCT_3THCAT</CLASS>

<CLASS>MREN_PRODUCT_PRODUCT</CLASS>

<RELATION>MREN_PRODUCT_MAINCAT,MREN_PRODUCT_2NDCAT</RELATION>

<RELATION> MREN_PRODUCT_2NDCAT, MREN_PRODUCT_3THCAT </RELATION>

<RELATION> MREN_PRODUCT_3THCAT, MREN_PRODUCT_PRODUCT </RELATION>

</SOURCE>

<CLASS name="PRODUCT_TYPE" mode="PREEMPT">

<FIELD field="PRODUCER" value="MREN_PRODUCT_3THCAT.PRODUCER" />

<FIELD field="TYPE" value="MREN_PRODUCT.PRODUCT_TYPE" />

</CLASS>

<CLASS name="PRODUCT" mode="PREEMPT">

<FIELD field="SN" value="MREN_PRODUCT.PRODUCT_SN" />

<FIELD field="PRICE" value="MREN_PRODUCT.PRICE" />

</CLASS>

<CLASS>SUNFAR_PRODUCT_MAINCAT</CLASS>

<CLASS>SUNFAR_PRODUCT_2NDCAT</CLASS>

<CLASS>SUNFAR_PRODUCT_3THCAT</CLASS>

<CLASS>SUNFAR_PRODUCT_PRODUCT</CLASS>

<RELATIONSHIP>SUNFAR_PRODUCT_MAINCAT,SUNFAR_PRODUCT_2NDCAT</RELATIONSHIP>

<RELATIONSHIP>SUNFAR_PRODUCT_2NDCAT,SUNFAR_PRODUCT_3THCAT</RELATIONSHIP>

<RELATIONSHIP>SUNFAR_PRODUCT_3THCAT,SUNFAR_PRODUCT_PRODUCT</RELATIONSHIP>

</SOURCE>

<CLASS name=" PRODUCT_TYPE" mode="PREEMPT">

<FIELD field=" PRODUCER" value="SUNFAR_PRODUCT_3THCAT.PRODUCER" />

<FIELD field=" TYPE" value="SUNFAR_PRODUCT.PRODUCT_TYPE" />

</CLASS>

<CLASS name=" PRODUCT" mode="PREEMPT">

<FIELD field="SN" value="SUNFAR_PRODUCT.PRODUCT_NO" />

<FIELD field=" PRICE" value="SUNFAR_PRODUCT.PRICE" />

</CLASS>

</TRANSLATION>

</TRANSLATIONS>

圖 65、順發(SUNFAR)銷售網站的資料轉換程式

<TRANSLATIONS>

<TRANSLATION mode="AGGREGATION">

<SOURCE>

<CLASS>TKEC_PRODUCT_MAINCAT</CLASS>

<CLASS>TKEC_PRODUCT_SUBCAT</CLASS>

<CLASS>TKEC_PRODUCT</CLASS>

<RELATIONSHIP>TKEC_PRODUCT_MAINCAT, TKEC_PRODUCT_SUBCAT</RELATIONSHIP>

<RELATIONSHIP>TKEC_PRODUCT_SUBCAT, TKEC_PRODUCT</RELATIONSHIP>

</SOURCE>

<CLASS name="PRODUCT_TYPE" mode="PREEMPT">

<FIELD field=" PRODUCER" value="alpha(TKEC_PRODUCT.PRODUCT_TYPE)" />

<FIELD field=" TYPE" value="TKEC_PRODUCT_SUBCAT.PRODUCT_TYPE" />

</CLASS>

<CLASS name="PRODUCT" mode="PREEMPT">

<FIELD field="SN" value="TKEC_PRODUCT.PRODUCT_NAME" />

<FIELD field=" PRICE" value="TKEC_PRODUCT.PRICE" />

</CLASS>

</TRANSLATION>

</TRANSLATIONS>

圖 66、燦坤(TKEC)銷售網站的資料轉換程式

資料匯整及重組時,必須先將來源資料展開,然後依據轉換描述將資料拆開,並建立 關聯,下圖是以名人購物網(MREN)的一筆筆記型電腦為例,說明其處理過程。

圖 67、資料匯整及重組程序示意圖

使用 AGGRAGATION 模式,將名人購物網(MREN),順發(SUNFQAR)以及燦坤(TKEC) 等三個銷售網站的資料轉換及重組後,來自三個網站的相同鍵值的資料會個別存在資料庫 中。最後是,由人工或其他的系統進行比價的作業。

六、實作

由於在 BODED 萃取程式當中,在標籤結構中,有特定的標籤會包含其他標籤。而這 些被包含的標籤若是變數 VAR,則是要被萃取的資料。同一層的變數通常具有一對一的對 應關係。因此包含這些 VAR 變數的標籤,可對應到類別。而被包含的 VAR 變數中的內容 由於具有一對一對應關係,因此可以對應到類別中的欄位。所以類別的定義可以由 BODED 萃取程式自動的產生。由於圖 6 中的 BODED 萃取程式具有兩個主要的結構一個是 PAGE,

另外一個是 FOREACH。因此當使用圖 6 的 BODED 萃取程式自動產生類別時,會產生兩個 類別。一個是由 PAGE 結構所產生的類別,名稱為 MainCatPage。另一個是由 FOREACH 結構產生,名為 MainCat 的類別。由於其內沒有任何變數,因此該變數並沒有任何欄位。

不過在 BODE 資料模式處理系統執行時,會產生 MainCatPage 類別到 MainCat 類別的 一對多關係,並儲存於關聯資料表當中。

<CLASS name="MainCatPage">

<FIELD name="MainCat" type="class" classname="MainCat" /> ??

</CLASS>

<CLASS name="MainCat" key="MainCatName" >

<FIELD name="MainCatName" type="string" length="50" />

</CLASS>

圖 68、由圖 6 中的 BODED 萃取程式自動產生的類別定義

圖 69 顯示由圖 6 中的 BODED 萃取程式自動產生的對應規則。對應規則自動產生的原 理與自動產生類別一樣。由於 BODED 萃取程式中的每一個包含變數的標籤,會被自動產 生成一個類別,因此這些結構也會自動的對應到該類別中。這些標籤中所包含的變數標籤,

也就是 VAR,由於在自動產生類別時被自動對應到類別中的欄位。自動產生的對應規則會 將這些變數對應到類別中的欄位。

. . .

<PAGE name="MainCatPage" class="MainCatPage" >

<FOREACH name="MainCat" class="MainCat"

parentrelation="MainCatPage">

<VAR name="MainCatName" field="Name" />

</FOREACH>

</PAGE>

. . .

圖 69、由圖 6 中的 BODED 萃取程式自動產生的對應規則

圖 70 是一個萃取整個論文資料庫網站的 BODED 萃取程式。而圖 71 則是由圖 70 的

<PAGE name="MainCat">

. . . <!-- 詳見圖 6 -->

</PAGE>

<PAGE name="SubCat">

<FOREACH name="ForeachSubCat" xpath="//TD/A">

<FOREACH name="ForeachSubCat" xpath="//TD/A">

相關文件