2016-05-06 64 views
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:

enter image description here

它只顯示正在運行的推理中的Protege後的正確方法:

enter image description here

所以,問題是:我應該寫的代碼,以獲得在對象屬性由推理同步的本體論?

回答

1

這三行:

reasoner.precomputeInferences(); 
reasoner.precomputeInferences(InferenceType.OBJECT_PROPERTY_ASSERTIONS); 
reasoner.precomputeInferences(InferenceType.OBJECT_PROPERTY_HIERARCHY); 

可以替換爲:

reasoner.precomputeInferences(InferenceType.OBJECT_PROPERTY_ASSERTIONS, 
           InferenceType.OBJECT_PROPERTY_HIERARCHY); 

然而,對於大多數推理,這是沒有什麼不同:

reasoner.precomputeInferences(InferenceType.values()); 

爲了看到推斷的公理而不運行推理器,你可以使用 org.semanticweb.owlapi.util.InferredPropertyAssertionGenerator

InferredPropertyAssertionGenerator generator = new InferredPropertyAssertionGenerator(); 
Set<OWLAxiom> axioms = generator.createAxioms(factory, reasoner); 

這將提供推斷公理添加到本體。

相關問題