最新的Web開發教程
 

XML RDF


RDF文檔示例

<?xml version="1.0"?>

<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:si="http://www.w3ii.com/rdf/">

<rdf:Description rdf:about="http://www.w3ii.com">
  <si:title>w3ii</si:title>
  <si:author>Jan Egil Refsnes</si:author>
</rdf:Description>

</rdf:RDF>

什麼是RDF?

  • RDF代表R esource D ESCRIPTION F ramework
  • RDF是用於描述在網絡上的資源的框架
  • RDF被設計為讀取和計算機理解
  • RDF不適合顯示給人們
  • RDF是XML編寫
  • RDF是W3C的語義Web活動的一部分
  • RDF是從10 2004年2月W3C推薦標準

RDF - 使用示例

  • 描述屬性購物項目,比如價格和可用性
  • 描述時間表為網絡事件
  • 描述有關網頁的信息(content, author, created and modified date)
  • 描述為網絡圖片的內容和等級
  • 針對搜索引擎的內容描述
  • 描述電子圖書館

RDF的設計是由計算機讀取

RDF的目的是提供描述的信息,以便它可以被讀取和計算機應用程序理解的一種常見的方式。

RDF描述不旨在在網絡上進行顯示。


RDF是用XML

RDF文件都寫在XML。 RDF所使用的XML語言被稱為RDF / XML。

通過使用XML,RDF信息可以很容易地不同類型的計算機之間使用不同類型的操作系統和應用語言的交換。


RDF和"The Semantic Web"

該RDF語言是W3C的語義Web活動的一部分。 W3C的"Semantic Web Vision"是一個未來的,其中:

  • 網絡信息具有準確含義
  • 網絡信息可以理解和由計算機處理
  • 計算機可以從網絡整合信息

RDF使用Web標識符(URIs)識別資源。

RDF描述了具有屬性和屬性值的資源。


RDF資源,屬性和屬性值

RDF標識使用Web標識符東西(URIs) ,並描述了具有屬性和屬性值的資源。

資源,財產和屬性值的說明:

  • 一個Resource是什麼,可以有一個URI,如"http://www.w3ii.com/rdf"
  • 一個Property是一個有名稱的資源,如"author""homepage"
  • 一個Property value是屬性的值,比如"Jan Egil Refsnes""http://www.w3ii.com" (note that a property value can be another resource)

下面的RDF文檔可以描述資源"http://www.w3ii.com/rdf"

<?xml version="1.0"?>

<RDF>
  <Description about="http://www.w3ii.com/rdf">
    <author>Jan Egil Refsnes</author>
    <homepage>http://www.w3ii.com</homepage>
  </Description>
</RDF>

上面的例子被簡化。 命名空間被省略。


RDF陳述

資源,屬性和屬性值的組合形成了一個Statement (known as the subject, predicate and object of a Statement)

讓我們來看看一些例子語句來更好地理解:

聲明: "The author of http://www.w3ii.com/rdf is Jan Egil Refsnes"

  • 上述聲明的主題是:http://www.w3ii.com/rdf
  • 謂詞是:作家
  • 目的是:一月埃伊爾的Refsnes

聲明: "The homepage of http://www.w3ii.com/rdf is http://www.w3ii.com"

  • 上述聲明的主題是:http://www.w3ii.com/rdf
  • 謂詞是:首頁
  • 的對象是:http://www.w3ii.com

RDF示例

下面是從CD-列表中有兩個記錄:

標題 藝術家 國家 公司 價錢
帝國滑稽 鮑勃·迪倫 美國 哥倫比亞 10.90 1985年
隱藏你的心臟 健美的Tyler 聯合王國 CBS唱片公司 9.90 1988年

下面是一個RDF文檔的幾行:

<?xml version="1.0"?>

<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cd="http://www.recshop.fake/cd#">

<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>

<rdf:Description
rdf:about="http://www.recshop.fake/cd/Hide your heart">
  <cd:artist>Bonnie Tyler</cd:artist>
  <cd:country>UK</cd:country>
  <cd:company>CBS Records</cd:company>
  <cd:price>9.90</cd:price>
  <cd:year>1988</cd:year>
</rdf:Description>
.
.
.
</rdf:RDF>

在RDF文檔的第一行是XML聲明。 XML聲明之後是RDF文檔的根元素: <rdf:RDF>

xmlns:rdf命名空間,指定的RDF前綴的元素來自命名空間"http://www.w3.org/1999/02/22-rdf-syntax-ns#"

xmlns:cd命名空間,指定與CD前綴的元素都從命名空間中"http://www.recshop.fake/cd#"

<rdf:Description>元素包含標識的資源的描述rdf:about屬性。

元素: <cd:artist>, <cd:country>, <cd:company>,等都是資源的屬性。


