如何使用 OWL API 解析 OWL2 文件 - 注释属性

How to parse OWL2 file with OWLAPI - AnnotationProperties

我有一个 OWL 文件 (OWL2),我需要对其进行解析并最终将数据写入某个文件。该文件包含 AnnotationProperties、DataProperties、ObjectProperties 和 类。

我的第一个目标是尝试尽可能多地列出 属性 信息。即对于 AnnotationProperties,看看我是否可以打印出 属性 和 "value" 的名称。

同样,为了能够显示 class 详细信息,即每个 class、class 的名称、属性,即 [=25= 的数据或对象属性=].我不确定该怎么做,到目前为止我所做的任何阅读都令人困惑,因为它似乎在谈论实例,我认为这些实例不存在于文件中。此外,OWLAPI javadoc 和文档等对于我可能必须调用的方法不是很有帮助。

例如如果我有以下 AnnotationProperty:

<owl:AnnotationProperty rdf:about="&xxx;SOME_ID">
    <ABC rdf:datatype="xsd;string">1235412</ABC>
</owl:AnnotationProperty>

ontology.getAnnotationPropertiesInSignature() 会给我一组 AnnotationProperties,我可以迭代并说 property.getIRI().getFragment() 来查看 SOME_ID,但现在我该如何获取并显示内部内容,即 ABC-1235412?同样,任何有关如何获取 class 信息(即显示或显示其属性和限制)的帮助都将不胜感激。

您显示的片段不会创建带有 属性 SOME_ID 的注释断言公理,而是 属性 SOME_ID 本身的注释。三元组看起来像这样:

SOME_ID ABC "1235412"^^xsd:int

根据您对您正在尝试做的事情的描述,您/需要/实例 - 任何 属性(注释、对象或数据 属性)的值都通过断言表示,即,指代个体(或实例 - 两个名称指代相同概念)的公理。

例如,

Ignazio hasAge "38"^^xsd:int

将是对个人 Ignazio 的数据或注释 属性 断言,值为 38

要访问这些断言,您可以使用

OWLIndividual ignazio = ...
ontology.getAnnotationAssertionAxioms(ignazio);

要像您显示的那样访问注释,即在注释 属性 本身上:

OWLAnnotationProperty some_id = ...
ontology.getAnnotationAssertionAxioms(some_id.getIRI());