知識圖譜入門——知識表示與知識建模

super.PentaKill發表於2018-12-10

文章首發於部落格du_ok’s Notes,本文連結為知識圖譜入門——知識表示與知識建模

本文首先介紹了早期的知識表示方法,接著介紹了知識圖譜的基石——RDF及其擴充套件RDFS,在它們的基礎上又介紹了表達能力以及推理能力更強的OWL與OWL2,最後介紹了一些新的只是知識表示方式,如Json-LD、RDFa、HTML5 Microdata等。

早期知識表示

  1. 一階謂詞邏輯(First-Order Logic)

Horn邏輯:一階謂詞邏輯的子集
描述邏輯:一階謂詞邏輯的可判定子集

  1. 產生式系統
    產生式模型:
    PQorIFPTHENQCF=[0,1] \begin{aligned} & P \rightarrow Q\quad or \\\\& IF\quad P\quad THEN\quad Q \quad CF = [0, 1] \end{aligned}
  • 其中,P是產生式的前提,Q是一組結論或操作,CF (Certainty Factor)為確定性因子,也稱置信度。
  • 謂詞邏輯中的規則與產生式的基本形式相似,事實上,蘊涵式只是產生式
    的一種特殊情況。理由如下:
    • 謂詞邏輯規則只能表示精確知識,其值非“真”即“假”,而產生式不僅可以表示精確知識,而且還可以表示不精確知識;
    • 用產生式表示知識的系統中,“事實”與產生式的“前提”中所規定的條件進行匹配時,可以是“精確匹配”,也可以是基於相似度的“不精確匹配”,只要相似度落入某個預先設定的範圍內,即可認為匹配。但對謂詞邏輯的規則而言,其匹配必須是精確的。
  1. 框架
    框架基本組成:
    在這裡插入圖片描述
  • 框架:是一種描述物件 (事物、事件或概念等)屬性的資料結構,在框架理論中,框架是知識表示的基本單位。
  • 一個框架由若干個“槽” (Slot)結構組成,每個槽又可分為若干個“側面”
    。一個槽:用於描述所論物件某一方面的屬性;一個側面:用於描述相應屬性的一個方面。
  • 槽和側面所具有的屬性值分別稱為槽值和側面值。

框架的示例:
一個框架的示例.PNG
框架的例項:
在這裡插入圖片描述

  1. 語義網路
  • 語義網路中的節點:表示各種事物、概念、情況、屬性、動作、狀態等,每個節點可以帶有若干屬性,一般用框架或元組表示。此外,節點還可以是一個語義子網路,形成一個多層次的巢狀結構。
  • 語義網路中的弧:表示各種語義聯絡,指明它所連線的節點間某種語義關係。
  • 節點和弧都必須帶有標識,以便區分各種不同物件以及物件間各種不同的語義聯絡。最簡單的語義網路是一個三元組:(節點1,弧,節點2)

基於語義網的知識表示框架

RDF與RDFS

Resource Description Framework

RDF的概念:
在RDF(Resource Description Framework,資源描述框架)中,R可以代表頁面、圖片、視訊等任何具有URI(Universal Resource Identifiers)的識別符號,D代表屬性、特徵和資源之間的關係,F代表模型、語言和這些描述的語法
RDF模型:
RDF中知識以三元組的形式出現,每一知識可以被分解為:(subject,predicate,object)(\mathrm{subject,predicate,object})

如:(合肥,坐落於,安徽)

RDF同時也是一種用來連線資源的描述的圖模型,三元組可以表述為:(vertex,edge,vertex)\mathrm{(vertex, edge, vertex)},同時在RDF中資源和屬性都可以被URI唯一標識。

如給出兩個三元組為(CCF ADL, speaker, Haofen),(CCF ADL, theme, KG),可以使用表示為如下圖模型:
在這裡插入圖片描述
我們還可以將名稱空間定義為字首,如定義為ex-schema,則得到如下圖:
RDF圖模型2

RDF中的屬性值同時也可以是一個文字,如字串/數值(它們不是一個Resource)。

如將上述例子的三元組改為(CCF ADL, theme, ‘KG’),那麼這裡的KG將不是一個資源或屬性,而是一個屬性的值,此時圖模型表示如下(注意圖中的方框):RDF圖模型3

RDF中的屬性的文字值同時可以使一個XML datatype型別。

RDF空白結點:
RDF允許存在匿名的資源,它可以作為連線其他非匿名資源的橋樑,此時RDF中會出現空白結點,因為這個資源不被URI表示,所以可以表示為 _:xyz。

