RDF的IRI、Blank Node、Literal、Triple、Graph、Named Graph和Dataset有什么区别?
rdf iri blank node literal triple graph named graph dataset differences
IRI是可全局标识资源的名称;Blank Node表示没有全局名称的节点;Literal表示字符串、数字、日期等数据值;Triple用主语、谓语、宾语表达一条关系;Graph是一组三元组;Named Graph是在Dataset中用名称关联的一张图;Dataset由一个默认图和零个或多个命名图组成。
直接答案
IRI是可全局标识资源的名称;Blank Node表示没有全局名称的节点;Literal表示字符串、数字、日期等数据值;Triple用主语、谓语、宾语表达一条关系;Graph是一组三元组;Named Graph是在Dataset中用名称关联的一张图;Dataset由一个默认图和零个或多个命名图组成。
IRI、Blank Node和Literal是RDF term;Triple是由term组成的陈述;Graph与Dataset是更高层容器。空白节点不是SQL NULL,命名图的名称也不自动证明图的来源、时间或可信度,需要额外的provenance语句和应用约定。
一、七个概念快速对比
左右滑动查看完整对比 →| 概念 | 层级 | 是否有全局名称 | 典型作用 |
|---|---|---|---|
| IRI | RDF term | 是 | 标识实体、类别和属性 |
| Blank Node | RDF term | 否 | 表示局部匿名资源 |
| Literal | RDF term | 不适用 | 表示文本、数字和日期值 |
| Triple | 陈述 | 不适用 | 连接主语、谓语和宾语 |
| Graph | 三元组集合 | 本身未必有名称 | 表示一组断言 |
| Named Graph | Dataset成员 | 由图名关联 | 分区查询和管理语境 |
| Dataset | 图的集合 | 不适用 | 包含默认图与命名图 |
不要把序列化语法中的缩写当成抽象数据模型本身。
二、RDF term是什么
RDF term是能出现在三元组相应位置的基本值。RDF 1.2标准模型包括IRI、Blank Node、Literal以及新增的Triple Term等类型。
不同类型即使字符看起来相同也不相等。例如IRI <http://example.org/a不同于字符串Literal "http://example.org/a"。
三、IRI是什么
Internationalized Resource Identifier用于标识资源。资源可以是网页、人物、地点、概念、类别或属性,不要求该IRI在浏览器中一定能打开。
采用稳定、受控制的HTTP(S) IRI有利于跨数据集链接和文档发现。
四、IRI与URL有什么区别
URL强调定位和访问资源;IRI是更广的标识符概念,允许国际字符并可用于纯粹命名。RDF使用IRI作为抽象名称。
一个可解引用HTTP IRI可以同时标识资源并提供描述文档,但二者的语义需要清晰设计。
五、Prefix是什么
Turtle与SPARQL可用prefix把长IRI缩写,例如schema:name展开为完整schema.org IRI。Prefix只是文档或查询中的语法便利。
不同文件可以给同一命名空间使用不同prefix,真正比较的是展开后的IRI。
六、Blank Node是什么
Blank Node表示图内存在某个资源,但没有给它全局IRI。它适合局部结构,如地址节点、列表节点或只在当前图中有意义的中间实体。
Blank Node拥有节点身份,但其序列化标签通常只在局部范围内有效。
七、Blank Node不是NULL
SQL NULL表示值未知或不适用;Blank Node表示“有一个资源,只是没有全局名称”。它可以作为多个Triple的共同主语或宾语并承载多项属性。
两个不同Blank Node也不能因为属性相同就自动视为同一实体。
八、Blank Node标签能当数据库ID吗
不应。:b1等标签是序列化时引用匿名节点的局部标识,解析、合并或重新导出后可能变化。
需要跨文件、跨时间稳定引用的实体应分配IRI,或在导入时进行skolemization并记录规则。
九、Skolem IRI是什么
Skolemization用新IRI替代Blank Node,使匿名资源可稳定引用。该IRI应来自受控命名空间,并避免与真实业务标识混淆。
转换能改善同步和差异比较,但也会改变节点的标识方式,需在数据契约中声明。
十、Literal是什么
Literal表示值,由lexical form与datatype组成;语言字符串还可带language tag。例如"42"^^xsd:integer是整数Literal,"猫"@zh是带中文标签的字符串。
Literal通常出现在宾语位置,不能用作谓语。
十一、Plain String与语言字符串不同吗
不同。"cat"与"cat"@en是不同RDF Literal。前者没有语言标签,后者明确为英文。
SPARQL精确匹配时,查询无标签字符串不会自动匹配带@en的值。
十二、Datatype有什么作用
Datatype说明lexical form怎样映射为值。"01"^^xsd:integer与"1"^^xsd:integer文本不同,但可能表示同一整数值;具体相等与排序由SPARQL和datatype语义决定。
不要把日期、布尔和数值全部作为无类型字符串,否则范围查询和验证会困难。
十三、Triple是什么
RDF Triple由subject、predicate和object构成。标准形式中subject是IRI或Blank Node,predicate必须是IRI,object可为IRI、Blank Node或Literal;RDF 1.2还扩展了Triple Term相关表达。
例如:ex:alice schema:name "Alice"@en。
十四、Predicate为什么必须是IRI
谓语定义关系或属性语义,需要能在数据集间稳定识别。使用IRI可避免不同来源把同名字段误认为同一属性。
JSON键name只有局部上下文,RDF谓语https://schema.org/name具有明确全局标识。
十五、Triple是事实吗
Triple是图中被断言的陈述,不自动等于客观事实。数据可能错误、过期、来源不明或只在某种语境下成立。
可信系统应记录来源、时间、生成方式和责任主体,而不是把“存在于图中”当成已证实。
十六、RDF Graph是什么
RDF Graph是一组三元组的集合。集合语义意味着完全相同的Triple重复出现不会形成两条可计数记录。
Graph不是节点与边的某种特定存储实现,数据库可用表、索引或其他结构保存同一抽象模型。
十七、合并Graph会发生什么
简单合并通常取两组三元组的并集,但Blank Node必须避免意外碰撞。不同来源的局部标签相同,不代表同一节点。
解析器应按作用域重命名Blank Node,再进行安全合并。
十八、Named Graph是什么
在RDF Dataset中,Named Graph是图名与RDF Graph的关联。SPARQL可用GRAPH选择特定命名图进行匹配。
图名常为IRI,RDF 1.2也讨论更宽的模型能力;实现兼容性应以目标系统为准。
二十、Default Graph是什么
Dataset总有一个默认图,SPARQL中没有GRAPH子句的基本图模式通常在active default graph上匹配。默认图怎样由底层命名图组成,由数据集和查询配置决定。
有的系统默认图为空,有的合并全部命名图,不能跨产品假设相同。
二十一、RDF Dataset是什么
RDF Dataset包含一个默认图,以及零个或多个命名图关联。它让查询在一组图之间切换,并为数据分区、权限和来源管理提供基础。
Dataset不是简单“一个更大的Graph”,因为图边界和名称本身携带应用意义。
二十二、Quad是什么
工程中常用subject、predicate、object、graph四元组表示Dataset中的命名图成员。前三项构成Triple,第四项指出所在图。
Quad是方便存储与交换Dataset的视角,不应误解为RDF关系天然有第四个语义位置。
二十三、SPARQL Triple Pattern是什么
Triple Pattern类似Triple,但subject、predicate或object位置可包含查询变量。多个相邻模式构成Basic Graph Pattern,通过子图匹配产生变量绑定。
查询变量不是RDF term,也不会作为实际数据写入Graph。
二十四、GRAPH关键字做什么
GRAPH <iri { ... }把其中模式匹配到指定命名图;GRAPH ?g { ... }可遍历Dataset中的图名并绑定变量。
离开GRAPH子句后,匹配通常回到默认active graph。
二十五、Named Graph能做权限隔离吗
可以作为权限设计单位,但RDF规范本身不提供访问控制。Triple store必须实施认证、图级授权和查询限制。
把租户数据放不同命名图却允许任意GRAPH ?g查询,会造成跨租户泄露。
二十六、Named Graph能记录版本吗
可为每次导入或版本分配不同图名,并在元数据图中记录生成时间与来源。更新时也可使用新图保留历史。
版本、有效时间和事务时间要定义清楚,图名本身不能表达完整时态语义。
二十七、RDF 1.2 Triple Term是什么
RDF 1.2允许Triple作为一种term出现在另一Triple的object位置,用于谈论某条陈述。这与旧式reification或RDF-star相关实践有联系,但应按最终规范与工具支持实施。
不能假设所有RDF 1.1存储和序列化器都已支持。
二十八、序列化格式与模型的区别
Turtle、N-Triples、TriG、N-Quads、JSON-LD和RDF/XML是表达RDF数据的语法。Graph或Dataset是抽象模型。
同一Graph可序列化为不同格式;文本逐字不同不代表语义不同。
二十九、数据建模选择清单
跨系统实体使用稳定IRI;局部匿名结构谨慎用Blank Node;数据值用正确datatype与language tag;不同来源或批次用Named Graph分区;用显式provenance描述来源;定义默认图行为与访问控制。
导入前还要明确Blank Node作用域、重复Triple处理和版本策略。
三十、常见误区
常见误区包括把IRI当网页地址、把Blank Node当NULL、依赖空白节点标签、把Literal字符串与IRI混用、认为重复Triple可计数、把图名自动解释为来源、假设默认图总是全部命名图并集,以及把Turtle语法当成RDF模型本身。
这些错误会造成实体重复、查询漏数和来源误判。
结论
IRI、Blank Node和Literal组成RDF的基本term,Triple表达关系,Graph汇集断言,Named Graph保留图边界,Dataset组织默认图与命名图。正确区分标识、数值、匿名资源、陈述和容器层级,是构建可链接、可查询且可追溯知识数据的基础。
参考资料
W3C:rdf12 conceptsW3C · 术语定义与技术背景 · 访问 2026-08-30
W3C:rdf12 semanticsW3C · 术语定义与技术背景 · 访问 2026-08-30
W3C:sparql12 queryW3C · 术语定义与技术背景 · 访问 2026-08-30
W3C:rdf12 schemaW3C · 术语定义与技术背景 · 访问 2026-08-30