【发布时间】:2020-01-18 13:59:15
【问题描述】:
我想尝试以下规则:
(not Person)(?x) -> NonHuman(?x) 此处提供 - https://github.com/protegeproject/swrlapi/wiki/SWRLLanguageFAQ#does-swrl-support-classical-negation
Protege 5.5.0 支持经典否定吗?如果是,我怎样才能使以下规则正常? 提前致谢!
【问题讨论】:
我想尝试以下规则:
(not Person)(?x) -> NonHuman(?x) 此处提供 - https://github.com/protegeproject/swrlapi/wiki/SWRLLanguageFAQ#does-swrl-support-classical-negation
Protege 5.5.0 支持经典否定吗?如果是,我怎样才能使以下规则正常? 提前致谢!
【问题讨论】:
来自https://github.com/protegeproject/swrlapi/issues/63:
很遗憾,SWRLAPI 的解析器不支持规则中的 OWL 类表达式。
没有将它们纳入的时间表。
幸运的是,可以使用规则视图(Windows > 视图 > 本体视图 > 规则):
Rule: (not Person)(?x) -> NonHuman(?x) 被正确解析并按预期工作。
实际上,在这种特殊情况下,您不需要 SWRL。只需在通用类公理部分写 (not Person) SubClassOf NonHuman,如果您不喜欢 GCI 公理,请先定义 NonPerson。
不要忘记 OWA。
【讨论】:
swrlb:notEqual() 似乎可以工作,但非内置的会更受欢迎:)。
Rule: (not Person)(?x) -> NonHuman(?x)。老实说,我无法理解你的回答。 swrlb:notEqual 需要两个(文字)参数。
OK,而 (not Person)(?x) -> NonHuman(?x) 说它不行,因为它在图片中提到问题。