例子:Haofen是某一次KG講座的講者。這表示意味著CCF ADL講座至少有一位講者,可以表示為如下2跳相連圖:
空白結點
上述例子說明:一個三元組的缺失並不是什麼大事情。

RDF分散式的定義與合併知識:
我們可以分散式定義知識:
分散式定義知識
接著我們可以將分散式的知識進行合併:
分散式合併知識

帶標註RDF:
使用帶標註RDF(s),來擴充套件RDF用來表示更多的資訊,如時間、不確定性、空間、信任等。

例子: YAGO2,使用annotated RDF表示的知識庫。

語法形式為:(s,p,o):λ(s,p,o):\lambda,其中λ\lambda是一個標誌,可以是上述的擴充套件資訊。

例子:(川普,就職,總統):2017年1月

RDF Schema(RDFS)

RDFS在RDF基礎上提供了一個術語、概念等的定義方式,以及哪些屬性可以應用到哪些物件上。換句話說,RDFS為RDF模型提供了一個基本的型別系統。

例子:三元組表示使用者自定義的後設資料Author是Dublin Core的後設資料Creator的子類。

<http://mymetadata.vocab.org/Author>
 <rdfs: subClassOf > 
<http://purlorg/dc/elements/1.0/Creator>.

RDFS通過這樣的方式來描述不同詞彙集的後設資料之間的關係,為網路上統一格式的後設資料交換提供便利。
RDF定義瞭如下幾種詞彙:

  • Class
  • subClass
  • type
  • Property
  • subPropertyOf
  • Domain
  • Range

RDFS例子1
圖中,data層是對schema層的例項化,是由資料驅動的。

基於RDFS的推理:
在上面的圖中,我們可以在data+schema之後進行推理,如上下位的推理(如subClass),類別的判斷等。
給出一個推理的示例:
RDFS推理

RDF(S)的缺陷
通過RDF(S)可以表示一些簡單的語義,但在更復雜的場景下,RDF(S)語義表達能力顯得太弱,還缺少諸多常用的特徵。

  1. RDF(S)表達能力上的缺陷
    • *對於區域性值域的屬性定義:*RDF(S)中通過rdfs:range定義了屬性的值域,該值域是全域性性的,無法說明該屬性應用於某些具體的類時具有的特殊值域限制。
    • *類、屬性、個體的等價性:*RDF(S)中無法宣告兩個或多個類、屬性和個體是等價還是不等價 。
    • *不相交類的定義:*在RDF(S)中只能宣告子類關係,如男人和女人都是人的子類,但無法宣告這兩個類是不相交的 。
  2. RDF(S)的缺陷
    -* 基數約束:*即對某屬性值可能或必須的取值範圍進行約束,如說明一個人有雙親(包括兩個人),一門課至少有一名教師等。
    • *關於屬性特性的描述:*即宣告屬性的某些特性,如傳遞性、函式性、對稱性,以及宣告一個屬性是另一個屬性的逆屬性等。

OWL與OWL2

由於RDF(S)的缺陷,W3C提出了OWL來枯燥和你RDF(S),作為在語義網上表示本體的推薦語言。

OWL

OWL Web Ontology Language包含三個子語言:OWL Lite、OWL DL、WOL Full。
WOL 三個子語言

關於OWL子語言的選擇:

  • 選擇OWL Lite還是OWL DL主要取決於使用者需要整個語言在多大程度上給出約束的可表達性;
  • 選擇OWL DL還是OWL Full主要取決於使用者在多大程度上需要RDF的元模型機制 (如定義型別的型別以及為型別賦予屬性);
  • 在使用OWL Full而不是OWL DL時,推理的支援可能不能工作,因為目前還沒有完全的支援OWL Full的系統實現。

OWL與RDF關係:

  • OWL Full可以看成是RDF的擴充套件;
  • OWL Lite和OWL Full可以看成是一個約束化的RDF的擴充套件;
  • 所有的OWL文件 (Lite,DL,Full)都是一個RDF文件;
  • 所有的RDF文件都是一個OWL Full文件;
  • 只有一些RDF文件是一個合法的OWL Lite和OWL DL文件。

OWL詞彙:

  • 等價性
OWL中的詞彙 描述 示例
owl:equivalentClass 類等價 exp:運動員 owl:equivalentClass exp:體育選手
owl:equivalentProperty 屬性等價 exp:獲得 owl:equivalentProperty exp:取得
owl:sameIndividualAs 個體等價 exp:運動員A owl:sameIndividualAs exp:小明
  • 傳遞性
