XML RDF
RDF 文件示例
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:si="https://w3schools.tw/rdf/">
<rdf:Description rdf:about="https://w3schools.tw">
<si:title>W3Schools</si:title>
<si:author>Jan Egil Refsnes</si:author>
</rdf:Description>
</rdf:RDF>
什麼是 RDF?
- RDF 代表 Resource Description Framework(資源描述框架)
- RDF 是一個用於描述 Web 上資源的框架
- RDF 被設計成供計算機閱讀和理解
- RDF 不適合顯示給人們看
- RDF 是用 XML 編寫的
- RDF 是 W3C 語義網活動的一部分
- RDF 是 W3C 於 2004 年 2 月 10 日釋出的推薦標準
RDF - 使用示例
- 描述購物商品的屬性,例如價格和可用性
- 描述 Web 事件的時間表
- 描述 Web 頁面的資訊(內容、作者、建立和修改日期)
- 描述 Web 圖片的內容和評分
- 為搜尋引擎描述內容
- 描述電子圖書館
RDF 被設計成供計算機閱讀
RDF 被設計成提供一種通用的資訊描述方式,以便計算機應用程式能夠閱讀和理解。
RDF 描述不適合在 Web 上顯示。
RDF 是用 XML 編寫的
RDF 文件是用 XML 編寫的。RDF 使用的 XML 語言稱為 RDF/XML。
透過使用 XML,RDF 資訊可以在不同型別的計算機之間輕鬆交換,這些計算機使用不同型別的作業系統和應用程式語言。
RDF 和“語義網”
RDF 語言是 W3C 語義網活動的一部分。W3C 的“語義網願景”是一個未來,其中
- Web 資訊具有精確的含義
- Web 資訊可以被計算機理解和處理
- 計算機可以整合 Web 上的資訊
RDF 使用 Web 識別符號(URI)來標識資源。
RDF 使用屬性和屬性值來描述資源。
RDF 資源、屬性和屬性值
RDF 使用 Web 識別符號(URI)來標識事物,並使用屬性和屬性值來描述資源。
資源、屬性和屬性值的解釋
- Resource(資源)是任何可以具有 URI 的事物,例如“https://w3schools.tw/rdf”
- Property(屬性)是一個具有名稱的資源,例如“author”或“homepage”
- Property value(屬性值)是屬性的值,例如“Jan Egil Refsnes”或“https://w3schools.tw”(請注意,屬性值可以是另一個資源)
下面的 RDF 文件可以描述資源“https://w3schools.tw/rdf”
<?xml version="1.0"?>
<RDF>
<Description about="https://w3schools.tw/rdf">
<author>Jan Egil Refsnes</author>
<homepage>https://w3schools.tw</homepage>
</Description>
</RDF>
上面的示例是簡化的。省略了名稱空間。
RDF 語句
資源、屬性和屬性值的組合形成一個Statement(語句),也稱為subject(主語)、predicate(謂語)和object(賓語)。
讓我們看一些示例語句以更好地理解
語句:“https://w3schools.tw/rdf 的作者是 Jan Egil Refsnes”。
- 上面語句的主語是:https://w3schools.tw/rdf
- 謂語是:author
- 賓語是:Jan Egil Refsnes
語句:“https://w3schools.tw/rdf 的主頁是 https://w3schools.tw”。
- 上面語句的主語是:https://w3schools.tw/rdf
- 謂語是:homepage
- 賓語是:https://w3schools.tw
RDF 示例
這是 CD 列表中的兩個記錄
Title(標題) | Artist(藝術家) | Country | Company(公司) | Price | Year(年份) |
---|---|---|---|---|---|
Empire Burlesque | Bob Dylan | USA | Columbia | 10.90 | 1985 |
Hide your heart | Bonnie Tyler | UK | CBS Records | 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="https://w3schools.tw/rdf/">
<rdf:Description rdf:about="https://w3schools.tw">
<si:title>W3Schools.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#">
...此處放置描述...
</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>
元素 artist、country、company、price 和 year 在 http://www.recshop.fake/cd# 名稱空間中定義。這個名稱空間在 RDF 之外(不是 RDF 的一部分)。RDF 只定義了框架。artist、country、company、price 和 year 這些元素必須由其他人(公司、組織、個人等)定義。
屬性作為屬性
屬性元素也可以定義為屬性(而不是元素)
<?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>
在上面的示例中,屬性 artist 沒有值,而是指向一個包含藝術家資訊的資源的引用。
RDF 容器
RDF 容器用於描述事物的集合。
以下 RDF 元素用於描述組:<Bag>、<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> 元素用於描述一個有序的值列表(例如,按字母順序)。
<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> 元素用於描述一個替代值列表(使用者只能選擇其中一個值)。
示例
<?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 術語
在上面的示例中,我們在描述容器元素時提到了“值列表”。在 RDF 中,這些“值列表”稱為成員。
因此,我們有以下內容
- 容器是一個包含事物的資源
- 包含的事物稱為成員(而不是值列表)
RDF 集合
RDF 集合描述了只能包含指定成員的組。
rdf:parseType="Collection" 屬性
如前一章所示,容器表示包含的資源是成員——它並不表示不允許其他成員。
RDF 集合用於描述只能包含指定成員的組。
集合透過屬性 rdf:parseType="Collection" 進行描述。
示例
<?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 Schema (RDFS) 是 RDF 的擴充套件。
RDF 使用類、屬性和值來描述資源。
此外,RDF 還需要一種方法來定義應用程式特定的類和屬性。應用程式特定的類和屬性必須使用 RDF 的擴充套件來定義。
其中一個擴充套件是 RDF Schema。
RDF Schema (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”的子類。
示例縮寫
由於 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>
就是這樣!
Dublin Core
Dublin Core 元資料倡議 (DCMI) 建立了一些預定義的屬性來描述文件。
RDF 是元資料(關於資料的資料)。RDF 用於描述資訊資源。
Dublin Core 是一組預定義的屬性,用於描述文件。
最初的 Dublin Core 屬性是在 1995 年於俄亥俄州都柏林的元資料研討會上定義的,目前由 Dublin Core 元資料倡議維護。
屬性 | Definition(定義) |
---|---|
Contributor(貢獻者) | 對資源內容做出貢獻的實體 |
Coverage(覆蓋範圍) | 資源的文字範圍或範圍 |
Creator(建立者) | 主要負責資源內容製作的實體 |
格式 | 資源的物理或數字表現形式 |
Date | 資源生命週期中的一個事件日期 |
描述 | 對資源內容的說明 |
Identifier(識別符號) | 在給定上下文中對資源的明確引用 |
Language(語言) | 資源的智力內容的語言 |
Publisher(釋出者) | 負責使資源可用的實體 |
Relation(相關性) | 對相關資源的引用 |
Rights(權利) | 有關資源所擁有和持有的資訊 |
Source(來源) | 對當前資源派生出的資源進行引用 |
主題 | 資源的某主題 |
Title(標題) | 給資源起的名稱 |
型別 | 資源的性質或型別 |
快速瀏覽上表表明 RDF 非常適合表示 Dublin Core 資訊。
RDF 示例
以下示例演示了在 RDF 文件中使用一些 Dublin Core 屬性
<?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="https://w3schools.tw">
<dc:description>W3Schools - 免費教程</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 類
元素 | Class of(類別) | Subclass of(子類) |
---|---|---|
rdfs:Class | 所有類 | |
rdfs:Datatype | 資料型別 | 類 |
rdfs:Resource | 所有資源 | 類 |
rdfs:Container | 容器 | 資源 (Resource) |
rdfs:Literal | 字面值(文字和數字) | 資源 (Resource) |
rdf:List | 列表 | 資源 (Resource) |
rdf:Property | 屬性 | 資源 (Resource) |
rdf:Statement | Statements | 資源 (Resource) |
rdf:Alt | 替代項的容器 | Container(容器) |
rdf:Bag | 無序容器 | Container(容器) |
rdf:Seq | 有序容器 | Container(容器) |
rdfs:ContainerMembershipProperty | 容器成員屬性 | 屬性 |
rdf:XMLLiteral | XML 字面值 | Literal(字面值) |
RDFS / RDF 屬性
元素 | Domain(定義域) | 範圍 | 描述 |
---|---|---|---|
rdfs:domain | 屬性 | 類 | 資源的定義域 |
rdfs:range | 屬性 | 類 | 資源的範圍 |
rdfs:subPropertyOf | 屬性 | 屬性 | 該屬性是一個屬性的子屬性 |
rdfs:subClassOf | 類 | 類 | 該資源是一個類的子類 |
rdfs:comment | 資源 (Resource) | Literal(字面值) | 資源的易讀描述 |
rdfs:label | 資源 (Resource) | Literal(字面值) | 資源的易讀標籤(名稱) |
rdfs:isDefinedBy | 資源 (Resource) | 資源 (Resource) | 資源的定義 |
rdfs:seeAlso | 資源 (Resource) | 資源 (Resource) | 資源的附加資訊 |
rdfs:member | 資源 (Resource) | 資源 (Resource) | 資源的成員 |
rdf:first | List(列表) | 資源 (Resource) | |
rdf:rest | List(列表) | List(列表) | |
rdf:subject | 語句 | 資源 (Resource) | RDF 語句中資源的 the subject(主語) |
rdf:predicate | 語句 | 資源 (Resource) | RDF 語句中資源的 the predicate(謂語) |
rdf:object | 語句 | 資源 (Resource) | RDF 語句中資源的 the object(賓語) |
rdf:value | 資源 (Resource) | 資源 (Resource) | 用於值的屬性 |
rdf:type | 資源 (Resource) | 類 | 該資源是一個類的例項 |
RDF 屬性
Attribute | 描述 |
---|---|
rdf:about | 定義要描述的資源 |
rdf:Description | 資源描述的容器 |
rdf:resource | 定義一個資源來標識一個屬性 |
rdf:datatype | 定義元素的 V資料型別 |
rdf:ID | 定義元素的 ID |
rdf:li | 定義一個列表 |
rdf:_n | 定義一個節點 |
rdf:nodeID | 定義元素節點的 ID |
rdf:parseType | 定義如何解析元素 |
rdf:RDF | RDF 文件的根 |
xml:base | 定義 XML 基 |
xml:lang | 定義元素內容的語言 |