一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

對Jena的簡單理解和一個例子_2

 一輝 2008-02-26
對Jena的簡單理解和一個例子_2
2007年04月25日 星期三 09:05

(接上“對Jena的簡單理解和一個例子_1”)

3.接口OntClass

這個接口中定義了本體種與概念(也就是類Class)相關(guān)的操作,通過OntModel中的listClasses()便可以返回模型中的所有概念組成的迭代器(Iterator),然后調(diào)用OntClass的各種方法具體進行具體操作。OntoClass對概念之間的各種關(guān)系都有相應(yīng)的定義方法,典型的有添加子類、添加約束、創(chuàng)建互斥概念、迭代返回某種類型的概念以及相關(guān)的邏輯判斷等等。

第四部分的例子主要是應(yīng)用這個類的方法。

4.基本本體類型OntResource

所有本體API中用于表示本體的類繼承自O(shè)ntResource,這樣就可以在OntResource中放置所有類公用的功能,并可以為一般的方法設(shè)置通用的返回值。Java接口OntResource擴展了Jena的RDF資源接口,所以任何可以接受資源或者RDFNode的方法都可以接受OntResource,并且也就可以接受任何其他本體值。雖然這個類涵蓋了涉及本體的所有類,在例子中并沒有使用它。從Jena Java Doc可以獲得它的詳細信息。

四、例子

本文實現(xiàn)了一個簡單的例子。通過Protégé 3.1創(chuàng)建一個Creature本體,并將其存儲到OWL文件Creature.owl,然后使用和Jena通過讀取該文件創(chuàng)建本體模型,實踐Jena中的一些Ontology API。本文不涉及如何使用Protégé 3.1創(chuàng)建本體,您可以到Protégé的主頁或者是http://www./modules/wordpress/尋找詳細的資料,后者雖然只是一個博客,但確實提供了很多我們需要的資源,比如一個完整的Protégé使用教程。本文例子中對Jena的使用主要參照Jena文檔中 Jena-2.4 src-examples jena examples ontology下面的describeClass。它讀取food.owl和wine.owl兩個文件建立本體模型,并顯示模型中概念以及相關(guān)關(guān)系的詳細信息。DescribeClass.java主要負責查詢詳細信息并顯示出來,Main.java只是創(chuàng)建本體模型并調(diào)用DescribeClass.java的功能。

例子的主要代碼如下列出。

// 創(chuàng)建使用OWL語言的內(nèi)存模型

OntModel ontModel = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM);

ontModel.read("file:./Creature.owl"); // 讀取當前路徑下的文件,加載模型

// 定義一個類作為模型中Animal類的等等價類,并添加注釋

OntClass cls = ontModel.createClass(":DongwuClass");

cls.addComment("the EquivalentClass of Animal...", "EN");

// 通過完整的URI取得模型中的Animal類

OntClass oc = ontModel.

getOntClass("http://www./marine.owl#Animal");

oc.addEquivalentClass(cls); // 將先前定義的類添加為Animal的等價類

// 迭代顯示模型中的類,在迭代過程中完成各種操作

