protege reasoner 不报告违反 GCI 的错误
protege reasoner not report error for violation of GCI
我目前 ontology 构建 Protege 的主要目标是一致性检查。为此,我从小测试开始。
在这种情况下,我想坚持认为具有特定 属性 的 class 的任何 "instance" 必然具有另一个 属性。
在此之后 我写了以下 GCI:
expression and (structureType value structureItem) SubClassOf hasAuthor min 1 person
通过这个我的意思是说:任何 class 是一个 expression
具有 属性 structureType
其值为 structureItem
必须有或者至少有一个 属性 hasAuthor
但是当我 运行 Protege 中的推理器有这样一个 expression
没有 hasAuthor
属性 我没有得到任何错误。
我的规则是否有问题,或者我是否希望从推理机那里得到一些它不是设计用来做的事情。
发生的事情与开放世界假设无关。稍后会详细介绍。
为了显示推理器的行为有多正常,让我稍微简化一下您的 GCI。让我们考虑 class Father
和 属性 hasChild
以及以下 GCI:
Father SubClassOf hasChild min 1
这就是说父亲至少有一个child。这是常识性知识。现在,如果我添加以下事实:
Antoine Type Father
你的问题表明它应该被检测为错误。如果你考虑一下我们在这里展示的知识,就会清楚将其解释为错误是违背正常推理的。如果遇见你告诉你:
Antoine is a father! You know, fathers have at least one child.
你可能不会吃惊地说:
You are wrong, Antoine!
因为我说的都是浅显、一贯、合理的知识。 OWL 是一种知识表示 语言。大家认知中合理一致的,在OWL中也是合理一致的。 OWL 不会因未说明的义务而产生错误。 subClassOf
关系不是为了能够在 subclass 中而提供在 superclass 中的证明的义务。 GCI 只是提供了它所描述的世界的一些真相。所以如果我说安托万是父亲,那么我可以断定安托万有一个child,就这么简单
您可能将概念包含与某种约束混淆了。但是,将 GCI 解释为此类约束或义务完全违背了本体论的目的。如果你有:
WhosebugUser SubClassOf Person
Jeff Type WhosebugUser
你必须证明Jeff确实是一个人才能避免系统抛出错误?!所以你必须把应该是合乎逻辑的结论作为明确的事实。这与推理和推论的思想相反!
现在,让我们回到 OWA。必须澄清一下 OWA 是什么,不是什么。
首先,令人惊讶的是,开放世界假设并不是一个假设。之所以这样命名,是为了满足封闭世界假设(CWA)与封闭世界假设不存在之间平行的令人愉悦的美学。 "Closed"的补数是"Open",所以封闭世界假设的对立面一定是开放世界假设。
但是,如果没有假设就认为 "assumption" 是错误的。所以这就引出了问题 "what is the Closed World Assumption?" 那么。
CWA 是一阶逻辑 (FOL) 的概念,是在数据库理论的背景下定义的。数据库通常保留 "positive statements" 的记录——可以形式化为 FOL 原子,如 hasChild(Antoine, R.)
—— 但不能形式化为 "negative statements" —— 形式化为负文字,如 ¬hasChild(Antoine, Jeff)
。在家谱记录的数据库中,记录所有 x
和 y
使得 ¬hasChild(x, y)
的事物对是很疯狂的。相反,假设 hasChild(x, y)
不存在于数据库中是合理的,那么它遵循 ¬hasChild(x, y)
。这就是CWA的精髓。
然而,这需要进一步澄清,因为它经常被调用 OWA/CWA 的人误解。有些人将 CWA 定义为假设无法从知识库中推断出的内容或 ontology 被假定为错误。这不是 CWA。如果是这样,那么每当我们不能得出 φ 或 ¬φ 时,我们就会假设 φ 和 ¬φ 都是假的,这是一个矛盾。因此,CWA 的真正形式化(由 Raimond Reiter 在 1978 年定义,并由数据库科学家和逻辑学家数十年来形式化)如下:
“if no proof of a positive ground literal exists, then the negation of that literal is assumed true” [R. Reiter, On Closed World Data Bases, 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 时脑子里想的是什么,但不管它是什么,我所知道的关于该主题的科学文献都是陌生的。
我目前 ontology 构建 Protege 的主要目标是一致性检查。为此,我从小测试开始。
在这种情况下,我想坚持认为具有特定 属性 的 class 的任何 "instance" 必然具有另一个 属性。
在此之后
expression and (structureType value structureItem) SubClassOf hasAuthor min 1 person
通过这个我的意思是说:任何 class 是一个 expression
具有 属性 structureType
其值为 structureItem
必须有或者至少有一个 属性 hasAuthor
但是当我 运行 Protege 中的推理器有这样一个 expression
没有 hasAuthor
属性 我没有得到任何错误。
我的规则是否有问题,或者我是否希望从推理机那里得到一些它不是设计用来做的事情。
发生的事情与开放世界假设无关。稍后会详细介绍。
为了显示推理器的行为有多正常,让我稍微简化一下您的 GCI。让我们考虑 class Father
和 属性 hasChild
以及以下 GCI:
Father SubClassOf hasChild min 1
这就是说父亲至少有一个child。这是常识性知识。现在,如果我添加以下事实:
Antoine Type Father
你的问题表明它应该被检测为错误。如果你考虑一下我们在这里展示的知识,就会清楚将其解释为错误是违背正常推理的。如果遇见你告诉你:
Antoine is a father! You know, fathers have at least one child.
你可能不会吃惊地说:
You are wrong, Antoine!
因为我说的都是浅显、一贯、合理的知识。 OWL 是一种知识表示 语言。大家认知中合理一致的,在OWL中也是合理一致的。 OWL 不会因未说明的义务而产生错误。 subClassOf
关系不是为了能够在 subclass 中而提供在 superclass 中的证明的义务。 GCI 只是提供了它所描述的世界的一些真相。所以如果我说安托万是父亲,那么我可以断定安托万有一个child,就这么简单
您可能将概念包含与某种约束混淆了。但是,将 GCI 解释为此类约束或义务完全违背了本体论的目的。如果你有:
WhosebugUser SubClassOf Person
Jeff Type WhosebugUser
你必须证明Jeff确实是一个人才能避免系统抛出错误?!所以你必须把应该是合乎逻辑的结论作为明确的事实。这与推理和推论的思想相反!
现在,让我们回到 OWA。必须澄清一下 OWA 是什么,不是什么。
首先,令人惊讶的是,开放世界假设并不是一个假设。之所以这样命名,是为了满足封闭世界假设(CWA)与封闭世界假设不存在之间平行的令人愉悦的美学。 "Closed"的补数是"Open",所以封闭世界假设的对立面一定是开放世界假设。
但是,如果没有假设就认为 "assumption" 是错误的。所以这就引出了问题 "what is the Closed World Assumption?" 那么。
CWA 是一阶逻辑 (FOL) 的概念,是在数据库理论的背景下定义的。数据库通常保留 "positive statements" 的记录——可以形式化为 FOL 原子,如 hasChild(Antoine, R.)
—— 但不能形式化为 "negative statements" —— 形式化为负文字,如 ¬hasChild(Antoine, Jeff)
。在家谱记录的数据库中,记录所有 x
和 y
使得 ¬hasChild(x, y)
的事物对是很疯狂的。相反,假设 hasChild(x, y)
不存在于数据库中是合理的,那么它遵循 ¬hasChild(x, y)
。这就是CWA的精髓。
然而,这需要进一步澄清,因为它经常被调用 OWA/CWA 的人误解。有些人将 CWA 定义为假设无法从知识库中推断出的内容或 ontology 被假定为错误。这不是 CWA。如果是这样,那么每当我们不能得出 φ 或 ¬φ 时,我们就会假设 φ 和 ¬φ 都是假的,这是一个矛盾。因此,CWA 的真正形式化(由 Raimond Reiter 在 1978 年定义,并由数据库科学家和逻辑学家数十年来形式化)如下:
“if no proof of a positive ground literal exists, then the negation of that literal is assumed true” [R. Reiter, On Closed World Data Bases, 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 时脑子里想的是什么,但不管它是什么,我所知道的关于该主题的科学文献都是陌生的。