首页 > 解决方案 > 从 OWL 本体获取等价类

问题描述

更新:

我已经解决了这个问题。在 Java 中使用 OWL API,我设法检索了本体中的所有公理,其中包括我正在寻找的所有等价类。据我所知,没有直接的方法可以获得未命名的等效类。这是我使用的代码:

OWLOntologyManager man = OWLManager.createOWLOntologyManager();
o = man.loadOntologyFromOntologyDocument(hp);
Stream<OWLLogicalAxiom> logicalAxioms = o.logicalAxioms();
logicalAxioms.forEach(log::println);

问题:

我有一个本体(人类表型本体,或者只是“hp”),我需要从“owl:equivalentClass”标签内的本体中引用的其他本​​体中提取类。例如:对于 hp 类“HP_0001561”,我想提取:

这是课程:

<!-- http://purl.obolibrary.org/obo/HP_0001561 -->

<owl:Class rdf:about="http://purl.obolibrary.org/obo/HP_0001561">
    <rdfs:label rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Polyhydramnios</rdfs:label>
    <owl:equivalentClass>
        <owl:Restriction>
            <owl:onProperty rdf:resource="http://purl.obolibrary.org/obo/BFO_0000051"/>
            <owl:someValuesFrom>
                <owl:Class>
                    <owl:intersectionOf rdf:parseType="Collection">
                        <rdf:Description rdf:about="http://purl.obolibrary.org/obo/PATO_0000595"/>
                        <owl:Restriction>
                            <owl:onProperty rdf:resource="http://purl.obolibrary.org/obo/RO_0000052"/>
                            <owl:someValuesFrom rdf:resource="http://purl.obolibrary.org/obo/UBERON_0000173"/>
                        </owl:Restriction>
                        <owl:Restriction>
                            <owl:onProperty rdf:resource="http://purl.obolibrary.org/obo/RO_0002573"/>
                            <owl:someValuesFrom rdf:resource="http://purl.obolibrary.org/obo/PATO_0000460"/>
                        </owl:Restriction>
                        <owl:Restriction>
                            <owl:onProperty rdf:resource="http://purl.obolibrary.org/obo/hp/hp-logical-definitions-subq#during"/>
                            <owl:someValuesFrom rdf:resource="http://purl.obolibrary.org/obo/GO_0007565"/>
                        </owl:Restriction>
                    </owl:intersectionOf>
                </owl:Class>
            </owl:someValuesFrom>
        </owl:Restriction>
    </owl:equivalentClass>

我已经尝试了几个库来处理猫头鹰本体,但我找不到这样做的方法。我在 Python 上试过,我目前在 Java 上使用 OWL API。

标签: javapythonrdfowlontology

解决方案


推荐阅读