日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【知识图谱】知识推理

發布時間:2025/3/19 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【知识图谱】知识推理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、本體知識推理簡介
    • 1、OWL本體語言
    • 2、描述邏輯
      • (1)描述邏輯系統
      • (2)描述邏輯的語義
  • 3、知識推理任務分類
      • (1)可滿足性(satisfiability)
      • (2)分類(classification)
      • (3)實例化
  • 二、本體推理方法與工具介紹
    • 1、基于Tableaux運算的方法
      • (1)概述
      • (2)示例
      • (3)相關工具介紹
    • 2、基于邏輯編程改寫的方法
      • (1)概述
      • (2)Datalog語言推理
      • (3)相關工具簡介
    • 3、基于一階查詢重寫的方法
      • (1)概述
      • (2)示例
      • (3)Ontop 工具
    • 4、基于產生式規則的方法
      • (1)產生式系統組成
      • (2)產生式系統執行
      • (3)相關工具介紹

一、本體知識推理簡介

1、OWL本體語言

OWL的特性

  • OWL本體語言是知識圖譜中最規范(W3C制定)、最嚴謹(采用描述邏輯)、表達能力最強(是一階謂詞邏輯的子集)的語言;
  • 它基于RDF語法,使表示出來的文檔具有語義理解的結構基礎。
  • 促進了統一詞匯表的使用,定義了豐富的語義詞匯。
  • 允許邏輯推理。

語法:RDF語法,三元組:(subject, property, object)

2、描述邏輯

邏輯基礎:描述邏輯

  • 描述邏輯(Description Logic):基于對象的知識表示的形式化,也叫概念表示語言或術語邏輯,是一階謂詞邏輯的一個可判定子集。

(1)描述邏輯系統

一個描述邏輯系統由四個基本部分組成:

  • 最基本的元素:概念、關系、個體
  • TBox術語集:概念術語的公理集合;
  • Abox斷言集:個體的斷言集合;
  • TBox 和 ABox上的推理機制

不同的描述邏輯系統的表示能力與推理機制由于對這四個組分的不同選擇而不同

下面對四個組成部分進行介紹:

  • 最基本的元素:概念、關系、個體。
  • 概念:一個領域的子集,如 學生:{x|student(x)}
  • 關系:該領域上的二元關系(笛卡爾積),如 朋友:{<x,y>|friend(x,y)}
  • 個體:一個領域內的實例,如 小明:{Ming}
  • TBox術語集——泛化的知識
  • 定義:描述概念和關系的知識,被稱之為公理(Axiom)
  • 由于概念之間存在包含關系,TBox 知識形成類似 格(Lattice) 的結構,這種結構是由包含關系決定的,與具體實現無關。
  • Tbox語言
    (1) 定義:引入概念及關系的名稱,如 Mother、Person、has_child
    (2) 包含:聲明包含關系的公理,例如 Mother??has_child.Person\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}\rangleK:=?T,A?TTT 即 TBOx , AAA即ABOx。

(2)描述邏輯的語義

描述邏輯的語義

  • 解釋Ⅰ是知識庫 KKK 的模型,當且僅當Ⅰ是 KKK 中每個斷言的模型。若一個知識庫 KKK 有一個模型,則稱 KKK 是可滿足的。若斷言σ對于 KKK 的每個模型都是滿足的,則稱 KKK 邏輯蘊含 σ\sigmaσ,記為K?σK?\sigmaK?σ。對概念 CCC,若 KKK 有一個模型Ⅰ使得CⅠ≠?C^Ⅰ\neq\phiC??=? 則稱 CCC 是可滿足的。
  • 描述邏輯依據提供的構造算子,在簡單的概念和關系上構造出復雜的概念和關系。描述邏輯至少包含以下 構造算子:交 (∩\cap)、并(∪\cup)、非 (?\neg?)、存在量詞 (?\exists?)和全稱量詞 (?\forall?)

有了語義之后,我們可以進行推理。通過語義來保證推理的正確和完備性

下圖給出描述邏輯的語義表:

