OWL 2 рассуждения с правилами SWRL
Я пытаюсь использоватьHermiT мыслитель чтобы вычислить выводы для онтологии, которая содержит набор аксиом OWL и правило SWRL:
Ontology(
ClassAssertion( :Student :Bob )
ClassAssertion( :Professor :DrBoffin )
ClassAssertion( :University :UF )
ObjectPropertyAssertion( :supervises :DrBoffin :Bob )
ObjectPropertyAssertion( :worksAt :DrBoffin :UF )
EquivalentClasses( :Student ObjectHasSelf( :r1 ))
EquivalentClasses(
ObjectHasSelf( :r2 )
ObjectSomeValuesFrom( :worksAt :University ))
SubObjectPropertyOf(
ObjectPropertyChain( :r2 :supervises :r1 ) :professorOf )
DLSafeRule(Body(ObjectPropertyAtom( :professorOf Variable( ?x ) Variable( ?y )))
Head(ObjectPropertyAtom( :instructorOf Variable( ?x ) Variable( ?y ))))
)
По сути, часть OWL пытается выразить такое правило:
worksAt(x, y), University(y), supervises(x, z), Student(z) -> professorOf(x, z)
используя цепочку собственности иrolification методы:
Часть SWRL является:
professorOf(x, y) -> instructorOf(x, y)
Ожидаемый результат должен содержать какObjectPropertyAssertion( :professorOf :DrBoffin :Bob )
а такжеObjectPropertyAssertion( :instructorOf :DrBoffin :Bob )
, Тем не менее, фактический вывод (показывает только свойства объекта)
ObjectPropertyAssertion( :r1 :Bob :Bob )
ObjectPropertyAssertion( :professorOf :DrBoffin :Bob )
ObjectPropertyAssertion( :r2 :DrBoffin :DrBoffin )
ObjectPropertyAssertion( :supervises :DrBoffin :Bob )
ObjectPropertyAssertion( :worksAt :DrBoffin :UF)
Почему не отображается ожидаемый результат SWRL? Какие-либо предложения?