[轉]WODOS:一個語義Web 支撐軟體的研究與實現
Keywords: Web, semantic Web, ontology, RDF, OWL, DAML
1. 引言
隨著INTERNET 套用的普及和軟體技術的進步,基於Web 的網路計算模式或INTERNET
計算模式得到了廣泛的重視和套用。目前, 面向Web 套用的三層結構( 或多層結構)、構件
化的商務邏輯封裝、基於XML 和Web Services 的自動電子商務等理論和技術深入人心。而
現有的這些Web 技術並不能真正解決人們期待已久的智慧型搜尋引擎、智慧型信息代理、智慧型交
易代理等基於Web 的個性化、智慧型化的服務。這正是語義Web(Semantic Web) [9]要解決的
問題。用本體來改進目前Web Services,使之成為語義Web 服務( Semantic Web Services)[5],
正是目前國際上語義Web 研究中的共識。基於此,W3C,DARPA 等研究機制定了基於本體
的, 套用於Web 的技術標準,如RDF[4]、DAML 和OWL 等[1] [2 ]。
建立語言標準是實現Semantic Web 的重要基礎性工作, 但還需要在語言標準的研究之上
建立支持這些標準的相應支撐軟體,這一軟體是最終實現Semantic Web 的一個重要的基礎軟
件[3] [6]。所以開發一種可以處理本體形式化表示、存儲管理、分散式管理、甚至是推理機制
的Semantic Web 支撐軟體成為發展Semantic Web Services 的重要一環。本文討論的就是這樣的可以套用於Semantic Web 的支撐軟體。
本文第二部分對國內外現有支撐軟體進行了比較詳盡的分析; 第三部分描述了本文提出
的一個語義Web 的支撐軟體的體系結構;第四部分對這一支撐軟體中的各個功能的實現進行
了說明; 最後給出針對本文中提出的方法需要進一步研究的內容。
2. 語義Web 的支撐軟體現狀
基於Semantic Web 對於支撐軟體的需求, 很多科研機構和學校、公司在Semantic Web
和DAML、RDF 的基礎上開展了自己的研究工作, 開發了許多工具和平台。
最早出現的是SiRPAC (Simple RDF Parser & Compiler), 它是一個由Stanford 大學開發
的RDF 的解釋器,被廣泛套用於許多SW1 項目。其功能還比較簡單,實際上只是一個 RDF
API, 本體存儲形式仍然是檔案系統, 不能充分發揮資料庫的事務管理、分布性以及便於查
詢的結構等特性。而隨後出現的OpenCyc、sesame、KAON、Jena 就顯得相對完善了, 但是
也都包含不足。
OpenCyc 是一個基於常識的,具有最完整知識庫的,世界上最大的邏輯推理引擎。現在
最新的版本是0.7Beta,已經可以支持Linux、Windows NT/2000/XP 等多種作業系統。OpenCyc
可以用於各種領域的智慧型推理軟體, 例如語音理解、資料庫集成、快速開發本體、郵件的優
先級、郵件路由、郵件摘要、郵件標註等。即將推出的OpenCyc1.0 將包括6000 條概念、60000
條斷言、Cyc 推理引擎、Cyc 基於知識的瀏覽器、CycL 規範(Cyc language, 用於開發Cyc
的語言)、CycL 到Lisp 以及C 語言的翻譯器等等。採用開放原始碼的授權機制, 可從
sourceforge 下載。但是OpenCyc 也存在不足, 由於它所支持的CycL 並不是一種通用的標準
語言,這就使得它與標準化的本體表示的兼容性成為瓶頸。並且它使用C 語言開發,其代碼
的可重用性、可移植性和平台無關性就不如用純Java 語言的代碼好。
Sesame 是一個開放原始碼的本體存儲與查詢系統,由Aidministrator 公司開發。它解決
了以往的本體數據存儲的問題, 支持關係型資料庫和面向對象的資料庫。並且實現了RQL
(RDF Query Language)查詢語言,可以在資料庫中檢索需要的本體。Sesame 雖然解決了本
體資料庫的存儲問題,但是它所實現的RQL 是對於整個本體數據進行的,當本體數據量達到
一定程度時, 其查詢效率就會成為整個系統的瓶頸。
KAON, 即“ The Karlsruhe Ontology and Semantic Web Infrastructure” 是德國Karlsruhe
大學的一個科研項目。致力於語義Web 提供所需的基礎本體系統和相關工具。它針對基於本
體的上層商業套用的需求提供了一個開放的本體管理基礎軟體, 為本體的存儲、創建、標識
提供了一個全面的支撐平台。它目前的版本是1.2。
HP 實驗室的Jena 是一個以RDF API 為核心, 用於實現語義網路( Sematic Web) 的工
具。Jena 由Network API、Query、Readers、inference、Writers、Stores 幾部分圍繞RDF API
組成。它支持RDF 的創建、操作和查詢等功能。而RDF API 也能夠支持很多不同的數據存
儲技術。外掛程式式的接口設計能夠自動適應各種由不同的語言編寫的讀寫RDF 檔案的需要。推
理層、查詢功能以及網路API 建立在RDF API 之上。Jena 目前的版本是1.6.0,支持N3,可
以更快速的處理關係資料庫模型, 並且修正了一些錯誤。
KAON 和Jena 可以說是目前功能和結構較完善的Semantic Web 的支撐軟體, 它們都支
持本體資料庫的存取操作,支持RDF 標準,使用純Java 語言開發,有著良好的結構和性能。
但美中不足的是,它們不支持基於本體信息的邏輯推理,只能查詢當前資料庫中已有的信息。
我們知道對於一種本體知識庫來說, 有些知識本身是隱含的, 需要進行推理才能得到, 這隻
有在已有的本體知識庫中運用基於知識的推理才能真的展示出本體知識的豐富性, 更好的發
揮本體知識的作用。
我們看到, 雖然圍繞語言標準已經推出了很多的支撐平台和軟體工具, 但分析其現有研
究狀況, 它們都普遍存在以下問題:
z 語言支持問題。從國內外發表的論文情況來看,目前這方面的主要研究成果暫時還是來自於國外, 現有平台並不支持中文。
z Semantic Web 要使本體以一種高效的、穩定的機制存於資料庫中,並支持分散式的本
體訪問、存取與搜尋查詢。目前雖然在這方面已經有了比較多的研究,但是如何提高
本體存儲、訪問和搜尋的效率還有待於進一步的研究
[ 7 ]
。
z 分散式本體粒度問題與具體處理機制還有待於進一步的深入研究
[ 8 ]
。目前本體分布的
粒度比較簡單,是本體的一個類。實際上,這種粒度太小,從效率等各方面看,可以
把多個關係密切的CLASS 看成是一個本體構件,以本體構件為單位進行本體的分布,
提高對本體訪問和處理的效率。但本體構件以何標準劃分,這種劃分是靜態的還是動
態自適應的, 都是一個有待解決的、值得研究的理論問題。
z 將推理機制與本體知識庫整合,實現一個直接運算元據庫中的基於本體推理系統,是
一個尚待研究的課題。
基於調研以上各種的Semantic Web 支撐軟體的現狀並分析他們的不足,我們開發了一個
面向web 的分散式本體系統—WODOS(Web Oriented Distributed Ontology System)。它本身
是一個語義Web 的支撐軟體,該軟體具有以下功能:支持中英文,可以將本體信息存於關係
型資料庫中, 做RDF 檔案的導入導出, 支持RQL 查詢, 第三方軟體可以通過OdoAPI 進行
操作。本支撐軟體還引入推理機制, 可以對存於WODOS 中的本體事實施以規則( 基於
F-Logic), 並在這些規則的基礎上進行推理。WODOD 建立了統一的用戶界面, 可以把對它
的各種操作( 如原有的RQL 查詢、RDF 檔案導入導出和新加入的F-Logic 操作等)集成在一
起。
表1 綜合說明了前面介紹的各種研究成果。從表中看出, 本文研究的語義web 的支撐軟
件在支持本體的分布性、支持語言和推理機制方面要好於現有其他的支撐軟體。
3.WODOS 的結構
通過分析目前其他Semantic Web 支撐軟體的功能和結構。我們把WODOS 系統的功能模
塊規劃成四個部分,這四個部分相輔相成,各自都有明確的功能。首先,這個系統要提供本
體信息的資料庫存儲機制, 這就需要本體資料庫的訪問操作模組, 我們定義為RCS; 其次,
作為支撐軟體,WODOS 是以第三方軟體的形式提供給別人使用的, 這就需要定義一個對外
的接口個OdoAPI 查詢模組( 含RQL 解
釋器), 整個接口模組我們定義為ACS; 再次, 處理本體需要很多的參數, 而且要調用系統
的功能需要一個可視化的界面,我們將這一部分界面和管理功能模組定義為MCS;最後,為
了實現基於本體的推理機制, 我們定義了以F-Logic 推理核心為核心的功能模組ICS。4.WODOS 的實現
我們發現WODOS 雖然可以進行RQL(RDF Query Language) 查詢, 實現了在本體數據
庫中比SQL 更高級的查詢模式, 但是僅僅依靠RQL 還存在著一些明顯的不足:
z 本體的局限性大。RQL 只能查詢本體資料庫中已有的本體知識,不能推理出隱含的本
體知識。而在實際套用中,發現隱含的本體知識也應該是本體資料庫的一個重要組成
部分。
z 查詢語句的可讀性差。RQL 語句雖在形式上和SQL 有一些相似之處, 但是由於其處理的對象是本體知識,而不是簡單的記錄,因此在語法上變得更為靈活和複雜。例如
以下語句:
select P from subClassOf(Class[4]){P} where P in Class
可以查詢出一個類的所有子類。但是這種形式的語言與自然語言還有很大差距, 不容易
讓人很直觀的理解一個稍微複雜一些的RQL 語句。
通過分析上述不足, 我們迫切需要一種能夠基於本體進行真正的邏輯推理並且語句更接
近自然語言的新的查詢方法。經過調研, 我們發現F-Logic 語言表達邏輯推理比較合適。目
前支持F-Logic 的系統是SiLRI( Simple Logic-based RDF Interpreter)。
一個一般的F-Logic 描述由三個部分組成:事實、規則和查詢。在SiLRI 系統中,事實可
以用RDF 檔案或者F-Logic 自己定義的事實表示方法來描述; 規則和查詢都是用F-Logic 語
句來實現。比如用F-Logic 定義一個祖父關係的推理規則, 然後查找出所有的有祖父關係的
祖孫對, 就可以這樣來寫:
FORALL X,Y,Z grandpa(X,Z) <- X["Father"->>Y] AND Y["Father"->>Z]. //規則
FORALL grandson,grandpa <- Grandpa(grandson,grandpa). //查詢
注意我們默認已經存在“ Father”本體關係,但是沒有“ Grandpa”本體關係。“ Grandpa”
本體關係是通過第一條規則語句用戶自己定義的, 即如果Y 是X 的“ Father”, Z 是Y 的
“ Father”,那么Z 是X 的“Grandpa”。然後通過第二條查詢語句查找出所有的有祖父關係的
祖孫對。很明顯,這樣定義的推理規則以及查詢語句恰到好處的解決了RQL 的兩個不足,即
可以推理出隱含的本體關係, 且語句更接近自然語言, 更為人性化。
在SiLRI 的調研基礎上,我們進一步完善了WODOS,加入了F-Logic 邏輯推理核心。目
前的WODOS 具備以下新特性:
z 本體推理機制。集成了SiLRI 的F-Logic 推理核心, 實現基於本體的推理機制。
z 數據源的多樣性。我們發現如果僅僅以RDF 檔案做為F-Logic 運算的數據源,那么就
不能利用上分散式本體資料庫的優勢,因此我們研究出了直接從分散式本體資料庫獲
得數據源並且進行F-Logic 運算的方法。
z 本體粒度的細化。我們考慮到在實際套用的系統中,可能由於本體庫中會有各種不同
的本體,大量本體之間的聯繫不一定很緊密,如果在如此龐雜的各類本體中進行某種
邏輯推理,效率是一個問題。因此,我們繼續研究了本體庫的粒度問題,進而實現了
從本體資料庫中導出某一個或某些本體的功能。為了使使用更為靈活,更能表達語義
信息, 對於這個功能, 我們實現了用RQL 查詢語句直接查詢出相應的規則作用域,
之後在此規則作用域上繼續進行F-Logic 的邏輯運算。這種功能的實現更能滿足實際
工程的需求。
5.WODOS 運行舉例
z 運行環境和問題描述:
此系統可以運行於Windows、Linux 等各種作業系統, 支持Mysql 資料庫, 通過RDF
檔案描述本體信息, 並且將RDF 解析到本體資料庫中, 進而在此基礎上進行RQL 查
詢以及F-Logic 邏輯推理。下面的例子說明了這個過程。
z 描述本體的RDF 檔案:<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:s="http://family.org/schema/"
>
<rdfs:Class rdf:about="http://family.org/schema/Ellen">
<s:Father rdf:resource="http://family.org/schema/Robbie"/>
</rdfs:Class>
<rdfs:Class rdf:about="http://family.org/schema/Ellen">
<s:Mother rdf:resource="http://family.org/schema/Marilyn"/>
</rdfs:Class>
<rdfs:Class rdf:about="http://family.org/schema/Robbie">
<s:Father rdf:resource="http://family.org/schema/Philip"/>
</rdfs:Class>
<rdfs:Class rdf:about="http://family.org/schema/Robbie">
<s:Mother rdf:resource="http://family.org/schema/Susan"/>
</rdfs:Class>
<rdfs:Class rdf:about="http://family.org/schema/Richard">
<s:Mother rdf:resource="http://family.org/schema/Susan"/>
</rdfs:Class>
<rdfs:Class rdf:about="http://family.org/schema/Marilyn"/>
<rdfs:Class rdf:about="http://family.org/schema/Philip"/>
<rdfs:Class rdf:about="http://family.org/schema/Susan"/>
</rdf:RDF>
此RDF 檔案描述了簡單的Father 和Mother 本體關係, 比如本體Robbie 是本體Ellen 的
Father, 本體Marilyn 是本體Ellen 的Mother 等。
z 使用的RQL 查詢語句:
select X, Y from {X}Property[6]{Y}
其中Property[6]就是Father 屬性( 說明:系統的固有的屬性有:type、domain、range、
subClassOf 和subPropertyOf 等5 個, 因此Father 屬性是第6 個屬性, 相應的Mother
屬性是第7 個屬性)。這條RQL 語句的含義就是查詢出所有的有Father 屬性關係的主
語和賓語。
z 使用的F-Logic 查詢語句:
FORALL X,Y,Z Grandpa(X,Z) <- X[">Y">http://family.org/schema/Father"->>Y]
AND Y[">Z].//">http://family.org/schema/Father"->>Z].//規則
FORALL grandson,grandpa <- Grandpa(grandson,grandpa).//查詢
如同前面介紹的那樣,通過Father 屬性關係的傳遞性定義了Grandpa 屬性關係,並且查詢出所有的祖孫對。z 查詢結果:
分三個部分:
1. RQL 語句的查詢結果:
RQL Query Result:
http://family.org/schema/Ellen
http://family.org/schema/Robbie
http://family.org/schema/Robbie
http://family.org/schema/Philip
2. 通過1 的查詢結果抽出的相關本體信息:
Ontology related to the RQL Query Result:
<rdf:Description rdf:about="http://family.org/schema/Ellen"><rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
<rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
<rdfs:subClassOf rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
<rdfs:subClassOf rdf:resource="http://family.org/schema/Ellen"/>
<s:Father rdf:resource="http://family.org/schema/Robbie"/>
<s:Mother rdf:resource="http://family.org/schema/Marilyn"/>
</rdf:Description>
由於本體信息很長, 這裡只給出了Ellen 本體信息的RDF 描述。
3. 基於2 抽出的本體信息進行F-Logic 邏輯推理, 查詢出所有的祖孫對:
Flogic Query Result based on the Ontology:
grandson = "http://family.org/schema/Ellen"
grandpa = "http://family.org/schema/Philip"
z 本例小結:
在這個例子中, 說明了WODOS 將RDF 本體信息導入本體資料庫, 執行RQL 語句,
執行F-Logic 語句, 以及RQL 和F-Logic 的綜合查詢等功能。
6. 結論和下一步工作
通過上述分析和討論, 我們發現雖然目前存在著各種各樣的語義Web 的支撐軟體, 但是
功能並不是十分完善, 有的不支持資料庫操作, 有的操作界面還是字元形式, 有的還停留在
使用C 語言開發( 不如java 有更好的可擴展性和移植性), 大多數不支持基於本體的邏輯運
算。我們則從中吸取了經驗, 使用純java 開發, 支持資料庫的本體信息存取, 使用F-Logic
語言作為本體的邏輯推理核心,在同一個綜合界面上實現了RQL 和F-Logic 功能的集成,可
以先使用RQL 查出相應本體, 再運用F-Logic 進行基於規則的邏輯推理。
當然, 我們的WODOS 系統也在逐步的成熟階段, 還有相當的工作要做:
z 制定用RDF 表示F-Logic 規則的規範。將目前的本體資料庫發展成本體規則資料庫,
使得資料庫中不僅保存本體信息,並且也保存相應的規則,提供更為簡潔的推理機制。
z 支持XML 資料庫以及面向對象的資料庫也是比較重要的發展方向。由於處理的對象
是本體信息, 並且本體信息一般用RDF 檔案的形式表示, 而RDF 本身就是XML 的
擴展, 因此進一步研究XML 資料庫以及面向對象的資料庫對於本體信息的存取, 可
以更好的保存語義信息, 提供更高的性能。
References:
1. XU Jian-Jun et al, “The Intelligent Web Services Based on the Ontology”,Computer Science,
2002,29(12):92-94
2. James Hendler. “Agents and the Semantic Web” IEEE Intelligent Systems March/April
2001: 30-37
3. Jeff Heflin and James Hendler. “A Portrait of the Semantic Web in Action” IEEE
Intelligent Systems March/April 2001: 54-59
4. Michel Klein. “XML, RDF and Relatives” IEEE Intelligent Systems March/April 2001:26-28
5. Sheila A. McIlraith, Tran Cao Son and Honglei Zeng. “Semantic Web Service” IEEE
Intelligent Systems March/April 2001: 46-53
6. Deborah L. McGuinness, Richard Fikes, James Rice, and Steve Wilder. “The Chimaera
Ontology Environment” Proceedings of the seventeenth National Conference on Artificial
Intelligence (AAAI 2000). Austin, Texas. July 30-August 3, 2000
7. Deborah L. McGuinness. “Conceptual Modeling for Distributed Ontology Environments”
Proceedings of the Eighth International Conference on Conceptual Structure Logical,
Linguistic, and Computational Issues(ICCS 2000), Darmstadt, Germany, August 14-18, 2000.
8. McGuinness, D.L., Fikes, R., Rice, J. and Wilder, S. “An Environment for Merging and
Testing Large Ontologies,” Principles of Knowledge Representation and Reasoning:
Proceedings of the Seventh International Conference(KR 2000). A.G.Cohn, F.Giunchiglia and
B.Selman, editors. San Francisco, CA, Morgan Kaufmann Publishers.
9. Tim Berners-Lee, James Hendler and Ora Lassila. “ The Semantic Web”, SCIENTIFIC
AMERICAN, May, 2001: 34-43
附中文參考文獻:
1. 徐劍軍等,“ 基於本體的智慧型Web 服務” ,計算機科學,2002,第29 卷第12 期:92-94