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