如何在OWL API中使用颗粒推理器



我有一个本体,其中有一些SWRL规则(使用Protege创建)。我使用OWL API来操作本体,并使用JENA API进行SPARQL查询。我需要使用小球来推理这个本体(因为小球支持SWRL,我已经在protege内部使用了推理器)。我在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的一个构建,您引用的小球项目使用owlapi 4。您看到的错误取决于owlapi 3和4之间的版本冲突。

从pom中删除Ansell依赖,只使用小球依赖,它将传递地拉入正确的owlapi构建。

这是我发布的最新版本的pellet——原始存储库的分支,也可以与proprosamug一起使用。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>

谢谢

最新更新