阮文娟 ,劉勇軍 ,張五生
(1.武漢理工大學 管理學院,湖北 武漢430070;2.廈門大學 信息科學與技術學院,福建 廈門361005)
隨著數(shù)據(jù)挖掘技術的不斷發(fā)展,數(shù)據(jù)倉庫已經(jīng)能夠有效地將數(shù)據(jù)集成到結構一致的數(shù)據(jù)存儲環(huán)境中,從而使分散、不一致的操作數(shù)據(jù)轉換為方便查詢和分析所需的信息。但由于數(shù)據(jù)源具有異構性,企業(yè)需要一個能夠從所有平臺和環(huán)境中抽取數(shù)據(jù),再將數(shù)據(jù)轉換后加入目標數(shù)據(jù)倉庫的高效處理過程,這個過程就是數(shù)據(jù)的抽取、轉換、裝載,即 ETL(Extract-Transform-Load)。
數(shù)據(jù)源異構問題主要表現(xiàn)在:(1)結構的多樣性,如不同的數(shù)據(jù)庫,不同的數(shù)據(jù)類型和不同的概要設計等;(2)語義異質性,這包括不同的命名定義和不同的表示格式[1]。
基于傳統(tǒng)的XML元數(shù)據(jù)編碼方法的ETL過程已經(jīng)不能很好地解決數(shù)據(jù)源異構問題。首先,XML在處理元數(shù)據(jù)語義上存在兩個問題[2]:(1)同一概念有多種詞匯表示;(2)同一個詞有多種含義(概念)。因此XML無法對元數(shù)據(jù)進行準確的描述,這會直接影響ETL過程的效果。其次,必要的轉換和內(nèi)部模式映射依舊依賴手工操作,這不僅費時而且還容易出錯。
為此,本文提出了一種本體驅動ETL過程的設計方法。
ETL是負責將數(shù)據(jù)從源加載到目標數(shù)據(jù)倉庫的過程,也是構建數(shù)據(jù)倉庫的重要環(huán)節(jié)。ETL包括以下三個過程[3]:(1)抽取,數(shù)據(jù)抽取是捕獲數(shù)據(jù)源的過程,即將數(shù)據(jù)從各種原始的業(yè)務系統(tǒng)中讀取出來,這是所有工作的前提。(2)轉換,按照預先設計的規(guī)則將抽取得到的數(shù)據(jù)進行轉換、清洗,處理一些冗余、歧義、不完整、違反業(yè)務規(guī)則的數(shù)據(jù),統(tǒng)一數(shù)據(jù)的粒度,使本來異構的數(shù)據(jù)格式統(tǒng)一起來。(3)裝載,將轉換后的數(shù)據(jù)按照計劃增量全部導入到數(shù)據(jù)倉庫中。
ETL作為DW的核心和靈魂,大約占整個DW項目60%~80%的時間。在現(xiàn)實應用中ETL的執(zhí)行效率往往成為實施DW項目的瓶頸,而ETL規(guī)則的設計和實施又是其中工作量最大的部分。
Ontology概念起源于哲學領域,即“對世界上客觀存在物的系統(tǒng)描述”。但其明確定義是在1991年由Neches[4]等人引入人工智能領域。其后在1993年Gruber和1997年Borst也給出了Ontology的定義。直到1998年Studer[5]等人在前人基礎上給出了較為廣泛接受的概念,即“Ontology是共享概念模型的明確的形式化規(guī)范說明”,并指出該定義包含四層含義:概念模型(conceptualization)、明確(explicit)、形式化(formal)和共享(share)。 此外 2001年Hendler[6]也試圖作出解釋。
W3C為本體的開發(fā)提供了一種網(wǎng)絡本體語言OWL[7](Web Ontology Language),該語言包含了三種表達能力依次增強的子語言,即OWL Lite、OWL DL和 OWL Full。OWL Lite支持只需要一個分類層次和簡單約束的用戶;OWL DL支持需要最強表達能力的推理系統(tǒng)的用戶,且這個推理系統(tǒng)必須確保計算的完全性和可判定性,OWL DL包括了OWL語言的所有語言成分,但使用時必須符合一定的約束,受到一定的限制;OWL Full支持那些不需要可計算保證的,但能在完全自由的RDF上進行最強描述的用戶,包含OWL的全部語言成分并取消了OWL DL中的限制。
相比于傳統(tǒng)XML,OWL有更豐富的建模原語,能夠表達語義并描述復雜邏輯關系,可以解決XML無法對元數(shù)據(jù)進行準確描述的問題。而且本體語言還可以通過建立本體映射,并運用本體推理來實現(xiàn)部分必要轉換和內(nèi)部模式映射的自動化。因此引入本體驅動ETL過程能有效地解決數(shù)據(jù)源異構問題,并實現(xiàn)ETL過程的部分自動化。
運用本體理論指導ETL過程的一般步驟為確定領域本體、尋找本體映射以及選擇適當?shù)谋倔w推理規(guī)則。具體過程為:
(1)用本體論的理論知識指導元數(shù)據(jù)的確立,然后運用本體語言建立本體。
(2)建立局部本體到全局本體之間的關系,即本體映射。包括一個領域基本概念之間的層次關系,同時要滿足不同局部本體之間的相互查詢需求。目前有很多種本體映射的方法,如GLUE[8]方法是一種利用概念的實例作為計算概念間相似度的依據(jù),然后通過機器學習技術尋找單獨分開存儲的概念與自治本體之間的語義映射;SF(Similarity Flooding)[9]是一種基于相鄰概念節(jié)點之間的相似傳遞性的算法;H-MATCH[10]是一種動態(tài)分布式本體匹配的算法。
(3)本體推理,即通過一定的規(guī)則推理出本體內(nèi)部或是局部本體與全局本體之間的關系,來幫助確立映射關系。KAON2[11]是一個OWL推理機制,帶 SWRL子集DL-safe擴展;Pellet[12]是一個用 Java構建的推理機制,專門為OWL推理設計的,這兩種工具都可以用來推理。
(4)將本體推理所得到的映射轉化為熟悉的ETL過程。
在對本體論和ETL過程研究的基礎上,本文提出了基于本體的ETL架構設計,這一架構包括三個主要階段:(1)元數(shù)據(jù)抽象階段:任務是從數(shù)據(jù)源中抽取元數(shù)據(jù),然后將元數(shù)據(jù)抽象為本體。它包括局部本體和全局本體的定義。(2)本體映射階段:目的就是找到局部本體和全局本體內(nèi)部以及它們之間的語義關聯(lián),解決不同本體間的知識共享和重用使使用者更好地認識結構和語義領域的異構。本體映射的方法之一是計算兩個本體的相似性。(3)基于ETL規(guī)則的本體推理階段:即根據(jù)ETL的一般規(guī)則來制定本體推理規(guī)則,幫助從映射關系中找到隱含的與相沖突的之間的關系。如果數(shù)據(jù)源更傾向于用自動化過程開發(fā),則對映射階段進行描述的推理至關重要,特別是ETL過程。從數(shù)據(jù)源到目標數(shù)據(jù)倉庫的ETL過程如圖1所示。
表1 源數(shù)據(jù)和目標數(shù)據(jù)的定義
假設有兩個主要實體,即客戶和訂單,整個設置如表1所示。一個客戶有一個名字(包括他/她的姓和名)和相應的地址(其中包括他/她的國家、城市和街道)。一個訂單包括一個特定的日期,其格式可以為“日/月/年”或“月/日/年”。訂單的價格有美元和人民幣兩種貨幣表現(xiàn)形式。還有購貨數(shù)量,其訂貨形式為“零售”或“批發(fā)”。而且有兩個數(shù)據(jù)源分別是以Oracle數(shù)據(jù)庫和SQL Server 2005存儲客戶購買商品的資料。
3.1.1 建立局部本體
在構建局部本體前,先用本體理論指導理清字段間的關系,需明確以下關系:字段“country”、“city”和“street”是 字 段 “address” 的 一 部 分 ; 字 段 “mmddyy” 和 “ddmmyy”是字段“date”的不同類型;字段“retail”和“wolesale”是字段“amount”的兩種售出形式。
在明確了上述關系的基礎上,開始建立局部本體。以表 1中數(shù)據(jù)源 1(DS1)為例進行說明,采用數(shù)據(jù)源的名字作為局部本體 owl名,每個表對應一個類(概念),實例數(shù)據(jù)源1的DBMS為Oracle,以下是為DS1建立局部本體的主要OWL語句。
3.1.2 建立全局本體
全局本體可以通過集成各個數(shù)據(jù)源所包括的領域信息而得到。它就像一個共享的詞匯庫,建立了數(shù)據(jù)源領域的知識模型,且為數(shù)據(jù)源提供了公共的語義描述,從而做到將系統(tǒng)的全局視圖進行語義化描述,從而解決不同局部本體之間的語義異構性。
對于全局本體元素的定義基本可以借鑒對DS1元素的定義。建立全局本體還有一個重要的任務就是確定術語,從而對數(shù)據(jù)源有一個全局的把握。本例的術語有:客戶、訂單、地址、名字、數(shù)額、價格和日期。
本體映射有多種方法,在實際應用中,可以將這些方法結合起來使用。因此發(fā)現(xiàn)以下關系:
以上是運用OWL DL描述映射關系包括層次、等價、交集、并集、互補和不相交關系。在此運用OWL DL提供的rdfs:用subClassOf聲明一個類是通過另一個或多個類的子類創(chuàng)建層次關系,用equivalentProperty以描述本體中屬性間的等價關系,用disjointWith描述了類之間不相交關系。
通過單純的本體映射,只是找出了本體之間存在的一般關系。還需要運用基于適當規(guī)則的本體推理進一步指導ETL過程,即基于ETL規(guī)則的本體推理。
通過本體推理,可以找出每一個數(shù)據(jù)和數(shù)據(jù)倉庫之間的關系,例如:等價關系、包含關系、父子關系、兄弟關系。對于本例,通過本體推理可以發(fā)現(xiàn)如下關系:(1)等價關系。id1字段等價于id2字段,并且有相同的關系,從而推出字段id1與字段tid等價。(2)包含關系。字段cus_address與字段country、city和street是包含關系,因字段cus_address與字段address等價,從而可以推導出字段 address也包含字段 country、city和 street。 (3)兄弟關系。很容易發(fā)現(xiàn)每個類下面的屬性之間都是兄弟關系,即互不相交。
在已經(jīng)明確以上關系的情況下,還需要用ETL規(guī)則指導本體推理。為了完成ETL過程,需要把DS1中的city、street和country字段通過一定的規(guī)則加載成為DW中的 address字段。因 city、street和 country三個字段是互不相交的,可知DS1中的city、street和country字段可以構成DW中的address字段。在ETL規(guī)則和推理規(guī)則的指導下可知city、street和country三個字段必須先組合在一起,然后再加載到目標數(shù)據(jù)庫中。
同理,可以推導出從name字段中抽取出firstname和lastname兩個字段。為了完成數(shù)據(jù)源字段name加載到目標數(shù)據(jù)庫,根據(jù)ETL規(guī)則需要將字段name拆分成字段firstname和字段lastname,然后再加載到目標數(shù)據(jù)庫。
因price字段有兩種貨幣形式,在把該字段從數(shù)據(jù)源加載到目標數(shù)據(jù)庫的過程中需要注意將數(shù)據(jù)源的貨幣先轉換成對應目標數(shù)據(jù)庫的字段或是對應的中間字段,然后再加載到目標數(shù)據(jù)庫。在實際ETL過程中先將該字段過濾,然后對格式與目標數(shù)據(jù)庫不一致的price字段進行格式轉換。
經(jīng)過本體映射和推理,得到了一系列的相關關系。然后在上述基礎上完成本例的數(shù)據(jù)從數(shù)據(jù)源到目標數(shù)據(jù)倉庫的加載過程,具體步驟為:
(1)確定簡單操作及可以直接從源到目標的操作。
(2)從源節(jié)點開始引進ETL數(shù)據(jù)轉換操作,對相對復雜的轉化過程引入中間節(jié)點;然后從中間節(jié)點出發(fā),繼續(xù)采取額外的轉換直至到達目標節(jié)點。
(3)結合ETL規(guī)則做最后的規(guī)范,如圖2所示。
說明:對于數(shù)據(jù)源中的“customer”、“order”、“firstname”和“l(fā)astname”等字段可以直接從源加載到目標。字段“street”、“country”和“city”三者合在一起可以構成目標字段“address”。而“date”字段需通過轉換,“name”字段需要拆分,“amount”字段需要過濾。 對于“price”字段,首先過濾,然后轉換。最后用ETL規(guī)則規(guī)范整個過程。
本文提出了一個本體驅動的ETL過程的架構模型;在此基礎上,建立了本體、找出了本體間的映射并在ETL規(guī)則的基礎上進行了本體推理;最后通過實例圖表的方式展現(xiàn)了本體驅動ETL過程。本體的應用使ETL過程更加靈活、高效,并且架構中的ETL過程可以部分實現(xiàn)自動化,從而解決了數(shù)據(jù)源結構異構和語義異構的集成問題。
[1]ZHANG Zhuo Lun,WANG Su Fen.A framework model study for ontology-driven ETL processes[C].IEEE International Conference on Wireless Communications,Networking and Mobile computing,2008.
[2]鄧志鴻,唐世渭,張銘,等.Ontology研究綜述[J].北京大學學報(自然科學版),2002,38(5):730-737.
[3]張忠平,趙瑞珍.基于元數(shù)據(jù)驅動的 ETL架構設計[J].計算機應用與軟件,2009,26(6):61-63.
[4]NECHES R,FIKES R E,GRUBER T R,et al.Enabling technology for knowledge sharing[J].Artificial Intelligence,1991,12(3):36-56.
[5]STUDER R,BENJAMINS V R,FENSEL D.Knowledge engineering:principles and methods[J].Data and Knowledge Engineering,1998,25:161-197.
[6]HENDLER J A.Agents and the semantic web[J].IEEE Intelligent Systems,2001,16(2):30-37.
[7]W3C Candidate Recommendation.OWL Web Ontology Language Guide[EB/OL].[2003-08-18].http://www.w3.org/TR/2003/CR-owl-guide-20030818/.
[8]ANHAI D,JAYANT M,PEDRO D,et al.Learning to map between ontologies on the semantic web[C].Proceedings of the Eleventh International World Wide Web Conference,2002.
[9]MELNIK S,GARCIA-MOLINA H,RAHM E.Similarity flooding:a versatile garph matching algorithm[C].On Data Engineering(ICDE),2002.
[10]CASTANO S,FERRARA A,MONTANELLI S.An algorithm for dynamically matching ontologies in peer based systems Berlin[C].Proc of the 1st Workshop on Semantic Web and Databases,2003,231-250.
[11]KAON2[EB/OL].[2008-01-14].http://kaon2.semanticweb.org/.
[12]Pellet:OWL 2 Reasoner for Java[EB/OL].[2008-10-27].http://clarkparsia.com/pellet.