首页 > 解决方案 > 使用 OWL API JAVA 从类中获取数据属性

问题描述

我正在尝试使用 java ( http://owlapi.sourceforge.net ) 的 OWL API 获取类的数据属性,但我无法得到它。

例如“person”类有一个数据属性“hasGender”,其范围是:{“F”^^xsd:string,“M”^^xsd:string}

    <owl:DatatypeProperty rdf:about="&lico;hasGender">
    <rdfs:domain rdf:resource="&lico;Patient"/>
    <rdfs:range>
        <rdfs:Datatype>
            <owl:oneOf>
                <rdf:Description>
                    <rdf:type rdf:resource="&rdf;List"/>
                    <rdf:first rdf:datatype="&xsd;string">F</rdf:first>
                    <rdf:rest>
                        <rdf:Description>
                            <rdf:type rdf:resource="&rdf;List"/>
                            <rdf:first rdf:datatype="&xsd;string">M</rdf:first>
                            <rdf:rest rdf:resource="&rdf;nil"/>
                        </rdf:Description>
                    </rdf:rest>
                </rdf:Description>
            </owl:oneOf>
        </rdfs:Datatype>
    </rdfs:range>
</owl:DatatypeProperty>

<owl:DatatypeProperty rdf:about="&lico;hasName">
    <rdfs:domain rdf:resource="&lico;Patient"/>
    <rdfs:range rdf:resource="&xsd;string"/>
</owl:DatatypeProperty>

我正在尝试获取如下数据类型:

    OWLOntologyManager man = OWLManager.createOWLOntologyManager();
    OWLOntology ont;
    OWLDataFactory df = null;
    ont = man.loadOntologyFromOntologyDocument(file);
    df = ont.getOWLOntologyManager().getOWLDataFactory();

    OWLClass clase = df.getOWLClass(Class);

    Set<OWLDatatype> dataType = clase.getDatatypesInSignature();

我怎样才能提取这个属性和范围?

提前致谢!

标签: javaapiobjectrangeowl

解决方案


类在 OWL 中没有属性 - 您所尝试的将在对象的签名中获得数据类型 IRI,因为该对象是一个实体,它的签名仅包含一个类 IRI。

您真正看到的是将类作为其域的一部分的数据属性,因此您需要从本体中获取所有数据属性域公理(可能包括导入)并检查域是否包含类 - 即类出现在公理的签名中,或者如果您正在使用推理器,则该类是否具有域作为超类。


推荐阅读