如何使用 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,然后将这些类分别赋值为hasDaughterhasSon的范围。

这样,声明A hasSon BA hasDaughter B会造成不一致。