2017-06-16 38 views
1

假设在一个本体中有一个名为“isFriendOf”的对象属性,并且此属性是一个传递属性。如何使用Jena获取财产公理?

<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获取此信息?谢谢!

+0

”这个属性有哪些属性公理“ - >你的意思是检查功能,transitiv等?您是否尝试过查看文档:https://jena.apache.org/documentation/ontology/,并试图使用Javadoc:https://jena.apache.org/documentation/javadoc/jena/? – AKSW

+0

然后,接下来的问题。为什么选择耶拿而不是OWL API?请注意,Jena Ontology API仅涵盖OWL 1,因此API的某些属性特征未涵盖。另一种解决方案是使用SPARQL查询,比如'SELECT?o WHERE { a?o}' – AKSW

回答

0

耶拿不支持本体论的公理观。 实际上它根本不支持OWL2。

所以你不能仅仅使用jena接收公理列表,只是因为OntModel jena子系统内没有这样的对象(参见package 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兼容性相同的问题,为了协调这两种语义web技术,我们发布了我们自己的解决方案。 它被称为ONT-API,(对广告抱歉)。 在这种情况下,您可以使用相同的方法,但同时具有一致的org.apache.jena.rdf.model.Model(org.apache.jena.graph.Graph)对象。 “

希望它会帮助

+0

谢谢!我会检查这两个API。 – deerls