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


作者:灰灰
鏈接:https://zhuanlan.zhihu.com/p/72589552
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

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

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

1. 由來

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

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

2. 模型定義

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

從內容上看三元組的結構為 “資源-屬性-屬性值” ,資源實體由URI(unified resource identifier)表示,屬性值可以是另一個資源實體的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),用圖形表示就是:

但是如果用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的前提下,除非標簽的命名非常清晰易懂,否則你很難分辨推斷出,到底哪個標簽里的內容是另一個標簽里內容的屬性或者什么(語義不清)。

3.1 用xml格式表示RDF數據

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

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

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

4. RDF解決的語義問題

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

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

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

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

比如還是上面那個中國長江的例子,我們有兩份關於描述中國長江(Yangtze)的RDF文檔,它們雖然分布在不同位置,但是卻共用同一個URI,因此計算機可以把他們聯系起一起處理。當用戶搜索長江的時候,搜索引擎可以通過知識融合工具,把兩份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前綴 ,因此rdf: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的基本知識。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM