您好我正在关注http://owlapi.sourceforge.net/owled2011_tutorial.pdf以了解并尝试解析OWL2 / RDF中的本体。我想知道如何获得类中提供的限制和教程中的代码示例以及github代码https://github.com/owlcs/owlapi/blob/version4/contract/src/test/java/uk/ac/manchester/owl/owlapi/tutorialowled2011/TutorialSnippetsTestCase.java中的代码示例似乎没有显示一个工作示例。 PDF似乎有较旧的逻辑,github中的示例似乎已经注释掉了代码。任何想法,我都能够获得并打印一个类的属性 - 我也将如何为复杂属性执行此操作,即如果我在课程中有以下类型的限制:
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="AAA"/>
<owl:someValuesFrom>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<owl:Restriction>
<owl:onProperty rdf:resource="BBB"/>
<owl:someValuesFrom rdf:resource="111"/>
</owl:Restriction>
<owl:Restriction>
<owl:onProperty rdf:resource="CCC"/>
<owl:hasValue rdf:datatype="xsd;string">SOME VALUE</owl:hasValue>
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
</owl:someValuesFrom>
</owl:Restriction>
</rdfs:subClassOf>
我将如何以编程方式解析此问题。我正在尝试查看我应该查看的API的哪些方法/类,因为我是OWL中的术语和链接数据的新手。
答案 0 :(得分:0)
从一个班级的IRI开始,例如“http://example.com/startpoint”,你会:
OWLClass
个实例:OWLClass c = owldatafactory.getOWLClass(IRI.create("http://example.com/startpoint"));
Collection<OWLSubClassOfAxiom> axioms = ontology.getSubClassAxiomsForSubClass(c);
for(OWLSubClassOfAxiom ax:axioms){ OWLClassExpression levelOne = ax.getSuperClass();
在您的示例中,这是对someValuesFrom
的{{1}}限制。
为了探索对任何深度级别的限制,您要做的是编写AAA
(例如,通过扩展OWLClassExpressionVisitor
类)。在您链接的示例中,一个此类是OWLClassExpressionVisitorAdapter
。
如果我正确地得到你的描述,你就是在'类的属性'之后 - 通常意思是输入类是域的一部分的属性。在此示例中,唯一的此类属性为RestrictionVisitor extends OWLClassExpressionVisitorAdapter
,因此您无需更深入的访问即可找到它们。这个定义中复杂的是AAA
的范围,它由两个以上的类表达式组成。