我在使用Apache方面很新。我在这里面临一个问题。
我使用Protege设计了一个RDF文件。基本上,我有三个对象属性,它们是关联、聚合和组合。聚合和组合都是关联的子属性。正如您在这里所能看到的那样,这三个对象可以很好地结合在一起。
但是,当我在Java中使用Jena时(下面是我的代码),生成的输出与预期的结果不同。
模型m= ModelFactory.createDefaultModel();字符串NS = "http://example.com/test/"; OntModel ontoModel =OntModel null;ObjectProperty ObjectProperty = ontoModel.createObjectProperty(NS + >" ASSOCIATION ");ObjectProperty聚合= ontoModel.createObjectProperty(NS +>“聚合”);AGGREGATION.addProperty(RDFS.subPropertyOf );ObjectProperty组合= ontoModel.createObjectProperty(NS +>“组合”);COMPOSITION.addProperty(RDFS.subPropertyOf,ASSOCIATION);
正如您在生成的输出中所看到的:
1)关联对象属性嵌套在聚合和组合下面。
2)聚合和合成子属性的生成方式不同。
这里的任何帮助都非常感谢。
发布于 2017-10-08 23:33:53
您显示的两个RDF文件在语义上是等价的。你所看到的是公理排序上的不同。OWL没有定义公理序列化的顺序,因此每个库都在这方面做出了自己的选择。
Protege依赖OWL来编写本体,OWL首先根据类型,然后根据它们的内容对公理进行排序--在这种情况下,公理中的子属性的IRI首先排序。
除非您使用的是非RDF工具,或者是将本体存储在版本控制系统中(在版本控制系统中,排序上的差异可能导致较大、不必要的差异),否则您可以忽略这些差异。您正在使用的代码正在按预期工作。
https://stackoverflow.com/questions/46630583
复制相似问题