Я использую owlready2 для разработки онтологий и рассуждений. Когда я запускаю встроенный модуль рассуждения Pellet, он не делает вывод о принадлежности индивидов к суперклассам назначенного им класса. Минимальный воспроизводимый пример онтологии выглядит следующим образом:
Код: Выделить всё
Testclass subClassOf owl:Thing
Testchild subClassOf Testclass
Testchild(Testindividual)
Или полностью:
Я ожидаю, что рассуждение обнаружит, что Testclass(Testindividual) верен. Действительно, если я запущу этот пример через механизм рассуждения Pellet, встроенный в Protege, я получу именно это. Однако, когда я использую рассуждение Pellet, интегрированное в owlready2, экземпляров Testclass нет! Вот минимальный код для его воспроизведения:
Код: Выделить всё
import owlready2 as owl
onto = owl.get_ontology("data/testonto.rdf").load()
with onto:
owl.sync_reasoner_pellet()
print(onto.get_instances_of(onto.Testclass)) # returns []
print(onto.get_instances_of(onto.Testchild)) # returns [Testindividual]
Это намеренное поведение? Что мне не хватает?
Подробнее здесь:
https://stackoverflow.com/questions/792 ... ssignments