我想構建一個使用Pellet查詢來查詢本體的Java應用程序,但我對這個領域很陌生,而且遇到一些兼容性問題。Pellet 2.3.0與OWL API 3.4.3不兼容?
使用Protege 4 OWL Editor構建了本體。
我已經從here下載了owlapi-distribution-3.4.3-bin.jar文件,並將其添加到我的netbeans項目中。此外,我發現從here DLExamples.java這是非常有用的,讓你開始。
對於pellet推理器,我已經從here下載了pellet-2.3.0.zip,並在我的netbeans項目中添加了pellet-2.3.0/lib中的所有文件和文件夾(注意,我不確定是否這是在NetBeans中添加粒子的正確方法,但我找不到更好的方法,例如只添加一個jar文件)。
我從here,爲了顆粒嵌入到推理我DLExamples.java需要只更換了線路151和152「返回新理性(經理)」,其中裏森納位於顆粒圖書館org.mindswap.pellet.owlapi.Reasoner
發現。當我申請抱怨說,變化的NetBeans說:
no suitable constructor found for Reasoner(org.semanticweb.owlapi.model.OWLOntologyManager)
constructor Reasoner.Reasoner(org.semanticweb.owl.model.OWLOntologyManager,KnowledgeBase) is not applicable
(actual and formal argument lists differ in length)
constructor Reasoner.Reasoner(org.semanticweb.owl.model.OWLOntologyManager) is not applicable
(actual argument org.semanticweb.owlapi.model.OWLOntologyManager cannot be converted to org.semanticweb.owl.model.OWLOntologyManager by method invocation conversion)
我看了看裏面org.mindswap.pellet.owlapi.Reasoner
並意識到它的構造函數的定義確實
public Reasoner(org.semanticweb.owl.model.OWLOntologyManager manager) {
}
換句話說,而不是採取作爲參數org.semanticweb.owlapi.model.OWLOntologyManager
它需要一個(請注意owlapi
和owl
包之間的區別)。
除非我沒有做出真正錯誤的事情,否則烏鴉和小丸之間顯然是不相容的。鑑於粒料應該爲owlapi權利提供理由,這是不正常的嗎?
有沒有關於如何解決這個問題的建議?我應該改用不同的推理者嗎?我也試過HermiT,但是當我詢問應該返回兩個類和它們的個人的DL查詢時,它只返回了這些類。所以我認爲HermiT可能不那麼強大,我決定嘗試Pellet而沒有成功。
有什麼建議嗎?
在此先感謝。