【发布时间】:2021-10-25 18:34:38
【问题描述】:
我有需要使用 Java 解析的 owl 文件。我正在使用 Java OWL API。我阅读了该文件,并且能够返回所有类和属性。
OWLOntologyManager manager=OWLManager.createOWLOntologyManager();
OWLOntology owl=manager.loadOntologyFromOntologyDocument(new File(myOWLFile));
System.out.println(owl.getAxiomCount());
java.util.Set<OWLEntity> entOnt = owl.getSignature();
for (OWLEntity a : entOnt) {
System.out.println("Entity "+a);//this print only the entities
}
但是,我需要跟踪每个实体内的所有嵌套元素。例如,如果这是 owl 文件:
<owl:Class rdf:about="#A">
<owl:equivalentClass rdf:resource="#B"/>
<rdfs:subClassOf rdf:resource="#C"/>
</owl:Class>
<owl:ObjectProperty rdf:about="#D">
<rdfs:range rdf:resource="#E"/>
<rdfs:domain rdf:resource="#F"/>
</owl:ObjectProperty>
我需要获取 A 类中的所有元素。我现在需要 A 包含 B 作为等效类和 C 作为子类。我需要打印这样的东西:
Class: A has
B = Equivalent Class
C = Sub Class
Property: D has
E = Range
F = Domain
如何遍历所有 owl 实体并获取其所有嵌套元素?
【问题讨论】:
-
“A 类内部”没有意义。 OWL 中的实体是类、属性和个体。您正在谈论的是 owl axioms - 您只想获取给定类的所有 OWL 公理 - 这是您的目标。您可以使用owlcs.github.io/owlapi/apidocs_5/org/semanticweb/owlapi/search/… - 另一个选项是迭代所有公理,分别处理每个公理类型