
導讀(連結自點):
1.知識提取
從原始資料語料中自動識别出命名實體。實體是知識圖譜中最基本的元素。
2.知識表示(一)
介紹了知識表示學習的常見的代表模型:距離模型、單層神經網絡模型、能量模型、雙線性模型、張量神經網絡模型、矩陣分解模型。
3.知識表示(二)
介紹翻譯模型(Trans模型),TransH模型、TransR模型、TransD模型、TranSpare模型、TransA模型、TransG模型、KG2E模型、
4.實體對齊
介紹實體消歧和共指消歧的方法。
本篇文章,主要介紹知識圖譜的知識存儲。
1.RDF、RDFS和OWL資料模型
RDF、RDFS和OWL是W3C[1]推薦的本體描述用護眼,也是知識圖譜中資料的常用存儲格式,它們都是基于XML[2]編寫的中繼資料[3],是用于計算機傳輸資料,讓機器可了解,而不是面向使用者展示的資料模型。
(1)RDF
RDF本質是一個資料模型,它提供了一個統一的标準描述web資源,資源指的是類、屬性、執行個體等。RDF在形式上表示為三元組。用于描述具體事物及關系,RDF也可以表示為一張帶有标記的有向圖,圖中有節點和邊,節點對應實體,邊對應關系或者屬性,關系指的是實體之間,實體與屬性之間的關系。
RDF中的三元組Triple
帶有資源辨別符URI的三元組
聲明命名空間ex = ex.org/和ex-schema = ex.org/schema,于是帶有資源辨別符的URI三元組就可以表示為下圖形式。
聲明字首的三元組
RDF以三元組的形式描述資源,簡潔明了,但是有着語義表達能力的缺陷。RDF中沒有定義類、屬性等詞彙。RDF隻能是對具體的事物進行描述,缺乏抽象能力,無法對同一個類别的事物進行定義和描述。RDF可以描述實體、實體的屬性以及他們之間的關系,但是無法描述類與類之間的關系,類的屬性等
(2)RDFS
RDFS在RDF的基礎上定義了類(class)、屬性(property)以及關系(relation)來描述資源,并且通過屬性的定義域(domain)和值域(range)來限制資源。RDFS在資料層(data)的基礎上引入了模式層(schema),模式層定義了一種限制規則,而資料層是在這種規則下的一個執行個體填充。
RDFS
RDFS相比于RDF語義表達能力有所提升,但RDFS依舊有語義表達的缺陷。在RDFS中關于類與類之間的關系它隻能聲明子類關系,無法聲明互斥類的關系,也無法聲明多個類、執行個體、屬性是否等價。
(3)OWL
OWL是對RDFS關于描述資源詞彙的一個擴充,OWL中添加了額外的預定于詞彙來描述資源,具備更好的語義表達能力。在OWL中可以聲明資源的等價性,屬性的傳遞性、互斥性、函數性、對稱性等等,具體見OWL的詞彙擴充。
本體和知識圖譜在建構過程中,資料的存儲常以RDF格式存放。而基于RDF資料的結構化查詢語言SPARQL,可以實作對三元組的查詢。在SPARQL中,常以“?”來表示變量或者資源辨別符,select子句檢索指定資源的資源辨別符,where子句限定資源的由來。
2.基于RDF的存儲
大部分開放的知識圖譜,都是以RDF形式對外開放。
RDF結構:
RDF 為描述資源提供的基本元素有 IRI,字面值和空節點 (blank node)。IRI 就是一個符合特定文法的 UINICODE 字元串,跟 URL 的形式比較類似。其實 URL 屬于 IRI 的一種。字面值可以了解為像時間、人名、數字等常量的表示,由字元串和表示資料類型的 IRI 構成。例如數字 1 的字面值可以表示為"1"^^xs:integer,其中 xs:integer 是表示整型資料類型的 IRI。空節點是指沒有 IRI 的匿名節點。一般是 RDF 内部使用的一個特殊結構,不可被引用。
一個 RDF 資料集由一組相關的三元組的組成。由于這個三元組集合可以抽象為一張 graph,是以也稱為 RDF graph。
例如,用 RDF 描述一本書,RDF 字典就需要定義一本書需要包含作者、書名、頁數、出版時間、語言類型等。RDF 字典定義了資料模組化的中繼資料項,這些中繼資料項主要包括兩種類型 class 和 property。Class 是指對象執行個體的集合,可以了解為面向對象程式設計裡的 class;Property 還分為兩種子類型:一個是表示 class 的屬性 (attribute),另一個是表示多個 class 之間的關系 (relationship)。
另外,RDF 字典的定義自身也是一個 RDF graph。這也是說明 RDF 是自描述的資料模型,是一種 schema-free 的資料模型。
3.基于圖資料庫的存儲
圖資料庫是一種非關系型資料庫,以解決現有關系資料庫的局限性。圖模型明确地列出了資料節點之間的依賴關系,而關系模型和其他 NoSQL 資料庫模型則通過隐式連接配接來連結資料。圖資料庫從設計上,就是可以簡單快速地檢索難以在關系系統中模組化的複雜層次結構的。
以neo4j為例介紹。
資料存儲形式:主要是 節點(node)和 邊(edge) 來組織資料。node可以代表知識圖譜中的實體,edge可以用來代表實體間的關系,關系可以有方向,兩端對應開始節點和結束節點。另外,可以在node上加一個或多個标簽(Node Label)表示實體的分類,以及一個鍵值對集合來表示該實體除了關系屬性之外的一些額外屬性。關系也可以附帶額外的屬性。
查詢語言Cypher:neo4j采用自己設計的查詢語言cypher,其特點和sql有很多相似的地方。match、where、return是最常用到的關鍵詞:
- match: 相當于 sql中的select,用來說明查詢比對的資料模式(或者說圖模式)
- where: 用來限制node或者關系中部分屬性的屬性值,進而傳回我們想要的資料
- return: 傳回節點或者關系
neo4j存儲例子