王 琦
(南京工程學(xué)院 計(jì)算機(jī)工程學(xué)院,江蘇 南京211167)
本體是語(yǔ)義Web的關(guān)鍵使能技術(shù)。使用現(xiàn)有本體編輯器手工開發(fā)本體是一項(xiàng)冗長(zhǎng)而繁瑣的工作,極易導(dǎo)致知識(shí)獲取的瓶頸,所以本體學(xué)習(xí)[1]技術(shù)應(yīng)運(yùn)而生。它極大地簡(jiǎn)化了本體的構(gòu)建,滿足了語(yǔ)義Web對(duì)于快速簡(jiǎn)便構(gòu)造本體的需求,在語(yǔ)義Web中起到了杠桿的作用。關(guān)系數(shù)據(jù)庫(kù)是基于Web的數(shù)據(jù)密集型應(yīng)用的主要信息源,數(shù)據(jù)庫(kù)模式中隱含著領(lǐng)域知識(shí)。因此,從關(guān)系數(shù)據(jù)庫(kù)學(xué)習(xí)出的OWL本體更適合于數(shù)據(jù)密集型Web應(yīng)用的需要。本文在形式化表示關(guān)系數(shù)據(jù)庫(kù)模式和OWL本體的基礎(chǔ)上,介紹了一種從關(guān)系數(shù)據(jù)庫(kù)半自動(dòng)學(xué)習(xí)OWL本體的方法,設(shè)計(jì)出一套通用的映射方法和規(guī)則,并基于Java 2平臺(tái)實(shí)現(xiàn)了原型工具OntoLearner。
關(guān)系數(shù)據(jù)庫(kù)模型是以集合論中的關(guān)系(relation)概念為基礎(chǔ)發(fā)展起來(lái)的數(shù)據(jù)模型[2]。為了便于形式化描述本體學(xué)習(xí)方法中的映射規(guī)則,這里給出了關(guān)系數(shù)據(jù)庫(kù)模式的形式化定義(符合3NF)。
定義 1:一個(gè)關(guān)系數(shù)據(jù)庫(kù)模式 S=(L,pkey,unique,notnull,fkey,subof,fdependency)是七元組,其中:
(1)名集L=E∪R∪D是一個(gè)有限集,由兩兩不相交的集合組成:
①一個(gè)實(shí)體關(guān)系(entity relation)名的集合E;
②一個(gè)聯(lián)系關(guān)系(relationship relation)名的集合R;
③一個(gè)數(shù)據(jù)類型(data type)名的集合 D,每個(gè)數(shù)據(jù)類型名是RDBMS預(yù)定義的數(shù)據(jù)類型名。
(2)?T∈E∪R,T有一個(gè)非空的屬性集合 att(T),且每個(gè)屬性A∈att(T)有一個(gè)相關(guān)的預(yù)定義數(shù)據(jù)類型type(A)∈D作為它的取值范圍,其中type(*)表示“*”的預(yù)定義數(shù)據(jù)類型。
(3)?T∈E∪R,T的屬性集 att(T)中所有屬性的一次取值的組合稱為T的一個(gè)元組,其中,每個(gè)屬性取值(稱屬性值)稱為相應(yīng)屬性在此元組中的一個(gè)實(shí)例(instance),在某個(gè)時(shí)刻T的所有元組所組成的集合tup(T)稱為T的一個(gè)實(shí)例。
(4)?T∈E∪R,T有且僅有一個(gè)唯一決定其元組的屬性或?qū)傩越M稱為T的主鍵pkey(T):要么pkey(T)只包含一個(gè)屬性(稱pkey(T)為單主鍵,此時(shí)T是實(shí)體關(guān)系),要么 pkey(T)包含多個(gè)屬性(稱 pkey(T)為復(fù)合主鍵,此時(shí)T是聯(lián)系關(guān)系)。
(5)?T∈E∪R,若存在屬性 A∈att(T),且 A的所有元組在T中取值唯一,則稱A為T的唯一屬性,可表示為布爾函數(shù) unique(A)=True;否則 unique(A)=False。
(6)?T∈E∪R,若存在屬性 A∈att(T),且 A的所有元組在T中取值非空,則稱A為T的非空屬性,可表示為布爾函數(shù) notnull(A)=True;否則 notnull(A)=False。
(7)?T∈E∪R,T中一個(gè)引用其他實(shí)體關(guān)系 G∈E主鍵 pkey(G)的屬性稱為 T的外鍵 fkey(T,G),滿足:fkey(T,G)?att(T)且 value(fkey(T,G))?value(pkey(G))∪{null},其中 value(*)表示“*”的值域,“null”表示空值。T可能有 0·n(n≥0)個(gè)外鍵。
(8)對(duì)?T∈E,若T引用G∈E主鍵的外鍵的同時(shí)又作為 T 的主鍵(即 fkey(T,G)=pkey(G)∈att(T)),則 稱T和G之間存在 “子/超關(guān)系”,T為G的子實(shí)體關(guān)系,G為T的超實(shí)體關(guān)系,此時(shí)可表示為布爾函數(shù)subof(T,G)=Ture;否則 subof(T,G)=False。若干個(gè)連續(xù)的子/超實(shí)體關(guān)系對(duì)構(gòu)成關(guān)系數(shù)據(jù)庫(kù)模式中的一個(gè)子/超實(shí)體關(guān)系層次。
(9)?T∈E∪R,α、β?att(T),α≠β,對(duì)?t1,t2∈tup(T),若有 t1[α]=t2[α],則必有 t1[β]=t2[β],則稱 α 和 β 之間存在函數(shù)依賴關(guān)系,β 函數(shù)依賴于 α(或 α 函數(shù)決定 β),α稱為函數(shù)依賴的決定子,β稱為函數(shù)依賴的被決定子,此時(shí)可表示為布爾函數(shù) fdependency(α,β)=True(簡(jiǎn)記為fdependency(α,β)),否則 fdependency(α,β)=False。 T 中所有函數(shù)依賴關(guān)系組成的集合稱為T的函數(shù)依賴集,記為FT。
定義 2:?T∈E∪R,α、β?att(T),α≠β,β?α,?fdependency(α,β)∈FT, 滿 足 下 列 條 件 之 一 :(1)α 是 超鍵;(2)β是主屬性,則此關(guān)系T屬于第三范式。若關(guān)系數(shù)據(jù)庫(kù)模式中的所有關(guān)系均屬于第三范式,則稱其為規(guī)范化至第三范式(3NF)的關(guān)系數(shù)據(jù)庫(kù)模式。
本體是一組描述某領(lǐng)域內(nèi)概念及其屬性以及概念間關(guān)系的詞匯和公理的集合。W3C在2004年2月發(fā)布了標(biāo)準(zhǔn)化的Web本體語(yǔ)言O(shè)WL[3]。這里給出OWL DL本體的形式化定義。
定義 3:一個(gè) OWL DL本體 O=(Cept,Axiom)是二元組,其中:
(1)標(biāo)識(shí)符集Cept=CID∪DPID∪OPID∪DTID是一個(gè)有限集,由兩兩不相交的集合組成:
①一個(gè)類(class)標(biāo)識(shí)符集 CID;
②一個(gè)數(shù)據(jù)類型屬性(datatype property)標(biāo)識(shí)符集DPID;
③一個(gè)對(duì)象屬性(object property)標(biāo)識(shí)符集OPID;
④一個(gè)數(shù)據(jù)類型(data type)標(biāo)識(shí)符集 DTID,每個(gè)數(shù)據(jù)類型標(biāo)識(shí)符是OWL本體中使用的預(yù)定義XML Schema數(shù)據(jù)類型標(biāo)識(shí)符。
(2)公理集Axiom=CAxiom∪PAxiom是一個(gè)有限集,由兩兩不相交的集合組成:
①一個(gè)類公理(class axiom)集 CAxiom,包含本體中定義的所有類公理;
②一個(gè)屬性公理(property axiom)集 PAxiom,包含本體中定義的所有屬性公理。
從關(guān)系數(shù)據(jù)庫(kù)學(xué)習(xí)OWL本體的可行性基于以下事實(shí):運(yùn)用數(shù)據(jù)庫(kù)逆向工程方法可從關(guān)系數(shù)據(jù)庫(kù)模式中提取ER模式[4];ER模式可語(yǔ)義保持地轉(zhuǎn)換成OWL本體[5-6]。因此,本文針對(duì)現(xiàn)有本體學(xué)習(xí)方法和工具的不足,提出了一種從關(guān)系數(shù)據(jù)庫(kù)學(xué)習(xí)OWL本體的方法,該方法分為關(guān)系數(shù)據(jù)庫(kù)的逆向工程和從關(guān)系數(shù)據(jù)庫(kù)模式到OWL本體的映射兩部分。
數(shù)據(jù)庫(kù)逆向工程DBRE(Database Reverse Engineering)指的是從物理數(shù)據(jù)庫(kù)恢復(fù)數(shù)據(jù)庫(kù)邏輯和概念模式,一般分成兩個(gè)互相獨(dú)立的階段:數(shù)據(jù)結(jié)構(gòu)的提取和概念化。在研究和分析數(shù)據(jù)庫(kù)逆向工程現(xiàn)有理論和方法的基礎(chǔ)上,本文制定了一套適合本體學(xué)習(xí)工程環(huán)境的較完備的逆向工程方法。
為了形式化表示從關(guān)系數(shù)據(jù)庫(kù)模式到OWL本體的映射規(guī)則,需要預(yù)先定義以下輔助函數(shù):
(1)IS(x):布爾函數(shù)。 若 x(表達(dá)式)成立,則 IS(x)=True;否則 IS(x)=False。
(2)idMap(ID):將關(guān)系數(shù)據(jù)庫(kù)模式中的關(guān)系名和屬性名映射為OWL本體中的同名標(biāo)識(shí)符。即若ID是關(guān)系數(shù)據(jù)庫(kù)模式中的關(guān)系名和屬性名,則idMap(ID)=ID∈CID∪DPID∪OPID。
(3)dtMap(DT):將關(guān)系數(shù)據(jù)庫(kù)模式中的數(shù)據(jù)類型名映射為OWL本體中使用的數(shù)據(jù)類型(XML Schema數(shù)據(jù)類型)標(biāo)識(shí)符。即若DT是關(guān)系數(shù)據(jù)庫(kù)模式中的數(shù)據(jù)類型名,則 dtMap(DT)=DType∈DTID。
3.2.1 屬性公理的生成規(guī)則
規(guī)則1將關(guān)系數(shù)據(jù)庫(kù)模式中關(guān)系的非外鍵屬性及其相應(yīng)的預(yù)定義數(shù)據(jù)類型映射為OWL本體中以關(guān)系對(duì)應(yīng)類為定義域的數(shù)據(jù)類型屬性及其相應(yīng)的預(yù)定義XML Schema數(shù)據(jù)類型。形式化表示為:
?T,G∈E∪R∧?A∈att(T)∧?IS(A=fkey(T,G))→DatatypeProperty(idMap(T_A)domain(idMap(T))range(dtMap(type(A))))。
規(guī)則2將關(guān)系數(shù)據(jù)庫(kù)模式中關(guān)系T引用實(shí)體關(guān)系G主鍵的外鍵(且不是T的主鍵也不屬于T的主鍵)作如下映射:生成一個(gè)新的OWL本體中的類(聯(lián)系類),一對(duì)分別以T對(duì)應(yīng)類和聯(lián)系類為定義域的互逆的對(duì)象屬性,一對(duì)分別以G對(duì)應(yīng)類和聯(lián)系類為定義域的互逆的對(duì)象屬性。形式化表示為:
?T∈E∪R∧?G∈E∧?A∈att(T)∧?IS(A=pkey(T))∧?IS(A∈pkey(T))∧IS(B=pkey(G))∧IS(A=fkey(T,G))→ObjectProperty(idMap(T_A)domain(idMap(T))range(dtMap(T_G))),ObjectProperty(idMap(G_B)domain(idMap(G))range(idMap(T_G))),ObjectProperty(idMap(T_G_A)domain(idMap(T_G))range(idMap(T))inverseOf(idMap(T_A))),ObjectProperty(idMap(T_G_B)domain(idMap(T_G))range(idMap(G))inverseOf(idMap(G_B)))。
規(guī)則3將關(guān)系數(shù)據(jù)庫(kù)模式中關(guān)系T引用實(shí)體關(guān)系G主鍵的外鍵(且同時(shí)又是T的主鍵或?qū)儆赥的主鍵)映射為OWL本體中一對(duì)分別以T對(duì)應(yīng)類和G對(duì)應(yīng)類為定義域的互逆的對(duì)象屬性。形式化表示為:
?T∈E∪R∧?G∈E∧?A∈att(T)∧(IS(A=pkey(T))∨IS(A∈pkey(T)))∧IS(B=pkey(G))∧IS(A=fkey(T,G))→ObjectProperty(idMap(T_A)domain(idMap(T))range(dtMap(G))),ObjectProperty(idMap(G_B)domain(idMap(G))range(idMap(T_G))inverseOf(idMap(T_A)))。
規(guī)則4將關(guān)系數(shù)據(jù)庫(kù)模式中實(shí)體關(guān)系的主鍵(且非外鍵)映射的OWL本體的數(shù)據(jù)類型屬性聲明為函數(shù)屬性。形式化表示為:
?T,G∈E∧?A∈att(T)∧IS(A=pkey(T))∧?IS(A∈fkey(T,G))→DatatypeProperty(idMap(T_A)Functional)。
規(guī)則5將關(guān)系數(shù)據(jù)庫(kù)模式中關(guān)系取值唯一的非外鍵屬性映射的OWL本體的數(shù)據(jù)類型屬性聲明為函數(shù)屬性。形式化表示為:
?T,G∈E∪R∧?A∈att(T)∧?IS(A=fkey(T,G))∧unique(A)→DatatypeProperty(idMap(T_A)Functional)。
3.2.2 類公理的生成規(guī)則
規(guī)則6將關(guān)系數(shù)據(jù)庫(kù)模式中關(guān)系的非外鍵屬性映射為OWL本體中的類公理。形式化表示為:
?T,G∈E∪R∧?A∈att(T)∧?IS(A=fkey(T,G))→Class(idMap(T)partial restriction(idMap(T_A)allValueFrom(dtMap(type(A)))minCardinality(0)maxCardinality(1)))。
規(guī)則7將關(guān)系數(shù)據(jù)庫(kù)模式中關(guān)系T引用實(shí)體關(guān)系G主鍵的外鍵(且不是T的主鍵也不屬于T的主鍵)映射為OWL本體中的類公理。形式化表示為:
?T∈E∪R∧?G∈E∧?A∈att(T)∧?IS(A=pkey(T))∧?IS(A∈pkey(T))∧IS(B=pkey(G))∧IS(A=fkey(T,G))→Class(idMap(T)partial restriction(idMap(T_A)allValueFrom(idMap(T_G)))),Class(idMap(G)partial restriction(idMap(G_B))allValueFrom(idMap(T_G)))),Class(idMap(T_G)partial restriction(idMap(T_G_A))allValueFrom(idMap(T)))),Class(idMap(T_G)partial restriction(idMap(T_G_B))allValueFrom(idMap(G))))。
規(guī)則8將關(guān)系數(shù)據(jù)庫(kù)模式中關(guān)系T引用實(shí)體關(guān)系G主鍵的外鍵(且同時(shí)又是T的主鍵或?qū)儆赥的主鍵)映射為OWL本體中的類公理。形式化表示為:
?T∈E∪R∧?G∈E∧?A∈att(T)∧(IS(A=pkey(T))∨IS(A∈pkey(T)))∧IS(B=pkey(G))∧IS(A=fkey(T,G))→Class(idMap(T)partial restriction(idMap(T_A)allValueFrom(idMap(G)))),Class(idMap(G)partial restriction(idMap(G_B)allValueFrom(idMap(T))))。
規(guī)則9將關(guān)系數(shù)據(jù)庫(kù)模式中實(shí)體關(guān)系的主鍵屬性(且非外鍵屬性)映射為OWL本體中的類公理。形式化表示為:
?T,G∈E∧?A∈att(T)∧IS(A=pkey(T))∧?IS(A=fkey(T,G))→Class(idMap(T)partial restriction(idMap(T_A)Cardinality(1)))。
規(guī)則10將關(guān)系數(shù)據(jù)庫(kù)模式中關(guān)系取值不為空的屬性(且非外鍵屬性)映射為OWL本體中的類公理。形式化表示為:
?T,G∈E∪R∧?A∈att(T)∧?IS(A=fkey(T,G))∧notnull(A)→Class(idMap(T)partial restriction(idMap(T_A)Cardinality(1)))。
3.2.3 類關(guān)系的啟發(fā)式規(guī)則
規(guī)則11如果兩個(gè)實(shí)體關(guān)系的主鍵之間存在包含依賴關(guān)系,則這兩個(gè)關(guān)系對(duì)應(yīng)的OWL本體中的兩個(gè)類之間存在父類和子類的關(guān)系。形式化表示為:
?T,G∈E∧idependency(T,G))→SubClassOf(idMap(T)idMap(G))。
規(guī)則12關(guān)系數(shù)據(jù)庫(kù)模式中的每個(gè)聯(lián)系關(guān)系映射的類與OWL本體中的其他類之間是互不相交的。形式化表示為:
?T∈R∧?W∈CID∧idMap(T)≠W→DisjointClassers(idMap(T)W)。
規(guī)則13關(guān)系數(shù)據(jù)庫(kù)模式中關(guān)系T引用實(shí)體關(guān)系G主鍵的外鍵(且不是T的主鍵也不屬于T的主鍵))映射生成的類(聯(lián)系類)與OWL本體中的其他類之間是互不相交的。形式化表示為:
?T∈E∪R∧?G∈E∧?A∈att(T)∧?IS(A=pkey(T))∧?IS(A∈pkey(T))∧IS(A∈fkey(T,G))∧?W∈CID∧idMap(T_G)≠W→DisjointClassers(idMap(T_G)W)。
本體學(xué)習(xí)工具OntoLearner的體系結(jié)構(gòu)如圖1所示?;贠ntoLearner,本體學(xué)習(xí)的過(guò)程由下面三個(gè)子過(guò)程組成:
(1)關(guān)系數(shù)據(jù)庫(kù)的逆向工程。使用逆向工程的方法從關(guān)系數(shù)據(jù)庫(kù)中獲取規(guī)范化至3NF的數(shù)據(jù)庫(kù)模式信息,明確數(shù)據(jù)源的語(yǔ)義;
(2)從關(guān)系數(shù)據(jù)庫(kù)模式到OWL本體的映射。以提取出的關(guān)系數(shù)據(jù)庫(kù)模式(3NF)作為輸入,按照一組通用的啟發(fā)式規(guī)則實(shí)現(xiàn)從關(guān)系數(shù)據(jù)庫(kù)模式到OWL本體的映射,并以可視化的方式顯示;
(3)利用現(xiàn)有本體工程工具對(duì)生成的OWL本體進(jìn)行精煉、評(píng)估和驗(yàn)證。
使用MS SQL Server 2000創(chuàng)建一個(gè)包含大學(xué)基本信息情況的關(guān)系數(shù)據(jù)庫(kù)University,并插入實(shí)例數(shù)據(jù)。利用OntoLearner對(duì)該數(shù)據(jù)庫(kù)進(jìn)行本體學(xué)習(xí),運(yùn)行結(jié)果如圖2所示。
語(yǔ)義Web研究的重點(diǎn)就是如何把信息表示為計(jì)算機(jī)能夠理解和處理的形式,即帶有語(yǔ)義。本體在創(chuàng)建這種機(jī)器可理解和處理的Web內(nèi)容中扮演著關(guān)鍵的角色。由于關(guān)系數(shù)據(jù)庫(kù)是本體學(xué)習(xí)重要的知識(shí)源,所以研究從關(guān)系數(shù)據(jù)庫(kù)學(xué)習(xí)OWL本體的方法,對(duì)數(shù)據(jù)密集型Web站點(diǎn)向語(yǔ)義Web遷移、動(dòng)態(tài)Web頁(yè)語(yǔ)義標(biāo)注、構(gòu)建新一代信息管理基礎(chǔ)結(jié)構(gòu)等均具有重要的現(xiàn)實(shí)意義。
[1]STAAB S,MAEDCHE A.Ontology learning for the semantic Web[J/OL].IEEE Intelligent Systems,2001,16(2):72-79.
[2]王能斌.數(shù)據(jù)庫(kù)系統(tǒng)教程(上冊(cè))[M].北京:電子工業(yè)出版社,2002:22-238.
[3]MICHAEL K S,CHRIS W,DEBORAH L.OWL Web ontology language guide(W3C Recommendation)[J/OL].(2004-02-10).http://www.w3.org/TR/2004/REC-owl-guide-20040210/.
[4]CHIANG R HL,BARRON T M,STOREY VC.Reverse engineering of relational databases:extraction of an EER model from a relational database[C].Data&Knowledge Engineering,1994,12(2):107-142.
[5]XU Zhuo Ming,CAO Xiao,DONG Yi Sheng,et al.Formal approach and automated tool for translating ER schemata into OWL ontologies[J/OL].Advances in Knowledge Discovery and Data Mining,2004(3056):464-475.
[6]王琦.計(jì)算機(jī)與信息技術(shù)[M].安徽:安徽省計(jì)算機(jī)學(xué)會(huì).2009.