RDF在線驗證

W3C的RDF驗證服務學習RDF時非常有用。 在這裡,您可以用RDF文件進行試驗。

在線RDF驗證器解析您的RDF文檔,檢查你的語法,並生成表格和您的RDF文件的圖形視圖。

複製並粘貼下面的例子到W3C的RDF驗證:

<?xml version="1.0"?>

<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:si="http://www.w3ii.com/rdf/">
<rdf:Description rdf:about="http://www.w3ii.com">
  <si:title>w3ii.com</si:title>
  <si:author>Jan Egil Refsnes</si:author>
</rdf:Description>
</rdf:RDF>

當你分析上面的例子中, 結果會是這個樣子


RDF元素

RDF的主要元素是根元素,<RDF>和<Description>元素,它標識資源。


<rdf:RDF>元素

<RDF:RDF>是一個RDF文檔的根元素。 它定義了XML文檔是一個RDF文檔。 它還包含了RDF命名空間的引用:

<?xml version="1.0"?>

<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  ...Description goes here...
</rdf:RDF>

<rdf:Description>元素

<rdf:Description>元素標識與資源about的屬性。

<rdf:Description>元素包含描述資源要素:

<?xml version="1.0"?>

<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cd="http://www.recshop.fake/cd#">

<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>

</rdf:RDF>

元素,藝術家,國家,企業,價格,和今年,是在HTTP中定義://www.recshop.fake/cd#命名空間。 該命名空間是外面的RDF (and not a part of RDF) 。 RDF只定義了框架。 元素,藝術家,國家,企業,價格,一年,必須由別人(公司,機構,人員等)來定義。


屬性屬性

該屬性的元素也可以被定義為屬性(instead of elements)

<?xml version="1.0"?>

<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cd="http://www.recshop.fake/cd#">

<rdf:Description
rdf:about="http://www.recshop.fake/cd/Empire Burlesque"
cd:artist="Bob Dylan" cd:country="USA"
cd:company="Columbia" cd:price="10.90"
cd:year="1985" />

</rdf:RDF>

屬性,如資源

酒店元件也可以定義為資源:

<?xml version="1.0"?>

<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cd="http://www.recshop.fake/cd#">

<rdf:Description
rdf:about="http://www.recshop.fake/cd/Empire Burlesque">
  <cd:artist rdf:resource="http://www.recshop.fake/cd/dylan" />
  ...
  ...
</rdf:Description>

</rdf:RDF>

在上面的例子中,屬性藝術家不具有價值,但包含有關藝術家信息的資源的參考。


RDF容器

RDF容器用於描述事物基。

下面的RDF元素用來描述基團:<袋>,<SEQ>和<Alt>


<rdf:Bag>元素

所述<rdf:Bag>元素,用於描述不具有要在一個特定的順序值的列表。

<rdf:Bag>元素可以包含重複值。

<?xml version="1.0"?>

<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cd="http://www.recshop.fake/cd#">

<rdf:Description
rdf:about="http://www.recshop.fake/cd/Beatles">
  <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>
</rdf:Description>

</rdf:RDF>

<rdf:Seq>元素

<rdf:Seq>元素被用來描述值的有序列表(For example, in alphabetical order)

<rdf:Seq>元素可以包含重複值。

<?xml version="1.0"?>

<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cd="http://www.recshop.fake/cd#">

<rdf:Description
rdf:about="http://www.recshop.fake/cd/Beatles">
  <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>
</rdf:Description>

</rdf:RDF>

<rdf:Alt>元素

<rdf:Alt>元素被用來形容替代值的列表(the user can select only one of the values)

<?xml version="1.0"?>

<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cd="http://www.recshop.fake/cd#">

<rdf:Description
rdf:about="http://www.recshop.fake/cd/Beatles">
  <cd:format>
    <rdf:Alt>
      <rdf:li>CD</rdf:li>
      <rdf:li>Record</rdf:li>
      <rdf:li>Tape</rdf:li>
    </rdf:Alt>
  </cd:format>
</rdf:Description>

</rdf:RDF>

RDF條款

在上面我們已經談到的例子"list of values"描述容器元素時。 在RDF中,這些"list of values"被稱為成員。

因此,我們有以下幾點:

  • 容器是包含事物的資源
  • 所包含的事物被稱為成員(not list of values)

RDF集合

RDF集合描述只能包含特定成員的組。


rdf:parseType="Collection"屬性

正如在前面的章節看到,容器說,包含資源的成員 - 它不說,其他成員都是不允許的。

RDF集合用於描述只能包含特定成員的組。

集合由屬性RDF描述:parseType =“收集”。

<?xml version="1.0"?>

<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cd="http://recshop.fake/cd#">

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

</rdf:RDF>

RDF Schema和應用程序類

