如何在给定其他 class 的情况下检索由对象 属性 连接的所有 classes?

How to retrieve all classes connected by an object property given some other class?

假设在一个ontology中有几个class定义:

<owl:Class rdf:about="&ontX;A">
    <rdfs:label>A</rdfs:label>
    <rdfs:subClassOf>
        <owl:Restriction>
            <owl:onProperty rdf:resource="&ontY;hasCapability"/>
            <owl:someValuesFrom rdf:resource="&ontY;CapabilityB"/>
        </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
        <owl:Restriction>
            <owl:onProperty rdf:resource="&ontY;hasCapability"/>
            <owl:someValuesFrom rdf:resource="&ontY;CapabilityC"/>
        </owl:Restriction>
    </rdfs:subClassOf>
</owl:Class>

如何检索给定 class 的所有功能。在上面的示例中,对于给定的 class A,应返回 CapabilityB 和 CapabilityC。

&ontY;CapabilityB 和 &ontY;CapabilityC 在另一个 ontology 中是 classes。无法更改本体。

OWL API 可以使用推理器进行查询。

编写一个 OWLObjectVisitor,收集输入 class 的超 classes 中提到的所有一些值限制的填充物 class,然后获取每个填充物的所有子classes,这些将是 class 与这些限制兼容的能力。