1. 程式人生 > >【知識圖譜】(二)知識圖譜基礎之RDF和RDFS

【知識圖譜】(二)知識圖譜基礎之RDF和RDFS

第二章知識圖譜基礎

2.1知識表示和其查詢語言

知識表示和知識推理是人工智慧領域中致力於表示世界上各種資訊的技術,有了這項技術,計算機在解決一個複雜任務時可以根據相關知識來依靠自動推理作為輔助決策。知識圖譜可以被視為語義網路的現代版本。

2.1.1RDF和RDFS

在這部分,我們會介紹RDF(ResourceDescription Framework)和RDFS(RDF Schema)。就像1.1中說的那樣,RDF是現在語義網路的標準。RDFS是RDF知識圖譜的模式語言。在2.1.2節,我們將介紹另一個標準OWL,它為知識圖譜提供更全面的模式語言。

RDF

RDF是W3C的推薦標準,用來描述實體,我們可以使用它來區分任何事情,比如一個人,一個主頁或者是權力的遊戲中的那隻龍。

RDF三元組和圖

在RDF中,資源被描述為三元組([subject predicate object ])。

        

一個RDF圖由一系列三元組組成。可以使用節點和邊來視覺化,每一個三元組被表示為節點-邊-節點。在RDF中有三種類型的節點:國際資源定位符(Internationalised Resource Identifiers),也稱IRIs,還有字面量空節點。在RDF三元組中,

•主語subject可以是IRI或者空節點

•謂語predicate只能是IRI

•賓語object可以是IRI,字面量或者是空節點

       RDF圖中的IRI可以唯一界定一個資源,IRI是更一般化的URIs(UniformResources Identifiers),它允許使用更多的符號。

         字面量Literals可以取值為字串,數字或者日期。

         空節點則取一個佔位符的作用,它表示一個沒有指明IRI或者字面量的資源,也成匿名資源。它僅僅表示一個事物的存在。

下圖所示為只有一個三元組的知識圖譜,其主語和謂語都是IRI,賓語是一個字面量。


這個三元組表示Bolivia的long name是Plurinational State of Bolivia。

         IRIs通常以一個名稱空間做開頭,一些名稱空間為了方便表示會和一些更短的字首關聯:

prefixdbpedia: http:// dbpedia.org/resource/

prefixdbpedia -owl: http:// dbpedia.org/ontology/

prefixxsd: http://www.w3.org/2001/ XMLSchema#

這樣我們使用字首表示IRI就更加方便:


         和典型的語義網路不一樣的地方在於,RDF有一些語言級別預定義的屬性。比如rdf:type,它是用來對資源進行分類的。和語義網路中的is-a關係所對應。rdf:type使用如下圖:

序列化RDF

        RDF為知識圖譜提供了標準的資料模型。RDF資料的儲存和交換有許多序列化方法,比如Turtle,RDF/XML,RDFa,B-Triples,NQUADS,JSON-LD。

         一個Turtle文件允許在壓縮的文件格式寫書RDF資料。如下圖:

用字首表示IRI:

多行字面量的表示:

表示資料型別的字面量,使用字串^^datatypeURI的格式。

接下來我們來展示一些三元組的例子,三元組以“.”結尾。

但一個三元組中有多個賓語時,我們可以使用“,”來區分它們。

類似的,當三元組存在多個謂語時,我們可以使用“;”將多個謂語區分開。如下圖,我們使用這種方法將兩個三元組合併成一個三元組。

RDFS

RDFS為RDF提供了簡單的模式語言,允許使用者使用語言去rdfs:Class/property rdfs:Property預定義宣告一個類或者屬性,下圖分別將org:Organization和org:hasHomePage宣告為一個Class和一個property。

除此之外,RDFS提供rdfs:subClassOf,rdfs:subPropertyOf,rdfs:domain and rdfs:range來表示類和屬性的依賴。

下圖表示org:Strat-up是org: Organization的一個子類。

下圖表示org:hasEnglishHomePage是org:hasHomePage的子屬性。

下圖表示org:hasHomePage這個謂語適用的主語範圍是org: Organization。

下圖表示org:hasHomePage的資料型別是字面量。

我們展示一個複雜點的添加了RDFS的RDF圖:

將這個圖譜使用Turtle序列化後如下圖所示:

這裡需要說明,RDFS作為一個模式語言,有很多侷限性

1.      RDFS不提供否定功能,比如,我們可以說data:ESI表示一個組織,但我們不能夠在RDF中表達data:ESI不是一個人。

2.      RDFS不能去定義類,比如我們不能使用RDFS說明org:SME到底指什麼。

3.      雖然RDFS提供了模式級別的對齊,比如rdfs:subClassOf 和rdfs:subPropertyOf語言,但它不支援例項級別的對齊,比如它不能表示data:ESI和db:ESI其實是一種東西。

以上這些缺陷都可以被更加全面的模式語言OWL解決。