OWL中的詞彙 描述 示例
owl:TransitiveProperty 屬性傳遞 exp:ancestor rdf:type owl:TransitiveProperty

exp:ancestor是一個傳遞關係
exp:小明 exp:ancestor exp:小林; exp:小林 exp:ancestor exp:小志那麼根據上述宣告,有 exp:小明 exp:ancestor exp:小志

  • 屬性相反
OWL中的詞彙 描述 示例
owl:inverseOf 屬性相反 exp:ancestor owl:inverseOf exp:descendant

exp:ancestor與exp:descendant是互反關係
exp:小明 exp:ancestor exp:小林,那麼有 exp:小林 exp:descendant exp:小明

  • 屬性函式性
OWL中的詞彙 描述 示例
owl:FunctionalProperty 屬性函式性 exp:hasMother rdf:type owl:FunctionalProperty

exp:hasMother 是一個具有函式性的屬性;因為每個人只有一個母親。

  • 屬性對稱性
OWL中的詞彙 描述 示例
owl:SymmetricProperty 屬性對稱性 exp:hasMother rdf:type owl:FunctionalProperty

exp:小明 exp:friend exp:小林,那麼有 exp:小林 exp:friend exp:小明

  • 屬性的區域性約束:全稱限定
OWL中的詞彙 描述 示例
owl:allValuesFrom 全稱限定 exp:Person owl:allValuesFrom exp:Women,exp:Person owl:onProperty exp:hasMother

exp:hasMother在主語屬於exp:Person類的時候,賓語的取值只能來自exp:Women這個類。

  • 屬性的區域性約束:存在限定
OWL中的詞彙 描述 示例
owl:someValuesFrom 存在限定 exp:SemanticWebPaper owl:someValuesFrom exp:AAAI,exp:SemanticWebPaper owl:onProperty exp:publishedIn

exp:publishedIn在主語屬於exp:SemanticWebPaper類的時候,賓語的取值部分來自exp:AAAI這個類。上面的三元組相當於:關於語義網的論文部分發表在AAAI上。

  • 屬性的區域性約束:基數限定
OWL中的詞彙 描述 示例
owl:cardinality 基數限定 exp:Person owl:cardinality “1”^^xsd:integer,exp:Person owl:onProperty exp:hasMother

exp:hasMother在主語屬於exp:Person類的時候,賓語的取值只能有一個;“1”的資料型別被宣告為xsd:integer;這是基數約束,本質上屬於屬性的區域性約束。

  • 宣告相交的類
OWL中的詞彙 描述 示例
owl:intersectionOf 相交的類 exp:Mother owl:intersectionOf _tmp,_tmp rdf:type rdfs:Collection,_tmp rdfs:member exp:Person,_tmp rdfs:member exp:HasChildren

_tmp是臨時資源;它是rdfs:Collection型別,是一個容器;它的兩個成員是exp:Person,exp:HasChildren;上述三元組說明exp:Mother是exp:Person,exp:HasChildren這兩個類的交集。

  • 其他詞彙

