2014-10-04 52 views
0

我正在使用owl api 4.0,下面的代碼會給我屬於類Animal的所有屬性。如何檢索OWL API 4.0中的數據屬性的子屬性

OWLClass animalCl = df.getOWLClass(IRI.create(ontologyIRI + "Animal")); 
NodeSet<OWLNamedIndividual> animalIndl = reasoner.getInstances(animalCl, false); 

for (OWLNamedIndividual animalNamedIndl : animalIndl.getFlattened()) 
{ 
Set<OWLDataPropertyAssertionAxiom> propAll= myontology.getDataPropertyAssertionAxioms(animalNamedIndl); 
for (OWLDataPropertyAssertionAxiom ax: propAll) 
    { 
    for (OWLLiteral propertyLit : EntitySearcher.getDataPropertyValues(animalNamedIndl, ax.getProperty(), myontolgoy)) 
    System.out.println("The property " + ax.getProperty() + "has value" + propertyLit); 
     } 
} 

我有一個子屬性「propWt」爲每個數據屬性。我用下面的代碼: - 的

NodeSet<OWLDataProperty> properties = reasoner.getSubDataProperties((OWLDataProperty) ax.getProperty(), false); 
for (OWLDataProperty mysubproperty : properties.getFlattened()) 
    { 
    System.out.println("the sub property is " + mysubproperty); 
    } 

代替

the sub property is <http://localhost:3030/BiOnt.owl#propWt> 

我得到

the sub property is owl:bottomDataProperty 

這裏有什麼問題?

回答

1

既然您使用本體的推理器,我假設您想要所有的子屬性,無論是斷言還是推斷。 的推理可以做的工作:

NodeSet<OWLDataProperty> properties = reasoner.getSubDataProperties(property, false); 
+0

我用這個代碼,並與現在發出 – learner 2014-10-06 09:09:06

+0

相應的修改我的問題,你能否告訴本體,或再現這一問題的片段,以及您所使用的推理? owlapi方面看起來不錯,可能是推理者的錯誤或本體的問題。 – Ignazio 2014-10-06 13:18:41

+0

好的。我的壞我可以檢索子屬性。這個owlbottomDataProperty顯示爲其子屬性未定義的屬性。你的回答確實是對的:) – learner 2014-10-07 19:16:56