0
我對個人有了一個小的本體論。其中一些人應該通過對稱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);
當我打開這個本體的門徒,它爲我個人,而不是「連接「對稱與ObjectProperty
isLinkedTo:
它只顯示正在運行的推理中的Protege後的正確方法:
所以,問題是:我應該寫的代碼,以獲得在對象屬性由推理同步的本體論?