2013-04-20 76 views
0

我想構建一個使用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它需要一個(請注意owlapiowl包之間的區別)。

除非我沒有做出真正錯誤的事情,否則烏鴉和小丸之間顯然是不相容的。鑑於粒料應該爲owlapi權利提供理由,這是不正常的嗎?

有沒有關於如何解決這個問題的建議?我應該改用不同的推理者嗎?我也試過HermiT,但是當我詢問應該返回兩個類和它們的個人的DL查詢時,它只返回了這些類。所以我認爲HermiT可能不那麼強大,我決定嘗試Pellet而沒有成功。

有什麼建議嗎?

在此先感謝。

回答

1

正如提到的here,答案是你不能隨意混合和匹配你使用的庫,你必須使用Pellet附帶的版本。如果你這樣做,你將不會有沒有合適的構造函數例外。