繁体   English   中英

Protege SWRL规则

[英]Protege SWRL rules

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

我的图

谢谢

您可能需要弄清楚您想要的语义。

根据我的收集,您希望isFriendWith至少是对称的,即,当isFriendWith(bob, alice)也要isFriendWith(alice, bob)

另外,如果要让friendsAll具有任何含义,则isFriendWith不能传递。 因为我的朋友的朋友不一定是我的朋友,所以这也将体现自然的含义。

详细说明:如果isFriendWith 对称且可传递 ,则bob每个朋友也将自动成为bob的所有朋友的朋友(因为isFriendWith(bob, alice)暗含了isFriendWith(alice, bob) 。从此以后,任何isFriendWith(bob, carol)传递性意味着isFriendWith(alice, carol) 。因此,如果isFriendWith是对称且可传递的,则您会自动获得集团。

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

至于在SWRL中制定此规则,让我们尝试一下吧?

friendsAll最有可能是反身的 ,即让我们假设每个人都是他/她自己的朋友。 现在,我们需要一个递归规则,该规则在满足条件的同时扩展此集合:“ 在这个集合中,每个人都是每个人的朋友 ”。

加入Bob的朋友,你需要能够量化了isFriendWith和检查的任何候选人的朋友 bob也是所有其他朋友的朋友bob 由于您不能在SWRL中嵌套量词,因此或多或少可以肯定,您不能仅使用规则语言来表示该算法。 但是,我可能在这里错了,语义中隐藏了一个巧妙的小技巧。 我不知道这是哪一个,但是直接公式中对量词嵌套的需求使我相信这是不可能的。

它基本上可以归结为一个著名的图论问题:给定一个起点bob friendsAllbob朋友的最大子集,因此组中的每个人都是与其他所有人的朋友,即bob的Maximal Clique

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM