簡體   English   中英

protege reasoner 不報告違反 GCI 的錯誤

[英]protege reasoner not report error for violation of GCI

我目前使用 Protege 構建本體的主要目標是一致性檢查。 為此,我從小測試開始。

在這種情況下,我要堅持認為,具有某個屬性的 class 的任何“實例”都必然具有另一個屬性。

很久以前的這個線程之后,我編寫了以下 GCI:

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

我的意思是 state 是:任何 class 是一個expression ,其值為structureItem structureType具有或必須具有至少一個屬性hasAuthor

但是,當我在 Protege 中使用這樣一個沒有hasAuthor屬性的expression運行推理器時,我沒有收到任何錯誤。

我的規則是否有問題,或者我是否期望推理者做一些事情,而它不是設計用來做的。

發生的事情與開放世界假設無關。 稍后再談。


為了顯示推理器的行為有多正常,讓我稍微簡化一下你的 GCI。 讓我們考慮 class Father和屬性hasChild和以下 GCI:

Father  SubClassOf  hasChild min 1

這就是說父親至少有一個孩子。 這是常識知識。 現在,如果我添加以下事實:

Antoine  Type  Father

您的問題表明它應該被檢測為錯誤。 如果您考慮我們在這里所代表的知識,應該清楚地將其解釋為錯誤是違反正常推理的。 如果我遇見你並告訴你:

安托萬是一位父親,你知道的。 父親至少有一個孩子。

你可能不會吃驚地說:

你錯了,安托萬!

因為我所說的只是簡單的、一致的、合理的知識。 OWL 是一種知識表示語言。 在每個人的認知中合理和一致的,在 OWL 中也是合理和一致的。 OWL 不會因未說明的義務而產生錯誤。 subClassOf關系不是提供在超類中的證明以便能夠在子類中的義務。 GCI 只是提供了關於它所描述的世界的一些真相。 所以如果我說安托萬是父親,那么我可以斷定安托萬有孩子,就這么簡單。

您可能將概念包含與某種約束混淆了。 但是將 GCI 解釋為此類約束或義務完全違背了本體的目的。 如果你有:

StackOverflowUser  SubClassOf  Person
Jeff  Type  StackOverflowUser

您必須證明 Jeff 確實是一個人才能避免系統拋出錯誤? 所以你必須把應該是合乎邏輯的結論作為明確的事實。 這與推理和推理的想法相反!


現在,讓我們 go 回到 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 時的想法,但不管是什么,它與我所知道的有關該主題的科學文獻是陌生的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM