gpt4 book ai didi

java - Pellet 2.3.0 与 OWL API 3.4.3 不兼容?

转载 作者:行者123 更新时间:2023-12-01 14:39:31 37 4
gpt4 key购买 nike

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

本体是使用 Protege 4 OWL Editor 构建的。

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

对于颗粒推理机,我已从 here 下载了pellet-2.3.0.zip并在我的netbeans项目中添加了pellet-2.3.0/lib中的所有文件和文件夹(请注意,我不确定这是否是在netbeans中添加pellet的正确方法,但我找不到更好的方法,例如要添加的单个 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 作为参数,而是采用 org.semanticweb.owl.model.OWLOntologyManager (注意owlapiowl 包之间的区别)。

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

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

有什么建议吗?

提前致谢。

最佳答案

如上所述here ,答案是你不能任意混合搭配你使用的库,你必须使用 Pellet 附带的版本。如果这样做,您将不会遇到“没有合适的构造函数”异常。

关于java - Pellet 2.3.0 与 OWL API 3.4.3 不兼容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16121435/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com