У меня есть небольшая онтология с людьми. Некоторые из этих людей должны быть связаны друг с другом через симметричный ObjectProperty
.Как синхронизировать разум в OWLAPI
Мне нужно использовать аргумент Pellet, чтобы он мог синхронизировать и прикреплять симметричные ObjectProperty
к людям.
Я использую OWLAPI для создания онтологии. Мой код для создания ObjectProperty
является:
// create the OWLObjectProperty isLinkedTo
OWLObjectProperty isLinkedTo = factory.getOWLObjectProperty(IRI.create(ontologyIRI + "#" +hasLinkStr));
// create a set for the axioms (OPAS - Obj.Prop.Axioms Set)
Set<OWLAxiom> isLinkedOPAS = new HashSet<OWLAxiom>();
// add the OWLObjectProperty isLinkedTo to the set isLinkedOPAS
OWLNamedIndividual prevNamedInd = factory.getOWLNamedIndividual(prevIndividual, pm);
isLinkedOPAS.add(factory.getOWLSymmetricObjectPropertyAxiom(isLinkedTo));
//setting the object property for the current (namedInd) and previous (prevNamedInd)individuals
isLinkedOPAS.add(factory.getOWLObjectPropertyAssertionAxiom(isLinkedTo, namedInd, prevNamedInd));
manager.addAxioms(ontology, isLinkedOPAS);
Особи создаются один за другим. Каждый следующий человек isLinkedTo
предыдущий с симметричным свойством.
Затем я начинаю рассуждающий, но я не уверен, если я делаю это в правильном направлении:
OWLReasoner reasoner = reasonerFactory.createReasoner(ontology, config);
// I am not sure which of these commands is necessary for checking the ObjectProperty assertions
reasoner.precomputeInferences();
reasoner.precomputeInferences(InferenceType.OBJECT_PROPERTY_ASSERTIONS);
reasoner.precomputeInferences(InferenceType.OBJECT_PROPERTY_HIERARCHY);
boolean consistent = reasoner.isConsistent();
System.out.println("Consistent: " + consistent);
Когда я открываю эту онтологию в Protege, он показывает мне человек, но не «подключен "симметрично с ObjectProperty
isLinkedTo:
Это показывает правильный путь только после бега мыслителя в Protege:
Итак, вопрос: что я должен написать в коде, чтобы получить онтологию, где свойство объекта синхронизируется по мыслителю?