⑴ 請問用jena包解析我自己用protege構建的本體,為什麼提示URL錯誤呢這個URL不是protege自己分配的嗎
自己分配的不一定都能用,嘗試一下其他的吧,或許是版本要升級。
⑵ 已知Jena的類,如何通過迭代得到該類的具體實例
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)以支持對導入本體的文檔管理。
⑶ 試驗說明
下面以具體試驗來說明,由演算法生成的大連灣區域土地利用應用本體實例,如圖5.42 所示,描述了大連灣地區土地利用方面的信息,包含空間數據和非空間數據的語義信息,圖 5.42 是對應土地利用本體的樹狀結構圖。本體構建過程參照 《國家資源環境遙感宏觀調查土地資源分類系統》和中國科學院地理科學與資源研究所數據中心土地利用本體分類體系。
當用戶提出查找在大連灣東北方向,並位於大連灣50 km 內包含湖泊的所有林地地理實體時,此查詢語句較為復雜包括方位關系(大連灣東北方向)、距離關系(大連灣 50km 內)、拓撲關系(林地包含湖泊)和語義關系(林地是有林地、灌木林、疏林地和宜林地的父類)。傳統的方法很難實現這種復雜的查詢請求,通過創建 DALIAN Region 應用本體就可以很好的解決這種復雜的查詢請求。本試驗是基於 Jena 和 ArcServer 開發的,首先在伺服器端調用編寫的本體查詢函數(用 Jena 解析),利用應用本體實例中的空間語義關系進行推理。如圖 5.42 和圖 5.43,「有林地」、「灌木林」、「疏林地」和 「宜林地」是林地的子類,宜林地和草山草坡是同義關系,灌木林和疏林地是林間草地的父類。利用Jena 工具很容易就可以把對林地的查詢自動的推理到 「有林地」、「灌木林」、「疏林地」、「宜林地」、「草山草坡」和林間草地中去; 對空間關系的查詢,應用本體中已經描述了拓撲關系(Contain)、方位關系(EastNorth)和距離關系(11.7,36.5)只需要用 Xpath、Xquery 查詢語言進行查詢轉換即可。然後將查詢到的 DALIAN Region 土地利用應用本體的結果,組織成 SQL 語句傳遞給 ArcServer 的 GetFeatureClass 類,由 ArcServer 返回查詢結果,在客戶端顯示。客戶端顯示的查詢結果如彩圖 5.1 所示,其中黃色高亮顯示的為查詢結果。
圖 5.43 土地利用應用本體實例(局部)
空間信息的查詢與檢索是空間信息共享的前提條件。但由於用戶認知和概念世界中的概念與系統模型中的概念之間存在語義異質性,用戶檢索出來的數據往往並不是他們真正想要的。通過建立等價關系、繼承關系、逆反關系以及拓撲、方位和距離等空間關系的地理本體並將之用於檢索請求可以解決這種語義異質性,從而實現更高級別的檢索。在檢索處理過程中,以空間數據的屬性關系圖 ARG 作為描述地理實體空間關系的基礎,基於應用本體實例生成演算法 AOGA 和語義推理工具 Jena 實現異構消解和語義擴展,極大地提高了檢索准確率。以下是本解決方案的優點和將來的工作。
(1)提出了描述空間關系的 ARG 模型,利用 ARG 可以方便地查詢任意兩個地理實體的空間關系,改進以往空間關系查詢時 SQL 擴展的不便性;
(2)建立了非空間數據之間的語義關系,可以更全面的檢索出所需數據;
(3)提出了應用本體實例生成方法,可以較為方便的生成所需應用本體實例;作為將來的工作,將集中在以下兩點。
(4)建立 ARG 模型時,需花費大量的時間,且容易出錯,下一步將研究更自動化的方法建立所需的 ARG。
(5)本體建立層次還較低,只是建立到大類,後續工作,需要在建立地理本體時,建立到具體地理實例一級,要具體到地理實體的名稱。
代碼如下:
import Java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;import com.hp.hpl.jena.db.DBConnection;
import com.hp.hpl.jena.db.IDBConnection;
import com.hp.hpl.jena.ontology.OntModel;
import com.hp.hpl.jena.ontology.OntModelSpec;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.rdf.model.ModelMaker;
⑸ 如何將Jena中創建的本體,類存到owl文件中
請使用protege4+的版本,設計好本體模型後,保存時可以選擇需要的格式(比如OWL)
⑹ 怎麼在已有的項目中,用jena的API解析owl文件內容
將ShowRecord.owl文件存儲到MySQL資料庫中,資料庫叫Jena,在Eclipse中創建工程OperaOntology,代碼如下:importJava.io.*;importjava.sql.SQLException;importcom.hp.hpl.jena.db.*;importcom.hp.hpl.jena.ontology.OntClass;importcom.hp.hpl.jena.rdf.model.*;publicclassOperaOntology{="com.mysql.jdbc.Driver";publicstaticfinalStringstrURL="jdbc:mysql://localhost:3306/jena";//localhost的後面要直接寫冒號,再寫3306;="root";="root";publicstaticfinalStringstrDB="MySQL";publicstaticvoidmain(String[]args){try{DBConnectionconnection=newDBConnection(strURL,strUser,strPassword,strDB);System.out.println(connection);//創建連接時,第四個參數需要指定所用的資料庫類型;也就是說strDB的值應該是「MySQL」try{Class.forName("com.mysql.jdbc.Driver");System.out.println("驅動程序已經安裝。");}catch(ClassNotFoundExceptione){System.out.println("ClassNotFoundException,Driverisnotavailable");}System.out.println("資料庫連接成功。");//從此處開始讀入一個OWL文件並且存儲到資料庫中;ModelMakermaker=ModelFactory.createModelRDBMaker(connection);//使用資料庫連接參數創建一個模型製造器ModeldefModel=maker.createModel("ShowRecord");//創建一個默認模型,命名為CostumeModel,因為我要存入的OWL文件名是CostumeFileInputStreamread=null;try{Filefile=newFile("e:/ontologies/ShowRecord.owl");read=newFileInputStream(file);}catch(FileNotFoundExceptione){e.printStackTrace();System.out.println("未找到要存儲的本體文件,請檢查文件地址及名稱");}System.out.println("已將本體文件轉換為位元組流文件。");InputStreamReaderin=null;try{in=newInputStreamReader((FileInputStream)read,"UTF-8");}catch(UnsupportedEncodingExceptione){e.printStackTrace();System.out.println("不支持上述字元集。");}System.out.println("已將位元組流文件轉換為UTF-8編碼。");defModel.read(in,null);try{in.close();}catch(IOExceptione){e.printStackTrace();System.out.println("無法關閉位元組流文件。");}System.out.println("已將位元組流文件關閉。");defModel.commit();System.out.println("數據轉換執行完畢,已將本體文件存入資料庫。");try{connection.close();}catch(SQLExceptione){e.printStackTrace();System.out.println("文件無法關閉。");}}catch(RDFRDBExceptione){e.printStackTrace();System.out.println("出現異常");}System.out.println("已將本體文件持久化到資料庫中");}}以上步驟成功完成以後,我登錄到MySQL的界面查詢工具查看Jena資料庫的表,點擊「Catalogs「
⑺ 使用jena解析了一個rdf,怎樣在jsp中講結果顯示出來
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<script>
function dianji(obj)
{
var t = document.getElementById("value");
t.value = obj.value;
}
</script>
</HEAD>
<BODY>
<form>
<input type="text" id="value"/>
<input type="button" value="submit" onclick="dianji(this);"/>
</form>
</BODY>
</HTML>
⑻ 請問Jena如何生成OWL本體嗎
jena還不支持生成owl文件,可以使用owl api。
⑼ 關於protege構建中文本體的問題,請問如何在protege軟體中選擇中文解析器
解析protege要在java環境中利用jena等本體解析工具對owl文件進行解析。protege只是支持本體的構建和推理。有關jena的東西你可以上網搜索,或到其官方網站