jena基本使用

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可以獲得它的詳細信息。

發佈了24 篇原創文章 · 獲贊 3 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章