Използвам OWL API за аргументиране на онтология, създадена в Protege. Работя с OWL API Пример DL заявка: http://sourceforge.net/p/owlapi/code/ci/aef6981535f07a2d0d44c394b9f4d5415f36025a/tree/contract/src/test/java/org/coode/owlapi/examples/DLQueryExample.java, Предполагам, че този пример давафункционалност, еквивалентна на DL Query Tab в Protege. Но всъщност има някои съществени разлики: трябва да получа информацията (подклас, суперклас и т.н.) на анонимна класа, която се определя от група лица (ex {Member1, Member2 ...}) или в друга начин. В Protege тази заявка връща правилен резултат, но такава заявка в OWL API Dl Query Example връща [NOTHING]. Има ли начин да се манипулират анонимни класове в OWL API? Благодаря предварително за отговора.
Отговори:
3 за отговор № 1Ако приемем, че използвате класа DLQueryExample
като такива без изменения.
Трябва да използвате друга причина, различна отпо подразбиране. Вижте линията 151, реализацията използва структурната логика, вградена в OWL-API. Това разсъждение е ограничено и не може да обработва сложни класови изрази като вашите.
Как да го поправите:
Използвайте по-напреднали разсъждения като отшелник, Изтеглете и поставете бурканчето на класа, след което заменете кода в ред 151 с това:
OWLReasonerFactory reasonerFactory = new Reasoner.ReasonerFactory();
Ще трябва да импортирате пакета org.semanticweb.HermiT.Reasoner
, Сега ще използвате Hermit за обработка на вашите заявки. Опитвам Pizza and (hasTopping some CheeseTopping)
, тя трябва да работи!