RDF

qq_37953072發表於2020-10-11


一、RDF是什麼?

是用於描述網路資源的 W3C 標準,比如網頁的標題、作者、修改日期、內容以及版權資訊。

RDF序列化的方式主要有:RDF/XML,N-Triples,Turtle,RDFa,JSON-LD等幾種。

二、RDF/XML

用XML的格式來表示RDF資料。

解釋

  • <xmlns:cd > 名稱空間,規定了帶有字首 cd 的元素來自名稱空間 “http://www.recshop.fake/cd#”。
  • <rdf:Description> 元素包含了對被 rdf:about 屬性標識的資源的描述。
  • 元素:<cd:artist>、<cd:country>、<cd:company> 等是此資源的屬性。
<rdf:Description
rdf:about="http://www.recshop.fake/cd/Empire Burlesque">
  <cd:artist>Bob Dylan</cd:artist>
  <cd:country>USA</cd:country>
  <cd:company>Columbia</cd:company>
  <cd:price>10.90</cd:price>
  <cd:year>1985</cd:year>
</rdf:Description>

1、RDF 元素

  1. rdf:RDF:是 RDF 文件的根元素
  2. rdf:Description :包含描述資源的那些元素
  3. property:定義屬性,比方說上面的cd:artist,cd:country等

2、RDF容器

  • 一個容器是一個包含事物的資源
  • 被包含的事物被稱為成員(不能稱為"值的列表")。

1.<rdf:Bag>

  • 用於描述一個規定為無序的成員
  • 可包含重複的值

下面程式碼是在屬性cd:artist下使用容器rdf:Bag :

<cd:artist>
    <rdf:Bag>
      <rdf:li>John</rdf:li>
      <rdf:li>Paul</rdf:li>
      <rdf:li>George</rdf:li>
      <rdf:li>Ringo</rdf:li>
    </rdf:Bag>
  </cd:artist>

2.<rdf:Seq>

  • 描述一個規定為有序的成員

下面程式碼是在屬性cd:artist下使用容器rdf:Seq

<cd:artist>
    <rdf:Seq>
      <rdf:li>George</rdf:li>
      <rdf:li>John</rdf:li>
      <rdf:li>Paul</rdf:li>
      <rdf:li>Ringo</rdf:li>
    </rdf:Seq>
  </cd:artist>

3.<rdf:Alt>

  • 用於一個可替換的成員
 <cd:format>
    <rdf:Alt>
      <rdf:li>CD</rdf:li>
      <rdf:li>Record</rdf:li>
      <rdf:li>Tape</rdf:li>
    </rdf:Alt>
  </cd:format>

3、RDF集合

正如在前面的章節所看到的,我們無法關閉一個容器。容器規定了所包含的資源為成員 - 它沒有規定其他的成員是不被允許的。

RDF 集合用於描述僅包含指定成員的組。

集合是通過屬性 rdf:parseType=“Collection” 來描述的。

<rdf:Description
rdf:about="http://recshop.fake/cd/Beatles">
  <cd:artist rdf:parseType="Collection">
   ...
  </cd:artist>
</rdf:Description>

4、RDFS

RDF Schema 不提供實際的應用程式專用的類和屬性,而是提供了描述應用程式專用的類和屬性的框架。

RDF Schema 中的類與物件導向程式語言中的類非常相似。這就使得資源能夠作為類的例項和類的子類來被定義。

例項:資源 “horse” 是類 “animal” 的子類。

<?xml version="1.0"?>

<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xml:base="http://www.animals.fake/animals#">

<rdf:Description rdf:ID="animal">
  <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
</rdf:Description>

<rdf:Description rdf:ID="horse">
  <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
  <rdfs:subClassOf rdf:resource="#animal"/>
</rdf:Description>

</rdf:RDF>

由於一個 RDFS 類就是一個 RDF 資源,我們可以通過使用 rdfs:Class 取代 rdf:Description,並去掉 rdf:type 資訊.

簡化後:

<?xml version="1.0"?>

