本體設計是圖應用中的重中之重,而圖構(gòu)建的核心也是本體設計。本篇文章中作者詳細介紹了領(lǐng)域本體的設計原則和如何設計本體,感興趣的小伙伴一定不能錯過,一起來看看吧。
前文《思考總結(jié):領(lǐng)域知識圖譜平臺構(gòu)建與業(yè)務應用》中提到:“本體設計是圖應用中的重中之重,一切的圖展示、圖計算、圖分析、圖挖掘、圖模式匹配…的基礎在圖構(gòu)建,而圖構(gòu)建的核心是本體設計。”,接著上文,本文就重點聊一下本體設計。
在聊本體之前,有必要先將對于本體的叫法對齊。在知識圖譜層面(偏學術(shù)),一般將本體稱為本體;在圖數(shù)據(jù)庫層面,一般將本體稱為Schema;在業(yè)務領(lǐng)域?qū)用?,一般將本體稱為場景圖模型;本文將稱之為本體。
一、領(lǐng)域本體是什么
領(lǐng)域本體是指領(lǐng)域概念體系(包括領(lǐng)域概念定義和概念間關(guān)系)的形式化規(guī)范定義。近幾年,隨著領(lǐng)域知識圖譜項目和產(chǎn)品的發(fā)展,領(lǐng)域本體開發(fā)的工作逐步從AI專家轉(zhuǎn)移到領(lǐng)域業(yè)務專家手中。
依據(jù)本體的層次和領(lǐng)域依賴度,Guarino等人將其分為四類:頂層本體、領(lǐng)域本體、任務本體和應用本體。
- 頂層本體:研究通用的概念以及概念之間的關(guān)系,如空間、時間、事件、行為等,與具體的應用無關(guān),完全獨立于限定的領(lǐng)域,因此可以在較大范圍內(nèi)進行共享。
- 領(lǐng)域本體:研究的是特定領(lǐng)域內(nèi)概念及概念之間的關(guān)系。
- 任務本體:定義一些通用任務或者相關(guān)的推理活動,用來表達具體任務內(nèi)的概念及概念之間關(guān)系。
- 應用本體:用來描述一些特定的應用,既可以引用領(lǐng)域本體中特定的概念,又可以引用任務本體中出現(xiàn)的概念。
本體是一個描述性的形式化概念體系,是知識圖譜的模型層,本體中包括點類型(也叫實體分類或概念,本文統(tǒng)稱為點類型),點類型屬性(也可叫點類型特征,本文統(tǒng)稱點類型屬性)以及邊類型,邊類型連接點類型與點類型,邊類型也包含邊類型屬性。
以本體作為模型層,將數(shù)據(jù)與本體建立一一映射關(guān)系,然后將映射結(jié)果導入到圖數(shù)據(jù)庫中,便可形成知識圖譜。因此,可以看出,本體其實是知識圖譜的構(gòu)建范式,是數(shù)據(jù)的組織模板。
二、設計本體的意義
通過以上內(nèi)容可知,本體是構(gòu)建圖譜項目的核心,是圖譜組織數(shù)據(jù)的范式和模板,除此之外,本體的意義可總結(jié)為如下5種:
- 達成業(yè)務場景共識,當幾個不同的數(shù)據(jù)源都存在某個業(yè)務場景所需的信息或數(shù)據(jù)時,如果定義好底層本體,腳本就可以從這些數(shù)據(jù)源中提取并以規(guī)范的形式融合數(shù)據(jù),進而使用融合后的數(shù)據(jù)為業(yè)務分析決策提供支持,將散落的數(shù)據(jù)形成知識以提供應用價值,所謂:“無規(guī)矩不成方圓”。
- 復用業(yè)務結(jié)構(gòu)知識:許多不同領(lǐng)域的模型需要用到時間概念,包括時間區(qū)間、時間點、時間的相關(guān)度量等。如果有業(yè)務人員詳細研究并定義了一個業(yè)務本體,那么就可以被其他人直接復用。如果需要構(gòu)建一個大規(guī)模本體,則既可以綜合若干相關(guān)業(yè)務的現(xiàn)有本體,也可以從通用本體出發(fā)有針對性地擴展領(lǐng)域本體。
- 業(yè)務知識的顯性表示:為便于專家有效應對領(lǐng)域知識的變化。領(lǐng)域知識不但包括事實,也包括規(guī)則,例如,“鸚鵡是鳥”為事實,“鳥會飛“為規(guī)則(知識),那么業(yè)務知識的應用就可以推導出”鸚鵡會飛“。如果只是簡單地把業(yè)務知識用編程的方式表示出來,不但全程依賴開發(fā)者支持維護,而且這樣的表示也不利于業(yè)務專家理解與更新。而業(yè)務知識的顯性化表示也便于新用戶透徹理解業(yè)務知識的完整意義。
- 區(qū)別業(yè)務知識與操作知識:數(shù)據(jù)本身和數(shù)據(jù)處理流程可以分離,領(lǐng)域應用中不但需要領(lǐng)域知識,同時可以描述如何配置與處理這些領(lǐng)域知識。
- 分析業(yè)務場景知識:可以利用描述性形式語言。通過對領(lǐng)域知識的形式化表示,可以有效支持本體的復用和擴展。
三、如何設計領(lǐng)域本體
設計本體的過程一般包括如下步驟:
- 定義點類型(實體分類)
- 定義點類型的分類關(guān)系(即子類 – 父類的分類樹),本體中的點類型,可以有最高抽象點類型(如:人類、自然人),也可以有子點類型(如:男人、女人、歐洲人、亞洲人),甚至可以更細分(如:中國人、美國人、北京人)。
- 定義邊類型、邊類型的有向型(是否有向,有向為出向還是入向)
- 定義點、邊類型屬性以及屬性值取值范圍
- 設定點、邊類型屬性取值的缺省值
四、領(lǐng)域本體設計原則
本體的應用期望直接影響本體的結(jié)構(gòu)和本體的詳細程度,本體的直觀程度、可擴展性、可維護性都是本體設計時需要考慮的因素。同時,也要考慮本體模型與實際世界的邏輯聯(lián)系。
筆者在過往的本體設計中總結(jié)了幾點基本原則,這些原則可以幫助在許多情況下進行設計決策:
- 領(lǐng)域場景本體設計沒有唯一的標準和正確的答案,只有更好沒有最好,最好的設計方案取決于后續(xù)的應用期望和拓展期望。
- 本體設計方案是一個不斷迭代的過程,在應用和拓展的過程中,總會發(fā)現(xiàn)更優(yōu)的方案和優(yōu)化點。
- 本體中的點類型、邊類型以及點、邊類型的屬性設計,應該接近目標應用場景中的對象和關(guān)系。
- 業(yè)務滿足度與性能兼容度皆需考慮,在業(yè)務與性能之間取得平衡,并且考慮可視化分析與圖計算、圖挖掘。Neo4j希望用戶能夠尊重業(yè)務領(lǐng)域?qū)嶓w的關(guān)系進行設計,Nebula Graph的共識是面向性能設計。
設計好本體的初始版本后,可以通過實際應用、解決問題、與領(lǐng)域業(yè)務專家討論對本體進行評估和優(yōu)化。一般情況下,初始版本設計的本體,都需要不斷調(diào)優(yōu)修改。迭代本體的動作需要在業(yè)務應用的整個生命周期中持續(xù)進行。
五、本體版本管理
本體初次設計好后,根據(jù)實際業(yè)務場景應用發(fā)展的需要,總是不斷地發(fā)展和變化,因此需要對本體進行有效管理。本體管理環(huán)節(jié)包括:
- 本體演化:本體的發(fā)展過程中的變化規(guī)律及本體的維護管理。
- 本體融合:從多個本體中集成一個新的本體,從子業(yè)務場景融合成為新業(yè)務場景。
- 本體驗證:驗證本體的正確性與合理性,是否滿足業(yè)務需求。
- 本體版本化:維護管理本體的演化過程中所生成的不同版本。
六、Palantir 動態(tài)本體
由于本體總是需要不斷的演進和變化,業(yè)界領(lǐng)先的領(lǐng)域知識圖譜公司Palantir提出了動態(tài)本體論。
Palantir的設計哲學與核心是動態(tài)本體。Palantir動態(tài)本體的靈活定義是基于對象的數(shù)據(jù)模型,動態(tài)本體是將眾多來源的數(shù)據(jù)從原始存儲格式轉(zhuǎn)換、集成到數(shù)據(jù)對象和相關(guān)屬性中的方式,這些屬性代表了世界上的人物、地點、事件以及它們之間的聯(lián)系。
不同的組織以不同的方式構(gòu)思世界,并且這些數(shù)據(jù)模型隨著時間的推移而變化,動態(tài)本體在每個案例(場景)的基礎上進行定義,可以隨著新的數(shù)據(jù)源被添加、更改、刪除而更新。靈活、統(tǒng)一的數(shù)據(jù)模型大大簡化了Palantir數(shù)據(jù)集成的過程,能夠在幾天或幾天內(nèi)完成,而不是大多數(shù)據(jù)集成項目需要幾月甚至幾年。
在Palantir中,一個本體主要包括三個部分:
- 對象:對象指的是任何被建模的事物,對象包含文檔、實體和事件。文檔是基于文本的,實體是概念和分類的實例,比如人、地點;事件是以時間出現(xiàn)的事物。
- 屬性:屬性指是對象的特征,如:人的性別、人的年齡、戶籍地等。
- 關(guān)系:關(guān)系指的是概念之間的關(guān)聯(lián),如:人物之間的雇傭關(guān)系,人與人之間的朋友關(guān)系、夫妻關(guān)系。
在Palantir中,可以基于對象、屬性和關(guān)系設計各種靈活的本體和數(shù)據(jù)模型。而這里的對象又被分為文檔、實體和事件。
對于情報分析來說,及其重要的就是對文檔的檢索以及分析,對人物、組織等實體的畫像和關(guān)聯(lián),對事件的建模和分析。
動態(tài)本體允許對不再使用的對象、屬性和關(guān)系進行移除,同時也可以添加新的對象、屬性和關(guān)系,本體時刻處于動態(tài)更新。還支持對已有對象、屬性和關(guān)系的功能的修改,比如可以添加和修改標簽、圖標、解析器等。
動態(tài)本體對于異構(gòu)數(shù)據(jù)的集成很有幫助?,F(xiàn)有關(guān)系數(shù)據(jù)庫的數(shù)據(jù)管理系統(tǒng)一般采用表和關(guān)系的固定模式來組織數(shù)據(jù),當模式變化時,需要對表進行修改,導致很多重復勞動。
另外,基于一個固定的模式不利于對數(shù)據(jù)做集成,特別是對于數(shù)據(jù)模式經(jīng)常要更新的場景。
《動態(tài)本體 palantir》文章中介紹了Palanti動態(tài)本體的方案流程圖,可作為參考:
目前大多數(shù)圖數(shù)據(jù)庫也是支持入圖后的本體的二次修改,不過都有較大的限制,一般只支持新增和刪除點類型、邊類型、點邊類型屬性,但是不支持點、邊類型的修改和屬性修改。
動態(tài)本體的提出就是為了提供一個靈活可變的數(shù)據(jù)模型,方便數(shù)據(jù)管理和多源數(shù)據(jù)的集成。在一個應用中,可以構(gòu)建一個數(shù)據(jù)庫的動態(tài)本體,而該動態(tài)本體可以用來集成各種數(shù)據(jù)。具體思路如下:
- 對象類型編輯器用來設計數(shù)據(jù)類型和數(shù)據(jù)類型的屬性特征。
- 屬性類型編輯器用來設計屬性類型并且定義該屬性類型的特征。
- 每個屬性類型都有一個解析器,該解析器將一些輸入的數(shù)據(jù)跟動態(tài)本體做一個映射,并且把輸入數(shù)據(jù)添加到數(shù)據(jù)庫中。
Palantir動態(tài)本體通過解析器可以把各種格式的數(shù)據(jù)都集成到一個數(shù)據(jù)庫中,從而很好地實現(xiàn)了異構(gòu)數(shù)據(jù)的集成。
同時,為了達到這個目的,需要將動態(tài)本體的對象類型和屬性類型定義完備,同時需要將解析器的正則表達式寫好,否則很難使用。這也是Palantir的動態(tài)本體的缺陷所在。
七、總結(jié)
本體的設計原則和概念在此做了一些介紹,可以說本體是千變?nèi)f化的,相同的業(yè)務領(lǐng)域基于不同的應用方式以及設計目的,形態(tài)和結(jié)果多種多樣,總的來說以業(yè)務需求為導向去設計,并且結(jié)合應用場景和應用性能。
當前,本體開發(fā)技術(shù)存在很多大的局限性,即使Palantir設計出了動態(tài)本體以彌補數(shù)據(jù)和需求的動態(tài)演變過程中的本體變化問題,但是解析器的正則表達式仍要窮舉,無法定義完備,希望在技術(shù)的發(fā)展過程中,后續(xù)會有更好的本體開發(fā)技術(shù)出現(xiàn)。
當前依然處于學習和應用嘗試過程中,認知有局限性,不當之處,歡迎私信指出和交流。
參考文獻:
神秘Palantir-平臺介紹:https://mp.weixin.qq.com/s/JgLkd4_J5s93FDuS31F-Cg
動態(tài)本體 palantir: https://blog.csdn.net/weixin_44319196/article/details/111598680
動態(tài)本體簡介: https://zhuanlan.zhihu.com/p/30799669
本體(Ontology)概述: https://blog.csdn.net/baijinswpu/article/details/81113314
本文由 @阿拉燈神丁 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來自 Unsplash,基于CC0協(xié)議。
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 舉報,一經(jīng)查實,本站將立刻刪除。