Copyright © 2004-2026 World Wide Web Consortium. W3C® liability, trademark and permissive document license rules apply.
资源描述框架(RDF)是一个用于 在 Web 上表示信息的框架。 本文档定义了一种抽象数据模型, 用于连接所有基于 RDF 的语言和规范。 该抽象数据模型具有两个关键数据结构:
与 RDF 1.1 相比,RDF 1.2 引入了将一个 RDF 三元组 作为 三元组项,用于另一个 三元组的 宾语位置的能力。 RDF 1.2 还引入了带方向的语言标记字符串, 它们包含一个基方向组件,允许为用户代理的呈现指定 初始文本方向。 最后,为了简化从 RDF 1.1 到 RDF 1.2 的过渡, 本规范引入了一种机制,用于 显式传达 给定数据片段所使用的 RDF 版本。
本规范引入了 RDF 1.2 的关键概念和术语,随后讨论 数据类型,以及 RDF 图中 IRI 内片段标识符的处理。
本节描述本文档在发布时的状态。 当前 W3C 出版物列表以及本技术报告的最新修订版本,可在 W3C 标准和草案 索引中找到。
本文档是 RDF 1.2 文档套件的一部分。 它是 RDF 1.2 的核心规范,并定义了核心 RDF 概念。 构建在本文档之上的若干 RDF 1.2 规范的测试套件和实现报告可从 rdf-tests 仓库 中的 rdf-tests/rdf/rdf12 获取,如各规范中所引用。
RDF 1.2 Concepts(本规范)描述了一种抽象数据模型, 并且没有独立的测试套件,因为它并不直接在软件中实现。 相反,它由构建在其之上的规范实现。 因此,要退出 W3C 候选推荐 阶段, W3C RDF & SPARQL 工作组 要求 [RDF12-SEMANTICS] 以及至少一项具体 语法规范(例如 [RDF12-N-TRIPLES]) 已满足其自身的 W3C 候选 推荐阶段退出标准。
RDF 1.2 Concepts 是对 [RDF11-CONCEPTS] 的更新, 后者本身又是对 [RDF-CONCEPTS-20040210] 的更新。
本文档由 RDF & SPARQL 工作组作为 候选推荐快照发布,并使用 推荐标准轨道。
作为候选推荐发布并不 意味着得到 W3C 及其成员的认可。候选 推荐快照已经接受 广泛审查,旨在 收集 实现经验, 并且工作组成员承诺为实现提供 免版税许可。
此即将发布的推荐标准的未来更新可能会纳入 新特性。本候选推荐预计不会早于 2026 年 5 月 5 日 进入推荐标准阶段。
本文档由一个根据 W3C 专利 政策 运行的工作组制作。 W3C 维护一份与该组交付物相关的任何专利 披露的 公开列表; 该页面还包括 披露专利的说明。若个人实际 知悉其认为包含 基本权利要求 的专利,则必须按照 W3C 专利政策第 6 节披露相关信息。
本文档受 2025 年 8 月 18 日 W3C 流程文档约束。
本节是非规范性的。
资源描述框架(RDF)是一个用于 在 Web 上表示信息的框架。
本文档定义了一种抽象数据模型, 用于连接所有基于 RDF 的语言和规范, 包括以下内容:
抽象数据模型的核心结构是一组 三元组,每个三元组由一个主语、 一个谓语和一个宾语组成。这样一组三元组称为 一个 RDF 图。RDF 图可被可视化为一个节点和 有向弧图,其中每个三元组都表示为一个 节点-弧-节点链接。
在 RDF 图中可以出现四种节点:IRI、字面量、 空白 节点,以及三元组项。
根据此定义可以推出,当一个项出现在多个 三元组中时,这些只是同一个项的多次出现。例如,在一个包含两个三元组的图中(此处用常见的 集合和 元组记法表示,并 使用抽象名称作为不同的项):
{ (R1, P1, R3),
(R2, P2, R3) }
项 R3 是同一个单一项被使用了两次,并且总共有五个项。 这在二维图示中更容易展示, 其中一个单一节点可以简单地通过带标签的弧连接到多个其他 节点或由多个其他节点连接而来。
此抽象数据模型可以用不同方式编码,同时 保留相同的结构,如 1.9 RDF 文档 和语法中所述。
任何 IRI 或字面量都指称 世界中的某个事物(“论域”)。 这些事物称为 资源。任何事物都可以是资源, 包括物理事物、文档、抽象概念、数字 和字符串;该术语与 RDF 1.2 Semantics [RDF12-SEMANTICS] 中所用的 “实体”同义。 由一个 IRI 指称的资源称为其 所指对象,由字面量指称的 资源称为其 字面量值。字面量具有 数据类型,用于定义可能 值的范围,例如字符串、数字和日期。特殊种类的字面量 — 带语言标记的字符串和带方向的语言标记字符串 — 分别指称自然语言中的纯文本字符串,以及包含初始文本方向的自然语言纯文本 字符串。
断言一个 RDF 三元组表示:某种关系, 由谓语指示,在由 主语和宾语指称的 资源之间成立 (如下文 所解释,并非所有三元组都会被断言)。 与一个 RDF 三元组对应的这个语句称为 RDF 语句。 谓语本身是一个 IRI,并 指称一个 属性, 即一个可被视为二元关系的资源。 (涉及两个以上实体的关系只能 在 RDF 中间接 表达 [SWBP-N-ARYRELATIONS]。)
不同于 IRI 和字面量, 空白 节点不标识特定 资源。涉及空白节点的语句 表示某个具有给定关系的事物 存在,而不显式命名它。
由一个 IRI指称的资源 也称为其所指对象。对于一些具有特定 含义的 IRI,例如标识 XSD 数据类型的 IRI,其所指对象由 本规范固定。对于所有其他 IRI,任何给定 IRI 究竟指称什么,并不由本 规范定义。其他 规范可以固定 IRI 的所指对象,或 对任何 IRI 的所指对象可能是什么 施加其他约束。
关于确定一个 IRI 的所指对象的准则, 可在其他文档中找到,例如 万维网架构,第一卷 [WEBARCH] 以及 语义 Web 的 Cool URI [COOLURIS]。 以下给出一个非常简略、非正式且不完整的说明:
http://www.w3.org/ns/org# 开头的各种 IRI 的预期所指对象。
IRI 在 Web 架构中也许最重要的特征是它们可以被 解引用, 因而可作为与远程服务器交互的起点。 本规范并不涉及此类交互。 它不定义交互模型。它只将 IRI 视为图数据模型中用于描述资源的全局 唯一标识符。 然而,这些交互对于 关联数据设计问题 [LINKED-DATA] 的概念至关重要,后者使用 RDF 抽象语法和具体 RDF 语法, 后者也称为序列化格式。
RDF 词汇表是一组 旨在用于 RDF 图的 IRI。 例如, [RDF12-SCHEMA] 中记录的 IRI 是 RDF Schema 词汇表。 RDF Schema 本身也可用于定义和记录其他 RDF 词汇表。RDF 1.2 Primer [RDF12-PRIMER] 中提到了一些这样的词汇表。
RDF 词汇表中的 IRI 通常以 一个共同的子串开头,该子串称为命名空间 IRI。 一些命名空间 IRI 按约定与一个称为 命名空间前缀的短名称关联。
| 命名空间前缀 | 命名空间 IRI | RDF 词汇表 |
|---|---|---|
| rdf | http://www.w3.org/1999/02/22-rdf-syntax-ns#
|
RDF 内建词汇表 [RDF12-SCHEMA] |
| rdfs | http://www.w3.org/2000/01/rdf-schema#
|
RDF Schema 词汇表 [RDF12-SCHEMA] |
| xsd | http://www.w3.org/2001/XMLSchema#
|
RDF 兼容的 XSD 类型 |
在一些序列化格式中,常见做法是
将某些 命名空间 IRI 与任意的 命名空间前缀关联起来,
并通过使用相应的 命名空间前缀
来缩写以这些 命名空间 IRI
之一开头的 IRI,从而提高可读性。
例如,
基于上表中的前缀映射,
IRI
http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral
将被缩写为 rdf:XMLLiteral。
但请注意,这样的缩写并非旨在作为 IRI 直接处理,
也不得用于期望 IRI 的语法上下文中。
还请注意,命名空间 IRI 和 命名空间
前缀并不是 RDF 抽象数据模型的正式组成部分。
它们只是用于缩写 IRI 的语法便利;
在处理时,实际 IRI 通过将每个命名空间前缀替换为相应的命名空间
IRI 来重构。
“命名空间”这一术语本身在 RDF 的上下文中没有 明确定义的含义,但有时会被非正式地 用来表示“命名空间 IRI”或“RDF 词汇表”。
三元组项是作为 另一个三元组中的 RDF 项使用的 RDF 三元组。 作为一个 RDF 三元组,它指称一个命题。
具体化三元组是一个三元组,其中谓语为
rdf:reifies,
且宾语是一个三元组项。
该三元组的主语称为具体化者,并且它可以
是其他三元组的
主语或宾语。
具体化者可以指称与三元组项的命题相关的多种事物, 例如该命题成立的语句或信念。 预期具体化者(而非三元组项)将被 用于进一步的语句。 本节简要描述这种常见用法。 更多示例请参见 RDF 1.2 Primer [RDF12-PRIMER]。
例如,下图表示一个具体化三元组,其对象是一个三元组项;并且还包含一个三元组,该三元组将
具体化者
作为主语。
后者将该具体化者描述为一个由 :Bob 提出的主张,即由被具体化的三元组项指称的命题成立。
换言之,:Bob 主张 :Alice 的
姓氏是 "Liddell"。
在此示例中,由三元组项指称的命题(即
:Alice 的姓氏是 "Liddell" 这一命题)并未被声称为
真。
只有当作为三元组项使用的三元组也是 RDF 图中的一个断言三元组时,才会如此。
通过使用如图中所示的未断言三元组项,可以对未断言的
语句作出陈述;
例如,当不确定 :Alice 的姓氏是否确实是
"Liddell" 时。
以下是 图 3 所示图的一个变体。它表示一个图, 其中一个断言三元组对应于一个 具体化三元组的三元组项宾语。 在这种情况下, 包括以具体化者为主语的三元组子集——如这些示例中所示—— 称为三元组注解。
具体语法,例如 Turtle [RDF12-TURTLE],可以为更 简洁地指定具体化三元组和三元组注解 提供快捷写法。
最后,出现在三元组项中的 RDF 项,与它们出现在断言三元组中时,具有相同的
指称,该断言三元组位于
图中。
例如,来自三元组项的项
:Alice 与断言三元组中的
:Alice 都指称同一
资源。
因此,我们说三元组项是
透明的。
如前所述,具体化者旨在服务于广泛的用例:
某个命题为真的语句或信念、
命题为真的情境、
导致命题成为真的事件,
等等。
由于这种多样性,
rdf:reifies 属性的含义是有意保持通用的。
同一抽象命题可以关联多个不同的具体化者, 例如具有不同来源的语句,或 具有不同特征的情境。一个具体化者也可以 用于具体化多个不同的命题, 例如表达同一情境可能源自不同命题这一事实。
由于被具体化的命题不一定成立,因此可以 对任何类型的语句作出陈述,包括一个未断言的 语句,该语句与另一个语句相矛盾,无论后者是否被断言。
RDF 抽象数据模型是非时间性的:RDF 图 是信息的静态快照。
然而,给定适当的 词汇表项,RDF 图可以表达关于事件以及其他实体时间方面的信息。
由于 RDF 图被定义为数学 集合,因此向 RDF 图添加或从其中移除三元组会得到一个不同的 RDF 图。
我们非正式地使用术语 RDF 源来指代 一个持久但可变的 RDF 图来源或容器。RDF 源是一个资源, 可以说它具有会随时间变化的状态。 其状态快照可以表示为一个 RDF 图。 例如,任何具有承载 RDF 表示的 Web 文档 都可被视为 RDF 源。像所有资源一样,RDF 源可以 用 IRI 命名,因此也可以在 其他 RDF 图中被描述。
直观地说,论域中的变化 可以通过以下方式体现:
由于 RDF 图是三元组的集合,它们可以 很容易地合并,从而支持使用来自 多个来源的数据。尽管如此,有时仍希望在保持内容分离的同时 处理多个 RDF 图。 RDF 数据集支持这一需求。
RDF 数据集是 RDF 图的集合。除其中一个图外,所有这些图都有 一个关联的 IRI 或空白节点。它们称为 命名 图,而该 IRI 或空白节点 称为图名。 剩余的图没有关联的 IRI,称为 RDF 数据集的 默认图。
一个 RDF 三元组指称一个命题 — 一个 简单的逻辑表达式,描述两个实体之间的关系。 断言三元组是对相应命题为真的主张。 RDF 图是其断言三元组所作全部主张的合取(逻辑 AND)。 RDF 三元组和RDF 图这一含义的精确细节 是 RDF 1.2 Semantics [RDF12-SEMANTICS] 的主题,它得出 RDF 图之间的以下关系:
蕴涵机制 [RDF12-SEMANTICS] 是一种规范, 它定义使这些关系成立的精确条件。 RDF 本身只识别一些基本的蕴涵、等价性 和不一致性情况。其他规范,例如 RDF 1.2 Schema [RDF12-SCHEMA] 以及 OWL 2 [OWL2-OVERVIEW], 增加了更强大的蕴涵机制, 某些特定领域的 词汇表也如此。
本规范不约束实现如何 使用由 蕴涵机制定义的逻辑关系。 实现可以检测,也可以不检测 不一致性,并且可以向用户提供全部、 部分或不提供任何被蕴涵的信息。
RDF 文档 是一种用具体 RDF 语法编码 RDF 图或 RDF 数据集的文档, 例如 N-Triples [RDF12-N-TRIPLES]、Turtle [RDF12-TURTLE]、RDFa [RDFA-CORE]、JSON-LD [JSON-LD11],或 TriG [RDF12-TRIG]。RDF 文档支持在系统之间交换 RDF 图和 RDF 数据集。
具体 RDF 语法可以提供 多种不同方式来编码同一个 RDF 图或 RDF 数据集,例如通过使用 命名空间前缀、 IRI 引用、空白节点标识符, 以及三元组的不同排序。虽然这些方面会极大 影响处理 RDF 文档时的便利性, 但它们对其含义并不重要。
具体 RDF 语法的基础是 抽象数据模型的结构, 称为抽象语法; 概括在以下两个表中。
| 产生式 | 定义为 |
|---|---|
| RDF 图 | 三元组的集合,包含零个或多个三元组 |
| 三元组 | 一个由 主语、谓语和宾语组成的三元组 |
| 主语 | 或者是一个 IRI 或者是一个空白节点 |
| 谓语 | 一个 IRI |
| 宾语 | 或者是一个 IRI 或者是一个空白节点 或者是一个字面量 或者是一个三元组 |
| 产生式 | 定义为 |
|---|---|
| RDF 数据集 | 一个由默认图 和零个或多个命名图的集合组成的对 |
| 默认图 | 一个 RDF 图 |
| 命名图 | 一个由 图名和一个 RDF 图 组成的对 |
| 图名 | 或者是一个 IRI 或者是一个空白节点 |
为了让 RDF 解析器尽早对不支持的 RDF 版本报错或发出警告, RDF 序列化格式预期允许指定版本, 方式可以是媒体类型参数、 格式特定语法中的版本声明, 或两者兼用。
当版本同时在媒体类型参数和语法中指示时, 它们预期应当相同。 如果它们不同, 解析器会使用媒体类型参数中的版本,并可能就不匹配发出警告。
为了尽可能广泛地保持与旧解析器的兼容性, 仅鼓励使用 RDF 1.2 特定功能的 RDF 文档 声明其版本(即,对于未使用 RDF 1.2 特定功能的 RDF 文档,不鼓励声明版本)。
要在使用 Content-Type 标头的 HTTP 响应中声明版本,
服务器预期使用 version 参数,
如以下示例响应所示。
HTTP/1.1 200 OK
Content-Type: text/turtle; version=1.2
Location: http://example.com/document.ttl
当格式支持内联版本声明时, 服务器也预期以内联方式声明版本 (例如 RDF 1.2 Turtle [RDF12-TURTLE])。
从 HTTP 服务器请求 RDF 文档时,客户端
可以在内容协商 [WEBARCH]期间
使用 version 参数,
通过将其包含在 Accept 请求标头中,
如以下示例请求所示。
GET /document.ttl HTTP/1.1
Host: example.com
Accept: text/turtle; version=1.2
2.1
版本标签一节定义了
与 version 参数以及具体 RDF
语法一起使用的版本标签。
由于 HTTP 内容协商是建议性的,
因此接收文档的客户端应准备好正确处理所请求媒体类型的文档,
即便该文档可能具有与所请求版本不同的 version。
客户端可以考虑自行将内容降级到适当版本,
如2.1.1
服务器考量中所讨论。
除标记为非规范性的章节外,本规范中的所有编写指南、图示、示例和注释都是非规范性的。 本规范中的其他所有内容都是规范性的。
本文档中的关键字 MAY、MUST、MUST NOT、RECOMMENDED、SHOULD 和 SHOULD NOT 应按照 BCP 14 [RFC2119] [RFC8174] 中的描述解释,但仅当它们如这里所示全部以 大写形式出现时才如此。
本规范 RDF 1.2 Concepts and Abstract Data Model 定义了一个抽象数据模型和相关词汇表,供 其他规范使用,例如 具体 RDF 语法、 API 规范和查询语言。 实现无法直接符合 RDF 1.2 Concepts and Abstract Data Model, 但可以符合规范性引用此处定义术语的其他规范。
本规范建立了两个一致性级别:
版本标签是一个字符串,用于标识 RDF 数据的语法和语义一致性。
| 版本标签 | 语法 | 语义 |
|---|---|---|
| "1.2" | RDF 1.2 语法 | RDF 1.2 Semantics |
| "1.2-basic" | 不含三元组项的 RDF 1.2 语法 | RDF 1.2 Semantics |
| "1.1" | 除使用版本指令外的 RDF 1.1 语法 | RDF 1.1 Semantics |
符合版本 "1.1" 的数据作为版本 "1.2-basic" 的数据是有效的, 符合版本 "1.2-basic" 的数据作为版本 "1.2" 的数据也是有效的。 符合版本 "1.1" 的数据在 RDF 1.1 Semantics 和 RDF 1.2 Semantics 下具有相同的语义。
有关将 "1.2" 编码为 "1.2-basic" 的详细信息,请参见 RDF 1.2 Interoperability。
对于支持内联版本声明的序列化, 版本声明SHOULD尽早在文档中作出, 并且当然应在序列化任何依赖该版本的特性之前作出。
本节是非规范性的。
在序列化使用了与所请求版本不兼容特性的图或数据集时, 服务器可以考虑不同的替代方案:
i18n 命名空间的数据类型 IRI
(从版本 "1.2" 或 "1.2-basic" 降级到 "1.1")。406 "Not Acceptable"。这里的建议是遵循 鲁棒性原则 (也称为 Postel 定律): 服务器应在发送内容时保守,在接受内容时宽容。
本节是非规范性的。
如果文档未声明 version(无论通过 HTTP 标头还是内部声明),
系统可以假定版本为 "1.2",该版本继续
支持所有先前的 RDF 版本。
在解析带有冲突版本的文档时, 或在解析使用不受支持版本的文档时,解析器 可以执行以下任一操作:
RDF 使用 Unicode [Unicode] 作为字符串
值的基础表示。
在本规范及相关规范中,术语 RDF
字符串,
或简称为字符串,
用于描述由零个或多个
Unicode 码点
组成的有序序列,这些码点是
Unicode 标量值。
Unicode 标量值不包括
代理码点。
请注意,大多数 具体 RDF 语法要求使用
UTF-8 字符编码 [RFC3629],
并使用 \u0000 或 \U00000000 形式来表示某些非字符
值。
如果一个字符串由相同的码点序列组成,则它与另一个字符串相同。 实现MAY通过比较 使用相同 Unicode 字符编码 (UTF-8 或 UTF-16)的两个字符串的 代码 单元来确定字符串相等性,而无需将字符串解码为 Unicode 码点序列。
RDF 图是一组 RDF 三元组。
作为 RDF 图元素的 RDF 三元组也被称为在该 RDF 图中被断言。
RDF 三元组 (通常简称为“三元组”) 是按如下方式归纳定义的三元组:
RDF 三元组的三个组成部分(s, p, o) 分别称为该三元组的主语、谓语和宾语。
RDF 图的节点集合 是该图的断言三元组的 主语和宾语的集合。 谓语 IRI 也可能作为节点出现在 同一个图中。
三元组 相等性: 当且仅当以下三个条件全部成立时,两个三元组(s, p, o)和(s', p', o') 相等(即同一个 RDF 三元组)。
RDF 项相等性: 当且仅当以下四个条件之一成立时,两个 RDF 项 t 和 t' 相等(即同一个 RDF 项):
出现在 RDF 三元组 t 中的RDF 项集合按如下方式归纳定义,其中 出现:
引申地说,如果一个 RDF 项出现在某个 RDF 图的断言 三元组中,则称其出现在该 RDF 图中。 如果一个 RDF 三元组是该图的断言 三元组,或者是一个三元组项并出现在该图中, 则称其出现在一个 RDF 图中。
如果一个 RDF 项满足以下三个条件之一,则称其为基的:
引申地说,如果一个 RDF 三元组的主语、谓语和宾语 全部都是基的,则称该 RDF 三元组是基的。 如果一个 RDF 图的所有断言三元组都是基的,则称该 RDF 图是基的。
RDF 图中的 IRI (Internationalized Resource Identifier,国际化资源标识符) 是一个符合 RFC 3987 [RFC3987] 所定义语法的 字符串。
RDF 抽象语法中的 IRI MUST 按照 [RFC3986] 被解析,并且 MUST NOT 是一个相对引用。 IRI MAY 包含一个 片段标识符。 IRI SHOULD 遵循由 IRI 方案定义的规则。
IRI 相等性: 当且仅当两个 IRI 由相同的 Unicode 码点序列组成时, 它们相等,如 [RFC3987] 第 5.3.1 节中的简单字符串比较所述。 (这是在抽象语法中完成的,因此 IRI 是 已解析的 IRI,不带转义或编码。) 在此比较之前MUST NOT执行进一步规范化。
URI 和 IRI: IRI 是 URI [RFC3986] 的泛化, 它允许更广范围的 Unicode 字符 [UNICODE]。 每个 URI 和 URL 都是 IRI,但并非每个 IRI 都是 URI。 在 RDF 中,IRI 被用作 IRI 引用,如 [RFC3987] 第 1.3 节中所定义。 IRI 引用是 Internationalized Resource Identifier 的常见用法。 IRI 引用指的是一个 已解析的 IRI 或一个相对 IRI 引用, 如 F. IRI 语法中的 IRI-reference 产生式所述。 抽象语法只使用完全解析的 IRI。 当 IRI 用于仅针对 URI 定义的操作时, 必须先按照 [RFC3987] 第 3.1 节 中定义的映射进行转换。一个显著 示例是通过 HTTP 协议进行检索。该映射涉及对非 ASCII 字符进行 UTF-8 编码、对 URI 中不允许的八位字节进行 %-编码,以及 对域名进行 Punycode 编码。
URL: URL 现行标准在很大程度上与 [RFC3987] IRI 兼容, 但它基于一种对 Web 浏览器内实现很重要的处理模型, 并且不是使用 [ABNF] 语法描述的。
本节是非规范性的。
本节向数据发布者提供建议。
IRI用于
指称资源,并且每个 IRI 都应标识同一个
资源,无论该 IRI 在何处
使用。
请注意,由 [RFC3987] 定义的 IRI 通用语法可以表达
不满足作为全局引用这一要求的
IRI。某些 URI 方案会增加额外要求;例如,
HTTP URI 方案定义了
http-URI,它
要求存在非空主机名,因此,
路径组件将以 / 开头。
[RFC3987] 语法允许
http:abcd 和 http:///abcd 这样的 IRI,
但它们无效,因为它们不满足 HTTP URI 方案定义。
RDF 引用 IRI, 有时简称为 RDF 引用, 是一个适合作为全局引用使用的 IRI。
引用解析:
RDF 引用 IRI在
引用解析后保持不变。
在 http 和
https 等 URI 方案中,
路径组件
是解析算法可见层次的一部分。解析后,
路径组件
以 / 字符开头,并且不包含 . 或 ..
段。
例如,https://example/data 相对于任何基 IRI
解析后仍为 https://example/data(不变),而 https://example/path/../data
相对于任意基 IRI 解析后为
https://example.com/data。
相对 IRI 引用:
一些具体 RDF 语法允许
相对 IRI 引用
(参见 IRI 语法中的
irelative-ref 产生式)
作为一种方便的简写,使 RDF 文档可以在不知道其最终发布位置的情况下创作。
相对 IRI 引用必须
相对于一个
基 IRI解析。
因此,此类语法中序列化的 RDF 图只有在
基 IRI 可以建立时,才是明确定义的 [RFC3986]。
URI 方案: 鼓励实现遵循常见方案的特定于方案的规则,例如 HTTP/HTTPS 的方案规则和 DID 语法。 对于不识别的方案,实现会忽略 URI 方案规则。
IRI 规范化: 通过只创建按 [RFC3987] 第 5 节 规范化的 IRI,可以避免互操作性问题。
http://example/
优先于 http://example:80/。%3F”优先于
“%3f”。http://example/ 优先于
没有路径的 http://example。
/./”和“/../”。字面量用于字符串、数字和日期等值。
字面量由 两个、三个或四个组成部分构成,如下所示:
http://www.w3.org/1999/02/22-rdf-syntax-ns#langString 或
http://www.w3.org/1999/02/22-rdf-syntax-ns#dirLangString 时,存在一个
非空的语言标签,如
[BCP47] 所定义。
语言标签MUST根据
[BCP47] 的
第 2.2.9 节
格式良好,并且MUST据此处理,即以不区分大小写的方式处理。
两个符合 [BCP47] 的字符串,如果仅大小写不同,
表示同一个语言标签。
http://www.w3.org/1999/02/22-rdf-syntax-ns#dirLangString 时,存在一个
基方向,且该方向MUST是以下之一:ltr,表示初始文本方向被设置为从左到右rtl,表示初始文本方向被设置为从右到左如果存在语言标签 且基方向不存在, 则字面量是一个带语言标记的字符串。 如果语言标签和基方向 都存在,则字面量是一个带方向的语言标记字符串。
字面量项相等性: 如果且仅如果以下全部为真,两个字面量就是项相等的(即同一个 RDF 项):
ltr,要么都是 rtl。
一些具体语法支持
简单字面量,它们仅由一个
词法形式组成,不带任何数据类型 IRI、语言标签或基方向。
简单字面量是抽象语法
字面量的语法糖,
其数据类型 IRI为
http://www.w3.org/2001/XMLSchema#string
(通常缩写为 xsd:string)。
类似地,大多数具体语法在表示
带语言标记的字符串和带方向的语言标记字符串时不包含
数据类型 IRI,因为它总是分别为
http://www.w3.org/1999/02/22-rdf-syntax-ns#langString(rdf:langString)
或 http://www.w3.org/1999/02/22-rdf-syntax-ns#dirLangString
(rdf:dirLangString)。
任何符合 [BCP47] 的字符串,都MAY用于在具体语法或实现中表示 语言标签。 此类字符串MAY进行大小写规范化 (例如,按 BCP 47 第 4.5 节定义进行规范化)。 或者,实现MAY保留原始表示中的大小写, 前提是以不区分大小写的方式处理它。
与字面量关联的 字面量值定义如下。
由上可知,两个字面量可以具有相同的值, 但不是同一个 RDF 项。 例如:
"1"^^xsd:integer
"01"^^xsd:integer
本节是非规范性的。
带方向的 语言标记字符串的基方向 提供了一种建立文本初始方向的方式, 包括混合从右到左和从左到右文字的文本。 Unicode 双向算法 [I18N-Glossary] 支持 自动按逻辑顺序呈现 字符序列, 使其按预期的视觉顺序排列, 但这并不总是足以正确呈现双向文本。
考虑书名 "HTML and CSS: Designing Websites" 的阿拉伯语译文。 在从左到右的上下文中(例如英文网页), 具备适当的双向隔离但没有显式 基方向时, 它会被错误地显示如下:
HTML و CSS: تصميم مواقع الويب
而正确的呈现如下:
HTML و CSS: تصميم مواقع الويب
该示例表明,在可能遇到双向文本的上下文中, 使用带方向的 语言标记字符串 而不是简单的带语言标记的字符串 是很重要的。
请注意,语言和基方向处理的是字符串外部的双向问题, 这些问题与在上下文中正确显示字符串有关 (例如,避免溢出效应 问题)。它不处理字符串内部的方向问题, 后者可能出现在更复杂的示例中,例如:
"HTML و CSS: تصميم مواقع الويب" is the Arabic title of the book.
表示该示例的带方向的语言标记字符串
将具有语言标签 en 和基方向
ltr,
但还需要特定的 Unicode 双向格式化字符,以隔离并标记
引号之间的文本为 rtl。
rdf:HTML 或 rdf:XMLLiteral。
空白节点与 IRI和字面量不相交。除此之外, 可能的空白节点集合是任意的。RDF 不引用 空白节点的任何内部结构。
空白节点 相等性: 当且仅当两个空白节点是同一个空白节点时,它们相等。
空白节点标识符 是在某些 具体 RDF 语法 或 RDF 存储实现中使用的局部标识符。 它们始终局部限定于文件或 RDF 存储, 并且不是空白节点的持久或可移植标识符。 空白节点标识符不是 RDF 抽象数据模型的一部分,而完全依赖于 具体语法或实现。因此,空白节点标识符的语法限制 (如果有)也取决于 具体 RDF 语法或实现。处理具体语法中空白节点 标识符的实现需要小心,不要从同一个空白节点标识符的多次出现 创建同一个空白节点, 除非语法支持这种情况。
术语 "blank node label" 有时被非正式地 用作术语空白节点标识符的替代说法。 这一替代说法也曾在 一些 RDF 相关规范的早期版本中使用,例如 [SPARQL11-QUERY]。 为了一致性,现在不鼓励使用这一替代 术语。
作为另一个三元组的宾语使用的 RDF 三元组称为三元组项。 在给定的 RDF 图中,一个三元组可以作为 三元组项、断言 三元组,或两者同时出现。
本节引入 RDF 图 的图同构概念,它基于RDF 项之间的映射, 该映射将空白节点映射到空白节点, 并且对 IRI 和字面量是恒等函数。
从所有 RDF 项的集合到同一集合的函数 M 称为同构 RDF 项映射, 如果它具有以下所有性质:
两个 RDF 图 G 和 G' 是同构的 (也就是说,它们具有相同的形式), 如果存在一个同构 RDF 项映射 M,使得 三元组(s, p, o)在 G 中,当且仅当 三元组(M(s), M(p), M(o))在 G' 中。
根据此定义,M 表明如何将 G 中的每个空白节点替换为 一个新的空白节点,从而得到 G'。图同构 是支持 RDF Test Cases [RDF11-TESTCASES] 规范所必需的。
RDF 数据集是 RDF 图的集合,并由以下内容组成:
尽管“命名图”中使用了“名称”一词, 图名并不要求指称该图。它 只是从语法上与图配对。RDF 对图名可以指称什么 资源没有任何 形式限制, 也不限制该资源与图之间的关系。 关于不同 RDF 数据集语义的讨论可见于 [RDF11-DATASETS]。
一些 RDF 数据集实现不会 跟踪空的命名图。应用 可以通过不重视空命名图是否存在来避免 互操作性问题。
SPARQL 版本 1.2 [SPARQL12-CONCEPTS] 使用 与 RDF 版本 1.1 和 1.2 相同的 RDF 数据集概念, 其中命名图的图名可以是 IRI 或空白节点。 相比之下,SPARQL 查询语言版本 1.1 [SPARQL11-QUERY] 只允许图名为 IRI。
两个 RDF 数据集 D1 和 D2 (分别具有默认图 DG1 和 DG2,以及 命名图集合 NG1 和 NG2) 当且仅当存在一个同构 RDF 项映射 M 使以下所有性质成立时,它们是数据集同构的:
本节是非规范性的。
Web 资源可以具有多个表示,这些表示可通过 内容协商 [WEBARCH] 提供。某个表示可以 以支持表达 RDF 数据集和 RDF 图二者的 RDF 序列化 格式返回。如果返回的是 RDF 数据集, 而消费者期望的是 RDF 图, 则消费者预期使用该RDF 数据集的默认图。
本节是非规范性的。
四元组是一个与可选图 名关联的三元组, 并在引用 RDF 数据集中的三元组时使用。
四元组可以 表示为由主语、谓语、宾语 和一个可选图名组成的元组。
RDF 数据集可被视为一个四元组集合, 其中没有图名的四元组提供默认图的三元组, 而具有相同图名的四元组 提供具有该名称的命名图的三元组。
数据类型与 RDF 字面量
一起用于表示字符串、数字和日期等值。
RDF 中使用的数据类型抽象与 XML Schema
[XMLSCHEMA11-2]
兼容。
任何符合
此抽象的数据类型定义都MAY用于 RDF,即使它不是
以 XML Schema 定义的。RDF 复用了许多 XML Schema
内建数据类型,并定义了三个附加数据类型:
、
rdf:JSON
和
rdf:HTML。
rdf:XMLLiteral
数据类型由一个词法空间、 一个值 空间以及一个词法到值映射组成,并 由一个或多个 IRI标识。
数据类型的词法空间是一组字符串。
数据类型的词法到值映射是一组 对,其第一个元素属于词法空间, 第二个元素属于该数据类型的值空间。 词法空间的每个成员都与恰好 一个值配对,并且是该值的词法表示。 该映射可被视为一个从词法空间到值空间的函数。
带语言标记的字符串具有数据类型 IRI
http://www.w3.org/1999/02/22-rdf-syntax-ns#langString
(通常缩写为 rdf:langString)。
没有为此 IRI 正式定义数据类型,
因为
数据类型的定义无法容纳
语言标签位于词法空间中。
与此数据类型 IRI 关联的值空间是由字符串和语言标签组成的所有对的集合。
类似地,带方向的语言标记字符串
http://www.w3.org/1999/02/22-rdf-syntax-ns#dirLangString
(通常缩写为 rdf:dirLangString)
在值空间中还具有一个基方向。
与此数据类型 IRI 关联的值空间是由字符串、语言标签和基方向组成的所有三元组的集合。
例如,XML Schema 数据类型 xsd:boolean
定义如下,其中值空间的每个成员都有两个词法
表示:
true", "false", "1", "0"}true", true>,
<"false", false>,
<"1", true>,
<"0", false>,
}可以使用此 数据类型定义的字面量 为:
| 字面量 | 值 |
|---|---|
<"true", xsd:boolean> |
true |
<"false", xsd:boolean> |
false |
<"1", xsd:boolean> |
true |
<"0", xsd:boolean> |
false |
形如
http://www.w3.org/2001/XMLSchema#xxx
的 IRI,
其中 xxx
是数据类型的名称,指称
W3C XML
Schema Definition Language (XSD) 1.1 Part 2: Datatypes [XMLSCHEMA11-2]
中定义的内建数据类型。
下表列出的 XML Schema 内建类型是
RDF 兼容的 XSD 类型。RECOMMENDED使用它们。
读者可能会注意到,用于传输
二进制信息的唯一安全数据类型是 xsd:hexBinary 和 xsd:base64Binary。
| 数据类型 | 值空间(资料性) | |
|---|---|---|
| 核心类型 | xsd:string |
字符串 |
xsd:boolean |
true、false | |
xsd:decimal |
任意精度十进制数 | |
xsd:integer |
任意大小整数 | |
| IEEE 浮点 数 |
xsd:double |
64 位浮点数,含 ±Inf、±0、NaN |
xsd:float |
32 位浮点数,含 ±Inf、±0、NaN | |
| 时间和日期 | xsd:date |
日期(yyyy-mm-dd),带或不带时区 |
xsd:time |
时间(hh:mm:ss.sss…),带或不带时区 | |
xsd:dateTime |
日期和时间,带或不带时区 | |
xsd:dateTimeStamp |
带必需时区的日期和时间 | |
| 重复和 部分日期 |
xsd:gYear |
公历年份 |
xsd:gMonth |
公历月份 | |
xsd:gDay |
公历每月中的日期 | |
xsd:gYearMonth |
公历年份和月份 | |
xsd:gMonthDay |
公历月份和日 | |
| 持续时间 | xsd:duration |
时间持续时长 |
xsd:yearMonthDuration
|
时间持续时长(仅月份和年份) | |
xsd:dayTimeDuration |
时间持续时长(仅天、小时、分钟、秒) | |
| 有限范围 整数 |
xsd:byte |
-128…+127(8 位) |
xsd:short |
-32768…+32767(16 位) | |
xsd:int |
-2147483648…+2147483647(32 位) | |
xsd:long |
-9223372036854775808…+9223372036854775807(64 位) | |
xsd:unsignedByte |
0…255(8 位) | |
xsd:unsignedShort |
0…65535(16 位) | |
xsd:unsignedInt |
0…4294967295(32 位) | |
xsd:unsignedLong |
0…18446744073709551615(64 位) | |
xsd:positiveInteger |
整数 >0 | |
xsd:nonNegativeInteger
|
整数 ≥0 | |
xsd:negativeInteger |
整数 <0 | |
xsd:nonPositiveInteger
|
整数 ≤0 | |
| 编码后的二进制数据 | xsd:hexBinary |
十六进制编码的二进制数据 |
xsd:base64Binary |
Base64 编码的二进制数据 | |
| 其他 XSD 类型 |
xsd:anyURI |
已解析或相对的 URI 与 IRI 引用 |
xsd:language |
按 [BCP47] 的语言标签 | |
xsd:normalizedString
|
空白规范化后的字符串 | |
xsd:token |
标记化字符串 | |
xsd:NMTOKEN |
XML NMTOKEN | |
xsd:Name |
XML Name | |
xsd:NCName |
XML NCName |
词法到值映射对于 xsd:float
和 xsd:double
MUST使用与 doubleLexicalMap一致的方法,
该方法MUST严格符合
floatPtRound [XMLSCHEMA11-2]
中描述的舍入方法。
其他 XML Schema 内建数据类型由于各种原因并不适合, 并且SHOULD NOT使用:
xsd:QName
和 xsd:ENTITY
需要一个包围的 XML 文档上下文。xsd:ID
和 xsd:IDREF
用于 XML 文档内部的交叉引用。xsd:NOTATION
并不打算直接使用。xsd:IDREFS、
xsd:ENTITIES
和 xsd:NMTOKENS
是序列值数据类型,不适合 RDF 数据类型
模型。
xsd:double 和
xsd:float 的值空间并不
包含所有十进制数。对于
这两个数据类型中任一数据类型的每个字面量,其
字面量值都是一个可以表示为相应精度的
IEEE 754-2008
二进制浮点表示的值。
例如,词法形式为 "0.1" 且数据类型为 xsd:float
的字面量指称
数字 0.100000001490116119384765625。
若要准确捕获任意十进制数,可以使用
数据类型 xsd:decimal,
而不是 xsd:double
或 xsd:float。
数据类型由 IRI标识。
如果形如
http://www.w3.org/2001/XMLSchema#xxx 的任何 IRI
由 RDF 实现处理,那么对于第 5.1 节列出的每个 XSD 类型,
它都MUST指向名为 xsd:xxx 的 RDF 兼容 XSD 类型。
由以下三个 IRI 标识的数据类型定义于 附录 A. 附加数据类型:
http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral
指向数据类型
rdf:XMLLiteral。
http://www.w3.org/1999/02/22-rdf-syntax-ns#HTML
指向数据类型
rdf:HTML。
http://www.w3.org/1999/02/22-rdf-syntax-ns#JSON
指向数据类型
rdf:JSON。
RDF 实现不要求处理所有数据类型。 任何类型化为 RDF 实现未处理数据类型的字面量 都像未知 IRI 一样处理,即 指向未知事物。 如果应用无法确定类型化字面量中所用 IRI 的 所指对象,它们MAY给出警告消息。 RDF 实现SHOULD NOT 将具有未知数据类型的字面量作为语法或 语义错误而拒绝。
其他规范MAY对 数据类型 IRI施加附加约束,例如,要求支持 某些数据类型。
RDF 的语义扩展可能选择 识别其他数据类型 IRI, 并要求它们各自指向固定的数据类型。 有关语义扩展的更多信息,请参见 RDF 1.2 Semantics [RDF12-SEMANTICS]。
Web Ontology Language [OWL2-OVERVIEW] 提供了用于正式定义 可与 RDF 一起使用的自定义 数据类型的功能。此外,[SWBP-XSCH-DATATYPES] 建议了一种 标识 用户定义的简单 XML Schema 数据类型 的实践。RDF 实现 不要求支持这两种功能中的任一种。
在 RDF 1.1 中,已识别的数据类型 IRI 定义于 RDF Concepts 中,与 RDF Semantics 中“识别” 用于语义扩展的数据类型 IRI 的概念重叠。
本节是非规范性的。
RDF 使用 IRI,它们 可以包含 片段 标识符, 作为资源标识符。 片段标识符的语义 定义于 RFC 3986 [RFC3986]:它们标识 次级资源, 该资源通常是主要资源的一部分、视图、定义于其中或描述于其中, 且其精确语义取决于 对主要资源执行检索操作后可能得到的表示集合。
本节讨论在编码 RDF 图的表示中 如何处理片段标识符。
在主要资源的携带 RDF 的表示中,例如
<https://example.com/foo>,
由片段标识符(例如 bar)标识的次级资源,
是在 RDF
图中由完整
IRI
指称的
资源,在本例中即
<https://example.com/foo#bar>。
由于 RDF 图中的 IRI 可以指称任何事物,这可以是
表示之外的事物,甚至可以是
Web 之外的事物。
通过这种方式,携带 RDF 的表示充当 可通过 Web 访问的主要资源与某组可能 非 Web 或抽象实体之间的中介,而这些实体可能由 RDF 图描述。
在其他规范约束携带 RDF 的表示中
片段标识符语义的情况下,编码的
RDF
图应以与这些约束一致的方式使用片段标识符。
例如,在 HTML+RDFa 文档 [HTML-RDFA] 中,
像 chapter1 这样的片段标识符可以通过 HTML 的 @name 或 @id
属性语义标识一个文档章节。这样的 IRI,例如
<#chapter1>,随后应被视为在同一文档内任何 RDFa 编码的
三元组中
指称同一章节。
类似地,在具有多个表示且这些表示通过
内容
协商
[WEBARCH] 提供的资源中,
片段标识符也应被一致使用。例如,如果片段标识符 chapter1
在主要资源的 HTML 表示中标识一个
文档章节,那么 IRI <#chapter1> 应被视为
在同一主要资源的所有携带 RDF 的表示中
指称该
同一章节。
本节是非规范性的。
有时放宽对 RDF 三元组的要求会很方便。例如,借助 对称 RDF 三元组的概念,更容易展示 RDFS 蕴涵规则的完备性。
对称 RDF 三元组允许主语是 对象位置允许的任何 RDF 项,即 IRI、 空白节点、 字面量, 或三元组项 (其本身可以是对称 RDF 三元组)之一。 对称 RDF 图是一组对称 RDF 三元组。 对称 RDF 数据集 由一个特定的对称 RDF 图,以及零个 或多个对组成,每个对将一个 IRI 或一个空白 节点 与一个对称 RDF 图关联。
对称 RDF 三元组、图和数据集与 标准的、规范性 RDF 三元组、 图和 数据集 的区别仅在于允许 IRI、 空白 节点、 字面量 和 三元组项 出现在主语和宾语位置。
广义 RDF 三元组是一个具有主语、 谓语和宾语的三元组,其中每个组成部分都可以是一个 IRI、 空白节点、 字面量 或三元组项 (其本身可以是广义 RDF 三元组)。 广义 RDF 图 是一组广义 RDF 三元组。一个 广义 RDF 数据集 由一个特定的广义 RDF 图,以及零个 或多个对组成,每个对将一个 IRI、 一个空白节点、 一个字面量 或一个三元组项 (其本身可以是广义 RDF 三元组) 与一个广义 RDF 图关联。
广义 RDF 三元组、图和数据集与 标准的、规范性 RDF 三元组、 图和 数据集的唯一区别 是允许 IRI、 空白 节点、 字面量和 三元组项出现在 任意位置,即作为主语、谓语、宾语或图名。
任何使用 对称或广义 RDF 三元组、图或数据集的用户都需要 意识到这些概念是 RDF 的非标准扩展,其使用可能导致互操作性问题。 并不要求任何 RDF 工具 接受、处理或产生超出标准 规范性 RDF 三元组、图和数据集之外的任何内容。
本节定义 RDF 实现MAY支持的附加数据类型。
RDF 提供将 HTML 内容作为可能的字面量值。
这允许在字面量值中包含标记。此类内容在
RDF
图中通过一个字面量指示,该字面量的数据类型
被设置为
rdf:HTML。
rdf:HTML 数据类型定义如下:
http://www.w3.org/1999/02/22-rdf-syntax-ns#HTML。DocumentFragment
节点 [DOM] 的集合。两个
DocumentFragment
节点 node 和 otherNode 被认为相等,当且仅当
DOM 方法
node.isEqualNode(otherNode)
[DOM] 返回 true。
词法空间的每个成员都与 应用以下算法的结果关联:
domnodes 为对输入字符串应用
HTML 片段解析
算法 [HTML5]
(不带上下文元素)后得到的
DOM 节点
[DOM]
列表。
domfrag 为一个 DOM
DocumentFragment [DOM],
其 childNodes 属性等于 domnodes
domfrag.normalize()。
HTML 内容中所需的任何语言注解(lang="…")、
文本方向性注解(dir="…")或
XML 命名空间(xmlns)
都必须显式包含在 HTML 字面量中。诸如 href 等属性中的相对 URL
没有明确定义的
基 URL,因此最好避免。
RDF 应用可以使用附加的等价关系,
例如将一个 xsd:string 与一个
对应于同一字符串的单个文本节点的
rdf:HTML 字面量关联起来的关系。
RDF 提供将 XML 内容作为可能的字面量值。
此类内容在 RDF 图中通过一个字面量指示,
其数据类型被设置为
rdf:XMLLiteral。
rdf:XMLLiteral 数据类型定义如下:
http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral。DocumentFragment
节点 [DOM] 的集合。两个
DocumentFragment
节点 node 和 otherNode 被认为相等,当且仅当 DOM 方法
node.isEqualNode(otherNode)
返回 true。
词法空间的每个成员都与应用以下 算法的结果关联:
domfrag 为一个 DOM
DocumentFragment
节点 [DOM],对应于输入字符串。
domfrag.normalize()。
XML 内容中所需的任何 XML 命名空间声明(xmlns)、
语言注解(xml:lang)或基 URI 声明
(xml:base)都必须显式包含
在 XML 字面量中。请注意,某些具体 RDF 语法
可以定义从上下文继承它们的机制(例如,
RDF/XML [RDF12-XML] 中的
@parseType="literal")。
RDF 提供将 JSON 内容作为可能的字面量值。
这包括允许在字面量值中包含标记。此类内容在
RDF
图中被指示为一个字面量,其数据类型被设置
为
rdf:JSON。
rdf:JSON 数据类型定义如下:
http://www.w3.org/1999/02/22-rdf-syntax-ns#JSON。true、false 和 null)。
有限无序映射和 列表的值空间 不包含以自身为成员的值, 这种值无法用 JSON 表示。
当且仅当两个值是值空间中的同一个元素时,才认为它们相等。
true、false 和 null)后的结果。
true、false 和 null 值
映射到 [INFRA] true、
false 和
null 值。
有限无序映射可以通过
系统性地按键对键值对排序(使用
Unicode 码点顺序),用
有序
映射 [INFRA]
来实现。
这确保了仅对象成员顺序不同的词法形式(例如
{"a": "b", "c": "d"} 和 {"c": "d", "a": "b"})会映射到同一个
值。
空白节点在 RDF 抽象数据模型中没有标识符。某些具体语法引入的 空白节点标识符 只有局部作用域,并且纯粹是序列化的产物。
在需要更强标识的情况下,系统MAY 系统性地将 RDF 图中的部分或全部空白节点替换为 IRI。希望这样做的系统SHOULD 为每个被替换的空白节点铸造一个新的、全局 唯一的 IRI(即 Skolem IRI)。
此变换会产生一个蕴涵原图的新图 (另见 Skolemization)。 在此上下文中,重要的是要注意 Skolem IRI 和空白节点在本质上 不同:IRI 直接指称资源,而空白节点只表示 某个资源的存在。通过产生 Skolem IRI,我们为这种存在创建了具体见证。 由于 Skolem IRI 不是局部的,这允许其他图 后续使用它们,而这对于空白节点而言是不可能的。
系统可能希望以某种方式铸造 Skolem IRI,使它们能够 识别这些 IRI 是仅为替换空白节点而引入的。 在某些上下文中,这允许系统在需要时将 Skolem IRI 映射回空白节点。
希望 Skolem IRI 能在系统边界之外被识别的系统
SHOULD使用一个具有已注册名称
genid 的知名 IRI [RFC8615]。这是一个使用
HTTP 或 HTTPS 方案,
或另一个已指定使用知名 IRI 的方案,并且其
路径组件以 /.well-known/genid/ 开头的 IRI。
例如,负责域
example.com 的权威机构可以铸造以下可识别的 Skolem IRI:
http://example.com/.well-known/genid/d26a2d0e98334696f4ad70a677abc1f6
本节是非规范性的。
RDF 用于表达任意应用数据, 其中可能包括个人可识别信息(PII) 或其他可被视为敏感的信息。 建议发布此类信息的作者仔细 考虑发布此类信息的需求和用途, 以及数据预计被消费和可能被披露的地区所适用的法规(例如 GDPR、 CCPA、 其他法规), 尤其是访问这些数据是否需要授权措施。
本节是非规范性的。
RDF 抽象数据模型不直接用于传达信息。 具体序列化形式才是专门用于此目的的。
应用可以评估给定数据以推断更多断言,或解引用 IRI, 从而触发该 IRI 所用方案的安全考量。 尤其请注意 [RFC3023] 第 10 节中关于 HTTP IRI 的隐私问题。 从不准确或恶意数据源获得的数据可能导致不准确或误导性的结论, 以及对非预期 IRI 的解引用。 必须小心使所咨询资源的信任程度与 数据预期用途的敏感性相匹配; 对潜在医疗治疗的推断很可能需要不同于 旅行规划推断的信任程度。
RDF 用于表达任意应用数据; 安全考量将因使用领域而异。 适用于文本的安全工具和协议 (例如 PGP 加密、校验和验证、受密码保护的压缩) 也可用于 RDF 文档。 应强制采用反映嵌入信息敏感性的安全/隐私协议。
RDF 可以表达呈现给用户的数据,例如 RDF Schema 标签。 渲染从不受信任 RDF 文档中检索的字符串, 或使用未转义字符的应用, 应使用警告和其他适当手段来限制 恶意字符串可能被用来误导读者的可能性。 XML 媒体类型注册中的安全考量([RFC3023] 第 10 节) 提供了关于表达任意数据和标记的额外指导。
RDF 使用 IRI 作为项 标识符。 解释以 RDF 表达的数据的应用应处理 Internationalized Resource Identifiers (IRIs) [RFC3987] 第 8 节,以及 Uniform Resource Identifier (URI): Generic Syntax [RFC3986] 第 7 节中的安全问题。
多个 IRI 可以 具有相同外观。 不同文字系统中的字符可能看起来相似(例如, 西里尔字母“о”可能看起来类似拉丁字母“o”)。 一个字符后跟组合字符可能具有与另一个字符相同的视觉表示 (例如,LATIN SMALL LETTER "E" 后跟 COMBINING ACUTE ACCENT 与 LATIN SMALL LETTER "E" WITH ACUTE 具有相同的视觉表示)。 任何编写或解释 RDF 数据的人或应用 都必须注意使用与预期语义相匹配的 IRI, 并避免可能看起来相似的 IRI。 关于匹配视觉上相似字符的更多信息可见于 Unicode Security Considerations [UNICODE-SECURITY] 和 Internationalized Resource Identifiers (IRIs) [RFC3987] 第 8 节。
比较图, 或对其进行推理, 通常依赖于计算(子)图同构, 而众所周知,这在最坏情况下具有计算复杂性。 查询图也可能涉及计算复杂的 操作。 这意味着恶意图可以被构造出来,使 RDF 实现停滞或耗尽 内存。 处理来自不受信任来源的图的实现预期应提供缓解措施; 示例见 [RDF-CANON] 中关于 Dataset Poisoning 的章节。
这些考量是 [RDF12-TURTLE]、[RDF12-TRIG]、 [RDF12-N-TRIPLES] 和 [RDF12-N-QUADS] 的安全考量的更通用形式。
本节是非规范性的。
Unicode [UNICODE] 提供了一种在字符串内发出方向信号的机制 (参见 Unicode 双向算法 [I18N-Glossary])。 RDF 提供了一种机制,用于指定 带方向的语言标记字符串的 基方向, 以发出字符串初始文本方向的信号。 对于大多数人类语言字符串,尤其是那些 基方向无法从字符串内容准确确定的字符串, 拥有一个外部指示符对于获得值的正确显示和隔离 是很有价值的。 此类指示符的一个示例是 [HTML] dir 属性; 参见 [STRING-META]。
JSON-LD 1.1 [JSON-LD11] 引入了 i18n 命名空间,以使用 一种数据类型同时指定 RDF 字面量的基方向和语言标签。
本节是非规范性的。
以下 [ABNF] 语法将 [RFC3987] 和 [RFC6874] 中的变更应用于 [RFC3986] 中的 URI 的汇总 ABNF章节,以给出 IRI 的合并 语法。
这仅为方便而提供。 如果它与 [RFC3986]、[RFC3987] 或任何后续 更新中的定义不同, 则应使用那些定义。
IRI = scheme ":" ihier-part [ "?" iquery ] [ "#" ifragment ]
ihier-part = "//" iauthority ipath-abempty
/ ipath-absolute
/ ipath-rootless
/ ipath-empty
IRI-reference = IRI / irelative-ref
absolute-IRI = scheme ":" ihier-part [ "?" iquery ]
irelative-ref = irelative-part [ "?" iquery ] [ "#" ifragment ]
irelative-part = "//" iauthority ipath-abempty
/ ipath-absolute
/ ipath-noscheme
/ ipath-empty
scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )
iauthority = [ iuserinfo "@" ] ihost [ ":" port ]
iuserinfo = *( iunreserved / pct-encoded / sub-delims / ":" )
ihost = IP-literal / IPv4address / ireg-name
port = *DIGIT
IP-literal = "[" ( IPv6address / IPv6addrz / IPvFuture ) "]"
ZoneID = 1*( unreserved / pct-encoded )
IPv6addrz = IPv6address "%25" ZoneID
IPvFuture = "v" 1*HEXDIG "." 1*( unreserved / sub-delims / ":" )
IPv6address = 6( h16 ":" ) ls32
/ "::" 5( h16 ":" ) ls32
/ [ h16 ] "::" 4( h16 ":" ) ls32
/ [ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32
/ [ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32
/ [ *3( h16 ":" ) h16 ] "::" h16 ":" ls32
/ [ *4( h16 ":" ) h16 ] "::" ls32
/ [ *5( h16 ":" ) h16 ] "::" h16
/ [ *6( h16 ":" ) h16 ] "::"
h16 = 1*4HEXDIG
ls32 = ( h16 ":" h16 ) / IPv4address
IPv4address = dec-octet "." dec-octet "." dec-octet "." dec-octet
dec-octet = DIGIT ; 0-9
/ %x31-39 DIGIT ; 10-99
/ "1" 2DIGIT ; 100-199
/ "2" %x30-34 DIGIT ; 200-249
/ "25" %x30-35 ; 250-255
ireg-name = *( iunreserved / pct-encoded / sub-delims )
ipath = ipath-abempty ; begins with "/" or is empty
/ ipath-absolute ; begins with "/" but not "//"
/ ipath-noscheme ; begins with a non-colon segment
/ ipath-rootless ; begins with a segment
/ ipath-empty ; zero characters
ipath-abempty = *( "/" isegment )
ipath-absolute = "/" [ isegment-nz *( "/" isegment ) ]
ipath-noscheme = isegment-nz-nc *( "/" isegment )
ipath-rootless = isegment-nz *( "/" isegment )
ipath-empty = 0
isegment = *ipchar
isegment-nz = 1*ipchar
isegment-nz-nc = 1*( iunreserved / pct-encoded / sub-delims / "@" )
; non-zero-length segment without any colon ":"
ipchar = iunreserved / pct-encoded / sub-delims / ":" / "@"
iquery = *( ipchar / iprivate / "/" / "?" )
ifragment = *( ipchar / "/" / "?" )
iunreserved = ALPHA / DIGIT / "-" / "." / "_" / "~" / ucschar
ucschar = %xA0-D7FF / %xF900-FDCF / %xFDF0-FFEF
/ %x10000-1FFFD / %x20000-2FFFD / %x30000-3FFFD
/ %x40000-4FFFD / %x50000-5FFFD / %x60000-6FFFD
/ %x70000-7FFFD / %x80000-8FFFD / %x90000-9FFFD
/ %xA0000-AFFFD / %xB0000-BFFFD / %xC0000-CFFFD
/ %xD0000-DFFFD / %xE1000-EFFFD
iprivate = %xE000-F8FF / %xF0000-FFFFD / %x100000-10FFFD
pct-encoded = "%" HEXDIG HEXDIG
unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
reserved = gen-delims / sub-delims
gen-delims = ":" / "/" / "?" / "#" / "[" / "]" / "@"
sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
/ "*" / "+" / "," / ";" / "="
ABNF 也可以直接从 iri-grammar.abnf 访问。
本节是非规范性的。
本节是非规范性的。
本规范原始版本的编辑是 Graham Klyne(Nine by Nine)和 Jeremy J. Carroll(Hewlett Packard Labs)。
本文档包含来自 Pat Hayes、Sergey Melnik 和 Patrick Stickler 的重要贡献, 在他们的领导下,开发了 RDF 规范系列中描述的 用于表示带数据类型值(如整数和日期)的框架。
编辑感谢以下人员的宝贵贡献: Frank Manola、Pat Hayes、Dan Brickley、Jos de Roo、Dave Beckett、 Patrick Stickler、Peter F. Patel-Schneider、Jerome Euzenat、Massimo Marchiori、 Tim Berners-Lee、Dave Reynolds 和 Dan Connolly。
Jeremy Carroll 感谢 Oreste Signore, 他在意大利 W3C 办公室以及 Istituto di Scienza e Tecnologie dell'Informazione "Alessandro Faedo" (Consiglio Nazionale delle Ricerche 的一部分)接待了 Jeremy,Jeremy 在那里担任访问研究员。
本文档是 RDFcore 工作组长期审议的成果, 其成员包括: Art Barstow(W3C)、Dave Beckett(ILRT)、Dan Brickley (ILRT)、Dan Connolly(W3C)、 Jeremy Carroll(Hewlett Packard)、Ron Daniel(Interwoven Inc)、Bill dehOra(InterX)、 Jos De Roo(AGFA)、Jan Grant(ILRT)、Graham Klyne(Nine by Nine)、 Frank Manola(MITRE Corporation)、Brian McBride(Hewlett Packard)、 Eric Miller(W3C)、Stephen Petschulat(IBM)、Patrick Stickler(Nokia)、 Aaron Swartz(HWG)、Mike Dean(BBN Technologies / Verizon)、 R. V. Guha(Alpiri Inc)、Pat Hayes(IHMC)、Sergey Melnik(Stanford University)以及 Martyn Horner(Profium Ltd)。
本规范还借鉴了 Ora Lassilla 和 Ralph Swick 编辑的早期 RDF Model and Syntax 文档, 以及 Dan Brickley 和 R. V. Guha 编辑的 RDF Schema。 对这项早期工作作出贡献的 RDF 和 RDF Schema 工作组成员包括: Nick Arnett(Verity)、Tim Berners-Lee(W3C)、Tim Bray (Textuality)、 Dan Brickley(ILRT / University of Bristol)、Walter Chang(Adobe)、Sailesh Chutani(Oracle)、 Dan Connolly(W3C)、Ron Daniel(DATAFUSION)、Charles Frankston(Microsoft)、 Patrick Gannon(CommerceNet)、 R. V. Guha(Epinions,曾任职于 Netscape Communications)、Tom Hill(Apple Computer)、 Arthur van Hoff(Marimba)、Renato Iannella(DSTC)、Sandeep Jain(Oracle)、 Kevin Jones(InterMind)、Emiko Kezuka(Digital Vision Laboratories)、 Joe Lapp(webMethods Inc.)、Ora Lassila(Nokia Research Center)、Andrew Layman(Microsoft)、 Ralph LeVan(OCLC)、John McCarthy(Lawrence Berkeley National Laboratory)、 Chris McConnell(Microsoft)、Murray Maloney(Grif)、 Michael Mealling(Network Solutions)、Norbert Mikula(DataChannel)、 Eric Miller(OCLC)、Jim Miller(W3C,荣休)、 Frank Olken(Lawrence Berkeley National Laboratory)、Jean Paoli(Microsoft)、 Sri Raghavan(Digital/Compaq)、Lisa Rein(webMethods Inc.)、 Paul Resnick(University of Michigan)、Bill Roberts(KnowledgeCite)、 i Tsuyoshi Sakata(Digital Vision Laboratories)、Bob Schloss(IBM)、 Leon Shklar(Pencom Web Works)、David Singer(IBM)、Wei(William)Song(SISU)、 Neel Sundaresan(IBM)、Ralph Swick(W3C)、Naohiko Uramoto (IBM)、 Charles Wicksteed(Reuters Ltd.)、Misha Wolf(Reuters Ltd.)以及 Lauren Wood(SoftQuad)。
本节是非规范性的。
本规范 RDF 1.1 版本的编辑是 Richard Cyganiak(DERI)、 David Wood(3 Round Stones)和 Markus Lanthaler(Graz University of Technology)。
编辑感谢 Thomas Baker、 Tim Berners-Lee、David Booth、Dan Brickley、Gavin Carothers、Jeremy Carroll、 Pierre-Antoine Champin、Dan Connolly、John Cowan、Martin J. Dürst、 Alex Hall、Steve Harris、Sandro Hawke、Pat Hayes、Ivan Herman、Peter F. Patel-Schneider、 Addison Phillips、Eric Prud'hommeaux、Nathan Rixham、Andy Seaborne、Leif Halvard Silli、 Guus Schreiber、Dominik Tomaszuk 和 Antoine Zimmermann 的宝贵贡献。
RDF 工作组成员包括 Thomas Baker、 Scott Bauer、Dan Brickley、Gavin Carothers、Pierre-Antoine Champin、 Olivier Corby、Richard Cyganiak、Souripriya Das、Ian Davis、Lee Feigenbaum、 Fabien Gandon、Charles Greer、Alex Hall、Steve Harris、Sandro Hawke、 Pat Hayes、Ivan Herman、Nicholas Humfrey、Kingsley Idehen、Gregg Kellogg、 Markus Lanthaler、Arnaud Le Hors、Peter F. Patel-Schneider、 Eric Prud'hommeaux、Yves Raimond、Nathan Rixham、Guus Schreiber、 Andy Seaborne、Manu Sporny、Thomas Steiner、Ted Thibodeau、Mischa Tuffield、 William Waites、Jan Wielemaker、David Wood、Zhe Wu 和 Antoine Zimmermann。
本节是非规范性的。
除编辑外,以下人员也为本规范作出了贡献: Denis Ah-Kang, doerthe, Dominik Tomaszuk, Enrico Franconi, james anderson, Niklas Lindström, Peter F. Patel-Schneider, Ruben Taelman, Sarven Capadisli, Ted Thibodeau Jr, Thomas Tanon, and William Van Woensel
RDF & SPARQL 工作组成员包括 Vladimir Alexiev、 James Anderson、 Amin Anjomshoaa、 Julián Arenas-Guerrero、 Dörthe Arndt、 Bilal Ben Mahria、 Erich Bremer、 Dan Brickley、 Kurt Cagle、 Sarven Capadisli、 Rémi Ceres、 Pierre-Antoine Champin、 David Chaves-Fraga、 Souripriya Das、 Daniil Dobriy、 Enrico Franconi、 Jeffrey Phillips Freeman、 Fabien Gandon、 Benjamin Goering、 Damien Graux、 Adrian Gschwend、 Olaf Hartig、 Timothée Haudebourg、 Ian Horrocks、 Gregg Kellogg、 Mark Kim、 Jose Emilio Labra Gayo、 Ora Lassila、 Richard Lea、 Niklas Lindström、 Pasquale Lisena、 Thomas Lörtsch、 Matthew Nguyen、 Peter Patel-Schneider、 Thomas Pellissier Tanon、 Dave Raggett、 Jean-Yves ROSSI、 Felix Sasaki、 Andy Seaborne、 Alan Snyder、 Stuart Sutton、 Ruben Taelman、 Ted Thibodeau Jr、 Dominik Tomaszuk、 Raphaël Troncy、 William Van Woensel、 Gregory Williams、 Jesse Wright、 Achille Zappa,以及 Antoine Zimmermann。
是否认可任务组成员?贡献者列表并不容易找到。
本节是非规范性的。
Content-Type 标头和/或
语法在 RDF 文档中声明 RDF 版本。rdf:HTML 和 rdf:XMLLiteral 数据类型的定义成为规范性的。rdf:HTML 和 rdf:XMLLiteral
数据类型的章节移至此附录。rdf:JSON 数据类型,其定义采纳自
[JSON-LD11] 中的
第 10.2 节
rdf:JSON 数据类型。
请注意,此处定义的值空间
更新了 JSON-LD
1.1 [JSON-LD11]
中定义的
rdf:JSON 数据类型的
值空间
rdf:XMLLiteral 数据类型的规范映射章节。
RDF 版本 1.1 和 1.2 之间差异的详细概览可见于 What’s New in RDF 1.2 [RDF12-NEW]。
rdf:HTML
§A.1
rdf:JSON
§A.3
rdf:XMLLiteral
§A.2
isEqualNode(otherNode)(用于
Node)
normalize()(用于 Node)
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in: