Java 如何与Jena一起使用传递推理器?

Java 如何与Jena一起使用传递推理器?,java,jena,inference-engine,Java,Jena,Inference Engine,我想与Jena建立一个TransitiveReasoner,从模式和数据集创建一个新的推理模型。它可以与RDFS reasoner一起使用,但不能与TransitiveReasoner一起使用 这是我第一次体验推理;我查看了Jena推理支持和其他教程,但无法解决我的问题 下面是我的java测试代码: import com.hp.hpl.jena.ontology.*; import com.hp.hpl.jena.rdf.model.*; import com.hp.hpl.jena.reaso

我想与Jena建立一个TransitiveReasoner,从模式和数据集创建一个新的推理模型。它可以与RDFS reasoner一起使用,但不能与TransitiveReasoner一起使用

这是我第一次体验推理;我查看了Jena推理支持和其他教程,但无法解决我的问题

下面是我的java测试代码:

import com.hp.hpl.jena.ontology.*;
import com.hp.hpl.jena.rdf.model.*;
import com.hp.hpl.jena.reasoner.*;
import com.hp.hpl.jena.vocabulary.*;

public class TestInference 
{

    public static void myTest() throws IOException
    {
      String NS = "testInference:";
      OntModel schema = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM, null);
      OntClass m = schema.createClass(NS + "Mention");
      OntClass pm = schema.createClass(NS + "PersonMention");
      pm.addProperty(RDFS.subClassOf, m);

      Model data = ModelFactory.createDefaultModel();
      Resource r = data.createResource(NS+"alberto");
      r.addProperty(RDF.type, pm);

      Reasoner rdfsReasoner = ReasonerRegistry.getRDFSSimpleReasoner();
      Reasoner transReasoner = ReasonerRegistry.getTransitiveReasoner();

      System.out.println("\n===== RDSF =====");
      InfModel rdfsInf = ModelFactory.createInfModel(rdfsReasoner, schema, data);
      rdfsInf.write(System.out, "TURTLE");

      System.out.println("\n===== Trans =====");
      InfModel transInf = ModelFactory.createInfModel(transReasoner, schema, data);
      transInf.write(System.out, "TURTLE");
}

public static void main(String[] args) throws IOException
{
    myTest();
}
尝试更改
OntModelSpec
没有帮助

我做错了什么


提前感谢您的帮助。

TransitiveReasoner只处理RDFS
子类
和RDFS
子类
的传递性。它不提供
rdf:type
的步骤

A subClassOf B . B subClassOf C => A subClassOf C
但不是这一部分:

x type T . T subClassOf S => x type S