<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xml:base="http://www.animals.fake/animals#">

<rdfs:Class rdf:ID="animal" />

<rdfs:Class rdf:ID="horse">
  <rdfs:subClassOf rdf:resource="#animal"/>
</rdfs:Class>

</rdf:RDF>

5、RDF 都柏林核心後設資料倡議

Contributor:一個負責為資源內容作出貢獻的實體(如作者)。

Coverage:資源內容的氛圍或作用域

Creator:一個主要負責建立資源內容的實體。

Format:物理或數字的資源表現形式。

Date:在資源生命週期中某事件的日期。

Description:對資源內容的說明。

Identifier:一個對在給定上下文中的資源的明確引用

Language:資源智力內容所用的語言。

Publisher:一個負責使得資源內容可用的實體

Relation:一個對某個相關資源的引用

Rights:有關保留在資源之內和之上的權利的資訊

Source:一個對作為目前資源的來源的資源引用。

Subject:一個資源內容的主題

Title:一個給資源起的名稱

Type:資源內容的種類或型別。

例項:

<?xml version="1.0"?>

<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc= "http://purl.org/dc/elements/1.1/">

<rdf:Description rdf:about="http://www.runoob.com">
  <dc:description>Run Noob - 奔跑吧!菜鳥</dc:description>
  <dc:publisher>Refsnes Data as</dc:publisher>
  <dc:date>2008-09-01</dc:date>
  <dc:type>Web Development</dc:type>
  <dc:format>text/html</dc:format>
  <dc:language>en</dc:language>
</rdf:Description>

</rdf:RDF>

三、N-Triples

即用多個三元組來表示RDF資料集,是最直觀的表示方法。每一行表示一個三元組,方便機器解析和處理.

知識圖譜通常是用這種格式來發布資料。

<http://www.kg.com/person/1> <http://www.kg.com/ontology/chineseName> "羅納爾多·路易斯·納薩里奧·德·利馬"^^string.
<http://www.kg.com/person/1> <http://www.kg.com/ontology/career> "足球運動員"^^string.
<http://www.kg.com/person/1> <http://www.kg.com/ontology/fullName> "Ronaldo Luís Nazário de Lima"^^string.
<http://www.kg.com/person/1> <http://www.kg.com/ontology/birthDate> "1976-09-18"^^date.
<http://www.kg.com/person/1> <http://www.kg.com/ontology/height> "180"^^int.
<http://www.kg.com/person/1> <http://www.kg.com/ontology/weight> "98"^^int.
<http://www.kg.com/person/1> <http://www.kg.com/ontology/nationality> "巴西"^^string.
<http://www.kg.com/person/1> <http://www.kg.com/ontology/hasBirthPlace> <http://www.kg.com/place/10086>.
<http://www.kg.com/place/10086> <http://www.kg.com/ontology/address> "里約熱內盧"^^string.
<http://www.kg.com/place/10086> <http://www.kg.com/ontology/coordinate> "-22.908333, -43.196389"^^string.

四、Turtle

應該是使用得最多的一種RDF序列化方式了。它比RDF/XML緊湊,且可讀性比N-Triples好。

@prefix person: <http://www.kg.com/person/> .
@prefix place: <http://www.kg.com/place/> .
@prefix : <http://www.kg.com/ontology/> .

person:1 :chineseName "羅納爾多·路易斯·納薩里奧·德·利馬"^^string;
         :career "足球運動員"^^string;
         :fullName "Ronaldo Luís Nazário de Lima"^^string;
         :birthDate "1976-09-18"^^date;
         :height "180"^^int;
         :weight "98"^^int;
         :nationality "巴西"^^string; 
         :hasBirthPlace place:10086.
place:10086 :address "里約熱內盧"^^string;
            :address "-22.908333, -43.196389"^^string.

總結

以上就是今天學習的內容,本文僅僅簡單介紹了RDF的相關知識。

來源:https://www.runoob.com/rdf/rdf-tutorial.html
https://blog.csdn.net/u011801161/article/details/78833958