構造算子語法語義例子
原子概念AAⅠ?ΔⅠA^Ⅰ\subseteq\Delta^ⅠA?ΔHuman
原子關系RRⅠ?ΔⅠ×ΔⅠR^Ⅰ\subseteq\Delta^Ⅰ\times \Delta^ⅠR?Δ×Δhas_child
對概念 C,D和關系(role) R
合取C?DC\sqcap{D}C?DCⅠ∩DⅠC^Ⅰ\cap{D^Ⅰ}CDHuman?Male\mathrm{Human}\sqcap\mathrm{Male}Human?Male
析取C?DC\sqcup{D}C?DCⅠ∪DⅠC^Ⅰ\cup{D^Ⅰ}CDHuman?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?RyC}?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?yC}?has_child.Male\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運算的方法:適用于檢查某一本體的可滿足性,以及實例檢測。
  • 基于邏輯編程改寫的方法:可以根據特定的場景定制規則,以實現用戶自定義的推理過程。
  • 基于一階查詢重寫的方法:可以高效低結合不同數據格式的數據源,重寫方法關聯起了不同的查詢語言。以Datalog語言為中間語言,首先重寫SPARQL語言為Datalog,再將Datalog重寫為SQL查詢;
  • 基于產生式規則的方法:可以按照一定機制執行規則從而達到某些目標,與一階邏輯類似,也有區別;
    下面對上面的幾種方法做詳細介紹。

1、基于Tableaux運算的方法

(1)概述

基本思想

  • 通過一系列規則構建Abox,以檢測可滿足性,或者檢測某一實例是否存在于某概念。
  • 這種思想類似于一階邏輯的歸結反駁

適用性:檢查某一本體的可滿足性,以及實例檢測

Tableaux運算規則(以主要DL算子舉例)

  • 以第一個為例進行說明。第一個是說如果 CCCDDD(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? 里。下面我們舉個實際的例子:

(2)示例

示例:檢測實例 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)

