知識圖譜入門——知識表示與知識建模
文章首發於部落格du_ok’s Notes,本文連結為知識圖譜入門——知識表示與知識建模
本文首先介紹了早期的知識表示方法,接著介紹了知識圖譜的基石——RDF及其擴充套件RDFS,在它們的基礎上又介紹了表達能力以及推理能力更強的OWL與OWL2,最後介紹了一些新的只是知識表示方式,如Json-LD、RDFa、HTML5 Microdata等。
早期知識表示
- 一階謂詞邏輯(First-Order Logic)
Horn邏輯:一階謂詞邏輯的子集
描述邏輯:一階謂詞邏輯的可判定子集
- 產生式系統
產生式模型:
- 其中,P是產生式的前提,Q是一組結論或操作,CF (Certainty Factor)為確定性因子,也稱置信度。
- 謂詞邏輯中的規則與產生式的基本形式相似,事實上,蘊涵式只是產生式
的一種特殊情況。理由如下:- 謂詞邏輯規則只能表示精確知識,其值非“真”即“假”,而產生式不僅可以表示精確知識,而且還可以表示不精確知識;
- 用產生式表示知識的系統中,“事實”與產生式的“前提”中所規定的條件進行匹配時,可以是“精確匹配”,也可以是基於相似度的“不精確匹配”,只要相似度落入某個預先設定的範圍內,即可認為匹配。但對謂詞邏輯的規則而言,其匹配必須是精確的。
- 框架
框架基本組成:
- 框架:是一種描述物件 (事物、事件或概念等)屬性的資料結構,在框架理論中,框架是知識表示的基本單位。
- 一個框架由若干個“槽” (Slot)結構組成,每個槽又可分為若干個“側面”
。一個槽:用於描述所論物件某一方面的屬性;一個側面:用於描述相應屬性的一個方面。 - 槽和側面所具有的屬性值分別稱為槽值和側面值。
框架的示例:
框架的例項:
- 語義網路
- 語義網路中的節點:表示各種事物、概念、情況、屬性、動作、狀態等,每個節點可以帶有若干屬性,一般用框架或元組表示。此外,節點還可以是一個語義子網路,形成一個多層次的巢狀結構。
- 語義網路中的弧:表示各種語義聯絡,指明它所連線的節點間某種語義關係。
- 節點和弧都必須帶有標識,以便區分各種不同物件以及物件間各種不同的語義聯絡。最簡單的語義網路是一個三元組:(節點1,弧,節點2)
基於語義網的知識表示框架
RDF與RDFS
Resource Description Framework
RDF的概念:
在RDF(Resource Description Framework,資源描述框架)中,R可以代表頁面、圖片、視訊等任何具有URI(Universal Resource Identifiers)的識別符號,D代表屬性、特徵和資源之間的關係,F代表模型、語言和這些描述的語法。
RDF模型:
RDF中知識以三元組的形式出現,每一知識可以被分解為:
如:(合肥,坐落於,安徽)
RDF同時也是一種用來連線資源的描述的圖模型,三元組可以表述為:,同時在RDF中資源和屬性都可以被URI唯一標識。
如給出兩個三元組為(CCF ADL, speaker, Haofen),(CCF ADL, theme, KG),可以使用表示為如下圖模型:
我們還可以將名稱空間定義為字首,如定義為ex-schema,則得到如下圖:
RDF中的屬性值同時也可以是一個文字,如字串/數值(它們不是一個Resource)。
如將上述例子的三元組改為(CCF ADL, theme, ‘KG’),那麼這裡的KG將不是一個資源或屬性,而是一個屬性的值,此時圖模型表示如下(注意圖中的方框):
RDF中的屬性的文字值同時可以使一個XML datatype型別。
RDF空白結點:
RDF允許存在匿名的資源,它可以作為連線其他非匿名資源的橋樑,此時RDF中會出現空白結點,因為這個資源不被URI表示,所以可以表示為 _:xyz。
例子:Haofen是某一次KG講座的講者。這表示意味著CCF ADL講座至少有一位講者,可以表示為如下2跳相連圖:
上述例子說明:一個三元組的缺失並不是什麼大事情。
RDF分散式的定義與合併知識:
我們可以分散式定義知識:
接著我們可以將分散式的知識進行合併:
帶標註RDF:
使用帶標註RDF(s),來擴充套件RDF用來表示更多的資訊,如時間、不確定性、空間、信任等。
例子: YAGO2,使用annotated RDF表示的知識庫。
語法形式為:,其中是一個標誌,可以是上述的擴充套件資訊。
例子:(川普,就職,總統):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
圖中,data層是對schema層的例項化,是由資料驅動的。
基於RDFS的推理:
在上面的圖中,我們可以在data+schema之後進行推理,如上下位的推理(如subClass),類別的判斷等。
給出一個推理的示例:
RDF(S)的缺陷
通過RDF(S)可以表示一些簡單的語義,但在更復雜的場景下,RDF(S)語義表達能力顯得太弱,還缺少諸多常用的特徵。
- RDF(S)表達能力上的缺陷
- *對於區域性值域的屬性定義:*RDF(S)中通過rdfs:range定義了屬性的值域,該值域是全域性性的,無法說明該屬性應用於某些具體的類時具有的特殊值域限制。
- *類、屬性、個體的等價性:*RDF(S)中無法宣告兩個或多個類、屬性和個體是等價還是不等價 。
- *不相交類的定義:*在RDF(S)中只能宣告子類關係,如男人和女人都是人的子類,但無法宣告這兩個類是不相交的 。
- RDF(S)的缺陷
-* 基數約束:*即對某屬性值可能或必須的取值範圍進行約束,如說明一個人有雙親(包括兩個人),一門課至少有一名教師等。- *關於屬性特性的描述:*即宣告屬性的某些特性,如傳遞性、函式性、對稱性,以及宣告一個屬性是另一個屬性的逆屬性等。
OWL與OWL2
由於RDF(S)的缺陷,W3C提出了OWL來枯燥和你RDF(S),作為在語義網上表示本體的推薦語言。
OWL
OWL Web Ontology Language包含三個子語言:OWL Lite、OWL DL、WOL Full。
關於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這兩個類的交集。
- 其他詞彙
OWL2
OWL2包含三大子語言:OWL 2 RL,OWL 2 QL,OWL 2 EL,家族樹如下:
OWL2 QL:
QL代表查詢語言的意思,用於本體的查詢;OWL2 QL是基於描述邏輯語言DL-Lite定義的
其表達能力如下:
通過OWL 2 QL的語言限制,基於QL的本體查詢可以優化到多項式對數時間複雜度
OWL2 EL :
QWL2 EL是為概念術語描述,推理而設計的。
QWL2 EL在醫療領域廣泛應用,如臨床醫療術語本體SNOMED CT
其表達能力如下:
OWL2 RL :
- OWL 2 RL在擴充套件RDFS表達能力的同時,保持了較低的複雜度;
- OWL 2 RL在RDFS的基礎上引入屬性的特殊特性 (函式性,互反性,對稱性);允許宣告等價性;允許屬性的區域性約束;
- 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 Tutorial和SPARQL 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的
詞彙不夠用時,使用微資料可以取得較好的效果
RDF+SPARQL對比ER+SQL
假設我們給定資訊:騰訊坐落於深圳,深圳坐落於中國;接著給定問題,騰訊坐落於那個國家。此時我們分別用RDF模型與ER模型來表示:
RDF語義模型——關係顯示定義:
在語義模型中,我們可以通過兩個三元組推理得出騰訊在中國。
關係模型——關係隱式宣告:
在ER模型中,我們需要存放三張表,接著通過SQL連線三張表進行查詢,這裡需要對問題進行語義的理解,對語義的理解是一個較難做到的事情。
這樣看RDF語義模型好像與ER模型相比沒有什麼優勢,但是當資料發生變更了的時候,如修改上述給出的資訊為:深圳位於廣東,廣東位於中國,此時語義模型仍然可以根據三元組的推理就可以得出答案,同時並不需要修改其他的任何東西。
而此時,ER模型需要新增一張表,同時還需要修改原來的SQL語句。
Reference
相關文章
- 知識圖譜之知識表示
- 知識圖譜入門2
- 知識圖譜01:知識圖譜的定義
- 知識圖譜|知識圖譜的典型應用
- 知識圖譜學習記錄--知識圖譜概述
- 人工智慧(二、知識表示)——1.知識表示與知識表示的概念人工智慧
- 使用知識圖實現領域知識建模與測試
- go 知識圖譜Go
- OI知識圖譜
- 【知識點】圖與圖論入門圖論
- 【知識圖譜 趙軍 學習筆記】第二章 知識表示筆記
- 知識圖譜技術的新成果—KGB知識圖譜介紹
- 知識圖譜學習
- Http/2知識圖譜HTTP
- 王昊奮知識圖譜學習筆記--第三講知識抽取與知識挖掘(上)筆記
- KGB知識圖譜,利用科技解決傳統知識圖譜問題
- 【知識圖譜】 一個有效的知識圖譜是如何構建的?
- 知識圖譜與知識發現領域的頂級期刊與會議
- 知識圖譜的器與用(一):百萬級知識圖譜實時視覺化引擎視覺化
- 【知識圖譜】知識圖譜實體連結無監督學習框架框架
- 知識圖譜丨知識圖譜賦能企業數字化轉型
- 知識圖譜構建與應用
- HTTP入門知識HTTP
- Docker入門知識Docker
- 知識點,如何應用“安全知識圖譜”識別內部威脅?
- NumPy基礎知識圖譜
- 01 知識圖譜概論
- 知識圖譜學習與實踐(4)——Protégé使用入門
- python入門基本知識Python
- Hibernate的入門知識
- linux路由知識入門Linux路由
- Blender入門知識整理
- 【知識圖譜】知識圖譜資料構建的“硬骨頭”,阿里工程師如何拿下?深度學習在知識圖譜構建中的應用。阿里工程師深度學習
- 構建知識圖譜-初學
- Go知識圖譜討論帖Go
- 知識圖譜 KnowledgeGraph基礎解析
- python入門知識思維導圖Python
- 知識圖譜和行業領域的結合產物-KGB知識圖譜介紹行業