OWL/Protege:将 Object 属性与连词组合

OWL/Protege: Combining Object Properties with Conjunction

假设我有一个 class "Adult" 和一个 class "Child" 和两个 object 属性 "isFatherOf " 和 "playsMonopolyWith" .假设我想要所有用children玩垄断的父亲。现在我可以做一个 subclass 像:

Adult
isFatherOf some Child
playsMonopolyWith some Child

但这并不完全正确,因为一个只用别人的 children 玩垄断的父亲会被包括在这里。真正想要的是:

Adult
(isFatherOf and PlaysMonopolyWith) some child

父亲玩大富翁的child必须和他的父亲一样child

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

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

根据您的示例,如果您想要 Father playsMonopolyWith 自己 Child 的 class NiceFather,请按以下步骤操作。

前往 "Window" > "Tabs",勾选 "SWRLTab",然后前往新创建的"SWRLTab"。单击 "New" 按钮。

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

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

单击 "Ok" 创建规则,运行 推理器。


Here 是一个 Gist,您可以下载并在 Protégé 中打开。如您所见,阿尔伯特是一个好父亲,因为他和他的儿子小阿尔伯特一起玩大富翁。另一方面,鲍勃不是一个好父亲,因为他和小阿尔伯特一起玩大富翁,而不是他自己的儿子小鲍勃。:)