http://blog.csdn.net/hongyiluoguihua/article/details/8230317 1. 什麼是jena(摘自http://imarine.blog.163.com/blog/static/51380183200812774739130/ )
Jena由
HP Labs(http://www.hpl.hp.com)開發的Java開發套件, 用於Semantic Web(語義網)中的應用程式開發;Jana是開源的,在下載的文檔中有Jena的完整代碼。Jena架構主要包括:
a) 以RDF/XML、三元組形式讀寫RDF
資源描述架構是(RDF)是描述資源的一項標準(在技術上是W3C的推薦標準),Jena文檔中有一部分呢詳細介紹了RDF和Jena RDF API,其內容包括對Jena RDF包的介紹、RDF模型的建立、讀寫、查詢等操作,以及RDF容器等的討論。
b) RDFS,OWL,DAML+OIL等本體的操作
Jena架構套件含一個本體子系統(Ontology
Subsystem),它提供的API允許處理基於RDF的本體資料,也就是說,它支援OWL,DAML+OIL和RDFS。本體API與推理子系統結合
可以從特定本體中提取資訊,Jena 2還提供文件管理器(OntDocumentManager)以支援對匯入本體的文件管理。
c) 利用資料庫儲存資料
Jena 2允許將資料存放區到硬碟中,或者是OWL檔案,或者是關聯式資料庫中。本文處理的本體就是OWL檔案讀入的。
d)查詢模型
Jena 2提供了ARQ查詢引擎,它實現SPARQL查詢語言和RDQL,從而支援對模型的查詢。另外,查詢引擎與關聯式資料庫相關聯,這使得查詢儲存在關聯式資料庫中的本體時能夠達到更高的效率。
e) 基於規則的推理
Jena 2支援基於規則的簡單推理,其推理機制支援將推理器(inference reasoners)匯入Jena,建立模型時將推理器與模型關聯以實現推理。
Protégé是一個開源的本體編輯器(目前的版本是Protégé
3.2),使用者可以在GUI環境下建立本體或者知識庫。有一種說法是:Jena對應用程式就像Protégé對我們——我們使用Protégé操作本體,
應用程式則是使用Jena來做同樣的工作。當然這些應用程式還是得由我們來編寫。
2. jena的使用
2.1 從http://www.hpl.hp.co.uk/people/bwm/rdf/jena/download.htm 下載jena包。
在百度中輸入“jena ppt” 點擊第一個串連,可以下到一個關於jena的ppt,內容不錯。
2.2 我們使用的是eclipse平台建立一個工程,匯入jena/lib裡面的jar包。
2.3 使用jena提供的各種API。。(強大的東東)
我下載的jena包2.4包含了一些簡單的demo。
2.2 我們使用的是eclipse平台建立一個工程,匯入jena/lib裡面的jar包。
2.3 使用jena提供的各種API。。(強大的東東)
我下載的jena包2.4包含了一些簡單的demo。
1.本體模型OntModel
本體模型(OntModel)是對Jena
RDF模型的擴充(繼承自RDF模型),提供了處理本體資料的功能。使用Jena處理本體首先就是要建立一個本體模型,之後就能夠通過本體模型中所定義的
方法操作模型,比如匯入子模型()、擷取模型中本體的資訊、操作本體屬性以及將本體的表示輸出到磁碟檔案等等。Jena通過model包中的
ModelFactory建立本體模型,ModelFactory是Jena提供用來建立各種模型的類,在類中定義了具體實現模型的成員資料以及建立模型
的二十多種方法。一個最簡單的建立本體模型的語句如下:
OntModel ontModel = ModelFactory.createOntologyModel();
該語句不含參數,應用預設設定建立一個本體模型ontModel,也就是說:它使用OWL語言、基於記憶體,支援RDFS推理。可以通過建立時應用程式模型類別
(OntModelSpec)參數建立不同的模型,以實現不同語言不同類型不同推理層次的本體操作。例如,下面的語句建立了一個使用DAML語言記憶體本體
模型。直觀地講,記憶體模型就是只在程式運行時存在的模型,它沒有將資料寫回磁碟檔案或者資料庫表。
OntModel ontModel = ModelFactory.createOntologyModel( OntModelSpec.DAML_MEM );
更多類型設定可以參照OntModelSpec類中的資料成員的說明。
我們所使用的本體是從OWL檔案獲得的,也就是說,是從磁碟讀取的。讀取的方法是調用Jena OntoModel提供的Read方法。例如
ontModel.read("file:D:/temp/Creatrue/Creature.owl");
就是讀取位於D盤相應目錄下的Creature.owl檔案以建立本體模型。Read方法也有很多重載,上面調用的方法以檔案的絕對路徑作為參數。其他的方法聲明如下
read( String url );
read( Reader reader, String base );
read( InputStream reader, String base );
read( String url, String lang );
read( Reader reader, String base, String Lang );
read( InputStream reader, String base, String Lang );
2.文件管理器Document manager
本體文件管理器(OntDocumentManager)是用來協助管理本體文檔的類,它包含了匯入本體文檔建立本體模型、協助緩衝下載網路上的本體等功
能。每個本體模型都有一個相關聯的文件管理器。在建立本體模型時,可以建立獨立的文件管理器並作為參數傳遞給模型工廠(ModelFactory)。文檔
管理器有非常多的配置選項,基本可以滿足應用的需求。首先,每個文件管理器的參數都可以通過Java代碼來設定
(註:OntDocumentManager有五種重載的建構函式)。另外,文件管理器也可以在建立的時候從一個RDF格式的策略檔案讀取相應設定值。
下面的例子建立一個文件管理器並將它與以建立的本體模型關聯。
OntModel m = ModelFactory.createOntologyModel();
OntDocumentManager dm = m.getDocumentManager();
3.介面OntClass
這個介面中定義了本體種與概念(也就是類Class)相關的操作,通過OntModel中的
listClasses()
便可以返回模型中的所有概念組成的迭代器(Iterator),然後調用OntClass的各種方法具體進行具體操作。OntoClass對概念之間的各
種關係都有相應的定義方法,典型的有添加子類、添加約束、建立互斥概念、迭代返回某種類型的概念以及相關的邏輯判斷等等。
4.基本本體類型OntResource
所有本體API中用於表示本體的類繼承自OntResource,這樣就可以在OntResource中放置所有類公用的功能,並可以為一般的方法設定通
用的傳回值。Java介面OntResource擴充了Jena的RDF資源介面,所以任何可以接受資源或者RDFNode的方法都可以接受
OntResource,並且也就可以接受任何其他本體值。雖然這個類涵蓋了涉及本體的所有類,在例子中並沒有使用它。從Jena Java
Doc可以獲得它的詳細資料。