圖 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">