OWLAPI доступ к значению objectProperty в аксиоме суперкласса - PullRequest
0 голосов
/ 21 сентября 2019

Я могу получить доступ к выражению sueprClass с помощью следующей команды. (Работает OWLAPI v5) enter image description here

 ont.getSubClassAxiomsForSubClass(cls).forEach(x->x.getSuperClass().getSignature()
    )

каждый цикл возвращает как:

[<http://www.co-ode.org/ontologies/pizza/pizza.owl#PizzaBase>, <http://www.co-ode.org/ontologies/pizza/pizza.owl#hasBase>]

результат состоит из значений объектаProperty IRI и самого объекта ObjectProperty IRI.
теперь мне нужно перехватить значение objectProperty, равное http://...#PizzaBase.
Это означает получить все значения в наборе результатов, но не последнее, котороеЭто объектProperty IRI.

Я могу преобразовать команду в массив (...getSignature().toArray()) и получить доступ к ее значениям (кроме последнего значения, которое является объектом-свойством IRI).
Есть ли лучший способ или способ сделать это?

1 Ответ

0 голосов
/ 21 сентября 2019

Напишите OWLObjectVisitor, который реализует visit(OWLObjectSomeValuesFrom ce) и вызовите x.getSuperClass().accept(visitor); Затем вы можете получить доступ к свойству объекта в параметре ce.

В этом случае вы также можете просто привести результатот x.getSuperClass() до OWLObjectSomeValuesFrom, поскольку вы уже знаете, где и к какому типу относится выражение, к которому вы хотите получить доступ.Если вам нужно сделать это более общим способом, использование посетителей является более гибким подходом.

...