其解決流程為:

  • 首先加入帶反駁的結論:

    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?,其內包含 Man(Allen)\mathrm{Man(Allen)}Man(Allen)Woman(Allen)\mathrm{Woman(Allen)}Woman(Allen)

  • 運用 ??\sqcap^-?? 規則,得到 Man?Women(Allen)\mathrm{Man}\sqcap \mathrm{Women(Allen)}Man?Women(Allen)。將其加入到 ?\phi? 中,
    現在的?\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)

  • 運用 ?\sqsubseteq? 規則到 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
    此時的 ?\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

  • 運用 ⊥\bot 規則,拒絕現在的 ?\phi?

  • 得出 Allen 不在 Woman 的結論。如果 Woman(Allen)\mathrm{Woman(Allen)}Woman(Allen) 在初始情況已存在于原始本體,那么推導出該本體不可滿足!

  • 正確性:基于Herbrand模型,Herbrand模型可以把它簡單的理解為所有可滿足模型的最小模型,具體的可以參考邏輯方面的書籍。

    (3)相關工具介紹

    工具名稱支持本體語言編程語言算法
    FaCT++OWL DLC++tableau-based
    RacerOWL DLCommon Lisptableau-based
    PelletOWL DLJavatableau-based
    HermiTOWL 2 ProfilesJavatableau-based

    2、基于邏輯編程改寫的方法

    (1)概述

    本體推理的局限性

    • 僅支持預定義的本體公理上的推理,無法針對自定義的詞匯支持靈活推理;
    • 用戶無法定義自己的推理過程。

    解決方法:引入規則推理

    • 它可以根據特定的場景定制規則,以實現用戶自定義的推理過程
    • Datalog語言可以結合本體推理和規則推理

    (2)Datalog語言推理

    Datalog語言

    • 面向知識庫和數據庫設計的邏輯語言,表達能力與OWL相當,支持遞歸
    • 便于撰寫規則,實現推理。

    Datalog的語法

    • 原子(Atom)
      • 形式:p(t1,t2,...,tn)p(t_1,t_2,...,t_n)p(t1?,t2?,...,tn?),其中 ppp 是謂詞,nnn 是目數,tit_iti? 是項 (變量或常量),
      • 例如:has_child(X,Y)\mathrm{has\_child(X, Y)}has_child(X,Y)
    • 規則(Rule)
      • 形式:H:?B1,B2,…,Bm.H:?B_1,B_2,…,B_m.H:?B1?,B2?,,Bm?.,由原子構建,其中 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).
    • 事實(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?):?,它是沒有體部且沒有變量的規則,
      • 例如: has_child(Alice,Bob):?\mathrm{has\_child(Alice,Bob):?}has_child(Alice,Bob):?
    • Datalog程序是規則的集合
      • 示例:
        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)相關工具簡介

    工具名稱支持本體語言實現編程語言支持編程語言
    KAON2OWL DL/SWRLJavaJava
    RDFoxOWL 2 RLC++Java/C++/Python

    3、基于一階查詢重寫的方法

    (1)概述

    查詢重寫的目的

    • 高效地結合不同數據格式的數據源;
    • 重寫方法關聯起了不同的查詢語言。

    一階查詢:具有一階邏輯形式的語言

    • 原因:Datalog是數據庫的一種查詢語言,同時具有一階邏輯形式。
      ==》針對本體基于一階查詢進行重寫
    • 可以以 Datalog 為中間語言,首先重寫 SPARQL 語言為 Datalog ,再將 Datalog 重寫為 SQL。
      SPARQL→Datalog→SQL\mathrm{SPARQL→Datalog→SQL}SPARQLDatalogSQL
      基本流程

    (2)示例

    Q: 給定如下本體,查詢所有研究人員及其所從事的項目?

    用 SPARQL 表示為:

    SELECT ?r ?p WHERE {?r exp:worksFor ?p .?p rdf:type exp:Project }

    給定Datalog 規則如下:
    Coordinator?Researcher?workFor?Researcher?workFor??ProjectResearcher??workForProject??workFor??name??xsd:StringResearcher??nameProject??name\begin{aligned} \mathrm{Coordinator} \sqsubseteq &amp; \mathrm{Researcher} \\ \exists\mathrm{workFor} \sqsubseteq &amp; \mathrm{Researcher} \\ \exists\mathrm{workFor-} \sqsubseteq &amp; \mathrm{Project} \\ \mathrm{Researcher} \sqsubseteq &amp; \exists\mathrm{workFor} \\ \mathrm{Project} \sqsubseteq &amp; \exists\mathrm{workFor-} \\ \exists\mathrm{name-} \sqsubseteq &amp;\mathrm{xsd:String} \\ \mathrm{Researcher} \sqsubseteq &amp; \exists\mathrm{name} \\ \mathrm{Project} \sqsubseteq &amp; \exists\mathrm{name} \end{aligned} Coordinator??workFor??workFor??Researcher?Project??name??Researcher?Project??ResearcherResearcherProject?workFor?workFor?xsd:String?name?name?
    底層數據具體為某數據庫中為下圖中的兩張表:

    步驟一: 重寫為 Datalog 查詢

    • 過濾不需要的公理 (通過語法層過濾)
    • 生成所有相關的 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 &amp; \mathrm{worksFor(x,y),Project(y)} \\ \mathrm{q(x)} \leftarrow &amp; \mathrm{worksFor(x,y),worksFor(_,y)} \\ \mathrm{q(x)} \leftarrow &amp; \mathrm{worksFor(x,\_)} \\ \mathrm{q(x)} \leftarrow &amp; \mathrm{Researcher(x)} \\ \mathrm{q(x)} \leftarrow &amp; \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)?
      步驟二: 將數據庫關系表達式映射成 Datalog 原子
    • 步驟三:將從SPARQL以及數據庫重寫過來的 Datalog 規則整合進行查詢

    (3)Ontop 工具

    Ontop 工具

    • 最先進的OBDA 系統,兼容RDFs、OWL 2 QL、R2RML、SPARQL標準
    • 支持主流關系數據庫: Oracle、MySQL、SQL Server、Postgres

    4、基于產生式規則的方法

    (1)產生式系統組成

    產生式系統

    • 定義:一種前向推理系統,可以按照一定機制執行規則從而達到某些目標,與一階邏輯類似,但也有區別。
    • 應用:自動規劃、專家系統上。

    產生式系統的 組成:

    • 事實集合(Working Memory)
    • 產生式/規則集合
    • 推理引擎組成:

    1. 事實集/運行內存(Working Memory, WM)

    • 定義:事實(WME)的集合,用于存儲當前系統中所有事實。
    • 事實(Working Memory Element, WME):包含描述對象和描述關系。
      • 描述對象:
        • 形如:(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)。
      • 描述關系(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. 產生式集合(Production Memory, PM)

    • 定義:產生式的集合。
    • 產生式
      • IFconditionsTHENactions\mathrm{IF} \ \ \color{red}{conditions} \ \ \color{black}{\mathrm{THEN}} \ \ \color{red}{actions}IF??conditions??THEN??actions
      • conditions 是由條件組成的集合,又稱為 LHS
      • actions 是由動作組成的序列,稱為 RHS
    • LHS
      • 定義:條件(condition)的集合,各條件之間是 的關系,當 LHS 中所有條件均被滿足,則該規則觸發
      • 條件的形式為:(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)
        • 表達式,如:[n+4][n+4][n+4] (personage:[n+4])\ \ \ \ \ \ \ \ \ \ \ (\mathrm{person\ age:}[n+4])???????????(person?age:[n+4])
        • 布爾測試,如:{&gt;10}\{&gt;10\}{>10} (personage:[&gt;10])\ \ \ \ \ \ \ \ (\mathrm{person\ age:}[&gt;10])????????(person?age:[>10])
        • 約束的 與、或、非 操作
    • RHS
      • 定義:動作序列,即執行時的順序,是依次執行的;
      • 動作的種類包含:
        • ADDpattern\mathrm{ADD}\ \ patternADD??pattern:向WM中加入形如pattern的WME。
        • REMOVEi\mathrm{REMOVE}\ \ iREMOVE??i:從WM中移除當前規則第 iii 個條件匹配的 WME。
        • MODIFYi(attrspec)\mathrm{MODIFY }\ \ i\ \ (attr\ spec)MODIFY??i??(attr?spec):對于當前規則第 iii 個條件匹配的 WME,將其對應于 attrattrattr 屬性的值改為 specspecspec
    • 示例:若有一個學生名為 ?x?x?x,則向事實集中加入一個事實,表示有一個名為 ?x?x?x 的人。
      • 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. 推理引擎(核心步驟):

    • 作用:可以控制系統的執行;
    • 包含(下節重點說明):
      • 模式匹配:用規則的條件部分匹配事實集中的事實,整個LHS都被滿足的規則被觸發,并被加入議程(agenda);
      • 解決沖突:按一定的策略從被觸發的多條規則中選擇一條;
      • 執行動作:執行被選擇出來的規則的RHS,從而對WM進行一定的操作。

    (2)產生式系統執行

    產生式系統的執行流程

    • 下圖的 WM 和產生式集合是我們定義的數據,相當于ABox 和 TBox,中間部分是推理引擎。其實大部分推理系統都是由這三部分組成。

    模式匹配:用每條規則的條件部分匹配當前WM。

    • RETE算法——高效的模式匹配算法(空間換時間)

      • 1979年由Charles Forgy (CMU)提出;
      • 思路:將產生式的LHS組織成判別網絡形式;
      • 流程
    • 沖突解決:從被觸發的多條規則中選擇一條

      • 常見策略
        • 隨機選擇:從被觸發的規則中隨機選擇一條執行;

          • 注意:在推理場景下,被觸發的多條規則可全被執行;
        • 具體性(specificity):選擇最具體的規則;

          • 示例:

            (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)?...
            存在上述兩條規則時,若根據具體性,則選擇第二條

        • 新近程度(recency):選擇最近沒有被觸發的規則執行動作;

    (3)相關工具介紹

    Drools

    • 商用規則管理系統,其中提供了一個規則推理引擎;
    • 核心算法是基于RETE算法的改進。
    • 提供規則定義語言 ,支持嵌入Java代碼。

    Jena

    • Jena 用于構建語義網應用 Java 框架,
    • 提供了處理 RDF、RDFs、OWL 數據的接口,還提供了一個規則引擎。
    • 提供了三元組的內存存儲于查詢。

    RDF4J

    • RDF4J 是一個處理 RDF 數據的開源框架,
    • 支持語義數據的解析、存儲、推理和查詢。
    • 能夠關聯幾乎所有RDF存儲系統,能夠用于訪問遠程RDF存儲。

    GraphDB(原OWLIM)

    • 一個可擴展的語義數據存儲系統;
    • 包含:三元組存儲、推理引擎、查詢引擎
    • 支持 RDFS、OWL DLP、OWL Horst、OWL 2 RL 推理

    對比

    總結

    以上是生活随笔為你收集整理的【知识图谱】知识推理的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。