1 Protégé簡介
Protégé是一個本體建模工具軟件,由斯坦福大學基於java語言開發的,屬於開放源代碼軟件。軟件主要用於語義網中本體的構建和基於本體的知識應用,是本體構建的核心開發工具,最新版本為5.5.0(截至2019年7月)。
Protégé支持中文,能夠實現實體關系的中文展示。如下圖。
具體來說,Protégé具有以下功能。
類建模。Protégé提供了一個圖形化用戶界面來建模類(包括概念)和它們的屬性以及關系。
實例編輯。根據創建的類型,Protégé會自動產生交互的形式,可以根據類之間的關系獲得相應實例的約束,並對實例進行編輯。
模型處理。Protégé有一些插件庫,可以定義語義、解答詢問以及定義邏輯行為。
模型交換。最終的模型(類、實例、關系、屬性等)能以各種各樣的格式被保存和加載,包括XML、UML、RDF、OWL等。
2 Protégé的安裝
軟件到官網https://protege.stanford.edu/products.php直接下載,我們使用的是5.5.0版本,下載后是名為Protege-5.5.0-win.zip的壓縮文件,解壓縮后,得到以下文件。
直接運行Protege.exe即可。
Protégé是由java開發的,運行時需要java運行時環境,運行時可能需要配置一下java的運行時環境,按照提示進行配置就可以了。
3 軟件主要工作tab
打開軟件后,可以看到工作區域是由很多tab組成。
Active ontology是顯示當前的實體名稱,以URI的形式顯示,前面是www.semanticweb.org后面跟着主機名(我的主機名稱為dell),再后面是默認的根據時間命名實體。
Entities,可以看作是實體的總覽,能夠看到我們創建實體的一些主要信息,是對實體信息的匯總。
Classes,是對本體模型中,類型部分的編輯,能夠定義類之間的層次關系,相互之間的關系。
Object properties,物體關系,可以理解為編輯實體外部的關系,也就是實體和實體之間的關系。
Data properties,數據屬性,可以理解為編輯實體內部的屬性,用來定義實體本身所具有的屬性以及屬性值。
Annotation Properties,標注屬性,是w3c定義的一些常用的屬性,根據URI可以看到這些屬性的具體說明。
Individuals by class,根據類型創建的實例,用來編輯實例信息,類似於java程序中的對象,要歸於某個類別。
OntoGraf,本體關系圖,用來展示我們創建的本體里面各個實體之間的層次關系。
SPARQL Query,SPARQL查詢,使用SPARQL語言,對創建的本體進行查詢,獲取查詢結果。
4 創建一個本體實例
4.1 創建本體
軟件打開后,就像大多數軟件一樣,利用file-new來創建一個本體,Protégé會自己根據默認規則為本體起一個名稱,比如我創建的本體名稱為:http://www.semanticweb.org/dell/ontologies/2019/6/untitled-ontology-35,然后我們就可以編輯這個本體了。
4.2 建立模型層的數據
本體分為模型層和數據層,模型層主要定義類和類之間的關系。Thing是所有類型的根節點,也就是基類,所有的類型都是從Thing派生出來的,我們建立如圖的類型層次結構。
在Classes這個tab頁面下,可以看到紅色方框標出來的是Add subclass,一個是工具欄直接增加子類,一個是通過右鍵選擇增加子類,比如我們將鼠標點擊owl:Thing之后,然后增加子類人物、勢力、工具。然后再點擊人物,再增加子類文官、武將和皇族,同樣操作,增加工具的子類,武器和馬匹。
還可以定義類之間的一些約束關系,比如人物和工具是互斥的,選擇人物后,在右下方,Disjoint with關系選擇工具。表示了人物和工具的互斥關系,這時候,我們點擊工具,就會發現,Disjoint with已經自動添加了人物這個類。
4.3 創建實體關系
創建實體之間的關系,在Object Properties這個tab頁面。
編輯方法和添加類型的tab頁面類似,最頂層的實體關系為owl:topObjectProperty,選擇后,點擊工具欄的按鈕或者右鍵選擇add sub-properties,添加使用、屬於和騎三個關系。對於“使用”這個關系,Domains選擇人物,Ranges選擇武器,代表三元組中主語是人物,謂語是使用,賓語是武器,組成的三元組就是人使用武器。“屬於”這個關系,Domains和Ranges分別為人物和勢力,“騎”這個關系的Domains和Ranges分別為人物和馬匹。
4.4 創建實體屬性
創建實體的屬性,在Data properties這個tab頁面。
三國里面的人物,人名都有一個字,比如一般都說,關羽關雲長。關羽就是他的名字,雲長是他的字。名字用於自稱,字都是別人喊得,表示尊重。
添加屬性“字”后,Domains我們選擇人物,Ranges選自如圖,在Built in datatypes中選擇xsd:string,表示“字”的屬性值類型是個字符串。
4.5 創建實例
創建本體的實例,在Individuals by class這個tab頁面。
在Individuals里面,創建關羽、劉備、諸葛亮、蜀、赤兔馬、青龍偃月刀等實例。然后分別編輯這些實例。此處以關羽為例說明對實例的編輯。
首先是確定實例的類型,關羽的類型,選擇武將。然后增加實體的關系,騎赤兔馬,屬於蜀,使用青龍偃月刀等三個關系。最后增加數據屬性,字為雲長。
這樣就確定了關羽這個實例的類型、關系和屬性,從而編輯完成關羽這個實例。同樣方法,編輯其它實例的類型、關系和屬性,如果某項內容空缺,可以不編輯。
4.6 本體關系展示
對於本體的關系信息展示,在OntoGrap這個tab頁面。
雙擊左側的owl:Thing,在右側區域會顯示本體信息,將展示的信息中,有加號的都雙擊展開,就會看到整個本體的關系圖。紅色方框中,是以不同的方式展示關系圖,依次是按字母網格展示,徑向展示,彈簧展示,垂直樹狀展示,水平樹狀展示,垂直方向展示,水平方向展示等。如果將鼠標放到某個信息節點,就會顯示該信息節點的詳細信息。本例中顯示的是“關羽”這個信息點的詳細信息。
5 結語
介紹了Protégé的基礎知識,並通過一個具體的本體創建過程,將軟件的使用做了說明。Protégé作為一個強大的本體編輯工具,還有很多功能,比如推理能力,希望通過介紹,大家能夠對Protégé進行簡單的操作,並通過不斷地實踐和練習,能夠更深入的理解和使用Protégé。