如何使用 Protege swrl 选项卡将规则头保持为空
How to keep rule head as null using Protege swrl tab
我正在尝试使用 SWRL 规则捕获冲突。我了解到 SWRL 确实支持空头规则(结果)。但是 Protege 不允许定义此类规则。
我想要实现的一个虚拟示例是
Person(?x)^hasSon(?x,?y)^hasDaughter(?x,?y)->
这意味着不可能通过 hasSon 和 hasDaughter 属性将一个人与同一个人联系起来。如果无法在 protege 中实现,请指导我如何实现。
规则体可以为空,但并不像您的意图那样暗示矛盾;它被解释为规则不适用。规格为 here。
如果我正确理解您的意图,您可以通过创建两个 类 来实现您所追求的目标:为 hasSon
定义一个精确的基数限制为 0,为 hasDaughter
,然后将这些类分别赋值为hasDaughter
和hasSon
的范围。
这样,声明A hasSon B
和A hasDaughter B
会造成不一致。
我正在尝试使用 SWRL 规则捕获冲突。我了解到 SWRL 确实支持空头规则(结果)。但是 Protege 不允许定义此类规则。 我想要实现的一个虚拟示例是
Person(?x)^hasSon(?x,?y)^hasDaughter(?x,?y)->
这意味着不可能通过 hasSon 和 hasDaughter 属性将一个人与同一个人联系起来。如果无法在 protege 中实现,请指导我如何实现。
规则体可以为空,但并不像您的意图那样暗示矛盾;它被解释为规则不适用。规格为 here。
如果我正确理解您的意图,您可以通过创建两个 类 来实现您所追求的目标:为 hasSon
定义一个精确的基数限制为 0,为 hasDaughter
,然后将这些类分别赋值为hasDaughter
和hasSon
的范围。
这样,声明A hasSon B
和A hasDaughter B
会造成不一致。