Rdf jena直接推断图

Rdf jena直接推断图,rdf,jena,ontology,owl,Rdf,Jena,Ontology,Owl,我是Jena的noob,在阅读这篇文章时,更具体地说,在图5(iii)-“直接推断的关系”中,我找到了我所需要的。基本上,我的OntModel需要遵守以下规则:“不允许使用可以推断的直接语句”。但不幸的是,我不知道如何在耶拿实现这些想法 我的示例代码是: String baseUri="http://entidades.owl"; OntModel base = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM);

我是Jena的noob,在阅读这篇文章时,更具体地说,在图5(iii)-“直接推断的关系”中,我找到了我所需要的。基本上,我的OntModel需要遵守以下规则:“不允许使用可以推断的直接语句”。但不幸的是,我不知道如何在耶拿实现这些想法

我的示例代码是:

    String baseUri="http://entidades.owl";
    OntModel base = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM);

    OntClass studant = base.createClass(baseUri +"#Student");

    OntClass person = base.createClass(baseUri +"#Person");
    OntClass ser = base.createClass(baseUri +"#ThingLive");

    Property isA = base.createTransitiveProperty(baseUri+"#IsA", true);
    nome.addDomain(person);
    base.add(new StatementImpl(studant, isA, person));
    base.add(new StatementImpl(person, isA, ser));

    base.createIndividual(baseUri+"#JonhDoe",studant);
    base.createIndividual(baseUri+"#JonhDoe",person);
    base.createIndividual(baseUri+"#JonhDoe",ser);
    base.write(System.out);

    OntModel model = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM_MICRO_RULE_INF,base);
    model.write(System.out);
那么

  • 我试图将“isA”属性构建为“transitiveProperty”,但推理者不承认它。我怎样才能修好它

  • 如果我改变: base.add(新语句impl(studant、isA、person)); base.add(新语句impl(person、isA、ser))

  • 致:

    person.addSubClass(学生); 序列号addSubClass(person)

    推理机能够完美地推理,但不幸的是,OntModel“base”和OntModel“model”向我显示了相同的RDF。我认为“模型”应该向我展示一个最小的RDF图

    我可以做些什么来查看RDF结构中的这些更改


    非常感谢你们,伙计们

    您的代码很好,唯一的问题是:

    model.write(System.out);
    
    调用
    OntModel.write()
    ,该函数定义为仅写入基本模型。这是因为许多用户希望能够有一个读取模型、操作模型、保存模型的工作流,而不希望保存的版本被可传递属性的关闭所污染

    如果查询模型,查询将看到推断的三元组以及基本模型三元组。这里只影响
    write()
    。如果您确实想编写整个模型进行调试,包括推导出的三元组,请使用
    OntModel.writeAll()