Получить свойства данных из класса с OWL API JAVA - PullRequest
1 голос
/ 31 марта 2020

Я пытаюсь получить свойства данных класса с OWL API java (http://owlapi.sourceforge.net), но не могу получить его.

Например Класс "person" имеет свойства данных "hasGender", диапазон которых: {"F" ^^ xsd: строка, "M" ^^ xsd: строка}

    <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();

Как можно извлечь это свойство и диапазон?

Заранее спасибо!

1 Ответ

0 голосов
/ 01 апреля 2020

Классы не имеют свойств в OWL - то, что вы пробовали, получит IRI типа данных в сигнатуре объекта, бит, поскольку объект является сущностью, его сигнатура содержит только класс IRI.

Что вы на самом деле мы рассматриваем свойства данных, которые имеют класс как часть своего домена, поэтому вам нужно получить все аксиомы области свойств данных из вашей онтологии (возможно, включая импорт) и проверить, относится ли домен к классу, т. е. класс появляется в подпись аксиомы или, если вы используете аргумент, есть ли у класса домен в качестве суперкласса.

...