Правила owl swrl для проверки согласованности фактов, если и только если
Можно ли использовать правила swrl для проверки согласованности фактов?
если у нас есть:
parent(?x,?y) ∧ brother(?y,?z) ⇒ uncle(?x,?z)
новые факты получены из этого.
Но вместо этого у меня есть набор фактов (некоторые не соответствуют друг другу).
:p1 parent :c1 .
:p2 brother :p1 .
:p1 uncle :c1 . # inconsistent
:p1 uncle :p1 . # inconsistent
:p2 uncle :c1 . # consistent.
Можно ли использовать swrl или альтернативную технологию для выделения этих несоответствий в моей таблице фактов?
parent(?x,?y) ∧ brother(?y,?z) <-> uncle(?x,?z)
Спасибо
1 ответ
Желаемого результата можно достичь, заявив, что uncleOf
нерефлексивен и что parentOf
не пересекается с uncleOf
,
ObjectProperty: childOf
Characteristics: Irreflexive
ObjectProperty: parentOf
Characteristics: Irreflexive
ObjectProperty: brotherOf
ObjectProperty: uncleOf
Characteristics: Irreflexive
ObjectProperty: owl:topObjectProperty
Individual: c1
Individual: p1
Facts:
parentOf c1,
uncleOf c1
Individual: p2
Facts:
brotherOf p1
DisjointProperties:
childOf,parentOf,brotherOf,uncleOf
Rule:
brotherOf(?x, ?y), parentOf(?y, ?z) - uncleOf(?x, ?z)