[英]Can/Should I create a owl/rdfs class that would have only 1 instance
[英]OWL how can I know if something should be class or instance?
我正在嘗試構建一個Ontology來表示屬性 (資產),該屬性應該有一個類型,如別墅或公寓......
我的問題是,我不知道別墅和公寓是否應該是班級或實例。 我怎么知道 ?
我正在考慮有一個名為Property
的類和一個名為isTypeOf
的關系以及一個名為PropertyType
的類,它有兩個實例apartment
和villa
。 那是對的嗎? 或者我應該將Apartment
和Villa
作為PropertyType
類的子類?
我想,你在這里結合了兩個區別,你可能想分開爭論:
(1)與舊的inheritance or delegation
問題大致相同。 答案也或多或少相同:當歧視是所代表的對象的固有屬性時,當歧視屬性是您的知識模型的核心,以及歧視屬性沒有獨立的存在理由時,使用繼承。
另一方面,當歧視屬性僅向您的類/對象添加附加信息或者有足夠的理由單獨“存在”時(即不僅僅與引用對象相關聯),使用委托。 在您的情況下:檢查,取決於PropertyType
本身而不依賴於單個Property
的PropertyType
有多少信息。 如果有“ 帶游泳池和圓形車道的別墅 ”之類的東西,這種區別很重要且可以重復使用,您可以考慮委托。
(2)沿着相同的功能依賴線。
我個人的經驗法則是
LuxuryApartment
或Garden
只能附屬於Villa
等)。 但是,通常不一定是正確的或錯誤的 。
專業課程
如果Apartment
和Villa
是課程,那么很容易根據這些課程制定其他公理。 例如,假設只有屬於Villa
的Property
可以擁有花園:
(∃ 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.