Получить предполагаемые свойства объекта Утверждения Отшельника

Скажем, у меня есть некоторая онтология, созданная в Protege, и есть экземпляр класса с некоторым свойством объекта, и список свойств объекта, показанный на следующих рисунках:

Человек класса

Иерархия свойств объекта выглядит следующим образом:

Иерархия свойств объекта

Теперь, когда я включаю Reasoner (Отшельник), я получаю следующие свойства объекта assert для этого же человека:

Свойства предполагаемого объекта для отдельного Email_server

Когда я нажимаю в объяснениях для предполагаемого объекта со свойством "зависящий от клиента", я получаю:

Пояснение для выведенного объекта недвижимости Свойство

У меня вопрос, как я могу создать это с помощью Java? Я уже могу получить выведенные свойства объекта для некоторого человека со следующим (неполное здесь для сокращения, но это работает, как я проверял):

for (OWLNamedIndividual namedIndividual : this.ontology.getIndividualsInSignature()) {
            if (subjectName.equals(namedIndividual.getIRI().getFragment())) {
                OWLObjectProperty objectProperty = fac.getOWLObjectProperty(IRI.create(propertyIRI));
                NodeSet<OWLNamedIndividual> namedIndividualSet = reasoner.getObjectPropertyValues(namedIndividual ,objectProperty);

                for (Node<OWLNamedIndividual> namedIndividualsInObjectPropertySet : namedIndividualSet) {
                    for (OWLNamedIndividual namedIndividualForObjectPropertySet : namedIndividualsInObjectPropertySet) {
                        for (OWLClassExpression owlClass : namedIndividualForObjectPropertySet.getTypes(this.ontology)){
                            if (owlClass.toString().split("#")[1].replace(">", "").equals(archiClass)) {
                                result.add(OWLOntologyUtils.getHumanInstanceName(this.ontology, namedIndividualForObjectPropertySet.getIRI().getFragment()));
// Result contains all the inferred object properties shown in the above pictures, so this code works. How can I access the explanation for one of the inferred object properties by the reasoner here?
                            }
                        }
                    }
                }

            }
        }

1 ответ

Ты можешь использовать InferredObjectPropertyAxiomGenerator:

InferredObjectPropertyAxiomGenerator generator = new InferredObjectPropertyAxiomGenerator();
generator.createAxioms(owldatafactory, reasoner);
Другие вопросы по тегам