2013-10-22 45 views
0

我開始學習Java中的OWL,我讀過一些內容,包括OWL API,Apache Jena和Protege。我想在owl中獲得這個類,但是在OWL API中它返回輸入的IRI。在Java中查找OWL類

下面是過程: 讓我們認爲我正在尋找單詞'美麗',這是'檢查員'的個人,'檢查員'是'衛報'的子類。 目前在我的程序中,輸出是美麗本身的IRI。 我想獲得Inspector IRI和Guardian IRI。

任何幫助/指南將讚賞,感謝:)

+0

」關於您編寫​​的代碼問題的問題必須在問題本身中描述具體問題 - 幷包含有效代碼以再現問題本身,請參閱SSCCE.org以獲取指導。「可以提出一些通用的方法來實現你想要做的事情,但是如果沒有看到你的代碼,除了「你的代碼必須是錯誤的」之外很難說出任何其他的東西,這不是非常有建設性的。 「目前在我的程序中,輸出是美容本身的IRI,我想要得到Inspector IRI和Guardian IRI。」是的,聽起來這個節目不是你想要的。 :) –

+0

「我想在owl中獲得類,但是在OWL API中它返回輸入的IRI。」 Java是一種靜態類型語言,所以如果你有一個返回類型爲OWLClass的方法,你實際上並沒有從它返回一個IRI;代碼不會編譯。你的意思是說你打印了你認爲應該得到一個OWLClass的東西的結果,並且你正在瀏覽一個IRI?這可能就是toString爲OWLClass實現的方式。請顯示您使用的代碼,實際生成的輸出以及您期望(或想要)的輸出。 –

回答

2

如果你有一個OWLIndividual,那麼你應該能夠調用getTypes得到一組具有的類型,其中之一將是的你正在描述的課程。 (請注意,默認的toString方法中的一些OWL API類可能會顯示該事物的IRI,因此僅打印個人或類可能與將其IRI打印爲字符串看起來相同)。getTypes返回一組OWLClassExpressions,並且一次你有其中一個,你可以使用asOWLClass來獲得相應的類,然後使用getSuperClasses來遍歷你的類層次結構。請注意,如果Ignazio pointed out in the comments,如果類表達式不是匿名的,則只應該調用asOWLClass。要獲得保證完整的超類列表,還需要使用與OWL完全相關的推理器,而OWL API內置的推理器則不然。 「

+1

我會添加一個警告,即只有當isAnonymous()對該對象返回false時,才能調用asowLClass(),如[javadoc]中所述(http://owlapi.sourceforge.net/javadoc/org/ semanticweb/owlapi /模型/ OWLClassExpression.html)。另外,如果沒有OWLReasoner,OWL API將不保證結果的完整性。這些reasoners的列表是[這裏](https://github.com/owlcs/owlapi/wiki/Reasoners,-OWL-API-Support,-papers-about-the-OWL-API)。 – Ignazio

+0

好點,好抓!我不是一個OWL API用戶;我只知道在哪裏可以找到Javadocs,所以我並不總是抓住所有這些注意事項。 –

+0

不錯先生喬斯華,謝謝你的一步一步描述,現在我能夠找出我想要的東西:) –