gpt4 book ai didi

java - Apache Jena 自动将对象属性合并在一起

转载 作者:行者123 更新时间:2023-12-02 12:09:40 25 4
gpt4 key购买 nike

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

我使用 Protege 设计了一个 RDF 文件。基本上,我有三个对象属性,即关联、聚合和组合。聚合和组合都是协会的子属性。正如您可以从 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 没有定义 axiom 序列化的顺序,因此每个库在这方面都有自己的选择。

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

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

关于java - Apache Jena 自动将对象属性合并在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46630583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com