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)
プロパティ チェーンとローリフィケーションテクニックを使用する:
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 の結果が表示されないのはなぜですか? 助言がありますか?