2016-10-12 2 views
1

Я использую OWL API 3.4.3 и Hermit 1.3.8.1 (разумный пример) на стандартной пицце ontology.Использование объекта Reasoner для извлечения прямых суперклассов в онтологии Pizza

Я пытаюсь извлечь Прямые суперклассы класса.

учебник при условии here не учитывает экстракцию прямых суперкласса. Например, еды имеет два суперкласса а именно,

  1. сову: Thing и
  2. DomainConcept.

простой фрагмент кода показан для извлечения выше Прямые суперклассы (т.е. DomainConcept).

public Set<OWLClass> getDirectSuperClasses(String classExpressionString, boolean direct) { 
     if (classExpressionString.trim().length() == 0) { 
      return Collections.emptySet(); 
     } 
     OWLClassExpression classExpression = parser 
       .parseClassExpression(classExpressionString); 
     //NodeSet<OWLClass> subClasses = reasoner.getSubClasses(classExpression, direct); 
     NodeSet<OWLClass> directSuperClasses = **reasoner.get_________?????** 
     return directSuperClasses.getFlattened(); 
    } 

Я не смог найти любой соответствующий методкоторый можно назвать, используя Reasoner объект.

Любые трюки, чтобы получить желаемый результат напрямую?

Заранее спасибо :)

ответ

1

Метод вы после OWLReasoner::getSuperClasses(OWLClassExpression, boolean)

Исходный код, в том числе Javadoc, доступен here

+0

Я думаю, что учебник (https://github.com/ owlcs/owlapi/wiki/DL-Queries-with-a-real-reasoner) предоставляет метод Set getSuperClasses (String classExpressionString, boolean direct) –

+0

(Продолжение ..). Метод учебника внутренне использует метод, о котором вы говорите (например, OWLReasoner :: getSuperClasses (OWLClassExpression, boolean)). Если я не ошибаюсь, этот метод возвращает ВСЕ СУПЕР-КЛАССЫ, а НЕ ПРЯМОЙ СУПЕРКЛАСС! @Ignazio –

+0

Булевский флаг запускает прямые (истинные) или косвенные (ложные) суперклассы. Если это не сработает для вас, нам нужно увидеть онтологию и узнать, какой разумный пользователь вы используете, поскольку это было бы ошибкой, чтобы не подчиняться знаку. – Ignazio