OWL / Protege:将对象属性与连接相结合

时间:2019-06-08 21:23:23

标签: owl protege

说我有一个“成人”类和一个“孩子”类,以及两个对象属性“ isFatherOf”和“ playsMonopolyWith”。假设我想要所有与孩子一起垄断的父亲。现在,我可以做一个类似的子类:

Adult
isFatherOf some Child
playsMonopolyWith some Child

但这并不完全正确,因为这里将包括一个仅与他人的孩子一起垄断的父亲。真正想要的是:

Adult
(isFatherOf and PlaysMonopolyWith) some child

父亲与父亲垄断的孩子必须与父亲一样。

这给出语法错误。所以我猜想描述逻辑不允许这种构造?有解决方法吗?

1 个答案:

答案 0 :(得分:1)

为了描述业务逻辑,通常最好使用推理规则代替OWL逻辑。

以您的示例为例,如果您想为NiceFather自己Father的{​​{1}}个用户playsMonopolyWith来上课,Child

转到“窗口”>“标签” ,并选中“ SWRLTab” ,然后转到新创建的“ SWRLTab” 。点击“新建”按钮。

SWRL rules view

写下您在问题中描述的规则。语法非常简单。

isFatherOf(?father, ?child) ^ playsMonopolyWith(?father, ?child) -> NiceFather(?father)

单击“确定”以创建规则,然后运行推理程序。


Here是要点,您可以在Protégé中下载并打开。正如您所看到的,阿尔伯特是个好父亲,因为他与儿子阿尔伯特·小鲍勃一起玩《大富翁》,而不是一个好父亲,因为他是与小阿尔伯特而不是自己的儿子鲍勃·小鲍勃一起玩大富翁:)< / p>

albert is a nice father bob is not a nice father