我正在尝试使用 SWRL 规则捕获冲突。我了解到 SWRL 确实支持空头规则(结果)。但是Protege 不允许定义这样的规则。我想要实现的一个虚拟示例是
Person(?x)^hasSon(?x,?y)^hasDaughter(?x,?y)->
这意味着不可能通过 hasSon 和 hasDaughter 属性将一个人与同一个人联系起来。如果在 protege 中不可能,请指导我如何实现这一目标。
规则体可以是空的,但并不意味着矛盾,就像你的意图一样;它被解释为不适用的规则。规格在这里。
如果我正确理解您的意图,您所追求的可以通过创建两个类来实现:定义 0 的精确基数限制和 0hasSon
的精确基数限制hasDaughter
,然后将这些类分别分配为hasDaughter
和的范围hasSon
。
这样,陈述A hasSon B
和A hasDaughter B
将导致不一致。