GEOWIKI中文知识图谱检索⌕
首页 / 术语 / URI、URL、URN、IRI、CURIE 和 Compact IRI 有什么区别?
RAG · VERIFIED

URI、URL、URN、IRI、CURIE 和 Compact IRI 有什么区别?

uri url urn iri curie compact iri differences

别名:暂无登记别名
DIRECT DEFINITION / 直接定义

URI 是资源标识符的总称;URL 是兼具标识作用并说明主要访问机制或网络位置的一类 URI;URN 是使用 urn: 方案的持久命名标识符;IRI 把 URI 的字符范围扩展到国际化字符;CURIE 和 JSON-LD 的 Compact IRI 则借助上下文中的前缀映射,把较长的 IRI 写成 prefix:suffix 短形式。

直接答案

URI 是资源标识符的总称;URL 是兼具标识作用并说明主要访问机制或网络位置的一类 URI;URN 是使用 urn: 方案的持久命名标识符;IRI 把 URI 的字符范围扩展到国际化字符;CURIE 和 JSON-LD 的 Compact IRI 则借助上下文中的前缀映射,把较长的 IRI 写成 prefix:suffix 短形式。

最重要的边界是:URL、URN 和 IRI 本身属于标识符或引用语法,而 CURIE、Compact IRI 必须结合所在语言及其前缀映射才能展开。看到冒号并不能仅凭字符串断定它是 URI 方案还是前缀缩写。

一、六个术语快速对比

左右滑动查看完整对比 →
术语核心作用示例是否依赖外部前缀映射
URI用统一语法标识资源https://example.org/a
URL标识资源并提供主要访问方式https://example.org/a
URN在 urn 方案下提供持久名称urn:isbn:9780131103627
IRI允许更广泛 Unicode 字符的国际化标识符https://例子.测试/词条
CURIE由宿主语言定义前缀映射的紧凑名称foaf:name
Compact IRIJSON-LD 中的 prefix:suffix 紧凑 IRIschema:Person

表中的示例用于说明形式,不表示每个字符串在所有应用中都可访问,也不表示 CURIE 与 JSON-LD Compact IRI 可以脱离上下文互换。

二、URI 是什么

RFC 3986 将 URI 定义为一套紧凑字符序列,用来标识抽象或物理资源。通用语法可以包含方案、授权信息、路径、查询和片段,例如 scheme://authority/path?queryfragment,但不同方案不一定使用全部组成部分。

URI 的“资源”不只指网页。人、书籍、词汇概念、命名空间或不可直接下载的抽象对象都可以拥有 URI。标识与获取是两个问题:一个 URI 可以稳定标识对象,却不保证当前能通过 HTTP 得到表示。

三、URL 是 URI 的哪一部分

RFC 3986 把 URL 描述为 URI 的一个子集:它不仅标识资源,还通过主要访问机制描述定位方式。日常使用的 https://example.org/docs 是典型 URL,因为它包含通过 HTTPS 访问主机和路径所需的信息。

“所有 URL 都是 URI,但并非所有 URI 都是 URL”可以作为实用记忆法。不过,标准也提醒名称与定位不是完全互斥的分类。某个 URI 是否长期可用,更多取决于分配和维护策略,而不是字符串天生具有永久性。

四、URN 是什么

现代 URN 由 RFC 8141 规定,是采用 urn URI 方案的标识符。一般形式以 urn: 开头,随后包含命名空间标识符和特定命名空间字符串,还可以带有 RFC 8141 定义的附加组成部分。

例如 ISBN 命名空间可以为出版物形成 URN。URN 的目标是以名称标识资源,而不是直接写出资源位于哪台服务器。要从 URN 找到实际内容,应用可能需要解析服务、注册表或业务数据库。

五、URN 不等于“永不变化的字符串”

使用 urn: 前缀不会自动产生持久性。命名空间需要明确分配规则、唯一性范围、规范化方式和管理责任。若组织重复分配、随意回收或停止维护,形式正确的 URN 仍可能失去可靠含义。

同样,HTTP URL 也可以经过良好治理而长期稳定。选择 URN 还是 HTTPS URI,应依据解析方式、控制权、互操作要求和生命周期,而不是把“名称”和“位置”理解成绝对优劣。

六、IRI 为什么出现

传统 URI 语法主要使用 ASCII 字符。RFC 3987 定义 IRI,使标识符可以直接包含更广泛的 Unicode 字符,从而更自然地表达非拉丁域名、路径和名称。IRI 与 URI 不是两套毫无关系的系统;IRI 可以通过规定的映射转换为 URI 表示。

国际化域名在网络协议层通常涉及 IDNA 转换,路径等部分则可能需要百分号编码。应用不应把“删掉非 ASCII 字符”当成转换,也不应对完整 IRI 不分组成部分地重复编码。

