【问题标题】:Does SWRL support classical negation in Protege?SWRL 是否支持 Protege 中的经典否定?
【发布时间】: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 支持经典否定吗?如果是,我怎样才能使以下规则正常? 提前致谢!

【问题讨论】:

标签: owl protege negation swrl


【解决方案1】:

来自https://github.com/protegeproject/swrlapi/issues/63

很遗憾,SWRLAPI 的解析器不支持规则中的 OWL 类表达式。
没有将它们纳入的时间表。

幸运的是,可以使用规则视图(Windows > 视图 > 本体视图 > 规则):

Rule: (not Person)(?x) -> NonHuman(?x) 被正确解析并按预期工作。


实际上,在这种特殊情况下,您不需要 SWRL。只需在通用类公理部分写 (not Person) SubClassOf NonHuman,如果您不喜欢 GCI 公理,请先定义 NonPerson

不要忘记 OWA。

【讨论】:

  • 问题是我想用 SWRL 规则测试否定,因为它说文档中支持经典规则。据我所知,内置的swrlb:notEqual() 似乎可以工作,但非内置的会更受欢迎:)。
  • @mastaofthepasta,然后你可以在规则视图中写Rule: (not Person)(?x) -> NonHuman(?x)。老实说,我无法理解你的回答。 swrlb:notEqual 需要两个(文字)参数。
  • 这很奇怪......我的答案解决方案说,当我在 SQWRLTab 中创建规则时,状态是 OK,而 (not Person)(?x) -> NonHuman(?x) 说它不行,因为它在图片中提到问题。
  • @mastaofthepasta,规则视图:规则视图:Windows > 视图 > 本体视图 > 规则。顺便说一句,你的规则什么也没做。
猜你喜欢
  • 1970-01-01
  • 2017-04-02
  • 2011-05-30
  • 2021-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-10
相关资源
最近更新 更多