RDF 1.2 N-Triples

RDF 图的基于行的语法

W3C 工作草案

关于本文档的更多详情
本版本:
https://www.w3.org/TR/2026/WD-rdf12-n-triples-20261007/
最新发布版本:
https://www.w3.org/TR/rdf12-n-triples/
最新编辑草案:
https://w3c.github.io/rdf-n-triples/spec/
历史:
https://www.w3.org/standards/history/rdf12-n-triples/
提交历史
测试套件:
https://w3c.github.io/rdf-tests/rdf/rdf12/rdf-n-triples/
实现报告:
https://w3c.github.io/rdf-tests/rdf/rdf12/reports/
最新推荐标准:
https://www.w3.org/TR/n-triples
编辑:
Gregg Kellogg(至 2025-09-06),谨此 纪念
Dominik Tomaszuk
前任编辑:
Gavin Carothers(RDF 1.1)
Andy Seaborne(RDF 1.1)
作者:
David Beckett
反馈:
GitHub w3c/rdf-n-triples (拉取请求, 新建议题, 未关闭议题)
public-rdf-star-wg@w3.org 主题行请写 [rdf12-n-triples] … 消息主题 …(存档)

摘要

N-Triples 是一种基于行的纯文本格式,用于编码 RDF 图。

RDF 1.2 N-Triples 引入了 三元组项 作为第四类 RDF 项, 可用作另一个 三元组的 对象, 从而可以对其他语句作出语句。 RDF 1.2 N-Triples 还新增了对 带方向的语言标记字符串的支持。

本文档状态

本节描述本文档 在发布时的状态。当前 W3C 出版物列表以及本技术报告的最新修订版可在 W3C 标准与草案 索引中找到。

本文档是 RDF 1.2 文档套件的一部分。 N-Triples 格式是一种基于行的 RDF 语法, 基于 Turtle [RDF12-TURTLE] 的一个子集。

为退出 W3C 候选推荐标准阶段, W3C RDF & SPARQL 工作组 要求至少两个独立实现通过 专用测试套件中的每项测试。

本文档由 RDF & SPARQL 工作组作为 工作草案发布,并使用 推荐标准 轨道。

发布为 工作草案并不意味着 W3C 及其成员的认可。

这是一份草案文档,随时可能被其他 文档更新、替换或废弃。除作为进行中的工作外, 不宜引用本文档。 此即将成为推荐标准的文档的未来更新可能会纳入 新特性。

本文档由一个根据 W3C 专利 政策运作的小组制作。 W3C 维护一份 与该小组交付物相关的任何专利 披露的公开列表; 该页面还包括 披露专利的说明。实际知悉某项专利且认为该专利包含 必要权利要求的个人 必须按照 W3C 专利政策第 6 节 披露该信息。

本文档受 2025 年 8 月 18 日 W3C 流程文档约束。

1. 引言

本节为非规范性内容。

本文档定义了 N-Triples,这是一种用于 RDF [RDF12-CONCEPTS] 的具体语法。 N-Triples 是 Turtle [RDF12-TURTLE] 的一个易于解析的基于行的子集。

该语法是最初在 RDF Test Cases [RDF-TESTCASES] 文档中定义的 N-Triples 的修订版本。 其最初意图是用于编写测试用例, 但事实证明它作为 RDF 数据的交换格式很受欢迎。 本规范进一步扩展了 [N-TRIPLES] 中定义的语法,以 支持 [RDF12-CONCEPTS] 引入的新特性。 此扩展完全向后兼容。

一个 N-Triples 文档可以包含一种解析 指令, 用于声明内容的 RDF 版本。 参见 2.2 版本声明。

N-Triples 三元组是表示一个 RDF 三元组的 主语、 谓语和 宾语 的 RDF 项序列。 这些项可以由空白符(空格和/或 制表符)分隔。 此序列以句点(.)结束, 后面可选地跟随空白符和/或注释, 以及换行(在文档末尾可选)。

示例 1:N-Triples 中 注释的使用

<http://one.example/subject1> <http://one.example/predicate1> <http://one.example/object1> . # comments here
# or on a line by themselves
_:subject1 <http://an.example/predicate1> "object1" .
_:subject2 <http://an.example/predicate2> "object2" .

N-Triples 三元组也是 Turtle 简单三元组, 但 Turtle 包含 RDF 项的其他表示方式以及 RDF 三元组的缩写。 当由 Turtle 解析器解析时, N-Triples 格式的数据将产生与 N-Triples 语言解析器完全相同的三元组。

N-Triples 文档所表示的 RDF 图包含 与 N-Triples triple 产生式匹配的每一个 三元组。

2. N-Triples 语言

本节为非规范性内容。

一个 N-Triples 文档允许以文本形式写下一个 RDF 图。 RDF 图由简单三元组组成, 这些三元组包含一个 主语、 谓语和 宾语 以及可选的空行。 注释可以出现在一个不属于 其他词法记号的 # 之后,并持续到行末。

2.1 简单三元组

