Не знаю, как получить свойство объекта из онтологии в Java с отшельником

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

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

//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 ответ

Решение

Вы пытаетесь выяснить, включен ли класс в домен свойства объекта (классы не имеют свойств объекта в 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);
Другие вопросы по тегам