![其他詞彙]!(https://img-blog.csdnimg.cn/20181210204853682.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2R1X21pbGVzdG9uZQ==,size_16,color_FFFFFF,t_70)

OWL2

OWL2包含三大子語言:OWL 2 RL,OWL 2 QL,OWL 2 EL,家族樹如下:
OWL2家族樹

OWL2 QL:
QL代表查詢語言的意思,用於本體的查詢;OWL2 QL是基於描述邏輯語言DL-Lite定義的
其表達能力如下:
QL表達能力

通過OWL 2 QL的語言限制,基於QL的本體查詢可以優化到多項式對數時間複雜度

OWL2 EL :
QWL2 EL是為概念術語描述,推理而設計的。

QWL2 EL在醫療領域廣泛應用,如臨床醫療術語本體SNOMED CT

其表達能力如下:
EL表達能力.PNG

OWL2 RL :

  • OWL 2 RL在擴充套件RDFS表達能力的同時,保持了較低的複雜度;
  • OWL 2 RL在RDFS的基礎上引入屬性的特殊特性 (函式性,互反性,對稱性);允許宣告等價性;允許屬性的區域性約束;
  • OWL 2 RL是專為高效推理設計的本體語言,OWL 2 RL推理是針對於例項資料的推理

OWL 2 RL 表達能力:
OWL 2 RL 表達能力

SPARQL查詢語言

SPARQL是RDF的查詢語言(i.e.基於RDF資料模型),可以針對不同的資料集撰寫複雜的連線,它支援主流的圖資料庫。

SPARQL查詢的基本構成:

  • 變數,RDF中的資源,以“?”或者"$"來表示;
  • 三元組模板 (triple pattern), 在WHERE子句中列示關聯的三元組模板;之所以稱之為模板,因為三元組中允許變數;
  • SELECT子句中指示要查詢的目標變數。

SPARQL查詢語言與SQL很相似,定義了OPTIONAL、FILTER、UNION、FROM等關鍵字,同時它支援巢狀查詢,基於規則的查詢,詳細見Apache Jena - SPARQL TutorialSPARQL Query Language for RDF

Json-LD、RDFa、HTML5 MicroData

Json-LD

JSON-LD是JavaScript Object Notation for Linked Data的縮寫,是一種基於JSON表示和傳輸互聯資料 (Linked Data)的方法。JSON-LD描述瞭如何通過JSON表示有向圖,以及如何在一個文件中混合表示互聯資料及非互聯資料。
JSON-LD的語法和JSON相容。

// 一個json文字
{ 
    "name": "Manu Sporny", 
    "homepage": "http://manu.sporny.org/", 
    "image": "http://manu.sporny.org/images/manu.PNG"
}
//一個json-ld文字
{
    "http://schema.org/name": "Manu Sporny", 
    "http://schema.org/url": { "@id":"http://manu.sporny.org/" }, 
    "http://schema.org/image": { "@id":"http://manu.sporny.org/images/manu.PNG" }
}

JSON-LD通過引入規範的術語表示,比如統一化表示“name”,“homepage”和“image”的URI,使得資料交換和機器理解成為基礎。

RDFa

RDFa (Resource Description Framework in attributes)是網頁標記語言,它擴充了XHTML的幾個屬性,網頁製作者可以利用這些屬性在網頁中新增可供機器讀取的資源,與RDF的對應關係使得RDFa可以將RDF的三元組嵌入在XHTML文件中,它也使得符合標準的使用端可以從RDFa檔案中提取出這些RDF三元組來。

RDFa工作原理:
通過引入名稱空間的方法在已有的標籤中加入RDFa相應的屬性來使得支援RDFa技術的瀏覽器或者搜尋引擎可以解析到,從而達到優化的目的。

<div xmlns:dc="http://purl.org/dc/elements/1.1/" about="http://www.example.com/books/wikinomics">
    <span property="dc:title">Wikinomics</span>
    <span property="dc:creator">Mr right</span>
    <span property="dc:date">2006-09-02</span>
</div>

上面的程式碼示例中用到了RDFa屬性中的about屬性和property屬性,這段程式碼示例說明了一篇文章,然後描述了和這篇文章相關的資訊,比如說標題,建立者和建立日期,而這些屬性就可以使得支援RDFa的機器識別。

HTML5 Microdata

  • Microdata微資料,是在網頁標記標記語言嵌入機器可讀的屬性資料
  • 微資料使用可以來自自定義詞彙表、帶作用域的鍵/值對給DOM做標記
  • 使用者可以自定義微資料詞彙表,在自己的網頁中嵌入自定義的屬性
  • 微資料是給那些已經在頁面上可見的資料施加額外的語義。當HTML的
    詞彙不夠用時,使用微資料可以取得較好的效果

HTML5 Microdata

RDF+SPARQL對比ER+SQL

假設我們給定資訊:騰訊坐落於深圳,深圳坐落於中國;接著給定問題,騰訊坐落於那個國家。此時我們分別用RDF模型與ER模型來表示:
RDF語義模型——關係顯示定義:
RDF語義模型
在語義模型中,我們可以通過兩個三元組推理得出騰訊在中國。
關係模型——關係隱式宣告:
ER模型
在ER模型中,我們需要存放三張表,接著通過SQL連線三張表進行查詢,這裡需要對問題進行語義的理解,對語義的理解是一個較難做到的事情。
這樣看RDF語義模型好像與ER模型相比沒有什麼優勢,但是當資料發生變更了的時候,如修改上述給出的資訊為:深圳位於廣東,廣東位於中國,此時語義模型仍然可以根據三元組的推理就可以得出答案,同時並不需要修改其他的任何東西。
RDF語義模型2
而此時,ER模型需要新增一張表,同時還需要修改原來的SQL語句。
ER模型2

Reference

王昊奮《知識圖譜》

相關文章