RDF
一、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 元素
- rdf:RDF:是 RDF 文件的根元素
- rdf:Description :包含描述資源的那些元素
- 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