知識圖譜裡的知識表示:RDF

XML HTML 高能小子終極裝備 設計 電腦 英語 人工智能遇見磐創 2019-07-06

大部分知識圖譜使用RDF描述世界上的各種資源,並以三元組的形式保存到知識庫中。RDF( Resource Description Framework, 資源描述框架)是一種資源描述語言,它受到元數據標準、框架系統、面嚮對象語言等多方面的影響,被用來描述各種網絡資源,其出現為人們在Web上發佈結構化數據提供一個標準的數據描述框架

使用RDF語言,有利於在網絡上形成人機可讀,並可由機器自動處理的文件。

1. 由來

RDF的出現最初來源於元數據的概念。所謂元數據,即“描述數據的數據”或者“描述信息的信息”。舉個例子,電腦裡保存的數碼照片都包含一些關於尺寸、創建時間、感光度等額外屬性信息,它們就是一種用來描述二進制圖片數據的元數據。元數據是一種結構化形式的數據,機器處理起來十分方便。

知識圖譜裡的知識表示:RDF

照片元數據

90年代有個叫Guha的人,在蘋果公司研究各種各樣的元數據格式來管理圖片音頻等數據,RSS就是他在那個時候發明的,隨後在1997年他又發明了RDF。接著人們發現RDF這種形式非常適合用於在萬維網上對知識的結構化表示,於是在1999年,RDF被W3C推為行業推薦標準

2.模型定義

RDF提出了一個簡單的二元關係模型來表示事物之間的語義關係,即使用三元組集合的方式來描述事物和關係。三元組是知識圖譜中知識表示的基本單位,簡稱SPO ,三元組被用來表示實體與實體之間的關係,或者實體的某個屬性的屬性值是什麼

從內容上看三元組的結構為 “資源-屬性-屬性值” ,資源實體由URI表示,屬性值可以是另一個資源實體的URI,也可以是某種數據類型的值,也稱為literals(字面量)。

主語和賓語也可以由第三種結點類型空節點(blank nodes)表示。blank node簡單來說就是沒有IRI和literal的資源,或者說匿名資源。

由於RDF規定資源的命名必須使用URI,所以也直接解決了命名空間的問題。這裡我們具體說一下IRI,URI,URL和URN這幾個術語的區別

  • URI:統一資源標識符,字符集被限制為US-ASCII(英文字符),通過指定唯一名稱來標識資源;
  • IRI:國際化資源標識符(Internationalized Resource Identifier),定義與URI相同,URI,只是將字符集擴展到通用字符集(包含了非英文字符),所以它是URI的超集,同樣唯一標識了一個資源;
  • URN: 統一資源名稱(Uniform Resource Name),由命名空間標識符(NID)和命名空間特定字符串(NSS)組成;
  • URL:統一資源定位符,即我們通常提到的網址,通常指的是不包含URN的URI子集

以及它們的集合包涵關係

  • IRI ⊃ URI
  • URI ⊃ URL
  • URI ⊃ URN
  • URL ∩ URN = ∅

3.RDF與XML的比較

RDF最初的靈感一部分也來源於xml,可以看成xml的擴展和簡化。xml最初被設計用於網絡之間數據的傳輸,語法類似於html,但是可以自行定義標籤的名字。這個特點非常適合定義符合各自要求的數據格式,也使得xml具有更強大的表達能力,不過因此也導致XML數據的結構過於鬆散隨意,其統一性和通用性受到了嚴重限制。讀者通常需要對xml Schema文件(xmls)有足夠的詳細瞭解之後才可以完全理解xml文件背後的語義信息。

RDF和xml相比還是有很大的差別,下面通過兩者比較來更好地瞭解RDF的優點。

  • 模型更靈活。XML是被設定為固定的、樹狀的文本,其描述元數據的能力缺乏一定的靈活性。相比而言,RDF採用簡單明瞭的三元組形式,以及互聯形成的圖結構,具備足夠的靈活性來描述網絡上許多主觀的、分佈式的、不同形式表達的資源對象。
  • RDF最初是被作為元數據語言設計的,其表達形式天然具備保存數據對象的描述型元數據的能力,自帶語義解釋。而XML最初的語義解釋包含在另一個schema文件中,獲取並解析相對麻煩很多,導致XML語言進行元數據建模,描述數據的靈活性非常差。

讓我們看看下面這個RDF三元組的例子,比如“這個網頁的作者是Ora”這句話,轉化為三元組就是 (網頁,作者,Ora),用圖形表示就是:

知識圖譜裡的知識表示:RDF

但是如果用xml表示,形式就可能非常多樣和複雜,導致語義不清的問題,比如下面這些結構的xml都可能出現:

