发生的事情与开放世界假设无关。稍后会详细介绍。
为了显示推理器的行为有多正常,让我稍微简化一下您的 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) 这样的否定文字。在家谱记录的数据库中,记录所有 x 和 y 这样的事物对是很疯狂的,例如 ¬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 时的想法是什么,但无论是什么,我所知道的有关该主题的科学文献都是陌生的。