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é 中打开。如您所见,阿尔伯特是一个好父亲,因为他和他的儿子小阿尔伯特一起玩大富翁。另一方面,鲍勃不是一个好父亲,因为他和小阿尔伯特一起玩大富翁,而不是他自己的儿子小鲍勃。:)
假设我有一个 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é 中打开。如您所见,阿尔伯特是一个好父亲,因为他和他的儿子小阿尔伯特一起玩大富翁。另一方面,鲍勃不是一个好父亲,因为他和小阿尔伯特一起玩大富翁,而不是他自己的儿子小鲍勃。:)