<author> 
<uri>page</uri>
<name>Ora</name>
</author>
<document href="page">
<author>Ora</author>
</document>
<document>
<details>
<uri>href="page"</uri>
<author>
<name>Ora</name>
</author>
</details>
</document>

在不瞭解xml文檔的schema的前提下,除非標籤的命名非常清晰易懂,否則你很難分辨推斷出,到底哪個標籤裡的內容是另一個標籤裡內容的屬性或者什麼(語義不清)。

用xml格式表示RDF數據

知識圖譜裡的知識表示:RDF

不過w3c還是給出了一套如何用xml表示RDF數據的XML schema詞彙,下圖所示是 中國長江(Yangtze)作為一個RDF實體用xml表示的形式:

知識圖譜裡的知識表示:RDF

RDF/XML

Description說明這是rdf裡一條三元組陳述,about是主語資源的URI,s:Creator是屬性名,後面跟著賓語屬性值。

不過XML的形式太過冗長,且可讀性差,後面會介紹更好的RDF序列化方式。

4.RDF解決的語義問題

RDF的最大意義在於,它不僅是字符串構成的符號,還包含了語義信息。

語義通常指的是符號與所指對象之間的關係。人可以根據自己的知識儲備理解符號與符號之間的語義關係,比如你在新聞裡讀到“任正非”三個字,或者別人向你說起“任正非”,你都會將這些符號和你腦海中的一個對象或者影像聯繫,再綜合過往收集到的和這個對象相關的信息,從而理解符號背後的含義。

那麼計算機是否也可以為世界上的每一個實體,定義一個唯一的錨(也就是URI),所有與這個實體相關的信息(文字、圖像等等),都會被這個錨鉤住。

這正是RDF可以表達語義信息的一個原因。在三元組模型中,主體、客體可以是通過URI引用的資源,這些URI是獨立於RDF文檔中的符號存在的,唯一表示了存在於這個世界的某個資源,也即代表了對象本身而不僅僅是符號,如此RDF就表達出了符號和對象之間的關係,這是一種可以被計算機理解的語義。

比如還是上面那個中國長江的例子,我們有兩份關於描述中國長江(Yangtze)的RDF文檔,它們雖然分佈在不同位置,但是卻共用同一個URI,因此計算機可以把他們聯繫起一起處理。當用戶搜索長江的時候,搜索引擎可以通過知識融合工具,把兩份RDF描述整合一起返回。這也是RDF的分佈式存儲功能。

知識圖譜裡的知識表示:RDF

知識融合

5.序列化方式

RDF是以一種建模的方式來描述數據語義,不受具體語法表示的限制,序列化的方式有多種。數據序列化就是將對象或者轉化成特定的格式,使其可在網絡中傳輸,或者存儲在文件中。

序列化RDF數據的方法主要有這幾種: RDF/XML,N-Triples,Turtle,RDFa,JSON-LD。

其中Turtle 是使用最廣泛的RDF序列化方式,其格式緊湊,易於閱讀。下面是w3c上RDF定義文檔中的一部分內容,定義文檔本身就採用了三元組來描述RDF中的專用詞彙,因此可以用Turtle的形式展示出來:

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .
rdf:type a rdf:Property ;
rdfs:isDefinedBy <http://www.w3.org/1999/02/22-rdf-syntax-ns#> ;
rdfs:label "type" ;
rdfs:comment "The subject is an instance of a class." ;
rdfs:range rdfs:Class ;
rdfs:domain rdfs:Resource.

上述片段是對RDF中的rdf:type這個詞彙的描述。因為URI很長,一般我們都會使用縮寫。Turtle使用 @prefix 對RDF的URI前綴進行縮寫,rdf:表示URI前綴 http://www.w3.org/1999/02/22-rdf-syntax-ns#,因此rdf:type就是http://www.w3.org/1999/02/22-rdf-syntax-ns#type的簡寫。

文檔中出現的謂詞 a 是rdf:type的簡寫,這是Turtle語法中的一種常用簡寫,用於說明實體的類型是什麼。

同一個subject實體擁有多種關係的時候,Turtle語法允許只出現一次subject來表示,通過分號分隔不同的關係,最後英文句號“.”說明與主語實體的所有關係已經說明完畢。這樣就避免了subject主體像下面這樣的重複出現。

rdf:type a rdf:Property .
rdf:type rdfs:isDefinedBy <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
rdf:type rdfs:label "type" .
rdf:type rdfs:comment "The subject is an instance of a class." .
rdf:type rdfs:range rdfs:Class .
rdf:type rdfs:domain rdfs:Resource.

關於RDF的介紹就先說到這裡,後續會給大家在說一說一些關於RDFs和OWL的基本知識。

相關推薦

推薦中...