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.org.cn/rdf/">
<rdf:Description rdf:about="https://w3schools.org.cn">
<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.org.cn/rdf”
- Property(属性)是一个具有名称的资源,例如“author”或“homepage”
- Property value(属性值)是属性的值,例如“Jan Egil Refsnes”或“https://w3schools.org.cn”(请注意,属性值可以是另一个资源)
下面的 RDF 文档可以描述资源“https://w3schools.org.cn/rdf”
<?xml version="1.0"?>
<RDF>
<Description about="https://w3schools.org.cn/rdf">
<author>Jan Egil Refsnes</author>
<homepage>https://w3schools.org.cn</homepage>
</Description>
</RDF>
上面的示例是简化的。省略了命名空间。
RDF 语句
资源、属性和属性值的组合形成一个Statement(语句),也称为subject(主语)、predicate(谓语)和object(宾语)。
让我们看一些示例语句以更好地理解
语句:“https://w3schools.org.cn/rdf 的作者是 Jan Egil Refsnes”。
- 上面语句的主语是:https://w3schools.org.cn/rdf
- 谓语是:author
- 宾语是:Jan Egil Refsnes
语句:“https://w3schools.org.cn/rdf 的主页是 https://w3schools.org.cn”。
- 上面语句的主语是:https://w3schools.org.cn/rdf
- 谓语是:homepage
- 宾语是:https://w3schools.org.cn
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.org.cn/rdf/">
<rdf:Description rdf:about="https://w3schools.org.cn">
<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.org.cn">
<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 | 定义元素内容的语言 |