七、IRI 与 URI 怎样转换

从 IRI 映射到 URI 时,非 ASCII 字符先按 UTF-8 表示,再在允许的位置进行百分号编码;域名部分还要遵循适用的国际化域名处理规则。转换结果便于只接受 URI 的协议或组件使用。

反向显示时必须谨慎。不同 Unicode 字符可能视觉相似,恶意标识符可利用同形异义字符伪装域名。浏览器和安全系统可能保留 ASCII 形式而不直接显示国际化文本,应用也应在比较前执行标准规定的解析与规范化流程。

八、相对引用不是完整绝对标识符

../image.png、?page=2 和 section 都可能是相对 URI 或 IRI 引用。它们必须相对于基准 URI/IRI 才能解析为目标。例如同一个 ../image.png 在两个不同文档地址下会得到不同的绝对结果。

数据库若要保存跨文档稳定标识,通常应保存解析后的绝对标识符,或者同时保存明确基准。只复制相对引用而遗漏基准,会造成数据迁移后指向变化。

九、片段标识符属于谁解释

在 https://example.org/pagepart 中,part 是片段标识符。它通常由取得表示后的客户端结合媒体类型解释,不会作为普通 HTTP 请求目标片段发送给服务器。

同一个基础 URL 加不同片段可以指向文档中的不同位置,也可以在 RDF 场景中标识不同资源。是否代表 HTML 元素、时间片段还是语义实体,由资源表示和媒体类型规则决定。

十、CURIE 是什么

CURIE 即 Compact URI。W3C CURIE Syntax 1.0 定义一种由前缀和引用部分组成的紧凑写法,宿主语言负责提供前缀到 IRI 的映射。例如在某个上下文中把 foaf 映射为 http://xmlns.com/foaf/0.1/,foaf:name 才能展开为完整 IRI。

CURIE 本身不是可脱离上下文解析的全局地址。把 foaf:name 直接交给通用 HTTP 客户端,客户端可能把 foaf 当成 URI 方案,而不是按预期查找前缀表。

十一、Safe CURIE 解决什么歧义

某些宿主语言允许同一位置既出现普通 URI 又出现 CURIE,此时 abc:def 可能有两种解释。CURIE 规范提供方括号形式的 Safe CURIE,例如 [foaf:name],用于明确告诉宿主语言按 CURIE 处理。

方括号不是展开后 IRI 的一部分,也不是通用 URI 语法。解析器必须先依据宿主语言规则识别 Safe CURIE,再移除定界并应用前缀映射。

十二、JSON-LD 的 Compact IRI 是什么

JSON-LD 1.1 把 Compact IRI 定义为 prefix:suffix 形式,通过活动上下文中的前缀定义表达 IRI。上下文可以把 schema 映射到 https://schema.org/,于是 schema:Person 可展开为 https://schema.org/Person。

JSON-LD 还有“术语”机制。上下文可以把简短键 name 直接映射到完整 IRI,因此 name 不一定含冒号,也能在扩展算法中变成一个属性 IRI。术语、Compact IRI 和相对 IRI 的处理顺序由 JSON-LD 算法规定,不能只做字符串替换。

十三、CURIE 与 Compact IRI 是否相同

二者思想相近,都是利用前缀缩短 IRI,但规范范围不同。CURIE 是供宿主语言采用的独立紧凑语法;Compact IRI 是 JSON-LD 数据模型和处理算法中的术语,受活动上下文、@prefix、@vocab、@base 等规则约束。

因此,某个在 RDFa 中合法的 CURIE 不应假定在 JSON-LD 中产生相同结果。迁移数据时要使用目标格式的标准处理器,并带上完整上下文。

十四、前缀不是命名空间的全局注册

schema、rdf、xsd 等前缀只是特定文档或应用中的短名。常见约定提高可读性,却不赋予前缀全局固定含义。两个上下文完全可以把同一前缀绑定到不同 IRI。

交换数据时必须携带前缀声明或展开为绝对 IRI。只保存 ex:item 而遗失 ex 的绑定,就无法可靠恢复原标识符。

十五、为什么不能按冒号机械判断

https:page 可能是具有 https 方案的 URI 引用,也可能在某个专用上下文中被当作 Compact IRI;mailto:[email protected] 通常是 URI;schema:Person 在 JSON-LD 上下文中通常是 Compact IRI。正确解释取决于语法位置、宿主格式和活动上下文。

解析器应先识别文档格式,再按该格式的词法和处理算法分类。使用正则表达式看到冒号就拆成“命名空间+本地名”,会破坏合法 URI,也可能把未知前缀悄悄解析成错误地址。

十六、规范化不等于字符串随意改写

