2014-09-30 1 views
0

Рассмотрите имя именованного человека «Корова». Его класс также является «коровой», и в свою очередь Корова является подклассом «Млекопитающее», а «Млекопитающее» - подкласс жизни и т. Д. если у меня есть доступ к OWLNamedIndividual следующим образом: -Retrieve Класс, к которому принадлежит Named Individual, принадлежит OWL API 4.0

for (OWLNamedIndividual i : localUni.getIndividualsInSignature()) 
    { 
     Code that should give me ... 
     i = Cow (NamedIndividual) 
     Class = Cow 
     One Level up class = Mammal 
    } 

я попытался следующие, но безрезультатно

System.out.println(i.getEntityType().getName() ); 
System.out.println(i.getEntityType().toString() ); 
System.out.println(i.getTypes(myontology)); // this would give me error NoSuchMethodError 

Спасибо.

ответ

2

getEntityType() только возвращает OWLCLASS/OWLOBJECTPROPERTY/OWLNAMEDIDIVIDUAL, то есть OWLAPI конкретные значения о том, что представляет собой сущность, а не о его роли в онтологии или позиции в иерархии.

Кроме того, можно качать (то есть OWLNamedIndividual и OWLClass может иметь один и тот же IRI), но эти два объекта отличаются друг от друга, поэтому из одного вы не можете напрямую обращаться к другому.

OWLNamedIndividual.getTypes(OWLOntology) была удалена в версии 4. можно достичь того же результата с

EntitySearcher.getTypes(OWLIndividual, OWLOntology)

Обратите внимание, что результаты будут утверждаться только типы для человека - для того, чтобы получить выведенные результаты , вам необходимо использовать OWLReasoner.

все еще рассуждения построены так же, как и для OWLAPI 3: https://github.com/owlcs/owlapi/wiki/DL-Queries-with-a-real-reasoner

Однако нет релизов с помощью рассуждений OWLAPI 4, насколько я знаю. Существует несколько экспериментальных ветвей: . Развертка версии 4 JFact находится в состоянии SNAPSHOT: https://github.com/owlcs/jfact Вилка HermiT, работающая с OWLAPI 4, доступна здесь: https://github.com/ignazio1977/hermit-reasoner И то, и другое будет нуждаться в локальной сборке, которая будет использоваться.

+0

Вы рекомендуете сову api 4.0 или я должен придерживаться 3.x. Проблема в том, что функции, которые мне нужны, представляют собой сочетание двух API. например. i.getType, i.hasDataPropertyValue (где i = OWLNamedIndl) не используются в 4.0 – learner

+0

и в чем разница между owlapi-distribution4.0.0.jar и owlapi-osgidistribution4.0.0.jar – learner

+0

Методы, которые вы упоминаете, теперь являются статическими методами на EntitySearcher. – Ignazio