【问题标题】:How to get the property axioms using Jena?如何使用 Jena 获得属性公理?
【发布时间】:2017-06-16 19:52:21
【问题描述】:

假设,在一个本体中,有一个名为“isFriendOf”的对象属性,这个属性是一个传递属性。

<owl:ObjectProperty rdf:about="http://www.semanticweb.org/ontologies/example#isFriendOf">
  <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#TransitiveProperty"/>
</owl:ObjectProperty>

现在,我想检查一下这个属性有哪些属性公理。如何使用 Jena 获取此信息?谢谢!

【问题讨论】:

  • “这个属性有什么属性公理”->你的意思是检查功能性、传递性等?您是否尝试过查看文档:jena.apache.org/documentation/ontology 并可能尝试使用 Javadoc:jena.apache.org/documentation/javadoc/jena
  • 那么,下一个问题。为什么选择 Jena 而不是 OWL API?请注意,Jena Ontology API 仅涵盖 OWL 1,因此 API 未涵盖某些属性特征。另一种解决方案是使用 SPARQL 查询,如 SELECT ?o WHERE {&lt;http://www.semanticweb.org/ontologies/example#isFriendOf&gt; a ?o}

标签: jena owl


【解决方案1】:

Jena 不支持本体的公理化视图。 其实它根本不支持OWL2。

因此,您不能仅使用 jena 接收公理列表,因为 OntModel jena 子系统内没有此类对象(请参阅包 org.apache.jena.ontology)。

但您可以使用 OWL-API。 尝试列出所有相关的公理(参见 OWL-API 中的 org.semanticweb.owlapi.model.OWLAxiomCollection#referencingAxioms 方法),它会是这样的:

OWLOntology ont = ...; ont.referencingAxioms(IRI.create("http://www.semanticweb.org/ontologies/example#isFriendOf")).forEach(System.out::println);

还有另一种选择。

由于我们也面临同样的 jena/owl2 兼容性问题,我们发布了自己的解决方案,以协调这两种语义网络技术。 它被称为ONT-API,(对不起广告)。 在这种情况下,您可以使用相同的方法,但同时具有一致的 org.apache.jena.rdf.model.Model (org.apache.jena.graph.Graph) 对象。

希望对你有帮助

【讨论】:

  • 谢谢!我会检查两个 api。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-14
  • 1970-01-01
  • 2013-05-21
  • 2023-03-05
  • 2011-07-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多