前言
- 知識的存盤
- 1.基于表結構的存盤
- (1)三元組
- (2)型別表
- (3)關系資料庫
- 基于圖結構
- 知識圖譜的檢索
- 1、常見查詢語言
- (1)SQL(Structured Query Language,結構化查詢語言)
- (2)SPARQL語言
- 2.圖檢索技術
- (1)子圖篩選
- (2)子圖同構判定
知識圖譜是一種有向圖結構,描述了現實世界存在的物體、事件或者概念以及它們之間的關系,為自動問答、資訊檢索等應用提供支撐,其中,圖中的節點表示物體、事件或概念,圖中的邊表示相鄰節點間的關系,如下圖所示,
每一個節點表示一個物體,每個物體都是某一抽象概念的實體,這些抽象概念被稱為物體型別,如:人物、城市等,
物體除了具有型別資訊,還具有豐富的屬性資訊(藍色部分),這些屬性資訊用于刻畫物體的內在特性,
知識的存盤
1.基于表結構的存盤
(1)三元組
知識圖譜中的知識是通過RDF進行表示的,其基本構成單元是事實,每個事實是一個三元組 (S, P, O)
S 是主語(Subject),其取值可以是物體、事件或概念中的任何一個;
P 是謂語(Predicate),其取值可以是關系或屬性;
O 是賓語(Object),其取值可以是物體、事件、概念或普通的值(eg:數字、字串等)
例如下圖:
RDF資料
<S, P, O>
<費米, 主要成就, 93號元素>
<玻恩, 型別, 數學家>
... ... ...
優點: 簡單直接、易于理解;
缺點:
1. 整個知識圖譜都存盤在一張表中,導致單表的規模太大,對大表進行查詢、插入、洗掉、修改等操作的開銷很大,這將導致KG的實用性大打折扣,
2. 復雜查詢在這種存盤結構上的開銷巨大,由于資料表只包括三個欄位,因此復雜的查詢只能拆分稱若干簡單查詢的符合操作,大大降低查詢的效率,
(2)型別表
為每種型別構建一張表,同一型別的實體存放在相同的表中,表中的每一串列示該類物體的一個屬性,每一行存盤該類物體的一個實體,
示例:
- 城市表
| 主體物件 | 郵編 |
|---|---|
| 南陽 | 473000 |
(3)關系資料庫
關系資料庫通過 屬性 對現實世界中的事物進行描述,
- 每個屬性的取值范圍所構成的集合,稱為對應屬性的 域
- 屬性的取值只能是原子資料,(原子資料:不能進步拆分的資料,eg:整數、字串等)
- 關系資料庫以二維表對資料進行組織和存盤,表的每一串列示一個屬性,每一行表示一條記錄,
基于圖結構
基于圖結構的存盤,可直接準確地反映KG的內部結構,有利用對知識的查詢,可借鑒圖論演算法,有利于對知識深度挖掘及推理,
- 節點:表示物體,可以定義屬性(用于描述物體特性),
- 邊:表示物體之間的關系,可以定義邊的屬性,
- 屬性:描述節點或邊的特性,eg:人物(節點)的姓名、夫妻關系(邊)的起止時間等,
基于圖結構的存盤,從物體出發,不同物體對應的節點可定義不同的屬性
常見圖資料庫: Neo4j、OrientDB、InfoGrid、HyperGraphDB、InfiniteGraph(分布式)等
- Neo4j:開源、高性能、本地資料庫(訪問速度快)、輕量級;
- OrientDB:開源檔案-圖資料庫、多模式、本地資料庫;
知識圖譜的檢索
1、常見查詢語言
KG是通過資料庫進行存盤的,大部分資料庫系統通過形式化的查詢語言為用戶提供訪問資料的介面,關系型資料庫的標準查詢語言是SQL,圖資料庫的標準查詢語言是SPARQL,
(1)SQL(Structured Query Language,結構化查詢語言)
主要功能:對資料的插入、修改、洗掉、查詢四種操作,
可以查看資料鏈接:sql常用操作
(2)SPARQL語言
SPARQL是由W3C為RDF資料開發的一種查詢語言和資料獲取協議,被廣泛應用于圖資料庫,
資料插入——INSERT DATA
向表示的RDF中插入以下三元組:
ns:費米 ns:老師 ns:玻恩.
ns:玻恩 ns:型別 ns:數學家.
ns:玻恩 ns:型別 ns:物理學家.
==》對應的 SPARQL 陳述句
prefix ns: <http://example.org/ns#>
INSERT DATA {
ns:費米 ns:老師 ns:玻恩 .
ns:玻恩 ns:型別 ns:數學家 ;
ns:型別 ns:物理學家 .
}
資料洗掉——DELETE DATA
基本語法:DELETE DATA 三元組資料,其中三元組資料可以是多個三元組,對于給定的每個三元組,若其在RDF圖中,則洗掉,否則忽略該三元組,
向表示的RDF中洗掉三元組 (ns:奧本海默 ns:型別 ns:物理學家),注意洗掉單個三元組
prefix ns: <http://example.org/ns#>
DELETE DATA {
ns:奧本海默 ns:型別 ns:物理學家 .
}
資料更新
資料更新是指更新RDF圖中三元組的值,SPARQL通過組合 INSERT DATA 陳述句和 DELETE DATA 陳述句來實作資料更新的功能,
修改三元組(ns:費米 ns:出生日期 “1902/09/29”)修改為(ns:費米 ns:出生日期 “1901/09/29”)
prefix ns: <http://example.org/ns#>
DELETE DATA {ns:費米 ns:出生日期 "1902/09/29" .};
INSERT DATA {ns:費米 ns:出生日期 "1901/09/29" .}
資料查詢
四種形式:SELECT、ASK、DESCRIBE 和 CONSTRUCT,
- SELECT:從KG中獲取滿足條件的資料;
- ASK:用于測驗KG中是hi否存在滿足給定條件的資料,若存在則回傳“YES”,否則為“NO”,該查詢不回傳具體的匹配資料;
- DESCRIBE:用于查詢和制定資源相關的RDF資料,這些資料形成了對給定資源的詳細描述;
- CONSTRUCT:根據查詢圖的結果生成RDF,
具體參考下列資料:SPARQL查詢陳述句
2.圖檢索技術
問題的提出: 基于圖結構的存盤方式能夠直觀靈活地對知識進行表示和存盤,而標準的圖查詢演算法復雜度較高,何如提高圖查詢的效率成為KG研究的重要問題,
定義(即子圖匹配問題):NP完全問題(目前尚不存在多項式時間復雜度內可解決的演算法)
- 在給定查詢圖 Q 和目標圖集 D = { G i } 的條件下,在 D 中找出所有與 Q 同構的子圖,
(1)子圖篩選
圖索引技術是實作子圖篩選的有效方法,在資料預處理階段進行,
基本原理:首先根據圖上的特征資訊建立索引,在進行子圖匹配時,根據查詢圖上的特征能夠快速地從圖資料庫中檢索得到滿足條件的候選子圖,避免在全部子圖上進行匹配,
(2)子圖同構判定
常用演算法:
- Ullmann演算法(也稱列舉演算法)——能夠列舉出所有的同構子圖
- VF2演算法
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/423556.html
標籤:AI
