【问题标题】:owl swrl rules for fact consistency checking if and only ifowl swrl 事实一致性检查规则当且仅当
【发布时间】:2018-07-09 14:16:53
【问题描述】:

是否可以使用 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)

谢谢

【问题讨论】:

  • 基本推理会检测到不一致:)
  • @Gilles-AntoineNys 我已经用 Protege 试过这个,当我在规则中添加不一致的事实时,隐士推理者和隐士不会抱怨,你有没有看到这个工作的工具?
  • &lt;-&gt; 尚不可能。因此,如果我们的情况是不一致检测,我建议在规则之外指定Domain/Range。但这只是我的观点。

标签: owl swrl data-consistency


【解决方案1】:

可以通过声明uncleOf 是不自反的并且parentOfuncleOf 不相交来实现所需的结果。

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)

【讨论】:

  • 非常有趣的想法,实际上它涵盖了我提供的有限示例,但是我对“当且仅当”暗示的全部范围非常感兴趣。一个简单的反例是 p3 a person 。 p4 一个人。 p3 叔叔 p4 。没有任何先例可以证明这一点。
  • 由于开放世界假设如果没有明确说明信息就无法实现您想要的 - 推理者无法从中推断出p3 不是uncleOf p4。如果你想让推理者给出不一致的地方,你必须给它明确的信息。 IE。 p3 parentOf p4.
  • 它在我的场景中没有帮助。与此同时,我正在使用 SPARQL NOT EXISTS,但相信应该有更简洁的方法来实现这一点。
  • 我的数据确实包含每个人的 BrotherOf 和 parentOf 的明确信息,但不一定与说明 uncleOf 关系的信息一致。
  • parentOf 关系可以很容易地限制为一个人,因此很容易检查是否已经有一个人。但是兄弟不容易被限制,一个人可以有0..到未知数量的兄弟。
猜你喜欢
  • 2021-11-12
  • 2013-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多