URI 方案名和主机名通常不区分大小写,但路径是否区分大小写取决于服务器。百分号编码、默认端口、空路径、尾斜杠和 Unicode 规范化也可能影响等价判断。不能把整个标识符统一转小写。

知识图谱做实体合并时,应区分“语法规范化”“重定向后的最终地址”和“业务上代表同一实体”。前两者也不足以自动证明两个标识符语义相同,合并关系应保留来源和依据。

十七、设计标识符时如何选择

若资源天然通过 Web 发布并需要可解析,优先考虑由自己控制域名的 HTTPS URI。若已有权威 URN 命名空间并需要遵循行业标识体系,则使用相应 URN。面向国际用户时可在界面展示 IRI,同时在协议和存储边界采用规范映射。

CURIE 或 Compact IRI 适合在明确上下文内提高可读性和减少重复,但持久存储、签名、跨系统比较和日志诊断通常还应能取得展开后的绝对 IRI。

十八、实施检查清单

第一,记录使用的规范和解析库版本。第二,明确基准 IRI、字符编码和国际化域名策略。第三,为每个前缀保存绑定来源和作用域。第四,在输入边界区分绝对标识符、相对引用与紧凑形式。第五,测试查询、片段、百分号编码、Unicode 和视觉相似字符。

最后,不要通过网络请求能否成功来判断标识符是否有效。有效语法、可解析性、当前可访问性和资源身份是四个不同层次,应分别验证并记录结果。

十九、存储与接口应保留哪些字段

需要跨系统交换时,可以分别保存原始输入、解析后的绝对 IRI、展示形式、基准标识符和上下文版本。原始输入便于审计,绝对形式便于比较,上下文版本则能解释某个紧凑值当时如何展开。不要只覆盖保存最后一次格式化结果,否则很难追查前缀变化或编码差异。

接口还应明确返回的是标识符本身、可访问链接,还是实体的规范标识。若字段允许多种方案,应给出允许列表、最大长度和错误码。对未知方案可以保留但不自动访问,以免把数据解析操作变成不受控的网络请求。

二十、知识图谱中的标识符治理

知识图谱经常同时接收 HTTPS URI、行业 URN 和外部数据集 IRI。导入时应先保留来源标识,再通过显式映射声明实体关系,而不是看到相似文本就直接合并。重定向、别名和同一实体断言也应作为可追溯数据记录。

前缀表适合作为展示和查询辅助,但不能成为唯一事实来源。发布数据集时应固定上下文版本,并为旧版本保留可解析记录;修改前缀绑定前要检查历史查询、缓存、签名和下游导出是否会改变含义。

结论

URI 是通用资源标识框架,URL 强调主要访问机制,URN 使用专门方案表达持久名称,IRI 扩展了国际化字符能力。CURIE 和 JSON-LD Compact IRI 则是在特定上下文中压缩 IRI 的表示方法。工程上应先判断所处规范和上下文,再解析字符串;把可访问性、持久性、国际化和缩写机制分开治理,才能避免标识符冲突与数据丢失。

常见问题

1. URL 和 URI 可以在日常文档中混用吗?

描述网页地址时使用 URL 通常最清楚;讨论通用标识体系或规范接口时使用 URI 更准确。接口文档应说明字段接受哪些方案和相对引用,而不要只靠术语猜测。

2. URN 能直接在浏览器中打开吗?

不一定。URN 表达名称,是否能解析取决于浏览器、操作系统或应用是否配置相应解析机制。语法有效不等于存在公开 HTTP 页面。

3. 含中文的地址一定是 IRI 吗?

包含非 ASCII 字符的国际化形式属于 IRI 范畴。实际网络传输或日志中可能显示为 IDNA 域名和百分号编码后的 URI,两种形式可能对应同一目标。

4. `schema:Person` 是 URI 吗?

脱离上下文无法仅凭外形确定。在 JSON-LD 中,若 `schema` 已绑定为前缀,它是 Compact IRI;展开后才得到完整绝对 IRI。通用 URI 解析器也可能把 `schema` 当作方案名。

5. 前缀名称可以永久代表同一词汇吗?

不可以假定。前缀映射具有上下文作用域,常用名称只是约定。跨系统保存时应携带映射或使用展开后的绝对 IRI。

参考资料

RFC Editor:rfc3986RFC Editor · 术语定义与技术背景 · 访问 2026-08-30

RFC Editor:rfc3987RFC Editor · 术语定义与技术背景 · 访问 2026-08-30

RFC Editor:rfc8141RFC Editor · 术语定义与技术背景 · 访问 2026-08-30

W3C:curieW3C · 术语定义与技术背景 · 访问 2026-08-30

W3C:json ld11W3C · 术语定义与技术背景 · 访问 2026-08-30

W3C:json ld11 apiW3C · 术语定义与技术背景 · 访问 2026-08-30