【问题标题】:protege reasoner not report error for violation of GCIprotege reasoner 不报告违反 GCI 的错误
【发布时间】:2026-01-27 02:00:01
【问题描述】:

我目前使用 Protege 构建本体的主要目标是一致性检查。为此,我从小测试开始。

在这种情况下,我想坚持认为,具有某种属性的类的任何“实例”都必然具有另一个属性。

thread from a long time ago 之后,我编写了以下 GCI:

expression and (structureType value structureItem) SubClassOf hasAuthor min 1 person

我的意思是说:任何具有structureType 属性的expression 的值是structureItem 的类必须具有或必须具有至少一个属性hasAuthor

但是当我在 Protege 中使用 expression 没有 hasAuthor 属性运行推理器时,我没有收到任何错误。

我的规则是否有问题,或者我是否期望推理者做一些事情,但它不是设计用来做的。

【问题讨论】:

  • 由于 OWL 正在使用开放世界假设,hasAuthor 属性未在您的知识库中声明这一事实并不意味着它不存在,只是您的知识库不存在知道它。正如答案所暗示的,有一些解决方法,但在这种情况下,我会使用 SHACL 来开发这样的本体。

标签: rdf owl protege


【解决方案1】:

发生的事情与开放世界假设无关。稍后会详细介绍。


为了显示推理器的行为有多正常,让我稍微简化一下您的 GCI。让我们考虑类 Father 和属性 hasChild 以及以下 GCI:

Father  SubClassOf  hasChild min 1

这是说父亲至少有一个孩子。这是常识知识。现在,如果我添加以下事实:

Antoine  Type  Father

您的问题表明它应该被检测为错误。如果您考虑我们在这里所代表的知识,应该清楚地将其解释为错误是违反正常推理的。如果我遇见你并告诉你:

安托万是父亲!你知道,父亲至少有一个孩子。

你可能不会吃惊地说:

你错了,安托万!

因为我所说的只是简单、一致、合理的知识。 OWL 是一种知识表示语言。大家都知道的合理和一致的,在OWL中也是合理和一致的。 OWL 不会因未说明的义务而产生错误。 subClassOf 关系不是提供在超类中的证明以便能够在子类中的义务。 GCI 只是提供了关于它所描述的世界的一些真相。所以如果我说安托万是父亲,那么我可以断定安托万有一个孩子,就这么简单。

您可能将概念包含与某种约束混淆了。但是将 GCI 解释为此类约束或义务完全违背了本体的目的。如果你有:

*User  SubClassOf  Person
Jeff  Type  *User

您必须证明 Jeff 确实是一个人才能避免系统抛出错误?!所以你必须把应该是合乎逻辑的结论作为明确的事实。这与推理和推理的想法相反!


现在,让我们回到 OWA。必须澄清一下 OWA 是什么,什么不是。

首先,令人惊讶的是,开放世界假设并不是一个假设。之所以这样命名,是为了满足封闭世界假设(CWA)与封闭世界假设不存在之间的相似之处的令人愉悦的美学。 “封闭”的互补是“开放”,所以封闭世界假设的反面必然是开放世界假设。

但是,如果没有假设,则将其限定为“假设”是错误的。所以这就引出了一个问题“什么是封闭世界假设?”那么。

CWA 是一阶逻辑 (FOL) 的概念,在数据库理论的上下文中定义。数据库通常保存“肯定陈述”的记录——它可以形式化为像hasChild(Antoine, R.) 这样的 FOL 原子——但不是“否定陈述”——形式化为像¬hasChild(Antoine, Jeff) 这样的否定文字。在家谱记录的数据库中,记录所有 xy 这样的事物对是很疯狂的,例如 ¬hasChild(x, y)。相反,可以合理地假设如果hasChild(x, y) 不存在于数据库中,那么它遵循¬hasChild(x, y)。这就是 CWA 的精髓。

但是,这需要进一步澄清,因为它经常被调用 OWA/CWA 的人误解。有些人将 CWA 定义为假设不能从知识库或本体中推断出的东西被假定为错误的假设。这不是 CWA。如果是这样,那么每当我们不能得出 φ 和 ¬φ 的结论时,我们就会假设 φ 和 ¬φ 都是假的,这是一个矛盾。因此,CWA 的真正形式化(由 Raimond Reiter 在 1978 年定义,并由数据库科学家和逻辑学家几十年来形式化)如下:

“如果不存在肯定的基础文字的证据,则假定该文字的否定为真” [R. Reiter,关于封闭的世界数据库,1978]

更完整地说,给定一个 FOL 理论 T,T 的封闭世界理论 CW(T) 是理论 T ∪ {¬φ | φ 是基原子,T ⊬ φ}。基于理论 T 进行 CWA 意味着使用 CW(T) 而不是 T 进行推理,以进行逻辑推理或查询回答。

理论上 T = {∀x.Father(x) → ∃y.hasChild(x,y), Father(Antoine)}, CWA 得出结论 ¬hasChild(Antoine, Antoine), ¬hasChild(Antoine, Jeff) 等,但不得出 Error(T),也不是说 CW(T) 不一致。

总之,如果 CWA 与 T 是否有错误或不一致无关,那么 OWA 也是如此。我不知道 Ivo Velitchkov 和 Stanislav Kralin 在提到 OWA 时的想法是什么,但无论是什么,我所知道的有关该主题的科学文献都是陌生的。

【讨论】:

  • 谢谢。这真的很有帮助:)
  • 有趣的是,我目前正在阅读文章“知识图谱”arXiv:2003.02320v1,您似乎是其中的合著者!!!这也很有帮助:)
  • 你提到这篇文章很有趣,因为我积极参与了提到 CWA / OWA 的部分