RDF模式(RDFS)是一個擴展到RDF。

RDF描述了類,屬性和價值的資源。

此外,RDF還需要一種方法來定義特定應用的類和屬性。 應用程序特定的類和屬性必須使用擴展RDF定義。

一個這樣的擴展RDF Schema中。


RDF模式(RDFS)

RDF Schema中並不提供實際的應用程序特定的類和屬性。

相反,RDF Schema提供了描述特定應用類和屬性的框架。

在RDF Schema中的類是很像的面向對象編程語言類。 這允許資源被定義為類的子類的類的實例,。


RDFS例子

下面的示例演示了一些RDFS設施:

<?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>

在上面的例子中,資源"horse"是類的一個子類"animal"


例如縮

類,而不是RDF:由於一個RDFS類是一個RDF資源,我們可以通過使用RDFS縮寫上面的例子說明,並刪除RDF:類型信息:

<?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>

而已!


都柏林核心

都柏林核心元數據倡議(DCMI)已創建了一些預定義的屬性描述文件。

RDF是元數據(data about data) 。 RDF是用來描述的信息資源。

都柏林核心是一套描述文檔的預定義屬性。

第一都柏林核心性能的定義Metadata Workshop in Dublin, Ohio於1995年,目前由維護都柏林核心元數據計劃

屬性 定義
貢獻者 負責作出貢獻的資源內容的實體
覆蓋 資源的內容的程度或範圍
創造者 使得資源的內容負主要責任的實體
格式 資源的物理或數字表現形式
日期 事件在資源的生命週期一個日期
描述 資源的內容的說明
識別碼 一個明確的參考資源在給定範圍內
語言 資源的知識內容的語言
出版者 負責使得資源內容可用的實體
關係 參考對相關資源
權利 有關權限信息,並通過資源舉行
資源 評價的參考資源作為目前資源的來源
學科 資源內容的話題
標題 考慮到資源的名稱
類型 資源的內容的性質或類型

上述快速看看表顯示,RDF是非常適合表示都柏林核心信息。


RDF示例

下面的例子演示了使用一些RDF文檔在都柏林核心屬性:

<?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.w3ii.com">
  <dc:description>w3ii - Free tutorials</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>

RDF參考

在RDF命名空間(xmlns:rdf)是: http://www.w3.org/1999/02/22-rdf-syntax-ns#

該RDFS命名空間(xmlns:rdfs )是: http://www.w3.org/2000/01/rdf-schema#

建議的文件擴展名RDF文件是.rdf 。 然而,擴展.xml通常被用來提供與舊XML解析器兼容性。

MIME類型應該是"application/rdf+xml"


RDFS / RDF類

元件 等級 子類
rdfs:Class All classes  
rdfs:Datatype Data types Class
rdfs:Resource All resources Class
rdfs:Container Containers Resource
rdfs:Literal Literal values (text and numbers) Resource
rdf:List Lists Resource
rdf:Property Properties Resource
rdf:Statement Statements Resource
rdf:Alt Containers of alternatives Container
rdf:Bag Unordered containers Container
rdf:Seq Ordered containers Container
rdfs:ContainerMembershipProperty Container membership properties Property
rdf:XMLLiteral XML literal values Literal

RDFS / RDF屬性

元件 範圍 描述
rdfs:domainPropertyClass 資源域
rdfs:rangePropertyClass 資源的範圍
rdfs:subPropertyOfPropertyProperty 該物業是一個屬性的子屬性
rdfs:subClassOfClassClass 該資源是一個類的子類
rdfs:commentResourceLiteral 資源的可讀描述
rdfs:labelResourceLiteral 人類可讀的標籤(name)資源的
rdfs:isDefinedByResourceResource 資源的定義
rdfs:seeAlsoResourceResource 有關資源的附加信息
rdfs:memberResourceResource 資源的構件
rdf:firstListResource
rdf:restListList
rdf:subjectStatementResource 資源在一個RDF陳述的主題
rdf:predicateStatementResource 資源在一個RDF陳述的謂詞
rdf:objectStatement Resource 資源在一個RDF陳述的對象
rdf:valueResourceResource 用於值的屬性
rdf:typeResourceClass 該資源是一個類的實例

RDF屬性

屬性 描述
rdf:about 定義所描述的資源
rdf:Description 容器為資源的描述
rdf:resource 定義的資源,以確定一個屬性
rdf:datatype 定義了一個元素的數據類型
rdf:ID 定義了一個元素的ID
rdf:li 定義列表
rdf:_ n 定義一個節點
rdf:nodeID 定義一個元素節點的ID
rdf:parseType 定義了一個元件應該如何被解析
rdf:RDF 一個RDF文檔的根
xml:base 定義XML基地
xml:lang 定義元素內容的語言