【知识图谱】知识推理[通俗易懂](「知识」是什么)
一、本體知識推理簡介
1、OWL本體語言
OWL的特性:
- OWL本體語言是知識圖譜中最規(guī)范(W3C制定)、最嚴謹(采用描述邏輯)、表達能力最強(是一階謂詞邏輯的子集)的語言;
- 它基于RDF語法,使表示出來的文檔具有語義理解的結構基礎。
- 促進了統(tǒng)一詞匯表的使用,定義了豐富的語義詞匯。
- 允許邏輯推理。
語法:RDF語法,三元組:(subject, property, object)
2、描述邏輯
邏輯基礎:描述邏輯
- 描述邏輯(Description Logic):基于對象的知識表示的形式化,也叫概念表示語言或術語邏輯,是一階謂詞邏輯的一個可判定子集。
(1)描述邏輯系統(tǒng)
一個描述邏輯系統(tǒng)由四個基本部分組成:
- 最基本的元素:概念、關系、個體;
- TBox術語集:概念術語的公理集合;
- Abox斷言集:個體的斷言集合;
- TBox 和 ABox上的推理機制;
不同的描述邏輯系統(tǒng)的表示能力與推理機制由于對這四個組分的不同選擇而不同。
下面對四個組成部分進行介紹:
- 最基本的元素:概念、關系、個體。
- 概念:一個領域的子集,如
學生:{x|student(x)} - 關系:該領域上的二元關系(笛卡爾積),如
朋友:{<x,y>|friend(x,y)} - 個體:一個領域內(nèi)的實例,如
小明:{Ming}
- 概念:一個領域的子集,如
- TBox術語集——泛化的知識
- 定義:描述概念和關系的知識,被稱之為公理(Axiom)。
- 由于概念之間存在包含關系,TBox 知識形成類似 格(Lattice) 的結構,這種結構是由包含關系決定的,與具體實現(xiàn)無關。
- Tbox語言
(1) 定義:引入概念及關系的名稱,如Mother、Person、has_child
(2) 包含:聲明包含關系的公理,例如 M o t h e r ? ? h a s _ c h i l d . P e r s o n \mathrm{Mother} \sqsubseteq \exists \mathrm{has\_child}.\mathrm{Person} Mother??has_child.Person
- ABox斷言集——具體個體的信息
- 包含:外延知識(又稱為斷言(Assertion)), 描述論域中的特定個體。
- ABox語言
(1)概念斷言:表示一個對象是否屬于某個概念,例如Mother(Alice)、Person(Bob)。
(2)關系斷言:表示兩個對象是否滿足特定的關系,例如has_child(Alice, Bob)。
- 描述邏輯的知識庫 K : = ? T , A ? K:=\langle{T,A}\rangle K:=?T,A?, T T T 即 TBOx , A A A即ABOx。
(2)描述邏輯的語義
描述邏輯的語義:
- 解釋Ⅰ是知識庫 K K K 的模型,當且僅當Ⅰ是 K K K 中每個斷言的模型。若一個知識庫 K K K 有一個模型,則稱 K K K 是可滿足的。若斷言σ對于 K K K 的每個模型都是滿足的,則稱 K K K 邏輯蘊含 σ \sigma σ,記為 K ? σ K?\sigma K?σ。對概念 C C C,若 K K K 有一個模型Ⅰ使得 C Ⅰ ≠ ? C^Ⅰ\neq\phi CⅠ??=? 則稱 C C C 是可滿足的。
- 描述邏輯依據(jù)提供的構造算子,在簡單的概念和關系上構造出復雜的概念和關系。描述邏輯至少包含以下 構造算子:交 ( ∩ \cap ∩)、并( ∪ \cup ∪)、非 ( ? \neg ?)、存在量詞 ( ? \exists ?)和全稱量詞 ( ? \forall ?)。
有了語義之后,我們可以進行推理。通過語義來保證推理的正確和完備性。
下圖給出描述邏輯的語義表:
| 構造算子 | 語法 | 語義 | 例子 |
|---|---|---|---|
| 原子概念 | A | A Ⅰ ? Δ Ⅰ A^Ⅰ\subseteq\Delta^Ⅰ AⅠ?ΔⅠ | Human |
| 原子關系 | R | R Ⅰ ? Δ Ⅰ × Δ Ⅰ R^Ⅰ\subseteq\Delta^Ⅰ\times \Delta^Ⅰ RⅠ?ΔⅠ×ΔⅠ | has_child |
| 對概念 C,D和關系(role) R | |||
| 合取 | C ? D C\sqcap{D} C?D | C Ⅰ ∩ D Ⅰ C^Ⅰ\cap{D^Ⅰ} CⅠ∩DⅠ | H u m a n ? M a l e \mathrm{Human}\sqcap\mathrm{Male} Human?Male |
| 析取 | C ? D C\sqcup{D} C?D | C Ⅰ ∪ D Ⅰ C^Ⅰ\cup{D^Ⅰ} CⅠ∪DⅠ | H u m a n ? M a l e \mathrm{Human}\sqcup\mathrm{Male} Human?Male |
| 非 | ? C \neg C ?C | Δ Ⅰ ? C \Delta^Ⅰ\setminus C ΔⅠ?C | ? M a l e \neg Male ?Male |
| 存在量詞 | ? R . C \exists R.C ?R.C | { x ∣ ? y . ? x , y ? ∈ R Ⅰ ∧ y ∈ C Ⅰ } \{x\mid \exists y.\langle {x,y} \rangle\in {R^Ⅰ}\wedge{y\in{C^Ⅰ}}\} { x∣?y.?x,y?∈RⅠ∧y∈CⅠ} |
? h a s _ c h i l d . M a l e \exists \mathrm{has\_child.Male} ?has_child.Male |
| 全稱量詞 | ? R . C \forall R.C ?R.C | { x ∣ ? y . ? x , y ? ∈ R Ⅰ ? y ∈ C Ⅰ } \{x\mid \forall y.\langle {x,y} \rangle\in {R^Ⅰ}\Rightarrow{y\in{C^Ⅰ}}\} { x∣?y.?x,y?∈RⅠ?y∈CⅠ} |
? h a s _ c h i l d . M a l e \exists \mathrm{has\_child.Male} ?has_child.Male |
描述邏輯與OWL詞匯的對應
3、知識推理任務分類
知識推理:通過各種方法獲取新的知識或者結論,這些知識和結論滿足語義。
具體任務可分為:
- 可滿足性(satisfiability)(針對TBox)
- 分類(classification)(針對TBox)
- 實例化(materialization)(針對ABox)
(1)可滿足性(satisfiability)
本體可滿足性
- 檢查一個本體是否可滿足,即檢查該本體是否有模型。如果本體不滿足,說明存在不一致。
概念可滿足性
- 檢查某一概念的可滿足性,即檢查是否具有模型,使得針對該概念的解釋不是空集。
示例: 兩個不可滿足的例子。
- 第一個本體例子:Man 和 Woman 的交集是空集,那么就不存在同一個本體Allen 既是Man 又是Women。
- 第二個概念例子:概念Eternity是一個空集,那么它不具有模型,即不可滿足。
(2)分類(classification)
分類:針對 Tbox 的推理,計算新的概念包含關系。
注意:這里的分類與機器學習中分類不同。
示例:
- 若 Mother 是 Women的子集,Women是 Person的子集,那么就可以得出 Mother是 Person 的子集這個新類別關系。
(3)實例化
實例化:計算屬于某個概念或關系的所有實例的集合。
示例:
- 計算新的類實例信息:首先已知 Alice 是Mother,Mother 是 Women的子集,那么可知 Alice 是一個Women。即為Women增加了一個新的實例。
- 計算新的二元關系:已知 Alice 和Bob 有兒子,同時 has_son 是 has_child 的子類,那么可知 Alice 和Bob has_child。
二、本體推理方法與工具介紹
基于本體推理的常見方法:
- 基于Tableaux運算的方法:適用于檢查某一本體的可滿足性,以及實例檢測。
- 基于邏輯編程改寫的方法:可以根據(jù)特定的場景定制規(guī)則,以實現(xiàn)用戶自定義的推理過程。
- 基于一階查詢重寫的方法:可以高效低結合不同數(shù)據(jù)格式的數(shù)據(jù)源,重寫方法關聯(lián)起了不同的查詢語言。以Datalog語言為中間語言,首先重寫SPARQL語言為Datalog,再將Datalog重寫為SQL查詢;
- 基于產(chǎn)生式規(guī)則的方法:可以按照一定機制執(zhí)行規(guī)則從而達到某些目標,與一階邏輯類似,也有區(qū)別;
下面對上面的幾種方法做詳細介紹。
1、基于Tableaux運算的方法
(1)概述
基本思想:
- 通過一系列規(guī)則構建Abox,以檢測可滿足性,或者檢測某一實例是否存在于某概念。
- 這種思想類似于一階邏輯的歸結反駁。
適用性:檢查某一本體的可滿足性,以及實例檢測。
Tableaux運算規(guī)則(以主要DL算子舉例):
- 以第一個為例進行說明。第一個是說如果 C C C 和 D D D 的 ( x ) (x) (x) 的合取是 ? \phi ?,且 C ( x ) C(x) C(x) 和 D ( x ) D(x) D(x) 不在 ? \phi ? 里,則 ? \phi ? 有可能只包含了部分 C C C,而 C ( x ) C(x) C(x) 不在里面,那么我們就把它們添加到 ? \phi ? 里。下面我們舉個實際的例子:
(2)示例
示例:檢測實例 Allen 是否在 Woman中? 即:檢測 W o m a n ( A l l e n ) \mathrm{Woman(Allen)} Woman(Allen) ?
M a n ? W o m a n ? ⊥ \mathrm{Man}\sqcap\mathrm{Woman}\sqsubseteq\bot Man?Woman?⊥
M a n ( A l l e n ) \mathrm{Man(Allen)} Man(Allen)
其解決流程為:
-
首先加入帶反駁的結論:
M a n ? W o m a n ? ⊥ \mathrm{Man}\sqcap\mathrm{Woman}\sqsubseteq\bot Man?Woman?⊥
M a n ( A l l e n ) \mathrm{Man(Allen)} Man(Allen)
W o m a n ( A l l e n ) \mathrm{Woman(Allen)} Woman(Allen) -
初始Abox,記為 ? \phi ?,其內(nèi)包含 M a n ( A l l e n ) \mathrm{Man(Allen)} Man(Allen)、 W o m a n ( A l l e n ) \mathrm{Woman(Allen)} Woman(Allen)。
-
運用 ? ? \sqcap^- ?? 規(guī)則,得到 M a n ? W o m e n ( A l l e n ) \mathrm{Man}\sqcap \mathrm{Women(Allen)} Man?Women(Allen)。將其加入到 ? \phi ? 中,
現(xiàn)在的 ? \phi ? 為 M a n ( A l l e n ) W o m a n ( A l l e n ) M a n ? W o m e n ( A l l e n ) \mathrm{Man(Allen)} \ \ \ \mathrm{Woman(Allen)} \ \ \ \ \mathrm{Man}\sqcap \mathrm{Women(Allen)} Man(Allen)Woman(Allen)Man?Women(Allen)。 -
運用 ? \sqsubseteq ? 規(guī)則到 M a n ? W o m e n ( A l l e n ) \mathrm{Man}\sqcap \mathrm{Women(Allen)} Man?Women(Allen) 與 M a n ? W o m e n ? ⊥ \mathrm{Man}\sqcap \mathrm{Women}\sqsubseteq\bot Man?Women?⊥ 上,得到 ⊥ A l l e n \bot\mathrm{Allen} ⊥Allen。
此時的 ? \phi ? 包含 M a n ( A l l e n ) W o m a n ( A l l e n ) M a n ? W o m e n ( A l l e n ) ⊥ A l l e n \mathrm{Man(Allen)} \ \ \ \mathrm{Woman(Allen)} \ \ \ \ \mathrm{Man}\sqcap \mathrm{Women(Allen)}\ \ \ \ \bot\mathrm{Allen} Man(Allen)Woman(Allen)Man?Women(Allen)⊥Allen。 -
運用 ⊥ \bot ⊥ 規(guī)則,拒絕現(xiàn)在的 ? \phi ? 。
-
得出 Allen 不在 Woman 的結論。如果 W o m a n ( A l l e n ) \mathrm{Woman(Allen)} Woman(Allen) 在初始情況已存在于原始本體,那么推導出該本體不可滿足!
正確性:基于Herbrand模型,Herbrand模型可以把它簡單的理解為所有可滿足模型的最小模型,具體的可以參考邏輯方面的書籍。
(3)相關工具介紹
| 工具名稱 | 支持本體語言 | 編程語言 | 算法 |
|---|---|---|---|
| FaCT++ | OWL DL | C++ | tableau-based |
| Racer | OWL DL | Common Lisp | tableau-based |
| Pellet | OWL DL | Java | tableau-based |
| HermiT | OWL 2 Profiles | Java | tableau-based |
2、基于邏輯編程改寫的方法
(1)概述
本體推理的局限性:
- 僅支持預定義的本體公理上的推理,無法針對自定義的詞匯支持靈活推理;
- 用戶無法定義自己的推理過程。
解決方法:引入規(guī)則推理
- 它可以根據(jù)特定的場景定制規(guī)則,以實現(xiàn)用戶自定義的推理過程。
- Datalog語言可以結合本體推理和規(guī)則推理
(2)Datalog語言推理
Datalog語言
- 面向知識庫和數(shù)據(jù)庫設計的邏輯語言,表達能力與OWL相當,支持遞歸;
- 便于撰寫規(guī)則,實現(xiàn)推理。
Datalog的語法:
- 原子(Atom)
- 形式: p ( t 1 , t 2 , . . . , t n ) p(t_1,t_2,…,t_n) p(t1?,t2?,...,tn?),其中 p p p 是謂詞, n n n 是目數(shù), t i t_i ti? 是項 (變量或常量),
- 例如: h a s _ c h i l d ( X , Y ) \mathrm{has\_child(X, Y)} has_child(X,Y);
- 規(guī)則(Rule)
- 形式: H : ? B 1 , B 2 , … , B m . H:?B_1,B_2,…,B_m. H:?B1?,B2?,…,Bm?.,由原子構建,其中 H H H 是頭部原子, B 1 , B 2 , … , B m B_1,B_2,…,B_m B1?,B2?,…,Bm? 是體部原子。
- 例如: h a s _ c h i l d ( X , Y ) : ? h a s _ s o n ( X , Y ) . \mathrm{has\_child(X,Y):?has\_son(X, Y).} has_child(X,Y):?has_son(X,Y).
- 事實(Fact):
- 形式: F ( c 1 , c 2 , … , c n ) : ? F ( c 1 , c 2 , … , c n ) : ? F(c_1,c_2,…,c_n):?F(c_1,c_2,…,c_n):? F(c1?,c2?,…,cn?):?F(c1?,c2?,…,cn?):?,它是沒有體部且沒有變量的規(guī)則,
- 例如: h a s _ c h i l d ( A l i c e , B o b ) : ? \mathrm{has\_child(Alice,Bob):?} has_child(Alice,Bob):?
- Datalog程序是規(guī)則的集合
- 示例:
h a s _ c h i l d ( X , Y ) : ? h a s _ s o n ( X , Y ) . h a s _ c h i l d ( A l i c e , B o b ) : ? \mathrm{has\_child(X,Y):?has\_son(X, Y).} \\ \mathrm{has\_child(Alice,Bob):?} has_child(X,Y):?has_son(X,Y).has_child(Alice,Bob):?
- 示例:
Datalog 推理的示例:
(3)相關工具簡介
| 工具名稱 | 支持本體語言 | 實現(xiàn)編程語言 | 支持編程語言 |
|---|---|---|---|
| KAON2 | OWL DL/SWRL | Java | Java |
| RDFox | OWL 2 RL | C++ | Java/C++/Python |
3、基于一階查詢重寫的方法
(1)概述
查詢重寫的目的:
- 高效地結合不同數(shù)據(jù)格式的數(shù)據(jù)源;
- 重寫方法關聯(lián)起了不同的查詢語言。
一階查詢:具有一階邏輯形式的語言
- 原因:Datalog是數(shù)據(jù)庫的一種查詢語言,同時具有一階邏輯形式。
==》針對本體基于一階查詢進行重寫 - 可以以 Datalog 為中間語言,首先重寫 SPARQL 語言為 Datalog ,再將 Datalog 重寫為 SQL。
S P A R Q L → D a t a l o g → S Q L \mathrm{SPARQL→Datalog→SQL} SPARQL→Datalog→SQL
基本流程:
(2)示例
Q: 給定如下本體,查詢所有研究人員及其所從事的項目?
用 SPARQL 表示為:
SELECT ?r ?p
WHERE {
?r exp:worksFor ?p .
?p rdf:type exp:Project
}
給定Datalog 規(guī)則如下:
C o o r d i n a t o r ? R e s e a r c h e r ? w o r k F o r ? R e s e a r c h e r ? w o r k F o r ? ? P r o j e c t R e s e a r c h e r ? ? w o r k F o r P r o j e c t ? ? w o r k F o r ? ? n a m e ? ? x s d : S t r i n g R e s e a r c h e r ? ? n a m e P r o j e c t ? ? n a m e \begin{aligned} \mathrm{Coordinator} \sqsubseteq & \mathrm{Researcher} \\ \exists\mathrm{workFor} \sqsubseteq & \mathrm{Researcher} \\ \exists\mathrm{workFor-} \sqsubseteq & \mathrm{Project} \\ \mathrm{Researcher} \sqsubseteq & \exists\mathrm{workFor} \\ \mathrm{Project} \sqsubseteq & \exists\mathrm{workFor-} \\ \exists\mathrm{name-} \sqsubseteq &\mathrm{xsd:String} \\ \mathrm{Researcher} \sqsubseteq & \exists\mathrm{name} \\ \mathrm{Project} \sqsubseteq & \exists\mathrm{name} \end{aligned} Coordinator??workFor??workFor??Researcher?Project??name??Researcher?Project??ResearcherResearcherProject?workFor?workFor?xsd:String?name?name?
底層數(shù)據(jù)具體為某數(shù)據(jù)庫中為下圖中的兩張表:
步驟一: 重寫為 Datalog 查詢
- 過濾不需要的公理 (通過語法層過濾)
- 生成所有相關的 Datalog 查詢
q ( x ) ← w o r k s F o r ( x , y ) , P r o j e c t ( y ) q ( x ) ← w o r k s F o r ( x , y ) , w o r k s F o r ( , y ) q ( x ) ← w o r k s F o r ( x , _ ) q ( x ) ← R e s e a r c h e r ( x ) q ( x ) ← C o o r d i n a t o r ( x ) \begin{aligned} \mathrm{q(x)} \leftarrow & \mathrm{worksFor(x,y),Project(y)} \\ \mathrm{q(x)} \leftarrow & \mathrm{worksFor(x,y),worksFor(_,y)} \\ \mathrm{q(x)} \leftarrow & \mathrm{worksFor(x,\_)} \\ \mathrm{q(x)} \leftarrow & \mathrm{Researcher(x)} \\ \mathrm{q(x)} \leftarrow & \mathrm{Coordinator(x)} \end{aligned} q(x)←q(x)←q(x)←q(x)←q(x)←?worksFor(x,y),Project(y)worksFor(x,y),worksFor(,?y)worksFor(x,_)Researcher(x)Coordinator(x)?
步驟二: 將數(shù)據(jù)庫關系表達式映射成 Datalog 原子
- 步驟三:將從SPARQL以及數(shù)據(jù)庫重寫過來的 Datalog 規(guī)則整合進行查詢
(3)Ontop 工具
Ontop 工具
- 最先進的OBDA 系統(tǒng),兼容RDFs、OWL 2 QL、R2RML、SPARQL標準
- 支持主流關系數(shù)據(jù)庫: Oracle、MySQL、SQL Server、Postgres
4、基于產(chǎn)生式規(guī)則的方法
(1)產(chǎn)生式系統(tǒng)組成
產(chǎn)生式系統(tǒng)
- 定義:一種前向推理系統(tǒng),可以按照一定機制執(zhí)行規(guī)則從而達到某些目標,與一階邏輯類似,但也有區(qū)別。
- 應用:自動規(guī)劃、專家系統(tǒng)上。
產(chǎn)生式系統(tǒng)的 組成:
- 事實集合(Working Memory)
- 產(chǎn)生式/規(guī)則集合
- 推理引擎組成:
1. 事實集/運行內(nèi)存(Working Memory, WM)
- 定義:事實(WME)的集合,用于存儲當前系統(tǒng)中所有事實。
- 事實(Working Memory Element, WME):包含描述對象和描述關系。
- 描述對象:
- 形如: ( t y p e a t t r 1 : v a l 1 a t t r 2 : v a l 2 . . . a t t r n : v a l n ) \mathrm{(type\ attr_1:val_1\ attr_2:val_2…attr_n:val_n)} (typeattr1?:val1?attr2?:val2?...attrn?:valn?),其中 t y p e a t t r i v a l i \mathrm{type\ attr_i\ val_i} typeattri?vali? 均為原子 (常量);
- 示例:
(student name:Alice age:24)。
- 描述關系(Refication):
- 例如: ( b a s i c F a c t r e l a t i o n : o l d e r T h a n f i r s t A r g : J o h n s e c o n d A r g : A l i c e ) \mathrm{(basicFact\ relation:olderThan\ firstArg:John\ secondArg:Alice)} (basicFactrelation:olderThanfirstArg:JohnsecondArg:Alice) 簡記為 ( o l d e r T h a n J o h n A l i c e ) \mathrm{(olderThan John Alice)} (olderThanJohnAlice)。
- 描述對象:
2. 產(chǎn)生式集合(Production Memory, PM)
- 定義:產(chǎn)生式的集合。
- 產(chǎn)生式:
- I F c o n d i t i o n s T H E N a c t i o n s \mathrm{IF} \ \ \color{red}{conditions} \ \ \color{black}{\mathrm{THEN}} \ \ \color{red}{actions} IFconditionsTHENactions
conditions是由條件組成的集合,又稱為 LHS。actions是由動作組成的序列,稱為 RHS 。
- LHS
- 定義:條件(condition)的集合,各條件之間是 且 的關系,當 LHS 中所有條件均被滿足,則該規(guī)則觸發(fā)。
- 條件的形式為: ( t y p e a t t r 1 : s p e c 1 a t t r 2 : s p e c 2 . . . a t t r n : s p e c n ) \mathrm{(type\ \ attr_1:spec_1\ \ attr_2:spec_2…attr_n:spec_n)} (typeattr1?:spec1?attr2?:spec2?...attrn?:specn?)
- 其中 s p e c i \mathrm{spec_i} speci? 表示對 a t t r i \mathrm{attr_i} attri? 的約束,形式可取如下的一種:
- 原子,如:Alice ( p e r s o n n a m e : A l i c e ) \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\mathrm{person\ name:Alice}) (personname:Alice)
- 變量,如: x x x ( p e r s o n n a m e : x ) \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\mathrm{person\ name:}x) (personname:x)
- 表達式,如: [ n + 4 ] [n+4] [n+4] ( p e r s o n a g e : [ n + 4 ] ) \ \ \ \ \ \ \ \ \ \ \ (\mathrm{person\ age:}[n+4]) (personage:[n+4])
- 布爾測試,如: { > 10 } \{>10\} {
>10} ( p e r s o n a g e : [ > 10 ] ) \ \ \ \ \ \ \ \ (\mathrm{person\ age:}[>10]) (personage:[>10]) - 約束的 與、或、非 操作
- 其中 s p e c i \mathrm{spec_i} speci? 表示對 a t t r i \mathrm{attr_i} attri? 的約束,形式可取如下的一種:
- RHS
- 定義:動作序列,即執(zhí)行時的順序,是依次執(zhí)行的;
- 動作的種類包含:
- A D D p a t t e r n \mathrm{ADD}\ \ pattern ADDpattern:向WM中加入形如pattern的WME。
- R E M O V E i \mathrm{REMOVE}\ \ i REMOVEi:從WM中移除當前規(guī)則第 i i i 個條件匹配的 WME。
- M O D I F Y i ( a t t r s p e c ) \mathrm{MODIFY }\ \ i\ \ (attr\ spec) MODIFYi(attrspec):對于當前規(guī)則第 i i i 個條件匹配的 WME,將其對應于 a t t r attr attr 屬性的值改為 s p e c spec spec。
- 示例:若有一個學生名為 ? x ?x ?x,則向事實集中加入一個事實,表示有一個名為 ? x ?x ?x 的人。
- I F ( S t u d e n t n a m e : x ) T h e n A D D ( P e r s o n n a m e : x ) \mathrm{IF\ (Student\ name:}x) \mathrm{\ Then\ ADD\ (Person\ name:}x) IF(Studentname:x)ThenADD(Personname:x) 也可寫作 ( S t u d e n t n a m e : x ) ? A D D ( P e r s o n n a m e : x ) \mathrm{(Student\ name:}x) \Rightarrow \mathrm{ADD\ (Person\ name:}x) (Studentname:x)?ADD(Personname:x)
3. 推理引擎(核心步驟):
- 作用:可以控制系統(tǒng)的執(zhí)行;
- 包含(下節(jié)重點說明):
- 模式匹配:用規(guī)則的條件部分匹配事實集中的事實,整個LHS都被滿足的規(guī)則被觸發(fā),并被加入議程(agenda);
- 解決沖突:按一定的策略從被觸發(fā)的多條規(guī)則中選擇一條;
- 執(zhí)行動作:執(zhí)行被選擇出來的規(guī)則的RHS,從而對WM進行一定的操作。
(2)產(chǎn)生式系統(tǒng)執(zhí)行
產(chǎn)生式系統(tǒng)的執(zhí)行流程:
- 下圖的 WM 和產(chǎn)生式集合是我們定義的數(shù)據(jù),相當于ABox 和 TBox,中間部分是推理引擎。其實大部分推理系統(tǒng)都是由這三部分組成。
模式匹配:用每條規(guī)則的條件部分匹配當前WM。
-
RETE算法——高效的模式匹配算法(空間換時間)
- 1979年由Charles Forgy (CMU)提出;
- 思路:將產(chǎn)生式的LHS組織成判別網(wǎng)絡形式;
- 流程:
-
沖突解決:從被觸發(fā)的多條規(guī)則中選擇一條
- 常見策略:
-
隨機選擇:從被觸發(fā)的規(guī)則中隨機選擇一條執(zhí)行;
- 注意:在推理場景下,被觸發(fā)的多條規(guī)則可全被執(zhí)行;
-
具體性(specificity):選擇最具體的規(guī)則;
-
示例:
( S t u d e n t n a m e : x ) ? . . . (\mathrm{Student\ name:}x) \Rightarrow … (Studentname:x)?...
( S t u d e n t n a m e : x a g e : 20 ) ? . . . (\mathrm{Student\ name:}x\ \mathrm{age}:20) \Rightarrow … (Studentname:xage:20)?...
存在上述兩條規(guī)則時,若根據(jù)具體性,則選擇第二條
-
-
新近程度(recency):選擇最近沒有被觸發(fā)的規(guī)則執(zhí)行動作;
-
- 常見策略:
(3)相關工具介紹
Drools
- 商用規(guī)則管理系統(tǒng),其中提供了一個規(guī)則推理引擎;
- 核心算法是基于RETE算法的改進。
- 提供規(guī)則定義語言 ,支持嵌入Java代碼。
Jena
- Jena 用于構建語義網(wǎng)應用 Java 框架,
- 提供了處理 RDF、RDFs、OWL 數(shù)據(jù)的接口,還提供了一個規(guī)則引擎。
- 提供了三元組的內(nèi)存存儲于查詢。
RDF4J
- RDF4J 是一個處理 RDF 數(shù)據(jù)的開源框架,
- 支持語義數(shù)據(jù)的解析、存儲、推理和查詢。
- 能夠關聯(lián)幾乎所有RDF存儲系統(tǒng),能夠用于訪問遠程RDF存儲。
GraphDB(原OWLIM)
- 一個可擴展的語義數(shù)據(jù)存儲系統(tǒng);
- 包含:三元組存儲、推理引擎、查詢引擎
- 支持 RDFS、OWL DLP、OWL Horst、OWL 2 RL 推理
對比
總結
以上是生活随笔為你收集整理的【知识图谱】知识推理[通俗易懂](「知识」是什么)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: zookeeper 源码阅读(2)
- 下一篇: jstat命令使用