簡體   English   中英

OWL我怎么知道某些東西應該是類還是實例?

[英]OWL how can I know if something should be class or instance?

我正在嘗試構建一個Ontology來表示屬性 (資產),該屬性應該有一個類型,如別墅或公寓......

我的問題是,我不知道別墅和公寓是否應該是班級或實例。 我怎么知道

我正在考慮有一個名為Property的類和一個名為isTypeOf的關系以及一個名為PropertyType的類,它有兩個實例apartmentvilla 那是對的嗎? 或者我應該將ApartmentVilla作為PropertyType類的子類?

我想,你在這里結合了兩個區別,你可能想分開爭論:

  1. 我應該何時使用子類,何時應該使用屬性引用?
  2. 什么時候我應該在TBox級別(子類化)和ABox級別(屬性值,實例)表示歧視?

(1)與舊的inheritance or delegation問題大致相同。 答案也或多或少相同:當歧視是所代表的對象的固有屬性時,當歧視屬性是您的知識模型的核心,以及歧視屬性沒有獨立的存在理由時,使用繼承。

另一方面,當歧視屬性僅向您的類/對象添加附加信息或者有足夠的理由單獨“存在”時(即不僅僅與引用對象相關聯),使用委托。 在您的情況下:檢查,取決於PropertyType本身而不依賴於單個PropertyPropertyType有多少信息。 如果有“ 帶游泳池和圓形車道的別墅 ”之類的東西,這種區別很重要且可以重復使用,您可以考慮委托。

(2)沿着相同的功能依賴線。

我個人的經驗法則是

  • 使它成為一個 ,如果你預期的,如果你需要參考的細分組制定基於細分,即額外的公理,如果需要連接數據或對象的屬性,或者如果你希望進一步細化也許需要(認為LuxuryApartmentGarden只能附屬於Villa等)。
  • 如果您希望本體是明確的,並且預期新的子分類很少,請將其設為 但請注意,您的期望可能是錯誤的。
  • 使它成為一個屬性 ,如果屬性值不會引入或非常有限的函數依賴,如果沒有預期的區別有任何附加屬性本身。

但是,通常不一定是正確的錯誤的

專業課程

如果ApartmentVilla是課程,那么很容易根據這些課程制定其他公理。 例如,假設只有屬於VillaProperty可以擁有花園:

(∃ hasPropertyFeature . Garden) ⊑ Villa

如果您嘗試使用hasPropertyType數據屬性來表達它,最終會得到類似的結果

(∃ hasPropertyFeature . Garden) ⊑ (∃ hasPropertyType . "villa"^^xsd:string)

這不僅難以掌握,而且理由也較慢。 此外,類可以是子類,即有一種直接的方式進行額外的細分。

Contra類

但是,如果具有hasPropertyType屬性而沒有其他限制,則允許您純粹在實例級別添加其他屬性值,而無需觸及原始本體。

如果townHouse是一個新的屬性類型,基於類的版本需要更改原始本體的TBox並添加一個新的TownHouse類。 雖然這通常沒有問題(大部分時間都是保守的擴展),但它仍然是TBox的變化,你基本上需要為這些變化創建一個新版本的本體。

當屬性引入功能依賴時,這是版本 - 但是 - 變得不太可行; 往上看。

RDF,RDFS和OWL具有必要的t-box術語。 默認情況下,OWL DL基於描述邏輯,它大量使用集合論,因此它的自然優勢在於使用類,交集和聯合來描述事物。

話雖如此,我更喜歡使用略微更柔和/更寬松的語義進行建模,並且想要使用分類法(枚舉),那么如果您對自己的域名不夠了解,那么如何查看SKOS以幫助解決問題。

使用SKOS,您可以創建ConceptSchemes,其中包含描述為與其他Concepts和ConceptScheme更寬/更窄的各種類。 此外,它與OWL完全兼容

暫無
暫無

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

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