2013-04-20 39 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附带的版本。如果你这样做,你将不会有没有合适的构造函数例外。