2013-01-16 28 views
0

我想編寫一個查詢沒有在OWL DL查詢推論 - API

醫院和hasNameWithWords值「中心」 ^^串

該查詢返回我,有實例在Protege 4.2的名稱中使用FACT ++推理器以及隱士推理器「中心」的醫院

但是當我在OWL-API的DL查詢示例中輸入相同的查詢時,可以在網站中使用 http://sourceforge.net/p/owlapi/code/ci/aef6981535f07a2d0d44c394b9f4d5415f36025a/tree/contract/src/test/java/org/coode/owlapi/examples/DLQueryExample.java

我沒有得到任何結果。

但它給我寫簡單的查詢,如

醫院

我的結果是,因爲在代碼中的推理是不能夠使推論?

其他推理者會更好嗎?

回答

3

您用作示例的類(DLQueryExample.java)依賴於OWL-API內置的結構推理器OWLReasonerFactory reasonerFactory = new StructuralReasonerFactory();)。

這種類型的推理器非常簡單,不適合於複雜的查詢。但是它可以在類層次結構中提供答案:這就是爲什麼通過簡單查詢Hospitals獲得一些結果的原因。

你需要做的是將你的代碼設置爲使用Hermit或者FACT ++。我給的例子與Hermit

  • Download隱士jar文件,並將其添加到您的項目的類路徑。
  • 在您的班級中,將OWLReasonerFactory reasonerFactory = new StructuralReasonerFactory();替換爲OWLReasonerFactory reasonerFactory = new Reasoner.ReasonerFactory();。您應該必須導入org.semanticweb.HermiT.Reasoner才能使其正常工作。
  • 我們剛剛用HermiT取代了默認推理器。其餘的代碼應該保持不變,現在你的查詢應該可以工作。
  • 你可以嘗試FaCT++Pellet和比較速度,等...
+0

感謝那些工作.. – karthi