XML - 資料交換管理/RDF - 資源描述框架
| 上一章 | 下一章 |
| ← JSTL | RSS → |
作者: Sascha Meissner | 編輯: Laura Bashaw
編輯狀態: 草稿
修改日期: 2004 年 12 月 6 日
完成本章後,您將能夠
- 瞭解資源描述框架 (RDF)
- 使用 RDF 為網路資源定義元資料
- 在您的描述中包含都柏林核心等標準
- 探索 Adobe 如何處理元資料
- 建立您自己的個人屬性來擴充套件您的描述
資源描述框架 (RDF) 是一種用於在全球資訊網上編碼、交換和重用元資料的術語。元資料是關於資料的結構化資料,包括關於資源的任何重要型別的資訊,例如作者、標題、建立時間或語言。資源是可以用統一資源識別符號 (URI) 定址的任何事物。例如,網頁或特定型別的文件。RDF 將描述視為對這些資源的屬性(屬性、特徵)和相互關係做出陳述的行為。框架是一種包含或管理關於資源的各種資訊的通用模型。
為什麼我們不使用 XML 來描述事物?
- XML 太靈活了。描述事物的方式太多了。例如,人的姓名(參見程式碼示例)。每個 XML 文件都將對映到不同的邏輯樹。但是,查詢(如“人 x 的姓名是什麼”)必須獨立於樹的選擇。RDF 與眾不同,因為它有一種標準的方法來解釋資源的 XML 編碼描述,這將轉換為一個邏輯樹,從而涵蓋描述的所有可能表示形式。
<person name="Pete Maravich">
或者
<person> <name>Pete Maravich</name> </person>
- XML 文件遵循模式。元素的順序受到限制,並且文件無法在不更改模式的情況下擴充套件。RDF 允許列出資訊,而不管它們的順序或外觀。RDF 也是開放式可擴充套件的。這意味著如果收到關於某事或某人的描述,可以輕鬆地新增資訊,而不必侷限於遵循模式。這對於註釋和元資料應用程式來說是一個很大的優勢。除此之外,在不知道 XML 模式的情況下,很難從 XML 文件中檢索任何語義意義。
RDF 是 XML 的一個應用程式,它強制執行必要的結構約束以提供表達語義的明確方法。XML 語法保證供應商獨立性、可擴充套件性、驗證和表示複雜結構的能力。RDF 擴充套件了一般的 XML 語法和模型,使其專用於描述資源。此外,RDF 使用 XML 名稱空間來限定和唯一標識一組屬性。使用指向 URI 的名稱空間,可以為其資源生成全域性唯一名稱。唯一名稱不需要上下文來限定。
RDF 是多個元資料社群走到一起以構建一個健壯且靈活的體系結構以支援現有網路上的元資料的成果。第一個 RDF 規範由 Ora Lassila 和 Ralph Swick 於 1997 年釋出。基於該規範,RDF 興趣小組在隨後的幾年裡成立,RDF 成為 W3C 建議
(W3C RDF)。RDF 的潛力很快被認識到,一旦其使用範圍廣泛,其影響將是巨大的。Ora Lassila 說過以下的話 (W3C_NOTE_1997-11-13)。
除了人類可讀的元資料顯示之外,RDF 還旨在實現不同應用程式之間資訊交換,而不會丟失任何意義。但是,應用程式之間有效使用元資料需要關於語義語法和結構的通用約定。RDF 強加了這些約定,使無歧義的傳輸成為可能。應用領域包括資源描述、站點地圖、內容評級、電子商務、協作服務和隱私偏好。早期,元資料互操作性的主要障礙之一是用於元資料語法和模式定義語言的多種不相容標準。但是,由於 RDF 是 W3C 建議,並且社群提供了描述事物的標準詞彙,應用程式設計人員和開發人員可以建立允許以標準化方式交換元資料的應用程式。
使用 RDF,可以對資源做出陳述。您可以在下面看到一個關於網頁的陳述示例。陳述的關鍵部分已突出顯示
http://www.example.org/index.html 的 作者 姓名是 Pete Maravich。
通常,RDF 語句是一個三元組,它包含一個
- 資源,語句的主語
- 屬性,語句的謂語
- 值,語句的賓語
RDF 基於這樣的概念:每個資源都可以擁有不同的屬性,這些屬性具有值。資源由 URI 引用表示,可以使用屬性及其值進行完整描述。此網頁的其他屬性可能是
http://www.example.org/index.html 的 語言 是 英語。
或者
http://www.example.org/index.html 的 標題 是 Example_Title。
RDF 語句是一個結構化的三元組,包含主體、謂詞和賓語。一組這樣的三元組被稱為圖,其中主體始終是節點,謂詞始終是弧,賓語始終是節點。
一組示例語句可以用以下圖表示
| 主體 | http://www.example.org/index.html | 要麼是 URI 引用,要麼是空白節點。 |
| 謂詞 | http://purl.org/dc/elements/1.1/Title | 是 URI 引用。 |
| 賓語 | Example_Title | 可以是 URI 引用、文字或空白節點。 |
表示 RDF 概念模型的自然英語句子和圖對於理解 RDF 的基礎知識非常有用。但是 RDF 使用一種規範的 XML 語法稱為 RDF/XML 來記錄和交換圖。與 HTML 類似,RDF/XML 是機器可處理的,並且可以使用 URI 連結資訊片段。但與傳統的超文字不同,RDF URI 可以引用任何可識別的實體,包括可能無法在 Web 上直接檢索的實體(例如人員)。
以下幾行表示圖 2 中的圖在 RDF/XML 中。
1 |
<?xml version="1.0"?><br>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:property="http://www.example.org/properties/"> <br>
<rdf:Description rdf:about="http://www.example.org/index.html">
<property:author>Pete Maravich</property:author>
</rdf:Description> <br>
<rdf:Description rdf:about="http://www.example.org/index.html">
<dc:language>en</dc:language>
</rdf:Description> <br>
<rdf:Description rdf:about="http://www.example.org/index.html">
<dc:title>Example_Title</dc:title>
</rdf:Description> <br>
</rdf:RDF>
|
圖 3 - example_rdf.rdf
讓我們檢查程式碼行以更好地理解語法。
- {1} XML 宣告,標識文件在當前版本 1.0 中為 XML
- {2} 一個 rdf:RDF 元素的開始,標識以下程式碼為 RDF - 還聲明瞭一個 XML 名稱空間 rdf,所有以字首 rdf: 開頭的標籤都是名稱空間的一部分,該名稱空間由 URIref http://www.w3.org/1999/02/22-rdf-syntax-ns# 標識,該名稱空間描述了 RDF 詞彙表
- {3} 宣告一個 XML 名稱空間 dc,所有以字首 dc: 開頭的標籤都是名稱空間的一部分,該名稱空間由 URIref http://purl.org/dc/elements/1.1/ 標識 - 連結 定義了元資料項的標準詞彙表
- {4} 宣告一個 XML 名稱空間 property,所有以字首 property: 開頭的標籤都是名稱空間的一部分,該名稱空間由 URIref http://www.example.org/properties/ 標識 - 此 URI 是虛構的,選擇它是為了表明可以建立自己的詞彙表來描述資源
- {5 到 7} 代表了關於資源 http://www.example.org/index.html 的特定語句,如示例所示 - 第 5 行聲明瞭描述的主體 - 第 6 行提供了一個屬性元素,限定名稱 property 是一個縮寫,代表分配的名稱空間(第 4 行),property:author 代表 http://www.example.org/properties/author - 嵌入在屬性標籤中的是描述的值(賓語),作為純文字
- {8 到 10} 顯示了另一個語句 - 第 8 行再次提供主體 - dc:language 指定了語句的謂詞,http://purl.org/dc/elements/1.1/language - 文字 'en' 是英語的國際標準雙字母程式碼
- {11 到 13} 顯示了另一個語句 - 第 10 行到標識主體 - dc:title 指定了語句的謂詞,http://purl.org/dc/elements/1.1/title - 值 Example_Title 是賓語
- {14} 結束 rdf:RDF 元素
第 3 節介紹了 RDF 的基本結構,旨在提供對該主題的基本瞭解。下一節將介紹 RDF 的一些高階結構和功能。
結構化屬性值和空白節點
如前所述,語句的賓語可以是文字、空白節點或 URI 引用。後兩者使 RDF 更加強大,因為它們允許建立複雜的結構,即所謂的結構化屬性值。例如,您考慮描述某人的地址。地址是一個結構,它由不同的值組成,例如街道、城市、州和郵政編碼。在 RDF 中,會將地址標識為資源以允許更詳細的描述。
如您所見,屬性 creator 的值由使用 URI http://www.example.org/members/1234 的引用表示。然後可以將 RDF 語句(附加的弧和節點)與該節點作為主體一起寫入,以表示其他資訊,例如建立者的姓名和他的地址。屬性 adress 本身由一個 URI 表示,該 URI 允許從關於地址的進一步語句中聚合詳細的描述。
但是 URIref http://www.example.org/address/1234 可能永遠不需要從特定圖之外直接引用,因此可能不需要特定的識別符號。以上概念也可以透過使用空白節點來表示地址物件。空白節點被稱為匿名資源,它們沒有 URIref 也沒有文字。
圖 5 - 使用空白節點的結構化 RDF 圖
在 RDF/XML 中,結構化屬性值和空白節點的概念表示如下
1 |
<?xml version="1.0"?><br>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:property="http://www.example.org/properties/"> <br>
<rdf:Description rdf:about="http://www.example.org/index.html">
<dc:creator>
<rdf:Description rdf:about="http://www.example.org/members/1234">
<properties:name>Pete Maravich</properties:name>
<properties:address rdf:nodeID="abc"/>
</rdf:Description>
</dc:creator>
</rdf:Description><br>
<rdf:Description rdf:nodeID="abc">
<properties:street>346 Broad Street</properties:street>
<properties:city>Athens</properties:city>
<properties:state>Georgia</properties:state>
</rdf:Description> <br>
</rdf:RDF>
|
圖 6 - structured_rdf.xml
讓我們檢查表示新概念的程式碼行
- {5 到 12} 描述了資源 http://www.example.org/index.html,該資源的值為 http://www.example.org/members/1234
- {7 到 10} 顯示了一種縮寫資源的多個屬性元素的方法 - 通常,一個節點會有多個弧(屬性)從它延伸出來,而不是為每個屬性編寫一個描述,可以透過在描述主體節點的節點元素中使用多個子屬性元素來縮寫此描述
- {9} 顯示瞭如何在 RDF/XML 中標識空白節點 - 有時,圖中的同一個空白節點需要在 RDF/XML 中的多個地方引用 - 如果是這樣,可以為空白節點賦予一個空白節點識別符號以在文件中標識它
- {13-17} 顯示了在第 {9} 行標識的空白節點的屬性和值
都柏林核心元資料倡議 (DCMI) 是一個致力於推廣可互操作元資料標準的廣泛採用和開發專門的元資料詞彙表的組織,用於描述資源,從而實現更智慧的資訊發現系統。
基本上,都柏林核心是一組用於描述文件的元素。都柏林核心的目標是提供一組最少的描述性元素,以支援和簡化類似文件的網路物件的描述和自動索引。網際網路上的發現工具,例如流行的全球資訊網搜尋引擎使用的“網路爬蟲”,會使用元資料集。此外,都柏林核心旨在足夠簡單,以便廣泛的作者和非正式出版商能夠理解和使用它,這些作者和非正式出版商會為網際網路貢獻資訊。(另見 RFC-2413)
都柏林核心元資料元素集 顯示了對都柏林核心定義的所有當前元素的描述。在下面的示例中,可以看到一個 RDF 文件,它使用都柏林核心元素來描述雜誌中的文章
1 |
<?xml version="1.0"?><br>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:dcterms="http://purl.org/dc/terms/"><br>
<rdf:Description rdf:about="http://www.cio.com/archive/101504/km.html">
<dc:title>Less for Success</dc:title>
<dc:creator>Alice Dragoon</dc:creator>
<dc:subject>
<rdf:Bag>
<rdf:li>knowledge management</rdf:li>
<rdf:li>technology investments</rdf:li>
</rdf:Bag>
</dc:subject>
<dc:description>Forget the big bang approach. When it comes to demonstrating the value
of knowledge management, a piecemeal strategy works best.</dc:description>
<dc:publisher>CXO Media</dc:publisher>
<dcterms:issued>October 15, 2004</dcterms:issued>
<dc:format>text/html</dc:format>
<dc:language>en</dc:language>
<dcterms:isPartOf rdf:resource="http://www.cio.com/archive/101504/index.html"/>
</rdf:Description><br>
</rdf:RDF>
|
圖 7 - cio_article.rdf
可擴充套件元資料平臺是一個規範,它描述了基於 RDF 的資料和儲存模型,用於描述任何格式的文件的元資料。XMP 可以包含在文字檔案(如 HTML 或 SVG)、影像格式(如 JPEG 或 GIF)和 Adobe 自身格式(如 Photoshop 或 Acrobat)中。Adobe 正在努力讓所有應用程式都支援 XMP。但是 Adobe 聲稱XMP 提供了一種用於建立、處理和交換元資料的標準格式,該規範不是標準。
XMP 提供以下功能:
- 資料模型 - 作為一種有用且靈活的方式來描述文件中的元資料。
- 儲存模型 - 用於實現資料模型。這包括將元資料序列化為 XML 和 XMP 資料包流,以及將資料打包到檔案中的方法。
- 模式 - 預定義的元資料屬性定義集,這些定義與各種應用程式相關,包括所有 Adobe 的編輯和出版產品,以及來自各種供應商的應用程式。XMP 還提供擴充套件和新增模式的指南。
但是 XMP 元資料詞彙表相對較小,即描述文件的方式有限。為了克服這個問題,Adobe 使用了都柏林核心等元資料標準,並且還允許使用者定義自己的元資料詞彙表。
以下螢幕截圖來自 Acrobat Professional 6.0 的文件元資料功能。描述欄位允許使用者定義元資料,而高階選項卡顯示元資料的概述。在源檢視下,可以看到 RDF/XML 中的元資料。
Abobe XMP 示例
圖 8 - Adobe XMP 示例
該文件的元資料以 RDF/XML 格式表示,可以 此處 獲取。屬性 funFactor 表示文件的趣味性。它使用 Acrobat Professional 的“載入”功能新增,旨在測試將任意元資料新增到 Acrobat Professional 已知的屬性中。
RDF 網站摘要 (RSS) 也是 RDF 的一種應用。請檢視本華夏公益教科書中關於 RSS 的章節。
正如本章前面所述,儘管使用了諸如都柏林核心之類的標準,您仍然可以建立自己的 RDF 元資料詞彙表。本節旨在展示建立個人詞彙表的一種非常通用的方法。有關詳細說明,請參閱Practical RDF - Powers 2003。
建立詞彙表的第一個步驟是在給定的興趣領域內定義領域元素及其屬性。這意味著您需要概述應該描述關於資源的哪些資訊。假設我們要儲存以下關於資源的事實:
| 屬性 | 描述 |
| 標題 | 資源的標題 |
| 建立日期 | 建立日期 |
| 作者 | 資源的作者 |
| 狀態 | 資源的當前狀態 |
| 主體 | 資源的主題 |
| 格式 | 資源的格式 |
| FunFactor | 資源的趣味性 |
下一步是為新的詞彙表建立一個 RDF Schema (RDFS) 文件。
此處您可以看到我們所需屬性的定義。使用此 RDFS,我們可以以下列方式描述上面看到的文章:
1 |
<?xml version="1.0"?><br>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:same="http://mitglied.lycos.de/virtuoso5/elements/1.0/myschema#"><br>
<rdf:Description rdf:about="http://www.cio.com/archive/101504/km.html">
<same:title>Less for Success</same:title>
<same:author>Alice Dragoon</same:author>
<same:subject>
<rdf:Bag>
<rdf:li>knowledge management</rdf:li>
<rdf:li>technology investments</rdf:li>
</rdf:Bag>
</same:subject>
<same:format>text/html</same:format>
<same:status>active</same:status>
<same:created>2004-10-19</same:created>
<same:funFactor>3</same:funFactor>
</rdf:Description><br>
</rdf:RDF>
|
圖 9 - cio_article2.rdf
為了驗證其 RDFS 和 RDF 檔案,您可以使用 W3C RDF 驗證器.
- 建立一個 RDF/XML 文件,描述您選擇的文章(例如來自 CIO.com 或 ZDNet.com 的雜誌文章)。使用都柏林核心 元素集 和都柏林核心 術語 作為您的描述框架。完成文件後,請使用以下工具驗證您的工作:
W3C RDF 驗證器.
- RDF Primer - W3C 建議 2004 年 2 月 10 日,http://www.w3.org/TR/rdf-primer/
- Shelley Powers - Practical RDF, O'Reilly 2003
- Tim Berners-Lee Why RDF model is different from the XML model, September 1998, http://www.w3.org/DesignIssues/RDF-XML.html
- 都柏林核心元資料倡議 - http://dublincore.org/
- Adobe XMP - http://www.adobe.com/products/xmp/main.html
- XML.com - XMP Lowdown, http://www.xml.com/pub/a/2004/09/22/xmp.html


