是否可以使用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)
谢谢
答案 0 :(得分: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)