【问题标题】:Apache Jena automatically merge object properties togetherApache Jena 自动将对象属性合并在一起
【发布时间】:2017-10-08 11:28:21
【问题描述】:

我对使用 Apache Jena 非常陌生。我在这里遇到了问题。

我使用 Protege 设计了一个 RDF 文件。基本上,我有三个对象属性,即 ASSOCIATION、AGGREGATION 和 COMPOSITION。 聚合和组合都是 ASSOCIATION 的子属性。正如您在 Protege 中看到的那样,这三个对象很好地一起生成。

但是,当我将 Jena 与 Java 一起使用时(以下是我的代码),生成的输出与预期结果不同。

模型 m = ModelFactory.createDefaultModel(); 字符串 NS = "http://example.com/test/";

  OntModel ontoModel = >ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM, null);     

  ObjectProperty ASSOCIATION = ontoModel.createObjectProperty(NS + >"ASSOCIATION");
  ObjectProperty AGGREGATION = ontoModel.createObjectProperty(NS + >"AGGREGATION");
  AGGREGATION.addProperty(RDFS.subPropertyOf, ASSOCIATION);
  ObjectProperty COMPOSITION = ontoModel.createObjectProperty(NS + >"COMPOSITION");
  COMPOSITION.addProperty(RDFS.subPropertyOf, ASSOCIATION);

正如您在生成的输出中看到的那样:

1) ASSOCIATION 对象属性嵌套在 AGGREGATION & COMPOSITION 下方。

2) AGGREGATION & COMPOSITION 的子属性生成方式不同。

非常感谢这里的任何帮助。

Expected output generated from Protege & output generated with Jena

【问题讨论】:

    标签: java jena ontology protege


    【解决方案1】:

    您显示的两个 RDF 文件在语义上是等效的。您所看到的是公理顺序的不同。 OWL 没有定义公理序列化的顺序,因此每个库在这方面都有自己的选择。

    Protege 依赖 OWL API 来写出本体,OWL API 首先按类型对公理进行排序,然后按内容排序 - 在这种情况下,首先是公理中子属性的 IRI。

    除非您使用一些不支持 RDF 的工具,或者您将本体存储在版本控制系统中(其中排序差异可能导致大的、不必要的差异),否则您可以忽略这些差异。您正在使用的代码按预期工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多