SWRL 是否支持 Protege 中的经典否定?

Does SWRL support classical negation in Protege?

我想尝试以下规则:

(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

Unfortunately, the SWRLAPI's parser does not support OWL class expressions in rules.
There is no timeline for their inclusion.

幸运的是,可以使用规则视图 (Windows > Views > Ontology Views > Rules):

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


实际上,在这种特殊情况下您不需要 SWRL。如果您不喜欢 GCI 公理,只需在 一般 class 公理 部分写入 (not Person) SubClassOf NonHuman,或者先定义 NonPerson

别忘了 OWA。