Apache Jena 自动将对象属性合并在一起
Apache Jena automatically merge object properties together
我是 Apache Jena 的新手。我在这里遇到了问题。
我使用 Protege 设计了一个 RDF 文件。基本上,我有三个对象属性,它们是 ASSOCIATION、AGGREGATION 和 COMPOSITION。
AGGREGATION 和 COMPOSITION 都是 ASSOCIATION 的子 属性。正如您可以从 Protege 中看到的那样,这三个对象可以很好地一起生成。
然而,当我将 Jena 与 Java 一起使用时(下面是我的代码),生成的输出与预期结果不同。
Model m = ModelFactory.createDefaultModel();
String 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
您显示的两个 RDF 文件在语义上是等价的。您所看到的是公理排序的差异。 OWL 没有定义公理序列化的顺序,因此每个库在这方面都有自己的选择。
Protege 依靠 OWL API 写出 ontology,OWL API 首先按类型然后按内容对公理进行排序- 在这种情况下,首先是公理中子属性的 IRI。
除非您正在使用一些非 RDF 感知工具,或者您将本体存储在版本控制系统中(其中顺序差异会导致大的、不必要的差异),否则您可以忽略这些差异。您使用的代码按预期工作。
我是 Apache Jena 的新手。我在这里遇到了问题。
我使用 Protege 设计了一个 RDF 文件。基本上,我有三个对象属性,它们是 ASSOCIATION、AGGREGATION 和 COMPOSITION。 AGGREGATION 和 COMPOSITION 都是 ASSOCIATION 的子 属性。正如您可以从 Protege 中看到的那样,这三个对象可以很好地一起生成。
然而,当我将 Jena 与 Java 一起使用时(下面是我的代码),生成的输出与预期结果不同。
Model m = ModelFactory.createDefaultModel(); String 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
您显示的两个 RDF 文件在语义上是等价的。您所看到的是公理排序的差异。 OWL 没有定义公理序列化的顺序,因此每个库在这方面都有自己的选择。
Protege 依靠 OWL API 写出 ontology,OWL API 首先按类型然后按内容对公理进行排序- 在这种情况下,首先是公理中子属性的 IRI。
除非您正在使用一些非 RDF 感知工具,或者您将本体存储在版本控制系统中(其中顺序差异会导致大的、不必要的差异),否则您可以忽略这些差异。您使用的代码按预期工作。