iMarine http://iMarine.blog.163.com/
在技術(shù)實現(xiàn)方面,語義Web和本體理論的研究日趨成熟,已經(jīng)有許多成熟的工具或程序接口,諸如Jena、OWL API等API是系統(tǒng)實現(xiàn)的關(guān)鍵技術(shù)。這里介紹系統(tǒng)的可行性分析以及系統(tǒng)開發(fā)設(shè)計的關(guān)鍵技術(shù)。
Jena[69]是來自于惠普實驗室語義Web研究項目的開放資源,是用于創(chuàng)建語義Web應(yīng)用系統(tǒng)的Java開發(fā)工具。Jena是語義Web和本體領(lǐng)域比較流行的開發(fā)工具,目前的版本為Jena 2.5.5。下面簡單介紹Jena的一些功能。
1) 讀寫RDF數(shù)據(jù)
資源描述框架(Resource Description Framework, RDF)是描述資源的一項標(biāo)準(zhǔn),Jena文檔介紹了RDF和Jena RDF API,其內(nèi)容包括對Jena RDF包的、RDF模型的創(chuàng)建、讀寫、查詢等操作,以及RDF容器等的介紹和討論。在Jena中,一個Graph被稱為一個模型,并被com.hp.hpl.jena.rdf.model.Model接口所表示。RDF數(shù)據(jù)模型是一些Statements的集合,每一個陳述都包括資源,屬性和值三個部分。
2) 本體子系統(tǒng)
Jena框架包含一個本體子系統(tǒng)(Ontology Subsystem),負責(zé)處理本體模型。Jena API允許處理基于RDF的本體數(shù)據(jù),支持OWL,DAML+OIL和RDFS等語言。Jena通過文檔管理器(DocumentManager)支持對導(dǎo)入本體的文檔管理,通過特定方法獲得本體中類和屬性的信息,完成類和屬性的添加、刪除等修改操作。本體子系統(tǒng)與推理子系統(tǒng)結(jié)合可以完成本體內(nèi)部的知識推理,從本體中提取隱含信息。在系統(tǒng)的本體展示模塊,將主要使用本體子系統(tǒng)的類和接口。
3) 推理子系統(tǒng)
Jena的推理子系統(tǒng)(Inference Subsystem)允許將一些推理引擎或推理機引入到Jena中,從而獲得本體數(shù)據(jù)中隱含的信息。推理機制支持RDFS和OWL等支持推理的語言,可以執(zhí)行從實例(instance)到類(class)的推理。應(yīng)用程序通常使用ModelFactory創(chuàng)建一個支持某種推理機制的本體模型,對該模型的查詢不僅返回原始數(shù)據(jù)中包含的陳述(statements),而且有一些通過推理機制從原始數(shù)據(jù)得到的附加信息。Jena提供給基于規(guī)則的推理機,包括RDF推理機,OWL推理機等,在基于規(guī)則的推理機中包含了一般的推理功能。用戶也可以根據(jù)需要自定義推理規(guī)則,或者也可以注冊使用第三方推理引擎,如Racer、FaCT、Pellet等。
4) 本體的持久化存儲
Jena允許將本體文件持久化存儲到硬盤中,或者是OWL文件,或者是關(guān)系數(shù)據(jù)庫。Jena提供了將RDF數(shù)據(jù)存入關(guān)系數(shù)據(jù)庫的接口,在實際操作中,應(yīng)用程序不必直接訪問數(shù)據(jù)庫(而是通過Jena的API訪問),也不必知道數(shù)據(jù)庫的模式。Jena提供了支持MySQL、HSQLDB、PostgreSQL、Oracle和Microsoft SQL Server等數(shù)據(jù)庫的程序接口。一般來講,創(chuàng)建數(shù)據(jù)庫模型或者打開先前創(chuàng)建的模型,通過以下四個步驟完成:加載數(shù)據(jù)庫JDBC驅(qū)動、創(chuàng)建數(shù)據(jù)庫連接、為數(shù)據(jù)庫創(chuàng)建一個ModelMaker,最后為本體創(chuàng)建一個模型。
5) 查詢模型
Jena提供了ARQ查詢引擎,支持通過SPARQL查詢語言或RDQL查詢語言對本體模型進行查詢。查詢引擎與關(guān)系數(shù)據(jù)庫相關(guān)聯(lián),使得查詢存儲在關(guān)系數(shù)據(jù)庫中的本體時能夠達到更高的效率。SPARQL查詢是把作為查詢條件的三元組(查詢模式,Pattern)和本體模型的三元組進行匹配,查詢的結(jié)果就是條件三元組與本體文件(或RDF圖)中RDF三元組匹配的結(jié)果。SPARQL查詢是面向數(shù)據(jù)的,SPARQL語言本身不支持任何推理功能。
OWL API是專門為W3C推薦的Web本體描述語言O(shè)WL所實現(xiàn)的開源Java程序接口,支持對OWL-Lite、OWL-DL和OWL-Full部分元素的操作。OWL API和Jena同是SourceForge(http://sourceforge.net/)下的開源項目,特別針對OWL描述的本體。OWL API在org.semanticweb.owl.model包中提供了表示OWL本體的類和接口,主要有OWLClass、OWLObjectProperty、OWLDatatypeProperty和OWLIndividual。OWL API也提供了一系列使用OWL推理機的接口,用于執(zhí)行本體上的推理任務(wù)。目前可用的推理機是Pallet和FaCT++,在使用推理機之前必須下載推理機的Java API。
Protégé是斯坦福大學(xué)開發(fā)的一個Java開源的本體編輯工具,其GUI界面風(fēng)格使得用戶比較容易掌握和使用。Protégé提供了本體建設(shè)的基本功能,使用起來簡單方便,有詳細的幫助文檔,模塊劃分清晰,提供完全的API接口,因此基本上成為國內(nèi)外眾多本體研究機構(gòu)創(chuàng)建本體的首選工具。
Protégé樹形目錄結(jié)構(gòu)顯示本體中的類和屬性,允許用戶增加或編輯類、子類、屬性、實例等,允許用戶在概念層次上進行領(lǐng)域模型設(shè)計。Protégé支持多重繼承,并對新數(shù)據(jù)進行一致性檢查。Protégé具有很強的可擴展性,通過安裝不同的插件取得對本體的不同操作能力。在Protégé中,本體的文件輸出格式可以定制,可以將Protégé的內(nèi)部表示轉(zhuǎn)換成多種形式的文本表示格式,包括XML、RDF(S)、OIL、DAML、DAML+OIL和OWL等系列語言。Protégé支持本體的數(shù)據(jù)庫存儲,使用JDBC和JDBC-ODBC橋訪問數(shù)據(jù)庫,將本體存入數(shù)據(jù)庫中。
Protégé除了提供本體編輯工具以外,還提供了一整套的OWL API。Protégé OWL API是為Web本體語言O(shè)WL和RDF(S)而實現(xiàn)的開源Java類庫,該API提供了加載和保存OWL文件、查詢和操作OWL數(shù)據(jù)模型,以及執(zhí)行基于描述邏輯的推理的類和方法,這些類和接口主要在edu.stanford.smi.protegex.owl.model包中。當(dāng)然,它也可以處理RDF/RDF(S)本體,與此對應(yīng)的類主要有RDFSNamedClass、RDFProperty和RDFIndividual等。使用Protégé OWL API操作本體要比使用Jena操作本體簡單的多,在許多方面,Protégé OWL API對同樣功能的實現(xiàn)要比基于Jena API的實現(xiàn)更加簡潔易懂。
[1] SPARQL Query Language for RDF. W3C Recommendation 15 January 2008. http://www.w3.org/TR/rdf-sparql-query/
[2] V. Batagelj. Analysis of large networks - islands. Presented at Dagstuhl seminar 03361: Algorithmic Aspects of Large and Complex Networks, August/September 2003.
[3] http://jena.sourceforge.net/
[4] http://owlapi.sourceforge.net/
[5] Natalya F and Deborah L. Ontology Development101: A Guide to Creating Your First Ontology.Technical report KSL-01-05 Knowledge system laboratory, Stanford University, CA 2001:1-25.
[6] Protégé-OWL API. http://protege.stanford.edu/plugins/owl/api/index.html