2014-10-04 1 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

+0

Можете ли вы показать онтологию, или фрагмент, воспроизводящий проблему и рассуждающие вы используете? Сторона owlapi выглядит хорошо, может быть ошибкой или ошибкой в ​​онтологии. – Ignazio

+0

ОК. мой плохой я мог получить свойство sub. это свойство owlbottomDataProperty отображается для свойств, чье подзадача не определена. Ваш ответ был действительно верным :) – learner