保护SWRL规则

时间:2015-03-21 04:28:16

标签: semantics semantic-web owl protege rdfs

我一直试图在我的本体中定义规则,以推断如果一个人的朋友是彼此之间的朋友,那么所有人都是朋友,但如果一个或多个不是彼此的朋友,那么我的本体将会推断他们都是,不是朋友。

my diagram

谢谢

1 个答案:

答案 0 :(得分:1)

您可能需要更多地理解您的预期语义。

从我收集的内容来看,您希望isFriendWith至少是对称的,即isFriendWith(bob, alice)然后isFriendWith(alice, bob)

此外,如果您希望friendsAll具有任何含义,isFriendWith将无法传递。这也会捕捉自然的含义,因为我朋友的朋友不一定是我的朋友。

详细说明:如果isFriendWith 对称传递 bob的每个朋友都会自动成为所有bob&#39的朋友;的朋友(因为isFriendWith(bob, alice)暗示isFriendWith(alice, bob)。从那里开始,任何isFriendWith(bob, carol)传递都意味着isFriendWith(alice, carol)。所以,如果isFriendWith是对称且可传递的,那么你自动获得集团。

但如上所述,这可能不是,你想要的。

至于在 SWRL 中制定这个问题,让我们试一试,不管吗?

friendsAll很可能是自反,即让我们假设每个人都是他/她自己的朋友。现在,我们需要一个递归规则来扩展这个集合,同时仍然满足条件:" 在这个集合中,每个人都是每个人的朋友"。

要包含bob的朋友,您需要能够量化isFriendWith并检查bob的任何候选朋友是否也是朋友所有 bob的其他朋友。由于您无法在SWRL中嵌套量词,我或多或少地确定,您无法仅使用规则语言表达该算法。但是,我可能在这里错了,语义中隐藏着一个巧妙的小技巧。然而,并不是我所知道的,在直接公式中量化嵌套的需要让我相信它是不可能的。

它基本上归结为一个众所周知的图论理论问题:给定起点bob friendsAllbob朋友的最大子集,小组中的所有人都是其他人的朋友,即鲍勃的极大Clique