Protégé基本教程

一、前言

參考文檔:Protégé4OWL官方入門教程
因爲在網上看到的教程使用的Protégé版本比較老了,而且是英文的,這裏做一個整理。

Protégé軟件是斯坦福大學醫學院生物信息研究中心基於Java語言開發的本體編輯和知識獲取軟件,或者說是本體開發工具,也是基於知識的編輯器,屬於開放源代碼軟件。這個軟件主要用於語義網中本體的構建,是語義網中本體構建的核心開發工具,現在的最新版本爲5.5.0版本。
Protégé提供了本體概念類,關係,屬性和實例的構建,並且屏蔽了具體的本體描述語言,用戶只需在概念層次上進行領域本體模型的構建。

Protégé下載地址

現在下載到的Protégé一般是一個壓縮包,壓縮包解壓之後有Protege.exe和run.bat這兩個文件,點擊任何一個都可以打開Protégé。
Protégé一打開的界面主要是Active Ontology這個Tab的界面。
Protege打開界面
本體的名字可以在Ontology IRI裏面修改。
Annotations是註釋欄,可以對本體添加一些信息註釋或者描述。
右邊Ontology metrics會顯示一些本體中相關元素的統計信息。

二、開始建立一個新的本體

建立本體主要在Entities這個Tab的界面下完成。一個最簡單的本體需要完成類和對象屬性的定義。
在這裏插入圖片描述

1. 類的建立

在這裏插入圖片描述

類的添加、刪除是在Class這個Tab下面完成的。Thing類是表示包含所有個體的集合的類。 因此,所有類都是Thing的子類。關於類,主要有三個操作:
在這裏插入圖片描述
需要注意的是,類的命名不可以重複。另外Protégé目前的版本對中文的兼容性還算比較高,但有些時候還是會出現中文顯示爲□的情況。在使用的過程中,推薦優先使用英文命名。通過類的操作,我們可以建立“Pizza(比薩)”,“PizzaBase(比薩餅底)”,“PizzaTopping(比薩餅面)”三個類。
在這裏插入圖片描述

在Class這個Tab界面的右下方是類的描述欄,相當於是對已有的類加一些限制。
比如,對於某一個實例來說,它要麼是PizzaBase,要麼是PizzaTopping,這樣就可以設置“Disjoint with”的關係,說明這兩個集合是不相交的。
在這裏插入圖片描述

那麼如果發現某一個實例既是PizzaBase,又是PizzaTopping,這種情況就是不允許的。這樣的操作保證了類的嚴謹性。

接着,可以通過增加子類的操作完善本體的框架。比如比薩的餅底有薄餅和厚餅,比薩的餅面也有不同的口味。這樣類之間的繼承就是所謂的分類法。
在這裏插入圖片描述
如果在編輯的過程中,類的層級關係不小心弄錯了,不需要刪除之後再重新編輯;可以拖動這個類到它應處於的層級,類似於文件夾的操作。如果拖動了某個類,它的子類也會隨之移動,但不會改變這個類及其子類的層級關係。
如果類的名字寫錯了,可以右鍵選擇“Change IRI Name”進行更改

如果需要增加很多個子類,可以右鍵點擊該類,選擇“Add Subclasses”。
在這裏插入圖片描述
在空白大框內輸入要建立的子類的名字,以回車爲分隔,就可以一鍵完成子類的建立。點擊“Continue”,可以看到以這種方法建立的子類默認是均不相交的集合。
在這裏插入圖片描述
點擊“Finish”即可完成創建。

在本體中,類和子類的關係可以這麼理解:就拿上面的例子來說,DeepPanBase中所有的實例,都是PizzaBase的實例,這個關係是隨着子類(SubClass-of)這個關係的定義而自然存在的;也就是說在實例化的時候,我們只需要說明這個實例是DeepPanBase即可。

2. 對象屬性(Object Property)

2.1 對象屬性的建立

在本體中定義了兩種類型的屬性——對象屬性(Object Property)和數據屬性(Data Property)。

Object properties are relationships between two individuals.
Datatype properties describe relationships between individuals and data values.

我們知道,本體或者語義網最基礎的元素是(s,p,o)三元組,前面提到的類的定義方式可以看作是s和o的定義方式,這裏這個對象屬性就是p的定義。

對象屬性和數據屬性的定義可以這麼理解:假如有一對夫妻小紅和小綠,那麼我們可以先定義兩個類——男人、女人;小紅是類“女人”的一個實例,小綠是類“男人”的一個實例。之後我們可以定義小紅和小綠之間的夫妻關係,這個關係就是對象屬性“夫妻”。同時我們又知道小紅今年30歲,那麼我們可以定義小紅的一個數據屬性“年齡”,屬性值是“30”。
在這裏插入圖片描述

和Class的界面類似,Object property的界面如下圖所示。
在這裏插入圖片描述

和Thing一樣,topObjectProperty是所有屬性的根節點。對屬性的操作也是主要由三個button來完成。
在這裏插入圖片描述
和類一樣,對象屬性的名字是不能重複的。同時在《官方手冊》中也建議,在命名時爲了方便管理,最好能夠一目瞭然地反應對象屬性所描述的關係。
如果是用英文命名,建議是第一個詞用小寫字母,每個詞之間不用空格(因爲空格可能會在編程的時候帶來麻煩),從第二個詞開始首字母大寫(便於區分不同的詞,能夠更快地理解對象屬性的含義);此外,《手冊》還建議第一個小寫單詞儘量用is和has,因爲這是最常見的對象屬性。
如果是用中文命名,我感覺就是避免歧義就好了。
例子:
在這裏插入圖片描述
在定義對象屬性的時候,一個比較重要的操作就是定義屬性之間的互逆關係。比如“isParentOf”和“isChildOf”就是一對互逆的對象屬性。互逆關係的定義是對本體關係的補充,也是推理過程的優化。
在這個例子中,可以先選擇“hasTopping”,再點擊“Inverse Of”旁邊的“+”,創建對象屬性“isToppingOf”就完成了一對互逆屬性的定義。如果已經創建好了“isToppingOf”這個對象屬性,那麼可以在點擊“+”之後彈出的對話框中選擇“isToppingOf”這個對象屬性即可。
在這裏插入圖片描述

2.2 對象屬性特性的定義

在定義對象屬性的時候,我們還可以定義對象屬性的屬性特性,對對象屬性作出更多的說明。這些特性可以用家庭成員之間的關係很好地說明。
在這裏插入圖片描述

  • Functional
    Function我們都知道有“函數”的意思,在這裏,Functional可以認爲是函數中的“單映射”關係。如果一個對象屬性的特性是Functional(單值的),那麼對於某個實例來說,通過這個對象屬性進行關聯的實例有且僅有一個。

Functional properties are also known as single valued properties and also features.

在這裏插入圖片描述
這是《手冊》裏面的例子,對“hasBirthMother”這個對象屬性定義“Functional”的特性,那麼“Jean hasBirthMother Peggy”和“Jean hasBirthMother Margaret”這兩條事實可以推理得到“Peggy和Margaret是同一個人”這條事實。如果還有另外的事實表明Peggy和Margaret不是同一個人,那麼將會導致矛盾。

  • Inverse Functional

Inverse Functional特性最重要的還是體現在Functional上,它的涵義是“該對象屬性的逆屬性是單值屬性(single value property)”。

  • Transitive

Transitive定義了對象屬性的傳遞性。下圖是《手冊》中的一個例子,假設對象屬性“hasAncestor”具有“Transitive”的特性,如果已知“Matthew hasAncestor Peter”和“Peter hasAncestor William”,那麼可以由“hasAncestor”的傳遞性推理得到“Matthew hasAncestor William”這一事實。
在這裏插入圖片描述

  • Symmetric

Symmetric定義了對象屬性的對稱性。在家庭成員中,如果Matthew有一個兄弟姊妹(hasSibling)叫Gemma,自然Gemma也有一個兄弟姐妹(hasSibling)叫Matthew。我們可以定義對象屬性“hasSibling”是對稱的,那麼我們只需聲明一條事實,另一條事實因爲對象屬性的“對稱性”而自然產生。

  • Asymmetric

非對稱性也比較好理解,比如hasChild這個屬性就不能定義爲對稱的。
在這裏插入圖片描述

  • Reflexive

Reflexive定義的是對象屬性的自反性,也就是自己和自己的關係。比如“know”(認識)這一對象屬性,對於每個人來說,自己肯定是認識自己的。
在這裏插入圖片描述

  • Irreflexive

Irreflexive定義的是對象屬性的非自反性,也就是說這個對象屬性不能描述實例自身到自身的關係。例如isMotherOf。
在這裏插入圖片描述

對於某一個對象屬性來說,可以定義一種或者多種特性,但是注意不要矛盾就行。比如《手冊》中就有兩個比較重要的提醒:

如果你定義了某個對象屬性是可傳遞的,那麼它的逆屬性也應該是可傳遞的。
如果你定義了某個屬性是可傳遞的,那麼這個屬性就不能是單值的。

If a property is transitive then its inverse property should also be transitive.
Note that if a property is transitive then it cannot be functional.

2.3 對象屬性的Domains和Ranges

我們知道語義網可以看作是一張圖,一條邊聯繫的兩個節點就是一個事實(或者成爲一條知識),即(s,p,o)三元組,這條邊就是對象屬性。同時,這張圖應該是一張有向圖,那麼每一條邊都帶有箭頭指向性——這個箭頭的起點稱爲對象屬性的Domain(我通常叫做定義域),重點稱爲對象屬性的Range(我通常叫做值域)。
值域和定義域和可以在Description裏面進行選擇和定義。
在這裏插入圖片描述

在Pizza的這個例子裏面,我們可以定義好這些屬性的值域和定義域。如圖所示:
在這裏插入圖片描述

在Protégé中,是允許對象屬性擁有多個值域的。
對於互逆的對象屬性來說,對象屬性的值域是其逆屬性的定義域,對象屬性的定義域是其逆屬性的值域。

3. 利用對象屬性描述類(類的約束)

對象屬性實質上就是定義了類之間的關係,在定義了這些對象屬性之後,可以利用這些屬性來描述類;或者說,給定義好的類添加一些約束。

A restriction describes a class of individuals based on the relationships that members of the class participate in. In other words a restriction is a kind of class, in the same way that a named class is a kind of class.

在Protégé中,約束的定義可以在類的Description欄中找到:
在這裏插入圖片描述

點擊“+”,可以在Class expression editor裏面手動輸入,也可以在Object restriction creator裏面選擇。一些比較複雜的關係可以選擇手動輸入;一些比較簡單的直接關係選擇會比較快一點。

在這裏插入圖片描述

這裏要說明一下,在教程裏面對類添加約束是在“SuperClasses”裏面的,但是在Protégé最新的版本中,這些約束的定義是放在“SubClass Of”裏面了。這是因爲,這些約束實際上也是定義了一個隱含類,這個隱含類中的成員是滿足這些約束關係的成員;而該類的成員均是這個隱含類的成員;也就是說,這個類是由約束形成的隱含類的子類。

在本體中,有三類約束:量詞描述(Quantifier Restrictions),數量描述(Cardinality Restrictions),包含描述(hasValue Restrictions)。

3.1 量詞描述(Quantifier Restrictions)

量詞描述又可以被分爲存在性量詞描述(Existential Restrictions)和全稱量詞描述(Universal Restrictions)。

  • 存在性量詞描述

存在性量詞描述用關鍵字“some”來描述。在數學邏輯表達式中,存在性量詞描述可以用符號“∃”表示。例如“hasTopping some MozzarellaTopping”表示“這個類存在Topping爲MozzarellaTopping的成員”。其關係如下圖所示:
在這裏插入圖片描述

以MargheritaPizza爲例,MargheritaPizza(瑪格麗特比薩)是以自發粉、小西紅柿爲主要材料的一款菜品,調料是初榨橄欖油、荷蘭撒拉米等。我們可以來梳理一下MargheritaPizza與其它類之間的關係。

  • MargheritaPizza的Topping可以是TomatoTopping或者MozzarellaTooping。
  • MargheritaPizza有很多種餅底。

這樣,可以對MargheritaPizza添加下圖所示的一些描述:
在這裏插入圖片描述

同理,我們可以對AmericanPizza、AmericanHotPizza、SohoPizza添加約束:
在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在類的創建界面,可以看到有一個小按鈕可以選擇“Asserted”或者“inferred”。Asserted是人手工創建的結構,inferred”是推理機推理得到的結構。
在這裏插入圖片描述

The ‘manually constructed’ class hierarchy is called the asserted hierarchy.
The class hierarchy that is automatically computed by the reasoner is called the inferred hierarchy.

在使用推理機的時候,如果有矛盾的類將會以紅色來表示,這樣可以方便我們檢查我們定義的類及其約束關係是否正確。Protégé提供了很多推理機的插件,選擇相應的推理機,點擊“Start Reasoner”就可以開始推理。

在這裏插入圖片描述

到這裏,我們發現,我們目前定義的,都是類的必要條件;也就是說對於某一個實例來說,它屬於這個類,那麼它一定具有這些條件,但是反過來如果它具有這些條件,我們不能說它一定屬於這個類。
因此,我們需要把一些必要條件進一步寫成充分必要條件。
例如對於芝士比薩(CheeseyPizza)來說,如果一個比薩是芝士比薩,那麼它的餅面一定有芝士。按照上面講過的步驟,我們可以添加下面這樣的約束:
在這裏插入圖片描述

反過來,如果一個比薩餅面上有芝士,那麼它就是芝士披薩。於是我們就要把“hasTopping some CheeseToppig”這個必要條件改爲充分必要條件。這事,我們在“hasTopping some CheeseToppig”前加上一個“and”即可,但是要注意的是應該在“Equivalent to”底下添加。
在這裏插入圖片描述

同樣的,我們使用推理機,可以發現在“inferred”界面,CheeseyPizza的子類自動擴充了。
在這裏插入圖片描述

對比一下手工建立的結構和自動推理得到的結構:
在這裏插入圖片描述

  • 全稱量詞描述

前面講的這些描述都是是存在性量詞描述(some),下面我們主要看一下全稱量詞描述。全稱量詞描述用關鍵字“only”來描述。在數學邏輯表達式中,全稱量詞描述可以用符號“∀”表示。例如“hasTopping only MozzarellaTopping”表示“這個類任一成員的Topping是MozzarellaTopping”。
假設我們定義一個Pizza的子類VegetarianPizza(素食Pizza),可以添加如下描述:
在這裏插入圖片描述

當我們同樣調用推理機的時候,卻發現VegetarianPizza中並沒有生成子類,按照其他Pizza的描述,VegetarianPizza中應當包含MargheritaPizza和SohoPizza。
在這裏插入圖片描述

這是因爲,在本體中使用的是開放世界假設(Open World Assumption, OWA)。

Close world Assumption(CWA),封閉世界假設,將當前未知的事物都設爲假的假設。在BIM模型中的含義是:當某個元素在BIM模型中沒有進行詳細描述時,BIM模型默認其不存在。現在大多BIM軟件採用CWA假設。
開放世界假設(Open World Assumption, OWA), 它和CWA相反, 對推不出來的命題就很誠實地當作不知道這個命題的正確與否, 這樣的後果就是知識庫中能推導出來的結論大大減少。語義網應該基於OWA假設。

因此,我們要對這些類添加閉包描述。
對MargheritaPizza:
在這裏插入圖片描述

對SohoPizza:
在這裏插入圖片描述

這時候我們再調用推理機,就可以發現VegetarianPizza的子類自動擴充了:
在這裏插入圖片描述

我們知道,Pizza的種類有很多,除了我們定義的CheeseyPizza,VegetarianPizza和NamedPizza之外,還會有各種種類的Pizza,我們當然沒有辦法把它們全部定義完。因此,我們需要定義一個類——ValuePartitions,裏面包含的是可以被枚舉的類,例如Pizza的辣度SpicinessValuePartition,包括Mild,Medium和Hot三種程度。
在這裏插入圖片描述

然後我們知道,在點菜的時候Pizza的辣度只能是這三種,而且這三種辣度集是互不相交的——也就是說Pizza要麼是不辣的(Mild),要麼是中辣的(Medium),要麼是重辣的(Hot)。這裏我們就要引入“Covering Axioms”。我們給SpicinessValuePartition這個類添加一個“Covering Axioms”,如下圖所示:
在這裏插入圖片描述

這時候,這個描述就表示:SpicinessValuePartition=Mild∪Medium∪Hot
可以用下面這張圖來看出加上“Covering Axioms”前後這個類的不同含義:
在這裏插入圖片描述

同樣的,我們可以用前面講到的量詞描述來給不同的Pizza Topping添加Pizza辣度的描述。
對JalapenoPepperTopping:
在這裏插入圖片描述

對RedPepperTopping:
在這裏插入圖片描述

這時候,我們就可以找出這些Pizza裏面的SpicyPizza:
在這裏插入圖片描述

這裏這個條件的意思是:這個實例是一個Pizza,並且它有某一種PizzaTopping,並且這個PizzaTopping的口味是Hot。調用推理機,可以得到SpicyPizza的子類有AmericanHotPizza:
在這裏插入圖片描述

3.2 數量描述(Cardinality Restrictions)

數量描述主要包含min,max和exactly三個關鍵字,比較好理解。比如我們創建一個類InterestingPizza(至尊Pizza):
在這裏插入圖片描述

也就是說,這裏這個InterestingPizza至少要有3種不同的餅面(hasTopping min 3)。通過調用推理機,我們可以得到InterestingPizza主要包含的子類有:
在這裏插入圖片描述

我們可以定義更加複雜的關係——比如FourCheesePizza:
在這裏插入圖片描述

這裏表示,FourCheesePizza一定有4種餅面,並且這些餅面都是Cheese Topping。調用推理機,我們發現,雖然FourCheesePizza沒有子類,但是FourCheesePizza成爲了InterestingPizza和CheeseyPizza的子類。因爲InterestingPizza是至少有3種不同口味的餅面的Pizza,而FourCheesePizza有4種不同的Cheese口味,自然是InterestingPizza的子類;CheeseyPizza是餅面的Cheese Topping的Pizza,因此FourCheesePizza也是CheeseyPizza的子類。
在這裏插入圖片描述

3.3 包含描述(hasValue Restrictions)

包含描述用關鍵字“value”來描述。在數學邏輯表達式中,存在性量詞描述可以用符號“∋”表示。例如“hasCountryOfOrigin value Italy”(這裏的Italy是一個實例)表示“這個類與這個實例Italy之間的關係是hasCountryOfOrigin”。
比如我們先建立一個實例“Italy”,它的類型是一個國家;建立一個對象屬性hasCountryOfOrigin:
在這裏插入圖片描述

之後。我們對MozzarellaTopping添加一條描述:
在這裏插入圖片描述

我們再建立一個類,想要找出意大利風味的PizzaTopping:
在這裏插入圖片描述

調用推理機,可以得到如下的結果:
在這裏插入圖片描述

到這裏,基本上把類的描述講完了,也可以參考一下官方給出的文檔:Class Expression Syntax

4. 枚舉類(Enumerated Classes)

這裏,我們發現,國家Country實際上是一個枚舉類,那麼枚舉類在Protégé中應該怎麼表述呢?
我們首先定義好這些國家的實例:
在這裏插入圖片描述

接着,在Country這個類添加一條描述:
在這裏插入圖片描述

調用推理機,可以得到推理結果:
在這裏插入圖片描述

對於實例很多的類,使用這種方法來定義類和實例之間的關係,無疑是一種好方法。

5. 數據屬性(Data Property)

Object properties are relationships between two individuals.
Datatype properties describe relationships between individuals and data values.

如果說對象屬性描述的是類之間的關係,那麼數據屬性描述的就是類本身的屬性,感覺上更符合“屬性”這個詞的中文含義。數據屬性的定義主要在Data property這個Tab下面,和對象屬性定義的界面類似,這裏不再贅述。
還是舉這個Pizza的例子,我們知道不同的食物都是有不同的卡路里的,我們可以定義一個數據屬性——hasCalorificContentValue,用來表示不同Pizza的熱量。
這裏需要注意的是,數據屬性必須是從一個實例指向某一個數值。我們可以定義數據屬性的定義域(不同的類),以及值域(屬性值的數據類型),但是不能對“類”添加數據屬性,只能對“實例”添加數據屬性。

5.1 實例的添加及數據屬性的定義

實例的添加需要在Individuals這個Tab裏面實現:
在這裏插入圖片描述

輸入實例名,需要注意的是實例名不能重複:
在這裏插入圖片描述

添加實例的類型,假設是一個MargheritaPizza:
在這裏插入圖片描述

接下來添加實例的數據屬性:
在這裏插入圖片描述

在這裏插入圖片描述

最後可以看到實例Pizza-1的相關描述如下:
在這裏插入圖片描述

同理,我們可以建立一個AmericanPizza的實例,其卡路里是723:
在這裏插入圖片描述

5.2 利用數據屬性描述類

我們知道,食物都有卡路里值,這裏我們需要加入一個描述:每一種Pizza都有hasCalorificContentValue這個數據屬性。我們可以對Pizza這個類增加一些Data restriction。
在這裏插入圖片描述

在這裏插入圖片描述

在這個基礎上,我們可以定義一個高卡路里Pizza類——HighCarloriePizza,指卡路里值高於400的類,並對其增加一些描述:
在這裏插入圖片描述

調用推理機,可以得到HighCarloriePizza中加入了Pizza-2這個實例(因爲Pizza-2的卡路里值爲723):
在這裏插入圖片描述

同樣的,可以定義一個低卡路里Pizza類:
在這裏插入圖片描述

調用推理機可以發現,因爲Pizza-1的卡路里值只有263,所以它屬於LowCarloriePizza:
在這裏插入圖片描述

6. 小結

第二章基本算是手冊的主體,第二章的內容理解之後開始建立本體應該不是問題了。這裏面對於推理機的應用主要還是用於本體的檢驗和分類,一定程度上是減少了手工建立本體的過程。
另外,在開始建立本體時,本體的框架、類之間關係的梳理極其重要,也是能夠順利進行推理的先決條件。
另外,Protégé中對於類的描述其實就是對於數學集合符號和邏輯符號的不同運用,瞭解這些符號及描述的對應關係之後能更好地理解Protégé中的相關描述。

三、開放世界假設下的推理

前面提到,語義網是基於開放世界假設進行推理的。在開放世界假設下,未知的知識是不確定的,這將大大減少推理得到的結論。
比如,這裏定義了一個類——NonVegetarianPizza,它的描述如下:
在這裏插入圖片描述

我們再定義一種Pizza——UnclosedPizza,它的描述如下:
在這裏插入圖片描述

而當我們調用推理機時,發現UnclosedPizza既不屬於NonVegetarianPizza,也不屬於VegetarianPizza,因爲我們對UnclosedPizza的描述只是說UnclosedPizza有一種餅面是MozzarellaTopping,並沒有說它只有CheeseTopping:
在這裏插入圖片描述

而如果我們將UnclosedPizza的描述修改一下:
在這裏插入圖片描述

我們可以發現,UnclosedPizza被歸爲了VegetarianPizza的子類:
在這裏插入圖片描述

因此,在語義網的推理中,我們需要注意推理條件的設置。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章