摘要:本體為某一領域的人和應用系統之間的交流提供了一種通用的知識共享模式。文章介紹了領域本體的基本概念,探討了基于領域本體的語義模型的構建原則和生命周期,比較了典型的領域本體開發方法的特點。最后,分析了基于OWL的本體開發方法,并通過一個開發示例說明了本體開發的過程。
關鍵詞:領域本體;語義網;OWL;Protégé
0 引言
本體(ontology)最早是一個哲學范疇,指的是客觀存在的一個系統的解釋和說明。1993年,Gruber給出了本體的一個最流行的定義,即“本體是概念模型的明確的規范說明”。Studer等對前人的定義進行深入研究后給出另一個定義:“本體是共享概念模型的明確形式化規范說明”。這個定義包含4個層次:概念化、明確、形式化和共享。“概念化”指的是通過抽象出客觀世界中一些現象的相關概念而得到概述模型;“明確”指所使用的概念及使用這些概念的約束都有明確的定義;“形式化”指本體是計算機可讀的(即能被計算機處理的);“共享”指本體中體現的是共同的認可和知識,反映的是相關領域中公認的概念集,即本體針對的是社會范疇而非個體之間的共識。
本體為特定領域的人和應用系統的交流提供了一種通用的知識共享模式。本體的研究和應用已經延伸到知識工程、自然語言處理、信息檢索系統、智能信息集成和知識管理、信息交換和軟件工程等領域。在被稱為下一代Web的語義網Semantic Web中,本體具有重要的地位,是解決語義層次上Web信息共享和重用的基礎。如何對不同領域內的知識進行抽取和描述,并構建出合適的領域本體是研究熱點之一。
1 領域本體構建方法
1.1 基于領域本體的語義模型
根據本體在計算機領域內的定義,本體應當是明確的、共享的、計算機可讀的概念模型,其目標是捕獲相關領域的知識,提供對該領域知識的共同理解,確定該領域內共同認可的詞匯,并在不同層次的形式化模型上給出這些詞匯(術語)和詞匯之間相互關系的明確定義。所謂的領域本體(domain-specificonmlogy)就是對學科概念的一種描述,包括學科中的概念、概念的屬性、概念間的關系以及屬性和關系的約束。
基于本體的信息描述與獲取是一種目前較為合理的語義數據建模方法,該方法是一種對數據的概念化的顯式說明,是對客觀存在的概念和關系的描述。由于本體論采用精確的形式語言、句法和明確的語義,使得問題域中的概念與概念、概念與對象、對象與對象之間的關系更加明確,大大減少了對問題域中概念和邏輯關系可能造成的誤解。基于本體的語義模型可以解決系統間的通信、重用、交互操作和共享,所以在本體建模時應該有相應的標準、指導原則和可操作性強的方法,同時要有一套統一的形式化語言來對本體進行編碼。
出于對各自問題域和具體工程的考慮,構造本體的過程各不相同,現在還沒有—個標準的本體構造方法,而且主要采用手工的方式構建本體。從實踐出發出現了不少有益于構造本體的標準,其中最有影響的是T.R.Gruber、N.Guarino,M.Uscholdt等人提出的—些構造本體的規則。—般來講,在構造具體的領域本體模型時需要領域專家的參與,同時應注意滿足以下基本規則:
明確性和客觀性 Ontology應該對所定義的術語給出明確、客觀的語義定義;
完整性 所給出的定義是完整的,完全能表達所描述的術語的含義;
一致性由術語得出的推論與術語本身的含義是相容的,不會產生矛盾;
最大單凋可擴展性 向Ontology中添加通用或專用的術語時,不需要修改已有的內容;
最小承諾 對待建模對象給出盡可能少的承諾;
可演化性 特定領域中的信息是動態的,本體必須能夠支持演化;
逐步細化 可以用逐步細化使得本體一步一步地精益求精;
可組合性 可以通過各種方法裝配已有的本體來構建一個大的新的本體。
1.2 本體建模的生命周期
開發本體的目的是用于人類、計算機對知識的共享和重用,它應該是相對穩定的,獨立于具體的應用。在本體建模的起點就必須詳細說明模型中涵蓋的概念、實例、關系和公理等實體,至少是初步認定描述這些實體的絕大部分詞匯。
綜合現有系統的開發過程,用本體建模的生命周期對本體建模的方法、概念、步驟和設計標準進行了有機的集成。本體建模的生命周期從總體上可以劃分為規約制定、概念化和實現三個主要的階段,其中評測、集成和文檔編寫貫穿于開發的全過程,知識獲取主要集中在前兩個階段。規約制定的主要任務是以文檔的形式詳細說明開發本體的目的和領域,明確為什么要開發本體,預期本體的用途和最終的用戶。概念化階段主要任務是統一開發人員對領域概念化模型的認識,并以一種明確的方式詳細記錄概念化的模型。實現階段的主要任務是用形式化的語言對概念化階段產生的領域概念化模型進行編碼。某一特定領域的生命周期模型可能還更復雜。
1.3 領域本體的開發方法
通常,創建本體的方法可以歸納為自頂向下、自底向上或者兩者綜合的方法。自頂向下的開發過程從定義領域中最抽象的概念開始,然后對這個概念做細化處理。自底向上的開發過程從定義最明確的概念開始,然后對這些概念進行分組和歸納,成為一個相對抽象的概念。兩者綜合的方法是首先定義最顯而易見的概念,然后適當的歸納和特殊化它們。
創建本體的起點可能發生在不同的情景中。可以從無到有創建本體,也可以從已經存在的本體開始擴展完善本體,或者從信息資源的文集中自動抽取本體,或者聯合使用后兩者(Uschold,2000),各種程度的自動化方法也可以用來創建本體。目前,完全的自動化方法只在非常有限的環境中構造簡單本體,發揮了比較好的作用。由于本體工程到現在為止還處于相對不成熟的階段,很多研究人員從實踐出發提出了許多有益于本體構造的標準,包括:
(1)Gruarino(1998)提出的形式化本體(Formal Ontology),總結了基本的設計規則包括:確定領域;確定同一性;確定基本的層次結構;明確的確定角色。
(2)Uschold和Gruninger(1996)提出的完全手工創建本體的“骨架法”,包括:確定創建本體的目的和本體的領域;通過三步創建本體(本體獲取、本體編碼、本體集成);評估本體;文檔編寫;以及前面每一步的指導方針。最終生成的本體必須清晰一致,而且具有可擴展性和重用性。
(3)Reich(1999)提出的本體設計模式(Ontological Design Patterns,ODPs),用來抽象并確定本體設計結構、術語、大量的公式和語義上下文。
這些技術可以把復雜公式的創建和定義與它們的表示方法分離開來,已經被成功地用在集成分子生物信息中。 在遵循1.1所提規則的基礎之上創建了許多本體,在實踐中根據各自問題域和具體工程不同,又形成了各種創建本體的方法,其中知識工程界所承認的幾種本體開發方法有:
(1)Uschold和King方法。這個方法在開發Enterprise Ontology的實踐基礎之上提出,包括明確構造本體的目的、構造本體、評估和文檔。
(2)Gruninger和Fox方法。這個方法基于開放面向商業過程和行為模式的TOVE項目而提出,其基本過程是先對所需要描述的領域給出非形式化的規范說明,然后在此基礎上給出形式化的描述。
(3)Bemeras方法。由KACTUS項目提出,項目的目標之一是研究在復雜系統中知識重用的可行性和本體在其中的作用。
(4)METHONOLOGY方法。此方法由Polytechnic大學的研究人員提出,目的是在知識層上構造本體。
(5)基于SENSUS的方法。由ISI自然語言組開發,用于自然語言處理的本體,包含70000多個按不同抽象度來劃分層次結構的概念,在SENSUS上可以構造面向特定領域的本體。
以上方法各具特色,在各自領域發揮著作用,方法之間沒有優劣之差,要根據不同領域而選擇。
2 基于OWL的本體開發
2.1 OWL語言
基于本體的語義模型的表示支持多種編碼語言的選擇,目前較為常用的是W3C組織定義的OWL語言。OWL是本體論Web語言(Ontology Web Language)的字母縮寫,其設計的最終目的是提供一種可以用于各種應用的語言,這些應用需要理解內容,從而代替只采用人類易讀的形式來表達內容。OWL能夠被用于清晰地表達詞匯表中的詞條的含義以及這些詞條之間的關系,而這種對詞條和它們之間的關系的表達就稱作Ontology。OWL相對XML、RDF和RDFSchema擁有更多的機制來表達語義,從而使OWL超越了XML、RDF和RDFSchema僅僅能夠表達網上機器可讀的文檔內容的能力。
OWL本體語言可以分為三類子語言:OWL-Lite,OWL-DL和OWL-Full。OWL-Lite是表達能力最弱、句法上最簡單的OWL子語言,常常被用在類的層次結構簡單并且約束也簡單的情況。OWL-Full是表達能力最強的OWL子語言,但在OWL-Full中難以實現自動推理。OWL-DL的表達能力處在OWL-Lite和OWL-Full之間,它是基于描述邏輯的,描述邏輯是一階邏輯的可判定部分,適宜自動推理,因此OWL-DL可以自動計算類的層次并且可以檢測本體中的矛盾。從表達能力上看,OWL-DL可以認為是OWL-Lite擴展,而OWL-Full可以看作是OWL-DL的擴展。
2.2 本體開發工具Protégé
Protégé是由斯坦福大學2003年開發的“本體論”編輯和知識獲取軟件,開發語言為Java,是開放源碼軟件。Prot6g6是目前使用最廣泛的本體論編輯器之一,它提供了強大的工具,使得描述概念成為可能;它有豐富的操作符集合——比如與、或、非;它基于不同的邏輯模型,這使得它既可以描述概念也可以定義概念。另外,邏輯模型允許使用推理機,推理機可以檢測本體中陳述和定義是否相互一致,也可以識別哪個概念與哪個定義相應,因此推理機可以幫助維護層次關系的正確性。Protégé軟件是一個功能強大本體開發平臺,包括大量功能組件和插件。
Protégé可以從網站:hpp://protegestanfordedu/downloadJatml獲得。基于Protégé的OWL本體開發是一個反復的過程。
2.3 本體開發示例
為了說明本體的開發過程,本文構建一個與比薩(Pizza)概念相關的本體,并用開發工具Protégé3.2來實現。
比薩從結構上一般可劃分為兩個部分:底部(PizzaBase)和頂部(PizzaTopping)。根據底部使用的材質和工藝的不同,可以有多種子類,比如:厚底的(DeepPanBase)和薄而脆的(ThinAndCrispyBase)。頂部根據原料和口味的不同也可以有多種子類,比如:肉的(MeetTopping),芝士的(ChesseTopping),海鮮的(SeafoodTopping),蔬菜的(VegetableTopping)等。即使是肉頂的,也可以有火腿的(HamTopping),辣香腸的(PepperoniTopping),臘腸的(SalamiTopping),辛辣牛肉的(SpicyBeefTopping)等。按照這樣的思路可以把比薩的所有分類和個體都列出來,形成一個比薩的分層關系圖。類之間具有繼承、排他和等價三種關系。本體的類的實例化就形成了個體(Individuals)。
本體Pizza由大量的類和子類組成,通過屬性的定義來區分和聯系不同的類,可以設置對象屬性(Object)、數據類型屬性(Datatype)和注釋屬性(Annotation)等。比如,所有的Pizza都有關于成分的對象屬性,其中“islngredientOf”表示判斷某個類是不是Pizza的成分,“haslngredient”表示Pizza是否有某種成分。類的對象屬性和數據類型屬性將作為類之間的約束關系參與Protégé提供的推理機的運行。
開發過程如下:
步驟1 建立新的項目。打開Protog6,然后會出現對話框,點擊Create New Project…,出現Create New Project對話框后,選擇OWL Flies(.owl or.rdf后,點擊Finish,而不選Next。
步驟2 建立類。Protégé的主頁面中會出現Metedata(元類)、OWL Classes(OWL類)、Properties(屬性)、Individuals(個體)、Forms(表單)這幾個標簽。選擇OWL Classes來編輯。在Asserted Hierarchy(添加層次)中,最上層是所有類的超類owl:Thing,點擊Asserted Hierarchy旁邊的Create subclass或者在OWL:Thing上點擊右鍵選擇Create subclass,會出現自動定義名為Class_1的類。在右邊的CLASS EDITOR(類編輯器)的Name選項中,輸入Pizza來替換自動定義的名字。
步驟3 建立Pizza的子類。在Pizza點擊上右鍵,選擇Create subclass,并按照上述方法將其名字變為CheesyPiza(芝士匹薩)。同理,可以建立子類NampePizza和Vegetarianpizza。
步驟4 按照上述方法,建立OWL:Thing的另兩個子類PizzaBase和PizzaTopping,然后建立相應的子類。
步驟5 建立屬性。新建一個ObjectProperty(注意不是DatatypeProperty),選擇Properties標簽,Name改為islngredi-entOf,然后在右下角Transitive前面打上對號,說明這是一個傳遞性屬性。然后右擊islngredientOf建立這個對象屬性的子屬性IsToppingOf。在Domain(定義域)中定義該屬性的主體類是PizzaTopping,在Range(范圍域)中定義該屬性的主體類是Piz-za。再建立一個子屬性IsBaseOf,其Domain為PizzaBase,Range為Pizza。同樣的可以建立屬性haslngredient和hasSpiciness,定義了原始類之后,定義屬性的約束,變原始概念為定義的概念,這樣推理機可以檢測概念的一致性并能夠自動計算類的層次關系。
步驟6 建立類之間的約束條件。在選擇Pizza的狀態下,點擊中下方的Asserted Conditions(添加條件)中的第二個按鈕(Create restriction)。在彈出的對話框中,選擇Restrition中的someValuesFrom,然后點擊下方的Insert class…,選擇PizzaBase,再點擊Insert property…,選擇hasBase。這樣我們就定義了類Pizza一定有一個底(Base)。同樣的可以建立類之間的其他約束條件。
步驟7 查看關系圖,在菜單中選擇Project>Configure在出現的對話框中,在OWLVizTab前打上對號,就會出新OWLViz的標簽。如果在這里出現DOT error的話,請參照錯誤提示的解決辦法,然后點擊OWLViz標簽,選擇Show an classes,就可以看到關系圖。
步驟8 保存項目。
3 結束語
支持數據、信息和知識的交換、重用和共享成為當今計算機技術面臨的迫切任務。近些年來,本體論被廣泛地應用到計算機科學的眾多領域。本體方面的研究取得了令人興奮的結果,基于Web的本體構造、編輯、瀏覽、和使用工具已經可用。本文探討了領域本體的開發方法,利用Protogo工具實現了一個本體開發實例,展示了本體開發的基本過程。