摘要:XML因其結構上的靈活性和易擴展性已經成為Web上異構數據轉換和傳輸的標準,但是含有不同模式的XML數據源之間卻很難進行相互操作,這給XML數據檢索帶來了更大的不便#65377;先提出一種從XML模式到OWL本體的映射算法,然后借助共享全局本體和同義詞典實現多個映射后的本體在語義上的集成從而解決XML結構異構的問題,最后提出一種利用語義集成進行XML語義查詢的框架并初步實現#65377;
關鍵詞:XML;本體;語義集成;語義查詢
中圖分類號:TP391
文獻標識碼:A
1引言
XML已經成為Web上信息表達和數據交換的事實標準#65377;它提供了一種非常靈活的方式來表達數據:用戶可以制定自己的標簽來表示他們的數據,XML在描述數據內容的同時能突出對結構的描述,從而體現出數據之間的關系#65377;
但XML的一個重要不足是: XML規范只聲明了數據在結構上的關系,不能表達出被標簽標記的數據在語義上的聯系#65377;這造成兩個問題:1)同一種語義能夠用多種不同結構的XML文檔表達,而這些異構的XML文檔之間很難實現相互操作;2)許多XML標簽它們所表達出的含義是相同的,但是XML處理程序無法將其識別#65377;
本體因其對概念的明確形式化描述,以及對概念的屬性和概念間的聯系的清楚表達,為解決 上面的問題提供一種有效的手段#65377;
2相關知識和研究背景
2.1XML模式和語義定義1一個XML的模式可以被表示成下面的形式[1]:S=(E,A,root,σ,τ)的形式,其中E表示所有元素的集合, A表示所有屬性的集合,root表示根元素#65377;σ和τ是兩個映射,其中δ∶E→2E表示元素與其子元素之間的映射,如果一個元素包含了多個相同的子元素,則認為這些元素表達的語義是相同的;τ∶E→2 A表示元素與其包含的屬性之間的映射#65377;映射δ和τ體現了XML的結構關系#65377;
XML的語義體現在XML的模式上#65377;XML沒有提供任何對語義表達的約束,因此XML模式只能表達語法而不能表達形式化語義,但是XML的元素與其屬性之間以及元素間的嵌套結構中蘊含著語義信息[2]#65377;
2.2語義Web和本體
語義Web以XML作為語法基礎,建立數據在更深層次―語義上的互操作#65377;語義Web的主要特點是引入了本體的概念#65377;本體是共享概念模型的形式化規范說明,主要用來對描述屬性或類的術語的含義及術語間的關系進行規約,為人和應用程序系統之間在某個主題的交流上提供的共同理解#65377;
定義2一個完整的本體被定義為七元組的形式:O=(C, A,C, R, A,R, H,C, H,R, X)其中C表示概念的集合#65377;A C表示多個屬性集合組成的集合,其中每個屬性集合對應于一個概念#65377;R是一個關系集合#65377;A R是由多個屬性集合組成的集合,其中每個屬性集合對應于R中的一個關系#65377;H C表示概念之間的層次結構關系,H R表示關系間的層次關系,X表示公理集合#65377;‘
3XML模式的語義映射和集成
3.1映射規則和算法
映射的目的是在S和O中包含的術語之間建立一種關聯,以實現XML在語義層上的互操作#65377;雖然S和O覆蓋不同的層次,我們認為它們有符合人們主觀認識的對應關系:1)S中定義的元素可以看作是O中定義的概念;2)元素包含的屬性(attribute)可以看作是概念所具有的屬性(property);3)元素之間的嵌套結構可以看作是概念之間的關系#65377;
定義3對模式S中的任意元素e來說,當δ(e)為空并且τ(e)也為空時,稱e是simpletype元素;當δ(e)非空時,稱e是complextype元素;其余情況則稱e是commontype元素#65377;
由于映射只涉及到概念#65380;概念的屬性和概念間的關系,我們在本體完整定義的基礎上,給出簡單本體的定義:Os=(C, A c, R),用作與XML模式進行相互映射#65377;這里選擇OWL DL作為描述本體Os的語言,在OWL中概念用建模原語owl:Class表示;概念的屬性用數據類型屬性owl:DatatypeProperty表示,概念間的關系用對象屬性owl:ObjectProperty表示#65377;下面是映射規則以及在OWL 中的表示形式:表1映射規則及本體表示:
我們用下面的方式定義每個本體的基本命名空間:如果某個OWL本體o是由XML模式文件s映射而得到的,那么它的基本命名空間為:http://www.xmltontology.com/schemafile.owl,其中schemafile是s的文件名#65377;下面具體的算法表示:
算法:CreateOnto-by-Mapping
輸入:已解析的XML模式Si
輸出:根據映射規則生成OWL本體Oi
步驟:1)使用Si構建Oi的默認命名空間前綴:prefixi;
2)對Si中每個complextype類型的元素ex,執行:
(1) 在Oi中新建概念prefixi :cx;
(2) 對δ(ex)中的所有元素en,執行:如果en是simple type類型元素,則新建數據類型屬性prefixi:ɑcxn,否則新建概念prefixi: en和對象屬性prefixi:contain(cx,cn);
(3) 對τ(ex)中的所有屬性ax,新建新的數據類型屬性prefixi:ɑcxx;
3) 對Si中的每個commontype類型的元素ec,執行:
(1) 新建概念prefixi:cc;
(2) 對τ(ec)中的所有屬性aj,新建數據類型屬性prefixi:ɑccj;
3.2本體集成和語義補充
經過映射,每一個XML模式文件都對應到一個用來注釋該文件語義的本體上,這些本體雖然描述的是同一個領域的知識,但彼此之間卻并沒有聯系#65377;另外本體中概念之間的真正關系通過上面的規則并沒有體現出來#65377;為解決這兩個問題,我們需要預先構建一領域本體,里面定義該領域內所涉及到的概念之間的復雜邏輯和語義關系#65377;該領域本體稱作全局本體,與定義2中的本體定義相同,用OG表示;而XML模式映射得到的本體稱為局部本體,用OL表示#65377;多個局部本體構成一個集合,成為局部本體集,用OLSet表示#65377;本文采用混合本體的方法[5]對OLSet中的局部本體OL進行集成,這種方法利用OG提供的建立在原語基礎上的共享詞匯集,使不同OL中的術語可以進行相互比較#65377;與傳統的方法不同,我們參考了WordNet和SUMO本體之間映射的思想[6],引入同義詞典這個概念,采取一種本體加同義詞典的方法實現這種集成,并手工建立OG和同義詞典之間的映射#65377;同義詞典的表示如下:
定義4 同義詞典T=(CSynseti, ASynseti) i=1,2,3…其中CSynset表示概念的同義詞集,包含了局部本體中可能出現的具有相同語義的概念#65377;ASynset集合表示概念的屬性的同義詞集,包含了局部本體中可能出現的具有相同語義的屬性#65377;同義詞集在這里是指里面的詞匯在上下文中可以相互替換的集合#65377;映射將一個 CSynset對應到全局本體中的某個概念,ASynset對應到某個屬性#65377;這里我們只考慮同義關系映射,即同義詞集里面詞語的含義與它映射到的概念或屬性的含義是相同的#65377;
由于CSynset和ASynset分別包含了所有OL中可能出現的概念和屬性,只要找出OL中的概念和屬性在T中對應的同義詞集,再根據T與OG之間的映射關系,就可以得到所有OL中概念/屬性與OG中語義相同概念/屬性的對應關系,最后只需保存OLSet與同義詞典T的集成關系即可#65377;
對OL中關系的集成我們采用不同的方法,通過每個關系在OWL語法中的domain值和range值來確定這些關系的語義,然后對語義相同的關系集成#65377;具體做法是:
(1)定義集合R,稱為關系集,OLSet中所有局部本體中的關系都保存在R中,每個關系都有代表命名空間的前綴來保證不會出現命名沖突#65377;根據前綴還可以找到該關系所屬的局部本體#65377;
(2) 定義作用在概念上的操作:mapc和hc,mapc(cl)返回OL中概念cl在OG中所對應的概念表示;hc(cg)返回OG中概念cg自身及其所有的父概念#65377;
(3) 對R中的每個關系r:contain(Cdom, Cran),在OG中找到同時滿足r.domain∈hc[mapc(Cdom)]和 r.range∈hc[mapc(Cran)]的關系#65377;然后在兩關系之間建立映射#65377;如果R中有多個關系映射到全局本體的同一個關系上,則將每個關系中的Cdom和Cran分別放入同一集合中,從而實現不同OL中關系的集成#65377;
本體集成及語義補充的過程中,OG#65380;OL和OLSet的關系如圖1所示:
4基于映射集成的語義查詢實驗
4.1查詢實驗方法
在上述映射與集成方法的基礎上,本文設計出一語義查詢系統,實現對不同模式的XML數據進行語義上的查詢,語義查詢利用全局本體對查詢語句中概念間的語義約束進行DL推理,然后利用集成得到的豐富的語義信息對查詢進行重構,最終轉換為針對不同XML模式的多個結構查詢#65377;語義查詢隱藏了底層數據格式的細節,是一種面向多個異構數據源的查詢,并且能夠利用本體找到隱藏的等價語義信息,實現對數據的內容而不是關鍵字匹配的查詢#65377;實驗的整體框架如圖2所示:
其中XML數據庫我們選擇eXist原生數據庫,數據庫中存放了全局本體#65380;通過映射規則得到的局部本體集和語義集成的結果,同義詞典以表的形式存儲在MySQL關系數據庫中,關系數據庫里面還包含了與全局本體之間的映射信息;為實現在全局本體中的推理,我們使用Jena2開發包中自帶的OWLMini推理機#65377;整個框架建立在Java 1.5的運行平臺上#65377;圖2實驗結構框圖
4.2實驗結果測試
查詢是完全依賴與語義集成的,在語義查詢XML數據之前,必須先完成對模式文件的集成#65377;因篇幅原因,我們僅給出測試結果,其中“author\"和“writer\"在相同CSynset中,“book\"和“script\"在另一CSynset中,“title\",“caption\"和“header\"在相同ASynset中,“write\"和“writtenby\"在全局本體中是一對逆關系#65377;
測試1:測試XML模式與本體之間映射是否符合常識#65377;
查詢語句:select ?book.title
where book.publisher= “ABC”
查詢結果:“UML for Java\".
測試2:測試本體集成和概念間關系的語義獲取是否正確#65377;
查詢語句:select ?autor.namewhere
writtenby(book,author);
book.header= “XML and Java\"
查詢結果:“Harold \", “John \".]
測試3:測試對條件子句中隱含知識的推理#65377;
查詢語句:select ?book.titlewhere
write(author,book)
author.name=“Robert\"
查詢結果:“UML for Java \".
測試4:測試語義查詢是否是基于數據之間的語義而數據本身的查詢#65377;
查詢語句:select ?book.titlewhere write(author,book)
author.name=“John\"
查詢結果:“XML and Java\", “Semantic Web\".
通過測試可以看出查詢結果與預期的一致,這說明了這種基于本體的XML模式語義集成是一種可行的方法,同時也可以看出語義查詢與一般的結構查詢相比,具有很大的優勢#65377;
5結論
本文利用語義Web 中RDF和OWL等規范標準,并借用WordNet和SUMO本體的映射思想,提出一種基于本體的XML語義集成和語義查詢的方法,并初步進行了實驗仿真#65377;
本文主要的貢獻在于提出了一種XML語義集成的方法和在集成基礎上進行語義查詢的框架#65377;對于方案中的有些步驟還有很大的改進空間,例如只考慮局部本體與全局本體中關系的一對一映射#65377;對最后的結果如何保存才能保證在查詢階段能快速方面的訪問,以及如何將rules引入到語義查詢處理中,使得查詢還能夠根據用戶自定義的規則進行規則推理,這些是我們今后進一步研究的地方#65377;
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。`