高俊濤 侯 寧
(東北石油大學(xué)計算機與信息技術(shù)學(xué)院 大慶 163318)
現(xiàn)階段,各個油田企業(yè)布署和運行了大量信息系統(tǒng),各個系統(tǒng)之間獨立開發(fā)與發(fā)布,形成眾多的信息孤島。由于缺少對數(shù)據(jù)資源的統(tǒng)一標(biāo)準(zhǔn)描述和信息服務(wù),導(dǎo)致各系統(tǒng)間協(xié)同難、數(shù)據(jù)開發(fā)應(yīng)用效率低,無法形成高效的公共數(shù)據(jù)服務(wù)產(chǎn)品[1]。
為屏蔽這些信息孤島,各個油田開始進行數(shù)據(jù)集成,將各個獨立開發(fā)的信息系統(tǒng)相互關(guān)聯(lián)起來,使得用戶可以透明的訪問這些數(shù)據(jù)。而數(shù)據(jù)集成中數(shù)據(jù)映射是重要的一個步驟[2]。目前許多數(shù)據(jù)集成的方法用于解決數(shù)據(jù)結(jié)構(gòu)上的異構(gòu),卻沒有較好的解決數(shù)據(jù)語義上的異構(gòu),這一直以來也都是一個難點[3]。
文獻[4]提出了數(shù)據(jù)元在國內(nèi)外標(biāo)準(zhǔn)化信息術(shù)語中的作用,說明了數(shù)據(jù)元在數(shù)據(jù)集成中的重要性。文獻[5]為了表達數(shù)據(jù)元的語義,用了語義樹,采取了數(shù)據(jù)元表達數(shù)據(jù)模型的語義。但是通過語義樹的方式過于復(fù)雜,提高了前期工作的門檻。文獻[6]以數(shù)據(jù)元為中介實現(xiàn)數(shù)據(jù)映射,采取數(shù)據(jù)元的方法對數(shù)據(jù)映射。
因此正文引出數(shù)據(jù)模型的映射,用數(shù)據(jù)元關(guān)鍵字的方式,用數(shù)據(jù)模型里的數(shù)據(jù)項與數(shù)據(jù)元與配對,然后對數(shù)據(jù)模型中數(shù)據(jù)項用數(shù)據(jù)元表達。通過關(guān)鍵字描述數(shù)據(jù)元的語義,避免構(gòu)建語義樹、本體等帶來的麻煩,降低了前期工作的門檻和映射的復(fù)雜性。通過兩個模型中的數(shù)據(jù)項所配對的數(shù)據(jù)元的聯(lián)系,構(gòu)建兩個數(shù)據(jù)模型中的數(shù)據(jù)項的匹配,從而構(gòu)建兩個模型的映射,以更好地做數(shù)據(jù)服務(wù)。
基本的、不可分割的數(shù)據(jù)單元是數(shù)據(jù)元,它用屬性表達其標(biāo)識、定義、允許值和表示[7]。
數(shù)據(jù)元語義可以看作由以下三個部分組成[8]。
對象詞:它具有清晰的概念,可以定義其屬性和行為,是對現(xiàn)實世界事物的抽象描述,可以作為面向?qū)ο缶幊讨械膶ο髞砝斫?,在?shù)據(jù)模型中類似于實體名稱。例如:尾管、生產(chǎn)井、水管、設(shè)備、管柱。
特性詞:特性詞表示對對象的一種性質(zhì)描述,它在數(shù)據(jù)模型中類似于實體屬性,例如:長度、深度、外徑、內(nèi)徑、尺寸、壓力、產(chǎn)量。
限定詞:它主要包含對象詞的限定詞和特性詞的限定詞,它是用來修飾對象詞和特性詞的,它可以有零個。如:懸掛、回接、下入、年。
設(shè)數(shù)據(jù)元關(guān)鍵字表為K:
其中pty 為特性詞,obj 為對象詞,Qobj 為對象詞的限定詞集合,Qpty 為特性詞的限定詞集合,C 為約束條件中的常數(shù)值集合。
進一步簡化:把C 中的常數(shù)值作為相應(yīng)的限定詞,劃分到Qobj與Qpty中,得出:
通過以上三個部分實現(xiàn)對數(shù)據(jù)元語義的表達。表1展示了數(shù)據(jù)元語義的組成成分。
表1 數(shù)據(jù)元的組成成分
數(shù)據(jù)特征的抽象表示是數(shù)據(jù)模型,包含數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)約束和數(shù)據(jù)操作[9],因為數(shù)據(jù)操作是在數(shù)據(jù)庫上操作,所以這里不探討它。結(jié)合它的特征,用數(shù)據(jù)模型里的表和數(shù)據(jù)項表達數(shù)據(jù)模型。模型里表的表達基于數(shù)據(jù)項的表達。根據(jù)上述的表述,數(shù)據(jù)元作為數(shù)據(jù)的規(guī)范,可以用來描述數(shù)據(jù)項。
這里先構(gòu)建數(shù)據(jù)項與數(shù)據(jù)元的配對表達數(shù)據(jù)項的語義。
目前有許多相似度算法,廣義上大體分成基于序列的相似度度量、基于集合的相似度度量[10]。編輯距離算法是基于序列的相似度度量,它具有可行性高效果好的優(yōu)點[11],這里采用編輯距離算法度量數(shù)據(jù)項和數(shù)據(jù)元,它是基于字面進行相似度度量。
設(shè)編輯距離算法用dsim(x,y)表達,用來計算x轉(zhuǎn)變到y(tǒng) 的最低成本。字符串轉(zhuǎn)換通過以下方式實現(xiàn),刪去、插入和替換字符串。例如,將x=“累積油產(chǎn)量”變?yōu)樽址畒=“累積地層油產(chǎn)量”的代價是dsim(x,y)=2,需要執(zhí)行的操作依次是在“累積”后面插入一個字符“地”,在“累積地”后面插入一個字符“層”。
編輯距離直觀上反映的是人們犯得一些編輯錯誤,比如插入了一個額外的字符(如“累積油產(chǎn)量”少寫了一個“產(chǎn)”字,變成了“累積油量”),或者兩個字符順序反了(如“累積油產(chǎn)量”錯寫成了“積累油產(chǎn)量”)等。編輯距離dsim(x,y)可用以下公式轉(zhuǎn)為相像度度量函數(shù)sim(x,y):
例如,“累積油產(chǎn)量”轉(zhuǎn)換為“累積地層油產(chǎn)量”的相似度度量結(jié)果為
下面以一個數(shù)據(jù)項“尾管懸掛下深”為例,與數(shù)據(jù)元字典里的數(shù)據(jù)元進行相似度度量,表2 中得到相像度較高的數(shù)據(jù)元配對結(jié)果。
表2 數(shù)據(jù)項與數(shù)據(jù)元相像度結(jié)果[12]
從以上結(jié)果得知,匹配的數(shù)據(jù)元中“尾管懸掛下入深度”相似度較高,“下入深度”的縮寫是“下深”,確實能表達數(shù)據(jù)項“尾管懸掛下深”的語義。因此,數(shù)據(jù)項“尾管懸掛下深”與數(shù)據(jù)元“尾管懸掛下入深度”匹配。
通過以上相似度度量方法,可以得出與數(shù)據(jù)模型中數(shù)據(jù)項匹配的數(shù)據(jù)元。當(dāng)匹配數(shù)據(jù)元不唯一時,按相似度進行排序,并進行人工確認(rèn)。由于表名、業(yè)務(wù)域、主鍵字段名中隱含數(shù)據(jù)項的上下文語義信息,這些信息可以作為數(shù)據(jù)元關(guān)鍵匹配的依據(jù)。
在上文定義了模型之后,即通過數(shù)據(jù)元對源模型和目標(biāo)模型都完成了數(shù)據(jù)項的語義表達后,就可以進行數(shù)據(jù)模型映射。在目標(biāo)數(shù)據(jù)模型中指定一個目標(biāo)數(shù)據(jù)表,從源數(shù)據(jù)模型找出與此表對應(yīng)的多個源表,并建立從源表到目標(biāo)表的各字段的對應(yīng)關(guān)系。
不同的實體間的某屬性可以使用同個數(shù)據(jù)元表達,同實體中的屬性可以逐個與數(shù)據(jù)元配對,見圖1。
圖1 數(shù)據(jù)元與數(shù)據(jù)模型關(guān)系圖
針對目標(biāo)表的每個數(shù)據(jù)項匹配如下:
DE1(key11,key12,…key1m)DE2(key21,key22,…key2n),keyij 是數(shù)據(jù)元DEi 的關(guān)鍵字。當(dāng)相似度SIM12=1時,兩個數(shù)據(jù)項對應(yīng)的數(shù)據(jù)元名稱相等。如果數(shù)據(jù)元名稱不相等,則按以下方法:
其中,DSIM(DE1,DE1)為雙方數(shù)據(jù)元名稱的編輯距離算法相像度。而KSIM是兩個數(shù)據(jù)元的關(guān)鍵字集合之間的項集相像度:KSIM=交集項個數(shù)/并集項個數(shù),得出的結(jié)果是杰卡德系數(shù),它是雙方集合A和B的交集元素在并集A和B中的比[13],用符號J(A,B)表示,用下面的公式表達:
通過不同的系數(shù)值選取和大量的實驗,確定系數(shù)WD 和WK 的值,其中系數(shù)WD 和WK 的和為1。WD、WK 分別為兩個相似度的權(quán)重,對系數(shù)WD 和WK 按照表的取值進行計算,發(fā)現(xiàn)表3 在A=0.3,b=0.7的時候效果最好。
表3 系數(shù)選取
為了構(gòu)建兩個模型的映射,用數(shù)據(jù)元作為中介,用雙方數(shù)據(jù)元匹配。不能完全配對,但有較高相像度的,作為可能映射[14]。這里以數(shù)據(jù)元“尾管懸掛下入深度”為例,按照關(guān)鍵詞分類,對象詞是“尾管”,它的限定詞是“懸掛”,特性詞是“深度”,它的限定詞是“下入”[15],在表4 中得出數(shù)據(jù)元字典中匹配到的前幾個數(shù)據(jù)元以及相似度結(jié)果。
表4 數(shù)據(jù)元與數(shù)據(jù)元相像度結(jié)果
通過上表得出“試油”數(shù)據(jù)模型中數(shù)據(jù)元“尾管懸掛下入深度”與“試油試采”數(shù)據(jù)模型中數(shù)據(jù)元“尾管懸掛下入深度”相似度為1,直接匹配。因此,它們所對應(yīng)的數(shù)據(jù)項“尾管懸掛下深”和“尾管懸掛下入深度”也能直接匹配。這兩個數(shù)據(jù)項所對應(yīng)的表“地質(zhì)設(shè)計鉆井及套管基礎(chǔ)數(shù)據(jù)表”和“套管基礎(chǔ)數(shù)據(jù)表”也匹配。
通過數(shù)據(jù)元、數(shù)據(jù)項和實體對兩個模型表達之后,為數(shù)據(jù)映射字典打下了基礎(chǔ),基于XML 的映射字典的設(shè)計,用于表達兩個模型的映射聯(lián)系[16]。
1)xml:表示xml文件版本號和編碼。
2)MapDocument:表示映射字典的根節(jié)點,此節(jié)點有一個子節(jié)點Mapping表示映射關(guān)系[17]。
3)Mapping:表示映射關(guān)系節(jié)點,此節(jié)點有三個屬性,user表示公司,name 表示映射名稱,type 表示映射類型,主要根據(jù)平臺使用者進行劃分。此節(jié)點有三個子節(jié)點,DRDModel,RDLModel,Entities。
4)DRDModel:表示源數(shù)據(jù)模型。
5)RDLModel:表示目標(biāo)數(shù)據(jù)模型。
6)Entities:表示實體,RDL_Entity 是它的一個子節(jié)點。
7)RDL_Entity:表示目標(biāo)數(shù)據(jù)模型實體,name、code 是它的兩個屬性,分別表示實體名、實體代碼。Source,Row是它的兩個子節(jié)點。
8)Source:表示數(shù)據(jù)來源(源數(shù)據(jù)模型),此節(jié)點有一個子節(jié)點DM_Entity。
9)DM_Entity:表示源數(shù)據(jù)模型,有兩個屬性name表示實體名,code表示實體代碼[18]。
10)Row:表示行,Attribute是它的一個子節(jié)點。
11)Attribute:表示屬性,其中它有6 個屬性,RDL_name 表示目標(biāo)數(shù)據(jù)模型屬性。RDL_code 表示目標(biāo)數(shù)據(jù)模型屬性代碼,element_name 表示數(shù)據(jù)元名稱,element_code 表示數(shù)據(jù)元代碼,DM_name表示源數(shù)據(jù)模型屬性,DM_code表示源數(shù)據(jù)模型屬性代碼[19]。
映射字典結(jié)構(gòu)如下所示。
<?xml version=“”encoding=“”?>
本文通過數(shù)據(jù)元來表達數(shù)據(jù)模型中的數(shù)據(jù)項,并通過關(guān)鍵詞來表達數(shù)據(jù)元的語義。利用編輯距離算法和杰卡德算法的思想,對數(shù)據(jù)項與數(shù)據(jù)元進行配對,對數(shù)據(jù)元與數(shù)據(jù)元之間的相像性進行配對,間接定位數(shù)據(jù)項的語義映射聯(lián)系,從而得出數(shù)據(jù)表的映射聯(lián)系。最終為表達異構(gòu)模型的映射引出一個映射文件。將中國石油企業(yè)的數(shù)據(jù)元為試驗數(shù)據(jù),對中石油數(shù)據(jù)模型中的數(shù)據(jù)項進行了標(biāo)準(zhǔn)化,以保證研究的實用性。