繁体   English   中英

如何在 OWL 中使用 Pellet reasoner API

[英]How to use Pellet reasoner in OWL API

我有一个本体,它有一些 SWRL 规则(使用 Protege 创建)。 我正在使用 OWL API 来操作本体并使用 JENA API 进行 SPARQL 查询。 我需要使用 Pellet 来推理这个本体(因为 pellet 支持 SWRL 并且我有 sed 内部推理器)。 我在https://github.com/ignazio1977/pellet/blob/master/examples/src/main/java/org/mindswap/pellet/examples/OWLAPIi看到了一些示例,我正在使用以下依赖项

<dependency>
    <groupId>com.github.ansell.pellet</groupId>
    <artifactId>pellet-owlapiv3</artifactId>
    <version>2.3.6-ansell</version>
</dependency>

代码如下

OWLOntologyManager man = OWLManager.createOWLOntologyManager();
File file = new File("C:\\Protege-5.5.0\\ContextModellingJAVA.owl");
// Loading an Ontology from file
OWLOntology o = man.loadOntologyFromOntologyDocument(file);

PelletReasoner reasoner = PelletReasonerFactory.getInstance().createReasoner(o);
System.out.println("done.");

当我运行它时,出现以下错误

Exception in thread "main" java.lang.NoSuchMethodError: 'org.semanticweb.owlapi.model.OWLPropertyExpression org.semanticweb.owlapi.model.OWLObjectPropertyDomainAxiom.getProperty()'
    at com.clarkparsia.pellet.owlapiv3.PelletVisitor.visit(PelletVisitor.java:945)
    at org.semanticweb.owlapi.model.OWLObjectPropertyDomainAxiom.accept(OWLObjectPropertyDomainAxiom.java:36)
    at com.clarkparsia.pellet.owlapiv3.PelletVisitor.visit(PelletVisitor.java:699)
    at org.semanticweb.owlapi.model.OWLOntology.accept(OWLOntology.java:519)
    at com.clarkparsia.pellet.owlapiv3.PelletReasoner.refresh(PelletReasoner.java:967)
    at com.clarkparsia.pellet.owlapiv3.PelletReasoner.<init>(PelletReasoner.java:345)
    at com.clarkparsia.pellet.owlapiv3.PelletReasoner.<init>(PelletReasoner.java:304)
    at com.clarkparsia.pellet.owlapiv3.PelletReasonerFactory.createReasoner(PelletReasonerFactory.java:71)
    at ContextModelling.main(ContextModelling.java:166)



Can anyone please help me solve the error. Thanks in advace

Ansell 依赖项是 owlapi 版本 3 的构建,您引用的 pellet 项目使用 owlapi 4。您看到的错误取决于 owlapi 3 和 4 之间的版本冲突。

从您的 pom 中删除 Ansell 依赖项并仅使用 pellet 依赖项,它将传递地引入正确的 owlapi 构建。

这是我发布的最新版本的 pellet - 原始存储库的分支,也适用于 protégé。 Openllet 是另一个得到更积极维护的分支。

<dependency>
<groupId>net.sourceforge.owlapi</groupId>
<artifactId>pellet-owlapi-ignazio1977</artifactId>
<version>2.4.0-ignazio1977</version>
</dependency>

pellet-owlapi 有效,但正如@Ignazio 所建议的,我尝试了具有以下依赖项的 Openllet。

<dependency>
    <groupId>com.github.galigator.openllet</groupId>
    <artifactId>openllet-owlapi</artifactId>
    <version>2.6.5</version>
</dependency>

谢谢你

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM