這里我們使用的是Protégé-OWL規范。
推理機后的內容主要是實操內容,根據推理機來對protege本體模型的一個操作過程,以加深本體模型的一個規范認識。
一、什么是本體(Ontologie)
本體是用來獲得你所感興趣的領域的知識;
二、OWL Ontologies
OWL Ontologies由w3c從斯坦福大學的本體語言發展而來的。
三、OWL Ontologies的組成
OWL Ontologies是由個體(Individuals),屬性(Properties),類(Classes)組成。
Individuals(個體)
- 指的是在域(domain)中我們感興趣的對象。類中的一個實例。
- Individuals必須明確的聲明彼此之間是否相同。不同的名字可能指的是相同的Individuals。
Properties(屬性)
- 指的是Individuals上二元關系,他連接着兩個Individuals。如:小三的父親叫大三。其中,“的父親叫”就連接着小三和大三兩個Individuals。
- Properties可以存在reverse,如上所示,“的父親叫”的reverse就是“的兒子叫”。
- Properties可以被限定成單值,此時Properties是functional的。(后面介紹)
- Properties也可以是transitive (可傳遞的)或symmetric(對稱的)(后面介紹)
Classes
- 可以看作是包含Individuals的集合。
- 我們使用正式而精准的形式來描述Classes。Classes通常被組織成supperclass—subclass形式的層狀結構,比如,動物和狗。
四、創建本體
命名一個Classes(采用單詞首字母大寫方式,類似於java中類的命名)
- 一個初始化的本體包含一個名字叫做Thing的classes,他表示包含所有individuals的集合,所以,所有的其他classes都是他的subclasses。
Disjoint(解體)Classes
- 如果任意一個Individuals(或Object)僅僅是眾多Classes中某一個的實例(instance),那么這些Classes是Disjoint的。即根據classes種類進行ow的拆分。
使用本體工具來創建Classes
【PizzaBase 子類 ThinAndCrispy 和 DeepPan】
【PizzaTopping子類Cheese、Mozzarella、Parmezan、Meat、Ham、Pepperoni】
(例子只用參考)
subclass的意思
例如“狗”是“動物”的subclass。那么“狗”的instance也是“動物”的instance,一個東西是狗,那么他一定是動物。(這和java中的子類父類貌似是一樣的)
OWL Properties
- OWL Properties表示relationships。properties主要可分為2種, Object properties and Datatype properties.。
- Object properties 是指兩個individual之間的關系。如:父子。
- Object properties是指individual的屬性。如:年齡。
我們可以創建Sub properties,它用來限定Supper properties的范圍。如:the property has Father 可以限定范圍為一個更大范圍property hasParent的Sub propertie。
如:小明有父親大明,那么我們也可以說小明的雙親有大明。此時,“有父親”就是“有雙親”的sub property。
Inverse Properties(逆屬性)
如:如果Matthew hasParent Jean, 那么根據inverse property我們可以推理出Jean hasChild Matthew。
Property Characteristics(特征)
-
OWL允許通過使用property characteristics來增強properties 的含義(內涵)。
-
Functional(功能)Properties
Properties是單值的。例如:hasBirthMother,這個就是functional的,因為一個人 他只能有一個生母。另外:如果我們說Jean hasBirthMother Lily並且我們說Jean hasBirthMother Mary,那么因為hasBirthMother是一個 functional property,我們可以推理出Lily和Mary必須是同一個 individual.但是如果Lily和Mary明確的聲明為兩個 不同的Individuals,那么就會出現矛盾(inconsistency)。 -
Inverse Functional(逆功能)Properties
如:hasBirthMother的Inverse Functional Properties是isBirthMotherOf -
Transitive(傳遞) Properties
如果一個property是transitive(可傳遞的), 並且這個property聯系individual a 和individual b, 同時也聯系individual b和individual c,那么我們可以推理individual a和individual c存在一種property P。
注:
a)如果一個property是可傳遞的,那么它的inverse property也是可傳遞的。
b)如果一個property是可傳遞的那么它一定不是一個functional Property。 -
Symmetric(對稱)Properties
如果一種property P 是symmetric(對稱的), 並且這個property聯系individual a和individual b同時individual b 同樣聯系individual a通過property P。那么,我們稱property P為Symmetric(對稱)Properties。 -
Antisymmetric(反對稱)properties(反對稱)
如果一種property P is antisymmetric(反對稱的) ,並且這種property聯系individual a和individual b但individual b無法聯系individual a 通過property P。那么,我們稱property P為Antisymmetric(反對稱)properties。 -
Reflexive(自反)properties
如果一種property P必須將individual a與自己連接起來。如:individual a know individual b,但individual a 一定也know individual a,也就是自己。那么,我們稱property P為Reflexive(自反)properties。 -
Irreflexive(非自反)properties
如果一種property P是irreflexive(非自反)的, 我們可以描述為一種property將兩個不同的individuals連接起來。也就是說,這種properties只能連接不同的individuals。如:小明的父親是大明,那么我們不能說小明的父親是小明。
Property Domains(域) and Ranges(范圍)
【定義 hasTopping 的 Range PizzaTopping domain Pizza】
【定義 isToppingOf 的 Range Pizza domain PizzaTopping 】
Properties必須要有一個指定的Domains(域)和Ranges(范圍)。 屬性將來自域的individuals鏈接到范圍內的individuals。
例如:在Pizza 本體中,property hasTopping 可能將屬於class Pizza的individuals 與屬於class PizzaTopping的individuals連接起來。這種情況下hasTopping property的Domains(域)是Pizza,Ranges(范圍)是PizzaTopping。
另外:如果有 a hasTopping b ,並且a與b都是individuals,那么我們就可以說a屬於class Pizza,b屬於class PizzaTopping****。通常來說,屬性的域是其逆的范圍,屬性的范圍是其逆的域。
描述和定義Classes
-
Property Restrictions(限制)
Owl的restriction有三種:- Quantifier Restrictions
- Cardinality Restrictions
- hasValue Restrictions.
-
quantifier restrictions(existential restrictions 和 universal restrictions)
- existential restrictions(存在約束)
描述在特定屬性上至少與屬於特定類別的個體有一種關系的個體類別。
如:我至少買了一袋餅干從好又多超市。 - universal restrictions (普通約束)
描述對於給定屬性,僅與作為指定類成員的個人與此屬性具有關系的個人的類。
如:我買的東西都是從好又多市(或者 我買的東西只(only)從好又多超市)
- existential restrictions(存在約束)
注:限制描述匿名類(未命名類)。匿名類包含滿足此限制的所有個人例如:Existential restrictions“上面至少覆蓋了一層紫色奶酪。”這句話就描述了一個匿名類,任何上面覆蓋至少一層紫色奶酪的individuals都屬於該匿名類的,“我做的蛋糕”這個類也屬於這個匿名類。所以當我們對一個類進行限制時,在supperclass里定義。
- 定義一些其他的類(一些使用技巧)
【 Pizza 子類 NamedPizza】
【NamedPizza 子類MargheritaPizza has at least one toppings of MozzarellaTopping and TomatoTopping】
【創建AmericanaPizza 通過克隆 MargheritaPizza 因為他擴展了一個限制 PepperoniTopping】
【創建AmericanHotPizza 通過克隆 AmericanaPizza 增加限制JalapenoPepperTopping】
【創建SohoPizza 克隆MargheritaPizza 增加OliveTopping 和ParmezanTopping】
使用Reasoner(推理機)
- protege中搭載的虛擬機名叫Fact++。
- 推理機制可分為兩種層次結構:在Prot'eg'e 4中,“手動構造”類層次結構稱為斷言層次結構。推理器自動計算的類層次結構稱為推斷層次結構。
- 主要功能:
- 判斷一個類是否是另一個類的子類
- consistency checking(一致性檢測)
- 如果類被發現不一致,它的圖標將以紅色突出顯示。
(由於protege的推理機制在實體補充完善方面尚有不足,在搭配Jena框架的數據存儲時,我們一般采用Jena中的推理機進行本體推理,此處不做過多說明)
充分必要條件(primitive class 和 defined class)
到目前為止,我們所創建的所有類都只使用了必要條件來描述它們,必要條件可以理解為“如果某個類是該類的成員,則必須滿足這些條件”。單憑必要條件,我們不能說“如果某事物滿足這些條件,那么它必須是這個類的成員”。
- 只定義了必要條件的類叫做primitive class
- 定義了充要條件的類叫做 defined class
【定義Pizza的子類CheesyPizza定義限制hasTopping some CheeseTopping】
【將其轉化為充分必要條件,Classify 我們可以看出defined class 的不同】
總結:如果現在使用必要和充分條件來定義A級,我們可以說,如果一個個體是A級的成員,它必須滿足這些條件,我們現在可以說,如果任何(隨機)個體滿足這些條件,那么它必須是A級的成員。
Automated Classification(自動分類)
為什么要使用Reasoner。當我們創建了成百上千的類時,使用Reasoner來自動計算子類父類之間的關系將是十分必要的。沒有了Reasoner我們很難保證 大規模本體的健壯性和邏輯性。自動分類這項技術,使得本體可維護並且模塊化,它不僅使得其他的本體和程序能夠reuse 我們定義的本體,而且還最大限度的減少了使用者在建立多繼承類時的錯誤。
【使用OWLViz 顯示類的繼承層次結構】
Universal Restrictions (Quantifier Restrictions)
【創建一個Pizza的子類VegetarianPizza 】
【增加限制 hasTopping only (CheeseTopping or VegtableTopping)】
這意味着,如果某物是素食披薩類的一員,它必須是披薩,並且它必須只有(通用數量)的餡料是奶酪餡料或蔬菜餡料,也可以沒有,比如,中國現在實行計划生育,如果夫妻有了孩子那么只能有一個,但是這個夫妻也可以沒有孩子。那么就不存在only這個限制。
【將上面的必要條件轉化為充分條件】
Automated Classification and Open World Reasoning
【使用推理機進行自動分類】
我們發現MargheritaPizza 和SohoPizza 並沒有被歸類為 VegetarianPizza的子類,但是按照我們的定義,MargheritaPizza 和 SohoPizza 都至少有個蔬菜的頂部和奶酪的頂部,再看VegetarianPizza 的充要條件, only have 蔬菜的頂部和奶酪的頂部的pizza都是VegetarianPizza****。
但是Reasoning in OWL (Description Logics) is based on what is known as the open world assumption(OWA),意思是,除非我們明確的說明某個事物的存在,否則我們就不能說他是存在的。分析上面的:因為我們沒有明確的指定他們只有奶酪和蔬菜頂,那么他們就可以有其他的頂部。這樣的話,他們就不符合VegetarianPizza 的充要條件了。
為了使這兩種pizza只有蔬菜和奶酪頂部,我們就得在hasTopping上使用closure axiom(封閉公理)
Closure Axioms(封閉公理):
只能用指定的填料填充。這個限制有一個填充物,它是在存在限制中發生的填充物的集合。
【為MargheritaPizza 的 hasTopping 添加封閉公理 】
【hasTopping only (MozzarellaTopping or TomatoTopping)】
【為其他幾個pizza使用更方便的方法添加封閉公理】
現在我們可以說,MargheritaPizza 至少有一個MozzarellaTopping和TomatoTopping,並且the toppings must only be kinds of MozzarellaTopping or TomatoTopping。
【Classify之后我們看結果】
Value Partitions
Value Partitionsare他並不屬於任何一種本體語言的一部分,而是一種設計模式,類似於面向對象程序設計中的設計模式。它可以改善我們對類的描述。
【創建thing的子類ValuePartition 】
【ValuePartition的子類SpicinessValuePartition(Hot** Medium **Mild)**】
【創建Object Property hasSpiciness 並使其functional】
【為SpicinessValuePartition 增加covering axiom 在equivalent里面輸入Hot or Medium or Mild】
Adding Spiciness to Pizza Toppings
【對PepperTopping的所有子類設置必要條件 hasSpiciness some Hot】
【定義Pizza的子類SpicyPizza 設置必要條件:hasTopping some (PizzaTopping and hasSpiciness some Hot)】
【將必要條件化為充要條件】
Fillter描述了一個匿名類,這個頂是Pizzatopping,並且特別辣。
【Classifiy之后我們發現AmericanHotPizza 成為了SpicyPizza的子類】
Cardinality Restrictions** **(Owl的restriction中的第二種)
描述與其他個人或數據類型值至少(最小)、最多(最大)或完全具有指定數量(完全)關系的個人的類。
【創建Pizza的子類InterestingPizza 定義必要條件hasTopping min 3】
注意:我們這里3后面並沒有指定fillter是什么,代表可以是任意的individuals,等價於:hasTopping min 3 Thing
【轉化為充要條件】
【Classify之后觀察。。。】
Qualified(受限的)Cardinality Restrictions
他比上面的more specify
【定義NamedPizza的子類FourCheesePizza 定義必要條件hasTopping exactly 4 CheeseTopping】
五、Datatype Properties(數據類型屬性)
描述 individual和data values之間的關系。
【現在來描述pizza所含的熱量】
【增加Datatype Properties hasCalorificContentValue】
【增加individual ExampleMargherita其 type是MargheritaPizza】
【為該對象增加Data Property assertion 其中type選擇integer
值填寫250】
【增加individual ExampleSoho其 type是SohoPizza 】
【為該對象增加Data Property assertion 其中type選擇integer
值填寫800】
我們聲明所有的pizza都有熱量值
【選定Pizza類 ,增加Supperclass 選擇Data restriction creator】
我們對pizza的熱量值進行分類,產生不同的pizza
【創建HighCaloriePizza 和LowCaloriePizza 作為Pizza的子類】
【創建SupperClass 選擇Class expression editor 】
【鍵入Pizza that hasCalorificContentValue some integer[>= 400]】
【同理LowCaloriePizza應當是< 400】
【分別將他們設為充要條件】
【Classify之后我們看他們的members 】
某一確定的Pizza他所含的熱量是固定的,也就是說是單值的,我們可以使用functional來限定Data Property。
【選定hasCalorificContentValue 選中functional】
六、More On Open World Reasoning
這部分主要展示了Open World Reasoning中的細微差別
【創建NonVegetarianPizza 類,作為VegetarianPizza類的complement】
【使他們disjoint】
【雙擊Supperclass中的pizza ,添加Pizza and not VegetarianPizza】
【轉換為充分必要條件】
【Classify...之后觀察】
我們創建一個類, does not have a closure axiom(封閉公理)on the hasTopping property
【創建NamedPizza的子類UnclosedPizza】
【必要條件:hasTopping some MozzarellaTopping】
【Classify...之后觀察UnclosedPizza 既不是VegetarianPizza也不是NonVegetarianPizza.】前面封閉公理部分已經講過了原因。
七、Creating Other OWL Constructs
-
Creating Individuals
我們現在來描述pizza餅起源的國家;
【創建Thing 的子類Country】
【創建 individual ::Italy England America France】
因為相同的individual可以有不同的名稱。
【是他們Different from each other】 -
hasValue Restrictions(O****wl的restriction中的第三種)
描述的是兩個individual之間至少有的關系P,
【創建Object property::hasCountryOfOrigin】
【選定MozzarellaTopping 增加必要條件hasCountryOfOrigin value Italy】 -
Enumerated Classes
【選定Country類 ,在Equivalent class處增加{America, England, France, Italy}】意思是如果一個individual他屬於Country,那么他一定屬於這幾個國家中的一個。
