Я использую OWL API 3.4.3 и Hermit 1.3.8.1 (разумный пример) на стандартной пицце ontology.Использование объекта Reasoner для извлечения прямых суперклассов в онтологии Pizza
Я пытаюсь извлечь Прямые суперклассы класса.
учебник при условии here не учитывает экстракцию прямых суперкласса. Например, еды имеет два суперкласса а именно,
- сову: Thing и
- 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 объект.
Любые трюки, чтобы получить желаемый результат напрямую?
Заранее спасибо :)
Я думаю, что учебник (https://github.com/ owlcs/owlapi/wiki/DL-Queries-with-a-real-reasoner) предоставляет метод Set getSuperClasses (String classExpressionString, boolean direct) –
(Продолжение ..). Метод учебника внутренне использует метод, о котором вы говорите (например, OWLReasoner :: getSuperClasses (OWLClassExpression, boolean)). Если я не ошибаюсь, этот метод возвращает ВСЕ СУПЕР-КЛАССЫ, а НЕ ПРЯМОЙ СУПЕРКЛАСС! @Ignazio –
Булевский флаг запускает прямые (истинные) или косвенные (ложные) суперклассы. Если это не сработает для вас, нам нужно увидеть онтологию и узнать, какой разумный пользователь вы используете, поскольку это было бы ошибкой, чтобы не подчиняться знаку. – Ignazio