最简单的三元组语句是 (主语、 谓语和 宾语)项的序列, 并以句点(.)终止。 空白符(空格 U+0020 或制表符 U+0009) 可以出现在各项周围, 但语法中说明为有意义的位置除外。

注释按空白符处理,并且可以出现在一个不属于 其他词法记号的 # 之后, 并持续到行末。

示例 2: 简单三元组

<http://example.org/#spiderman> <http://www.perceive.net/schemas/relationship/enemyOf> <http://example.org/#green-goblin> .

2.2 版本声明

N-Triples 语言自诞生以来不断演进,RDF 1.2 添加了新语法。 RDF 1.2 N-Triples 引入了 VERSION 指令, 以及可选的 version 媒体类型参数。 在分别序列化和解析带有新特性(例如 初始文本方向 或三元组项)的 N-Triples 时, 作者和解析器可以使用这些指令来声明和检测新语法形式的使用; 类似地, HTTP 客户端和服务器可以使用 version 媒体类型 参数。

与 Turtle 不同,版本声明区分大小写。

示例 3:版本声明

VERSION "1.2"
<http://example.org/#spiderman> <http://www.perceive.net/schemas/relationship/enemyOf> <http://example.org/#green-goblin> .

通过 HTTP 传输内容时,发送方和接收方可以使用可选的 version 媒体类型参数 声明或请求版本:

示例 4:HTTP 版本声明

GET /document.nt HTTP/1.1
Host: example.com
Accept: application/n-triples; version=1.2

有关使用版本声明的更多考量,参见 [RDF12-TURTLE] 中的 版本声明。

2.3 三元组项

三元组项 可以作为一个 RDF 三元组的宾语。

三元组项 表示为一个 tripleTerm,其中包含 subject、 predicate和 object, 前面带有 <<(, 后面跟有 )>>。 注意,三元组项 可以嵌套。

示例 5: 三元组项

VERSION                                                     "1.2"
_:e38  <ex:familyName>                                      "Smith" .
_:anno <http://www.w3.org/1999/02/22-rdf-syntax-ns#reifies> <<( _:e38 <http://example.com/jobTitle> "Designer" )>> .
_:anno <http://example.com/accordingTo>                     _:e22 .

2.4 IRI

IRI 只能写成 已解析的 IRI。 IRI 前面带有 <, 后面跟有 >, 并且可以包含数值转义序列。 例如 <http://example.org/#green-goblin>。

2.5 RDF 字面量

字面量 用于标识字符串、数字、日期等值。

字面量(语法产生式 Literal) 具有一种词法形式,后面跟有 语言标记 (可能包括初始文本方向)、 数据类型 IRI, 或者两者都没有。

词法形式的表示由一个 初始定界符 "、 一系列允许的字符或 数值转义序列或 字符串转义序列, 以及一个最终定界符组成。

字面量不得包含字符 "、 LF 或 CR, 除非这些字符采用转义形式。 此外,\ 不得出现在任何带引号的字面量中,除非它是转义序列的一部分, 并且 " 字符 只能使用转义序列包含在带引号的字面量中。

相应的词法形式 是处理任何转义序列之后、位于定界符之间的字符。 如果存在,LANG_DIR 终结符会匹配语言标记 以及可选的初始文本方向。 语言标记 前面带有 @, 如果存在,初始文本方向 与语言标记 之间由 -- 分隔。 如果没有语言标记,则可以有一个 数据类型 IRI, 前面带有 ^^。 如果没有数据类型 IRI,也没有语言标记,则 它是一个简单字面量, 且数据类型为 http://www.w3.org/2001/XMLSchema#string。

示例 6: N-Triples 中的字面量

VERSION     "1.2"
<http://example.org/show/218> <http://www.w3.org/2000/01/rdf-schema#label> "That Seventies Show"^^<http://www.w3.org/2001/XMLSchema#string> . # literal with XML Schema string datatype
<http://example.org/show/218> <http://www.w3.org/2000/01/rdf-schema#label> "That Seventies Show" . # same as above
<http://example.org/show/218> <http://example.org/show/localName> "That Seventies Show"@en . # literal with a language tag
<http://example.org/show/218> <http://example.org/show/localName> "That Seventies Show"@en-ltr . # literal with a language tag and an initial text direction
<http://example.org/show/218> <http://example.org/show/localName> "Cette Série des Années Septante"@fr-be .  # literal outside of ASCII range with a region subtag
<http://example.org/#spiderman> <http://example.org/text> "This is a multi-line literal with many quotation marks (""""") and two apostrophes ('')." .
<http://en.wikipedia.org/wiki/Helium> <http://example.org/elements/atomicNumber> "2"^^<http://www.w3.org/2001/XMLSchema#integer> . # xsd:integer
<http://en.wikipedia.org/wiki/Helium> <http://example.org/elements/specificGravity> "1.663E-4"^^<http://www.w3.org/2001/XMLSchema#double> .     # xsd:double

2.6 RDF 空白节点

RDF 空白节点表示为 _: 后跟与 BLANK_NODE_LABEL 产生式匹配的空白节点标签。

