首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pellet 2.3.0与OWL API 3.4.3不兼容?

Pellet 2.3.0与OWL API 3.4.3不兼容?
EN

Stack Overflow用户
提问于 2013-04-20 22:30:22
回答 1查看 761关注 0票数 0

我想构建一个Java应用程序,它将使用Pellet查询来查询本体,但是我是这个领域的新手,并且我遇到了一些兼容性问题。

使用Protege 4 OWL编辑器构建了本体。

我已经从here下载了owlapi distribution-3.4.3-bin.jar文件,并将其添加到我的netbeans项目中。此外,我还发现了来自here的DLExamples.java,它对您的入门非常有用。

对于pellet推理器,我已经从here下载了pellet-2.3.0.zip,并将pellet-2.3.0/lib中的所有文件和文件夹添加到我的netbeans项目中(请注意,我不确定这是否是在netbeans中添加pellet的正确方法,但我找不到更好的方法,例如只添加一个jar文件)。

我从here中发现,为了将pellet reasoner嵌入到管理器中,我需要将其第151和152行替换为“return new Reasoner ( DLExamples.java )”,其中Reasoner位于pellet库的org.mindswap.pellet.owlapi.Reasoner中。当我应用这个改变时,netbeans抱怨说:

代码语言:javascript
复制
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内部,意识到它的构造函数定义确实是

代码语言:javascript
复制
public Reasoner(org.semanticweb.owl.model.OWLOntologyManager manager) {
}

换句话说,它不接受org.semanticweb.owlapi.model.OWLOntologyManager作为参数,而是接受org.semanticweb.owl.model.OWLOntologyManager (注意owlapiowl包之间的区别)。

除非我真的做错了什么,否则owlapi和pellet之间显然是不兼容的。这是不正常的,因为小球应该为owlapi提供一个推理机,对吗?

对于如何解决这个问题,有什么建议吗?我是否应该切换到不同的推理机?我也尝试过HermiT,但是当我请求一个本应返回两个类和它们的个体的DL查询时,它只返回了类。所以我认为HermiT可能没有那么强大,于是我决定尝试一下Pellet,但没有成功。

有什么建议吗?

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2013-04-22 06:19:58

正如前面提到的here,答案是你不能随意混合和匹配你使用的库,你必须使用Pellet附带的版本。如果你这样做,你将不会有没有合适的构造函数异常。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16121435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档