не знаю, как получить свойство объекта из онтологии в Java с отшельником - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь получить свойство объекта из класса, в частности: я пытаюсь понять, когда класс является частью какого-то другого класса (используемую конструкцию можно увидеть на скриншоте).

Я уже пытался использовать функцию OWL-api getObjectPropertiesInSignature() на OWLClass объекте (объект "e").

//display delle object property
Set<OWLObjectProperty> proprietà = e.getObjectPropertiesInSignature();
System.out.println("Object Property:");
if(proprietà.isEmpty()) {
    System.out.println("\tQuesta classe non ha object property");
}
else {
    for(OWLObjectProperty prop : proprietà) {
        System.out.println("\t"+ prop);
    }
}

Вывод фрагмента Questa classe non ha object property, поэтому функция возвращает пустой Set, но в этом случае она должна вернуть Set с одним свойством объекта: свойство объекта part-Of .

1 Ответ

0 голосов
/ 24 января 2019

Вы пытаетесь выяснить, включен ли класс в домен свойства объекта (классы не имеют свойств объекта в OWL), или этот класс является подклассом ограничения. Сигнатура объекта класса содержит свойства объекта, только когда выражение класса упоминает свойство, например квалифицированное ограничение мощности или экзистенциальное ограничение, как в вашем примере.

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

OWLDataFactory df = ...
OWLClassExpression c = df.getOWLObjectSomeValuesFrom(partOf, car);
NodeSet subClasses = hermit.getSubClasses(c, false);

Для классов в домене partOf вы должны искать подклассы пересечения выражений домена:

OWLClassExpression domain = df.getOWLObjectIntersectionOf(ontology.objectPropertyDomainAxioms(partOf));
NodeSet subClassesInDomain = hermit.getSubClasses(domain, false);
...