for (Iterator i = ontModel.listClasses(); i.hasNext();) {

OntClass c = (OntClass) i.next(); // 返回類型強制轉(zhuǎn)換

if (!c.isAnon()) { // 如果不是匿名類,則打印類的名字

System.out.print("Class");

// 獲取類的URI并輸出,在輸出時對URI做了簡化(將命名空間前綴省略)

System.out.println(c.getModel().getGraph().

getPrefixMapping().shortForm(c.getURI()));                           

// 處理Animal類

if (c.getLocalName().equals("Animal")) { // 如果當前類是Animal

          System.out.println("     URI@" + c.getURI()); // 輸出它的完整URI                    // 取得它的的等價類并打印

          System.out.print("     Animal's EquivalentClass is "+

c.getEquivalentClass());

          // 輸出等價類的注釋

System.out.println(" [comments:" +

c.getEquivalentClass().getComment("EN")+"]");

}// 處理Animal結(jié)束  

// 迭代顯示當前類的直接父類

for (Iterator it = c.listSuperClasses(); it.hasNext();)

{

          OntClass sp = (OntClass) it.next();

          String str = c.getModel().getGraph()

                               .getPrefixMapping().shortForm(c.getURI()) // 獲取URI

                               + "'s superClass is " ;

          String strSP = sp.getURI();

          try{ // 另一種簡化處理URI的方法

                 str = str + ":" + strSP.substring(strSP.indexOf('#')+1);

                 System.out.println("     Class" +str);

          }catch( Exception e ){}

} // super class ends

// 迭代顯示當前類的直接子類

for (Iterator it = c.listSubClasses(); it.hasNext();){

System.out.print("     Class");

OntClass sb = (OntClass) it.next();

System.out.println(c.getModel().getGraph().getPrefixMapping()

                                             .shortForm(c.getURI())+ "'s suberClass is "

                                             + sb.getModel().getGraph().getPrefixMapping()

                                             .shortForm(sb.getURI()));

}// suber class ends

// 迭代顯示與當前類相關(guān)的所有屬性

for(Iterator ipp = c.listDeclaredProperties(); ipp.hasNext();){

          OntProperty p = (OntProperty)ipp.next();

          System.out.println("     associated property: " + p.getLocalName());

          }// property ends

}// anonymity ends

else // 是匿名類

{}

}// for ends

部分輸出結(jié)果如下,說明部分不在輸出中。

Class:Animal

  URI@http://www./marine.owl#Animal     // 完整的URI

// 等價類及其注釋

     Animal's EquivalentClass is :DongwuClass [comments:the EquivalentClass of Animal...]     Class:Animal's superClass is :Creature // 直接父類

     Class:Animal's suberClass is :MixAnimal // 直接子類

     Class:Animal's suberClass is :GrassAnimal

     Class:Animal's suberClass is :MeatAnimal

     associated property: eat // 關(guān)聯(lián)屬性

     associated property: beEated

     associated property: mainEat

后注:該例子沒有涉及Jena的推理功能,沒有實現(xiàn)屬性的過濾(只返回以當前類為主體的屬性),不能輸出間接父類(父類的父類)或間接子類,等等。因此,有待對Jena進一步熟悉之后作更多的改進。

五、參考資料

[1] Jena-2.4 doc ontology Jena 2 Ontology API文檔

[2] Jena-2.4 doc javadoc Jena 2 Java文檔

[3] Jena-2.4 src-examples jena examples ontology describeClass

[4] http://www./modules/wordpress 維基博客

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    日本午夜一本久久久综合| 亚洲中文字幕亲近伦片| 午夜国产精品国自产拍av| 国产又粗又爽又猛又黄的| 国产一级片内射视频免费播放| 欧美中文字幕一区在线| 欧美国产亚洲一区二区三区| 久久精品色妇熟妇丰满人妻91| 大香蕉再在线大香蕉再在线| 中文字幕日产乱码一区二区| 亚洲欧美日本视频一区二区| 日韩欧美国产精品中文字幕| av一区二区三区天堂| 亚洲一区二区三区四区性色av| 久久老熟女一区二区三区福利| 蜜桃臀欧美日韩国产精品| 亚洲一区二区精品免费视频| 最新午夜福利视频偷拍| 国产美女精品午夜福利视频| 好吊日在线视频免费观看| 亚洲最新av在线观看| 国产成人人人97超碰熟女| 亚洲第一区二区三区女厕偷拍| 五月天婷亚洲天婷综合网| 欧美自拍偷自拍亚洲精品| 色哟哟哟在线观看视频| 国产精品午夜一区二区三区 | 91欧美日韩精品在线| 日本一本在线免费福利| 好骚国产99在线中文| 久久热九九这里只有精品| 男女午夜在线免费观看视频| 婷婷基地五月激情五月| 美国欧洲日本韩国二本道| 欧美尤物在线视频91| 中文字幕日韩一区二区不卡| 欧美成人黄色一区二区三区| 精品日韩中文字幕视频在线| 亚洲一区二区三区中文久久 | 国产黄色高清内射熟女视频| 久久精品国产99精品亚洲|