如何推断出负对象属性断言?

时间:2018-04-26 15:25:42

标签: ontology protege reasoning swrl object-properties

我正在使用本体,我有以下swrl规则: 用户(?u)^项目(?p)^ isRelatedTo(?u,?p)^ isMemberOf(?u,?p) - > VerifiedAssociation(?u,?p)

我想知道何时发生负面对象属性断言(当VerifiedAssociation不正确时)。

我在Protégé上找到了Property Assertions选项卡,但我想推断这一点(由推理者推断)。我不知道如何制定规则来实现这一目标。

有人可以帮帮我吗? 谢谢!

1 个答案:

答案 0 :(得分:1)

无法通过规则实现推理。原因是你需要的是能够说出

User(?u) ^ Project(?p) ^ isNotRelatedTo(?u, ?p) ^ isNotMemberOf(?u, ?p) 
  -> unverifiedAssociation(?u, ?p)

但您需要说?u任何 ?p无关,而不仅仅是具体的?p。这超出了规则的范围,超出了OWL / DL的范围,因为它需要一种封闭的世界推理形式,而不是开放的世界推理。

为了达到理想的效果,您需要以某种方式关闭您的世界。因此,您拥有分配给项目的用户或尚未分配的用户。让我们介绍与NoProject不相交的Project类。然后添加规则

User(?u) ^ NoProject(?p)
  -> unverifiedAssociation(?u, ?p)

其中unverifiedAssociationverifiedAssociation不相交。

您可能还想查看Individual with “null” object property Stack Overflow问题。

<强>更新

根据SWRL FAQ,SWRL不支持否定。唯一的方法是定义不相交的对象属性的对偶。即,

ObjectProperty: isMemberOf
ObjectProperty: isNotMemberOf
    DisjointWith: isMemberOf

VerifiedAssociationNotVerifiedAssociation执行类似操作。然后以正面形式定义规则:

User(?u) ^ Project(?p) ^ isRelatedTo(?u, ?p) ^ isNotMemberOf(?u, ?p) 
  -> NotVerifiedAssociation(?u, ?p)