非正式地说, _: 之后的第一个字符要么是 PN_CHARS_U 匹配的字符,要么是数字。后续字符(如果存在)由 PN_CHARS 或 . 匹配, 但 . 不允许作为最后一个字符。

会为文档中的每一个唯一 空白节点标识符分配一个新的 RDF 空白节点。 重复使用同一个 空白节点标识符 会标识同一个空白节点。

示例 7:N-Triples 中的空白 节点

_:alice <http://xmlns.com/foaf/0.1/knows> _:bob .
_:bob   <http://xmlns.com/foaf/0.1/knows> _:alice .

3. N-Triples 的规范形式

本节定义了 N-Triples 的一种规范形式, 其布局完全指定。 该语言的语法不变。

虽然 N-Triples 语法允许在 RDF 数据的表示和布局方面作出选择, 但 N-Triples 的规范形式为任何三元组提供唯一的句法表示。 每个码点 只能由 UCHAR、 ECHAR 或未编码字符中的一种方式表示, 在相关产生式允许选择表示方式的情况下也是如此。 每个三元组都在单行中表示,并带有指定的空白符。

规范 N-Triples 对布局有以下附加约束:

4. 一致性

除标记为非规范性的章节外,本规范中的所有编写指南、图表、示例和注释均为非规范性内容。 本规范中的其他所有内容均为规范性内容。

本文档中的关键词 MAY、MUST、MUST NOT 和 SHOULD 应按 BCP 14 [RFC2119] [RFC8174] 中所述进行解释,当且仅当它们像这里所示那样全部 大写出现时。

本规范为以下内容定义一致性准则:

符合要求的 N-Triples 文档是一个 RDF 字符串, 它符合 5. N-Triples 语法中定义的语法和附加约束, 并以 ntriplesDoc 产生式开始。 N-Triples 文档序列化一个 RDF 图。

符合要求的 规范 N-Triples 文档是一个 遵循规范 N-Triples 附加约束的 N-Triples 文档。

符合要求的 N-Triples 解析器是一个能够代表应用程序 读取 N-Triples 文档的系统。 它将序列化的 RDF 图 (如 6. 解析中定义) 提供给应用程序,通常通过某种形式的 API。

标识 N-Triples 语言的 IRI 是:http://www.w3.org/ns/formats/N-Triples

4.1 媒体类型和内容 编码

N-Triples 的媒体类型是 application/n-triples。 N-Triples 的内容编码始终为 UTF-8 [RFC3629]。 有关媒体类型注册表,参见 N-Triples 媒体类型。

4.1.1 其他媒体类型

N-Triples 历史上曾使用其他媒体类型提供。 N-Triples 也可以作为 text/plain 提供。 当以这种方式使用时,N-Triples 必须使用任何 US-ASCII 之外字符的转义形式。 由于 N-Triples 是 Turtle 的一个子集,N-Triples 文档也可以作为 text/turtle 提供。 在这两种情况下,该文档都不是 N-Triples 文档,因为 N-Triples 文档仅以 application/n-triples 提供。

4.2 N-Triples 的未来兼容性

N-Triples 格式未来的任何演进,如果复用相同的媒体类型, 必须要求使用VERSION 指令, 并且对于任何不严格符合 N-Triples 1.2 的文档, 使用晚于 1.2 的版本标签。 这将允许解析器妥善处理其不支持的较新特性。

5. N-Triples 语法

N-Triples 文档是一个以 UTF-8 [RFC3629] 编码的 RDF 字符串。 只允许 Unicode 标量值, 范围为 U+0000 到 U+D7FF 以及 U+E000 到 U+10FFFF。 这排除了 代理码点, 即 U+D800 到 U+DFFF 范围。

5.1 空白符

空白符(空格和/或 制表符)允许出现在终结符之外。 下面以大写形式出现的规则名称表示空白符在这些位置具有意义。

空白符在产生式 STRING_LITERAL_QUOTE 中具有意义。

空行由仅包含空白符和/或 注释组成, 可以出现在允许 triple 产生式出现的任何位置, 并按空白符处理。

注

与 Turtle [RDF12-TURTLE] 相比,N-Triples 只允许水平空白符(空格或 制表符), 而 Turtle 也将 LF 和 CR 视为空白符。

5.2 注释

N-Triples 中的注释开始于 #, 该字符位于 IRIREF 或 STRING_LITERAL_QUOTE 之外, 并持续到行尾 —— 由字符 CR 或 LF 标记 —— 或持续到文件末尾(如果注释标记之后没有行尾)。 注释按空白符处理。

5.3 语法

这里使用的 EBNF 定义于 XML 1.0 [EBNF-NOTATION]。

转义序列规则与 Turtle [RDF12-TURTLE] 相同。 但是,由于只允许 STRING_LITERAL_QUOTE 产生式,字面量中的换行必须被转义。

'VERSION' 终结符用单引号括起, 表示它区分大小写。

