2014-04-19 35 views
1

我想我會瘋了!我跟着Owl和Protege的各種教程,仍然無法找出答案。用例很簡單。我定義了一個名爲'Person'的類。我已經定義了一個名爲hasFirstName的數據屬性。我爲這樣的Person添加了'subclass of'限制:'hasFirstName只有1個字符串'。我還添加了一個名爲Person的Alex,並且沒有添加hasFirstName屬性。我希望推理者抱怨,因爲我已經指定了1的基數,並聲稱Alex是一個人,但並沒有將該屬性值添加到Alex個人,但推理人員並沒有抱怨。但是,如果我添加兩條語句hasFirstName'Alex'和hasFirstName'John'然後我得到一個抱怨。我做錯了什麼?任何幫助將不勝感激,謝謝。準確地說1個基數OWL限制不會引起不一致

回答

3

第一種情況沒有不一致。 OWL使open world assumption,這意味着未知的東西是不同於它被認爲是真實的或已知是錯誤的。您在我寫這個答案時的用戶名是user3552593。我相對有信心有一個名字,這不符合我不知道它是什麼的事實。

通過說

人⊑ = 1 hasFirstName.String

亞歷克斯:人

則可以推斷

亞歷克斯:= 1 hasFirstName.String

T這裏沒有任何不一致的地方;亞歷克斯憑藉亞歷克斯的個性,擁有一個名字 - 我們只是不知道它到底是什麼。

+0

這很有道理,非常感謝。有沒有什麼比在開放世界的假設下在OWL中指定必須爲已知知識庫中的個人賦予一個值的屬性?或者你是否必須進入封閉的世界假設? – Alex

+0

這是一個廣泛的問題。您可以添加「關閉」知識庫的公理,例如,枚舉某個類的個體,並添加否定屬性斷言。爲了查詢的目的,還有SPARQL。如果您對名稱少於一個的個人進行了查詢,您將檢索到沒有聲明名稱的個人; SPARQL是RDF的數據查詢語言,在這方面更像是一個封閉的世界數據庫。 –