[1] ntriplesDoc ::= statement? (EOL statement)* EOL?
[2] statement ::= directive | triple
[3] directive ::= versionDirective
[4] versionDirective ::= 'VERSION' versionSpecifier
[5] versionSpecifier ::= STRING_LITERAL_QUOTE
[6] triple ::= subject predicate object '.'
[7] subject ::= IRIREF | BLANK_NODE_LABEL
[8] predicate ::= IRIREF
[9] object ::= IRIREF | BLANK_NODE_LABEL | literal | tripleTerm
[10] literal ::= STRING_LITERAL_QUOTE (('^^' IRIREF) | LANG_DIR)?
[11] tripleTerm ::= '<<(' subject predicate object ')>>'

终结符产生式

[13] IRIREF ::= '<' ([^#x00-#x20<>"{}|^`\] | UCHAR)* '>'
[14] BLANK_NODE_LABEL ::= '_:' (PN_CHARS_U | [0-9]) ((PN_CHARS | '.')* PN_CHARS)?
[15] LANG_DIR ::= '@' [a-zA-Z]+ ('-' [a-zA-Z0-9]+)* ('--' [a-zA-Z]+)?
[16] STRING_LITERAL_QUOTE ::= '"' ([^#x22#x5C#x0A#x0D] | ECHAR | UCHAR)* '"'
[17] UCHAR ::= ('\u' HEX HEX HEX HEX) | ('\U' HEX HEX HEX HEX HEX HEX HEX HEX)
[18] ECHAR ::= '\' [tbnrf\"']
[19] PN_CHARS_BASE ::= [A-Z]
| [a-z]
| [#xC0-#xD6]
| [#xD8-#xF6]
| [#xF8-#x02FF]
| [#x0370-#x037D]
| [#x037F-#x1FFF]
| [#x200C-#x200D]
| [#x2070-#x218F]
| [#x2C00-#x2FEF]
| [#x3001-#xD7FF]
| [#xF900-#xFDCF]
| [#xFDF0-#xFFFD]
| [#x00010000-#x000EFFFF]
[20] PN_CHARS_U ::= PN_CHARS_BASE | '_'
[21] PN_CHARS ::= PN_CHARS_U | '-' | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]
[22] HEX ::= [0-9] | [A-F] | [a-f]
[23] EOL ::= [#x0D#x0A]+

该语法的文本版本可在此处获得。

5.4 选定的终结字面 字符串

本文档使用一些特定的终结字面字符串 [EBNF-NOTATION]。 为阐明这些终结字面字符串所使用的 Unicode 码点,以下 表格描述了本文档中使用的特定字符和序列。

代码 字形 描述
U+0008 BS 退格
U+0009 HT 水平制表符
U+000A LF 换行
U+000B VT 垂直制表符
U+000C FF 换页
U+000D CR 回车
U+0022 " 引号
U+0023 # 数字符号
U+002D - 连字符
U+002E . 句点
U+0030 0 数字零
U+0039 9 数字九
U+003B : 冒号
U+003C < 小于号
U+003E > 大于号
U+0040 @ At 符号
U+0041 A 拉丁大写字母 A
U+0046 F 拉丁大写字母 F
U+005C \ 反斜杠
U+005F _ 下划线
U+0061 a 拉丁小写字母 a
U+007A z 拉丁小写字母 z
U+007F DEL 删除
U+00B7 · 中点
U+203F ‿ 下连线
U+2040 ⁀ 字符连线

其他短终结字面字符串由特定的 Unicode 字符序列组成:

space
U+0020
<<(
两个连接的小于号字符,每个字符的码点均为 U+003C, 后跟一个左括号字符,其码点为 U+0028
)>>
一个左括号字符,其码点为 U+0029, 后跟两个连接的大于号字符,每个字符的码点均为 U+003E
^^
两个连接的抑扬符字符,每个字符的码点均为 U+005E
_:
_ 后跟 :
--
两个连接的 - 字符

6. 解析

本节通过将匹配产生式和词法记号的字符串 映射到 RDF 项或其组成部分(例如语言标记、字面量的词法形式), 将符合 5.3 语法中语法的字符串 映射为三元组流。 语法产生式会改变解析器状态并发出三元组。

6.1 解析器状态

解析 N-Triples 需要包含两个项目的状态:

6.2 RDF 项构造器

此表将产生式和词法记号映射到 RDF 项,或映射到RDF 项的组成部分,这些内容列于 6. 解析:

产生式 类型 过程
versionSpecifier 字面量 curVersion 取自一个字面量, 该字面量使用匹配的 RDF 字符串 词法形式和 xsd:string 数据类型。
BLANK_NODE_LABEL 空白节点 _: 之后的字符串 是 bnodeLabels 中的键。 如果映射中没有对应的空白节点, 则分配一个。
IRIREF IRI 取 < 与 > 之间的字符, 并对转义序列解除转义, 以形成 IRI。 所得 IRI 必须符合通用 IRI 语法的 句法限制, 并且应当符合 [RFC3986] 的 第 3.3 节, 并遵守相应 IRI 方案规范所施加的任何更窄限制。
LANG_DIR 语言标记 @ 后面的字符 形成语言标记 以及可选的初始文本方向, 如果匹配的字符包含 --。 语言标记 必须按照 [BCP47] 的 第 2.2.9 节 是格式良好的。 如果存在,初始文本方向 必须是 ltr 或 rtl。
STRING_LITERAL_QUOTE 词法形式 取最外层引号(")之间的字符, 并对转义序列解除转义, 以形成词法形式的 字符串。
literal 字面量 该字面量具有第一个规则实参 STRING_LITERAL_QUOTE 的词法形式, 并且根据哪条规则匹配了输入, 要么具有来自 LANG_DIR 的 语言标记 及可选的初始文本方向, 要么具有 iri 的数据类型 IRI。 如果 LANG_DIR 规则匹配, 则语言标记 和初始文本方向 取自 LANG_DIR。 如果没有初始文本方向, 则数据类型为 rdf:langString。 如果有初始文本方向, 则数据类型为 rdf:dirLangString。 如果 LANG_DIR 和数据类型 IRI均未匹配, 则该字面量的数据类型为 xsd:string。
tripleTerm 三元组项 三元组项 由从 subject、 predicate 和 object 产生式 构造出的项组成。

6.3 RDF 图构建

一个 N-Triples 文档定义一个 RDF 图 ,由一组 RDF 三元组组成。 triple产生式 会生成由为以下内容构造的项所定义的三元组: subject、 predicate以及 object。

6.4 不符合规范的文档

如果解析过程的目标不符合所指定的语法 (参见 5. N-Triples 语法),则解析结果 不由本规范定义。 错误检测、报告和恢复由实现者自行决定, 因为适当的行为取决于使用该 解析器的应用程序接口和协议。

A. 隐私考量

本节为非规范性内容。

N-Triples 格式用于表达任意应用数据, 其中可能包括个人身份信息(PII) 或其他可能被视为敏感的信息。 建议发布此类信息的作者仔细 考虑发布此类信息的需求和用途, 以及数据预期被使用和可能被披露的地区所适用的法规(例如 GDPR、 CCPA、 其他法规), 尤其是访问这些数据是否需要授权措施。

B. 安全考量

本节为非规范性内容。

STRING_LITERAL_QUOTE 产生式允许使用未转义的控制字符。 虽然本规范不会将此内容直接暴露给最终用户, 但它可能通过用户代理呈现,这可能导致所呈现的文本 因这些字符的呈现而被混淆。

N-Triples 是一种通用断言语言; 应用程序可以评估给定数据,以推断更多断言,或解引用 IRI, 从而触发该 IRI 所属方案的安全考量。 特别注意 [RFC3023] 第 10 节中有关 HTTP IRI 的隐私问题。 从不准确或恶意数据源获取的数据可能导致不准确或误导性的结论, 以及解引用非预期的 IRI。 必须谨慎使对所咨询资源的信任与 数据预期用途的敏感性相匹配; 对潜在医疗处理的推断可能需要不同于 旅行规划推断的信任程度。

N-Triples 语言用于表达任意应用数据; 安全考量会因使用领域而异。 适用于文本的安全工具和协议 (例如 PGP 加密、校验和验证、受密码保护的压缩) 也可以用于 N-Triples 文档。 必须施加能够反映嵌入信息敏感性的安全/隐私协议。

N-Triples 可以表达会呈现给用户的数据,例如 RDF Schema 标签。 渲染从不受信任的 N-Triples 文档取得的字符串, 或使用未转义字符的应用程序, 应当使用警告和其他适当手段,以限制 恶意字符串被用来误导读者的可能性。 XML 媒体类型注册中的安全考量([RFC3023] 第 10 节) 提供了关于表达任意数据和标记的额外指导。

N-Triples 使用 IRI 作为项标识符。 解释 N-Triples 中表达的数据的应用程序应当处理 国际化 资源标识符(IRI) [RFC3987] 第 8 节以及 统一资源 标识符(URI):通用语法 [RFC3986] 第 7 节中的安全问题。

多个 IRI 可能 具有相同的外观。 不同书写系统中的字符可能看起来相似(例如, 西里尔字母 “о” 可能看起来类似于拉丁字母 “o”)。 一个字符后跟组合字符可能与另一个字符 具有相同的视觉表示(例如,LATIN SMALL LETTER “E” 后跟 COMBINING ACUTE ACCENT 与 LATIN SMALL LETTER “E” WITH ACUTE 具有相同的视觉表示)。 任何在 N-Triples 中编写或解释数据的人或应用程序 都必须谨慎使用与预期语义匹配的 IRI, 并避免使用可能看起来相似的 IRI。 有关匹配视觉上相似字符的更多信息,可见 Unicode 安全考量 [UNICODE-SECURITY] 以及 国际化 资源标识符(IRI) [RFC3987] 第 8 节。

C. 互联网媒体类型和文件 扩展名

N-Triples 的互联网媒体类型(以前称为 MIME 类型)是 “application/n-triples”。

以下信息已提交给互联网工程指导组(IESG)进行审查、 批准并向 IANA 注册。

类型名称:
application
子类型名称:
n-triples
必需参数:
无
可选参数:
version
此参数是可选的。 如果存在,version 的可接受值 定义于 [RDF12-CONCEPTS] 或后续 规范中的 2.1 版本标签。
profile
此参数是可选的,用于包含额外信息。 当在不了解 profile 的情况下处理时, 它不会改变资源表示的语义。 profile 参数的值是一个由空格分隔的非空 URI 列表。 有关更多信息和背景,请参见 [RFC6906]。
编码考量:
N-Triples 的语法以 Unicode [UNICODE] 中的码点表示。 编码始终为 UTF-8 [UTF-8]。
Unicode 码点也可以使用 \uXXXX(U+0 到 U+FFFF)或 \UXXXXXXXX 语法(用于 U+10000 及之后的码点)表示,其中 X 是十六进制数字 [0-9A-F]
安全考量:
参见B. 安全 考量。
互操作性考量:
没有已知的互操作性问题。
已发布规范:
本规范。
使用此媒体类型的应用程序:
N-Triples 广泛用于表示 RDF 数据。 大多数常见编程语言中都有可用实现。
其他信息:
魔数:
无。
文件扩展名:
.nt;
可联系以获取更多信息的人员及电子邮件地址:
RDF & SPARQL 工作组 <public-rdf-star-wg@w3.org>
预期用途:
通用
使用限制:
无
作者:
N-Triples 规范是 RDF & SPARQL WG 的成果。W3C 保留对此规范的变更控制权。
注

客户端可以使用 profile 参数在内容协商过程中表达其偏好, 服务器也可以使用它来指示 关于响应的额外信息。

如果客户端给出了 profile 参数,服务器应当 返回一个遵循列表中所有 且被服务器识别的 profile 的文档。 服务器不应仅基于 profile 值而以错误响应。

如果服务器给出了 profile 参数,客户端可以选择忽略它。

注

建议 profile URI 可被解引用, 并在该 URI 处提供有用文档。

注

当作为 媒体类型参数 [RFC4288] 用于 HTTP Content-Type 标头 或 HTTP Accept 标头 [RFC7231] 时, 如果 profile 参数的值包含特殊字符,例如空白符,包括任何用于 分隔多个 profile URI 的空格, 则需要将该值括在引号(ASCII ")中。

需要注意的是,profile 参数的值 包含一个或多个 URI,而不是 IRI。因此可能需要 按照 [RFC3987] 中 第 3 节 IRI 与 URI 的关系 所规定,在 IRI 与 URI 之间进行转换。

D. 致谢

本节为非规范性内容。

D.1 RDF 1.1 致谢

本节为非规范性内容。

RDF 1.1 版本的编辑感谢 Gregg Kellogg、Eric Prud'hommeaux、Dave Beckett、David Robillard、Gregory Williams、Pat Hayes、Richard Cyganiak、Henry S. Thompson、 Peter Ansell、Evan Patton 和 David Booth 的宝贵贡献。

本规范是 RDF 工作组 成员长期审议的成果。 它借鉴了 [RDF-TESTCASES] 中较早的规范, 该规范由 Dave Beckett 编辑。

D.2 RDF 1.2 致谢

本节为非规范性内容。

RDF 1.2 版本的编辑感谢 Andy Seaborne 的宝贵贡献。

除编辑外,以下人员也为本规范作出了贡献: Andy Seaborne, Denis Ah-Kang, Gregory Todd Williams, Niklas Lindström, Peter F. Patel-Schneider, Pierre-Antoine Champin, Sarven Capadisli, Ted Thibodeau Jr, and Thomas Tanon

RDF & SPARQL 工作组的成员包括:
James Anderson, Dörthe Arndt, Jerven Bolleman, Erich Bremer, Pierre-Antoine Champin, Souripriya Das, Enrico Franconi, Adrian Gschwend, Olaf Hartig, Gregg Kellogg†, Ora Lassila, Niklas Lindström, Thomas Lörtsch, Peter Patel-Schneider, Dave Raggett, Felix Sasaki, Andy Seaborne, Ruben Taelman, Thomas Pellissier Tanon, Ted Thibodeau Jr, Dominik Tomaszuk, Gregory Williams, William Van Woensel, and Antoine Zimmermann
† Gregg Kellogg 于 2025 年 9 月去世。谨此感谢他对 RDF 及相关标准更广泛生态系统所作出的巨大贡献。

编辑注

是否要认可 Task Force 成员?贡献者列表并不容易找到。

E. RDF 1.1 与 RDF 1.2 之间的变更

本节为非规范性内容。

本规范扩展了 [N-TRIPLES] 中定义的原始 N-Triples 语法,以 支持 [RDF12-CONCEPTS] 引入的新特性。 此扩展完全向后兼容: 任何符合旧版本的文档都符合新版本,并会解析为同一个图。 此外,任何符合新版本且仅包含 RDF 1.1 特性的文档也 符合较早版本 (VERSION 指令除外;参见 2.2 版本声明)。 最后,新的句法构造在旧语法中都不是有效的。 这意味着任何使用 RDF 1.2 特性的 N-Triples 文档都不 符合本规范的先前版本,也不能在该版本下 被解释为不同的图。

更具体地说,已作出以下变更:

F. 索引

本节为非规范性内容。

F.1 由本 规范定义的术语

F.2 由引用定义的术语

G. 议题摘要

本节为非规范性内容。

本规范中未列出任何议题。

H. 参考文献

H.1 规范性参考文献

[BCP47]
语言标识标签。 Addison Phillips; Mark Davis. IETF. 2009 年 9 月。最佳当前实践。URL:https://www.rfc-editor.org/info/bcp47
[EBNF-NOTATION]
EBNF 表示法。Tim Bray; Jean Paoli; Michael Sperberg-McQueen; Eve Maler; François Yergeau 等。W3C。W3C 推荐标准。URL:https://www.w3.org/TR/xml/#sec-notation
[I18N-GLOSSARY]
国际化术语表。 Richard Ishida; Addison Phillips. W3C. 2024 年 10 月 17 日。W3C 工作组说明。URL:https://www.w3.org/TR/i18n-glossary/
[RDF12-CONCEPTS]
RDF 1.2 概念和抽象数据 模型。Andy Seaborne; Gregg Kellogg; Olaf Hartig; Pierre-Antoine Champin. W3C. 2026 年 4 月 7 日。W3C 候选推荐标准。URL:https://www.w3.org/TR/rdf12-concepts/
[RDF12-TURTLE]
RDF 1.2 Turtle。Gregg Kellogg; Andy Seaborne; Dominik Tomaszuk. W3C. 2026 年 9 月 14 日。W3C 工作草案。URL:https://www.w3.org/TR/rdf12-turtle/
[RFC2119]
用于 RFC 中表示 要求级别的关键词。S. Bradner. IETF. 1997 年 3 月。最佳当前实践。URL:https://www.rfc-editor.org/info/rfc2119/
[RFC3629]
UTF-8,ISO 10646 的一种转换格式。F. Yergeau. IETF. 2003 年 11 月。互联网标准。URL:https://www.rfc-editor.org/info/rfc3629/
[RFC3986]
统一资源标识符(URI):通用 语法。T. Berners-Lee; R. Fielding; L. Masinter. IETF. 2005 年 1 月。互联网 标准。URL:https://www.rfc-editor.org/info/rfc3986/
[RFC3987]
国际化资源标识符 (IRI)。M. Duerst; M. Suignard. IETF. 2005 年 1 月。提议标准。URL:https://www.rfc-editor.org/info/rfc3987/
[RFC6906]
“profile”链接关系 类型。E. Wilde. IETF. 2013 年 3 月。信息类。URL:https://www.rfc-editor.org/info/rfc6906/
[RFC8174]
RFC 2119 关键词中大写与小写的歧义。B. Leiba. IETF. 2017 年 5 月。最佳当前实践。URL:https://www.rfc-editor.org/info/rfc8174/
[UNICODE]
Unicode 标准。Unicode 联盟。URL:https://www.unicode.org/versions/latest/
[XML11]
可扩展标记语言(XML)1.1(第二 版)。Tim Bray; Jean Paoli; Michael Sperberg-McQueen; Eve Maler; François Yergeau; John Cowan 等。W3C。2006 年 8 月 16 日。W3C 推荐标准。URL:https://www.w3.org/TR/xml11/

H.2 资料性参考文献

[N-TRIPLES]
RDF 1.1 N-Triples。Gavin Carothers; Andy Seaborne。W3C。2014 年 2 月 25 日。W3C 推荐标准。URL:https://www.w3.org/TR/n-triples/
[RDF-TESTCASES]
RDF 测试用例。jan grant; Dave Beckett。W3C。2004 年 2 月 10 日。W3C 推荐标准。URL:https://www.w3.org/TR/rdf-testcases/
[RDF12-INTEROP]
RDF 1.2 互操作性。 Pierre-Antoine Champin。W3C。W3C 编辑草案。URL:https://w3c.github.io/rdf-interop/spec/
[RDF12-N-QUADS]
RDF 1.2 N-Quads。Gregg Kellogg; Dominik Tomaszuk。W3C。2026 年 7 月 23 日。W3C 工作草案。URL:https://www.w3.org/TR/rdf12-n-quads/
[RDF12-NEW]
RDF 1.2 的新增内容。W3C RDF & SPARQL 工作组。W3C。W3C 编辑草案。URL:https://w3c.github.io/rdf-new/spec/
[RDF12-PRIMER]
RDF 1.2 入门指南。Pierre-Antoine Champin; Niklas Lindström。W3C。2026 年 9 月 17 日。DNOTE。URL:https://www.w3.org/TR/rdf12-primer/
[RDF12-SCHEMA]
RDF 1.2 模式。Dominik Tomaszuk。 W3C。2026 年 3 月 28 日。W3C 工作草案。URL:https://www.w3.org/TR/rdf12-schema/
[RDF12-SEMANTICS]
RDF 1.2 语义。Peter Patel-Schneider; Dörthe Arndt; Enrico Franconi。W3C。2026 年 9 月 24 日。CRD。URL:https://www.w3.org/TR/rdf12-semantics/
[RDF12-TRIG]
RDF 1.2 TriG。Gregg Kellogg; Dominik Tomaszuk。W3C。2026 年 9 月 15 日。W3C 工作草案。URL:https://www.w3.org/TR/rdf12-trig/
[RDF12-XML]
RDF 1.2 XML 语法。Gregg Kellogg; Jerven Bolleman。W3C。2026 年 9 月 24 日。W3C 工作草案。URL:https://www.w3.org/TR/rdf12-xml/
[RFC3023]
XML 媒体类型。M. Murata; S. St. Laurent; D. Kohn。IETF。2001 年 1 月。提议标准。URL:https://www.rfc-editor.org/info/rfc3023/
[RFC4288]
媒体类型规范与注册 程序。N. Freed; J. Klensin。IETF。2005 年 12 月。当前最佳实践。 URL:https://www.rfc-editor.org/info/rfc4288/
[RFC7231]
超文本传输协议(HTTP/1.1): 语义与内容。R. Fielding,编;J. Reschke,编。IETF。2014 年 6 月。 提议标准。URL:https://httpwg.org/specs/rfc7231.html
[SPARQL12-CONCEPTS]
SPARQL 1.2 概念。W3C RDF & SPARQL 工作组。W3C。W3C 编辑草案。URL:https://w3c.github.io/sparql-concepts/spec/
[SPARQL12-ENTAILMENT]
SPARQL 1.2 蕴涵机制。 Peter Patel-Schneider。W3C。2026 年 4 月 9 日。W3C 工作草案。URL:https://www.w3.org/TR/sparql12-entailment/
[SPARQL12-FEDERATED-QUERY]
SPARQL 1.2 联合 查询。Ruben Taelman; Gregory Williams。W3C。2026 年 4 月 23 日。W3C 工作草案。 URL:https://www.w3.org/TR/sparql12-federated-query/
[SPARQL12-GRAPH-STORE-PROTOCOL]
SPARQL 1.2 图存储 协议。Andy Seaborne; Thomas Pellissier Tanon。W3C。2026 年 9 月 24 日。W3C 工作草案。URL:https://www.w3.org/TR/sparql12-graph-store-protocol/
[SPARQL12-NEW]
SPARQL 1.2 的新增内容。W3C RDF & SPARQL 工作组。W3C。W3C 编辑草案。URL:https://w3c.github.io/sparql-new/spec/
[SPARQL12-PROTOCOL]
SPARQL 1.2 协议。Andy Seaborne; Ruben Taelman; Gregory Williams; Thomas Pellissier Tanon。W3C。2026 年 7 月 23 日。W3C 工作 草案。URL:https://www.w3.org/TR/sparql12-protocol/
[SPARQL12-QUERY]
SPARQL 1.2 查询语言。Olaf Hartig; Andy Seaborne; Ruben Taelman; Gregory Williams; Thomas Pellissier Tanon。W3C。2026 年 10 月 4 日 。W3C 工作草案。URL:https://www.w3.org/TR/sparql12-query/
[SPARQL12-RESULTS-CSV-TSV]
SPARQL 1.2 查询结果 CSV 和 TSV 格式。Ruben Taelman; Gregory Williams; Thomas Pellissier Tanon。W3C。2026 年 7 月 23 日 。W3C 工作草案。URL:https://www.w3.org/TR/sparql12-results-csv-tsv/
[SPARQL12-RESULTS-JSON]
SPARQL 1.2 查询结果 JSON 格式。Andy Seaborne; Ruben Taelman; Gregory Williams; Thomas Pellissier Tanon。 W3C。2026 年 8 月 13 日。W3C 工作草案。URL:https://www.w3.org/TR/sparql12-results-json/
[SPARQL12-RESULTS-XML]
SPARQL 1.2 查询结果 XML 格式。Ruben Taelman; Dominik Tomaszuk; Thomas Pellissier Tanon。W3C。2024 年 12 月 27 日 。W3C 工作草案。URL:https://www.w3.org/TR/sparql12-results-xml/
[SPARQL12-SERVICE-DESCRIPTION]
SPARQL 1.2 服务 描述。Ruben Taelman; Gregory Williams。W3C。2026 年 4 月 23 日。W3C 工作 草案。URL:https://www.w3.org/TR/sparql12-service-description/
[SPARQL12-UPDATE]
SPARQL 1.2 更新。Ruben Taelman; Andy Seaborne; Thomas Pellissier Tanon。W3C。2026 年 6 月 12 日。W3C 工作草案。URL:https://www.w3.org/TR/sparql12-update/
[UNICODE-SECURITY]
Unicode 安全 注意事项。Mark Davis; Michel Suignard。Unicode 联盟。2014 年 9 月 19 日 。Unicode 技术报告第 36 号。URL:https://www.unicode.org/reports/tr36/tr36-15.html