统一资源名称

使用urn作为scheme的统一资源标识

统一资源名称(英語:Uniform Resource Name,縮寫:URN)是统一资源标识(URI)的历史名字,它使用urn:作为URI scheme

一个统一资源标识(URI)可以是一个统一资源定位符号(URL),也可以是一个统一资源名称(URN),又或者两者都是。

1997年的RFC 2141定义了URN,期望为资源提供持久的、位置无关的标识方式,并允许简单地将多个命名空间映射到单个URN命名空间。这样一个URI的存在并不意味着被标识的资源一定是可用的,但它仍然需要保持全局唯一和持久,即使资源已经不存在了或变得不可用。[1]

自从2005年RFC 3986[1]发布,这一术语的使用已被限制更少的“URI”取代。这是W3CIETF[2]联合组成的工作组所提议的。URN和URL都已经是URI的一种,而且特定情况下URI可能同时拥有名字(URN)和位置(URL)。

在1990年,URN作为一个元数据框架,原本被期望和URL、URC(统一资源特征英语uniform resource characteristic)一起组成一个第三方互联网信息架构。然而URC一直停留在理论阶段,[2]随之更晚出现的其他技术(例如资源描述框架)取代了它们。

语法

URN的语法[3]巴科斯范式来写是:

<URN> ::= "urn:" <NID> ":" <NSS>

解析出来是:

urn:<NID>:<NSS>

开头的urn:序列大小写不敏感的。<NID>是命名空间标识,它是一个“命名空间特定”的字符串,决定了如何解释<NSS>的句法。统一资源名称的功能需求在RFC 1737中描述。[4]

命名空间

为了确保URN命名空间的全局唯一性,URN的标识(NID)必须在IANA注册。已注册命名空间可能是“正式”或“非正式”的。此中有一个例外——“试验性命名空间”无需注册。[5]

正式命名空间

正式命名空间是互联网用户预期能通过公开而的一类命名空间,[5]因此会受到许多限制。它必须:

  • 不能和已经注册的NID重复
  • 不能由x-(见下“试验命名空间”)开头
  • 不能由urn-开头
  • 不能有任何XY-形式的开头,其中XY任意两个ASCII字母的组合
  • 比两个字母更长

非正式命名空间

非正式命名空间通过IANA注册并分配一个数字序号(由IANA以先到先得的原则选出)作为标识,[5]格式是

"urn-" <数字序号>

非正式命名空间是完全合法的URN命名空间,可以在任何全局注册服务中使用。[5]

试验性命名空间

试验性命名空间取如下格式

"X-" <NID>

这种形式的命名空间预期只在内部或受限的试验环境中使用,不需要也不保证全局唯一。[5]

例子

URN corresponds to
urn:isbn:0451450523 The 1968 book The Last Unicorn, identified by its book number.
urn:isan:0000-0000-9E59-0000-O-0000-0000-2 The 2002 film Spider-Man, identified by its audiovisual number.
urn:issn:0167-6423 The scientific journal Science of Computer Programming, identified by its serial number.
urn:ietf:rfc:2648 The IETF's RFC 2648.
urn:mpeg:mpeg7:schema:2001 The default namespace rules for MPEG-7 video metadata.
urn:oid:2.16.840 The OID for the United States.
urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66 A version 1 UUID.
urn:nbn:de:bvb:19-146642 A National Bibliography Number for a document, indicating country (de), regional network (bvb = Bibliotheksverbund Bayern), library number (19) and document number.
urn:lex:eu:council:directive:2010-03-09;2010-19-UE A directive of the European Union, using the Lex URN namespace.

解析器

URN解析器负责初始化和排序查询,最终导向到URN名字或“解析请求”的一个完整的解析(翻译)结果。例如,一个“解析请求”可能是“将一个URN名字翻译成URL”。

RFC 2169中有一个服务器端URN解析器的实现范例。

DOI命名空间的缺席

数字对象唯一标识符(DOI)系统的维护者有意不为DOI命名空间注册URN,并陈述道:

URN架构假设有一个基于DNS的解析发现服务(RDS)去寻找适用于指定URN scheme的服务。然而目前并没有这样的RDS服务体系被广泛部署……DOI没有注册为一个URN命名空间,因为URN注册看起来没有给DOI系统提供任何优势——尽管它能满足所有的功能需求。它需要一个管理上的附加层来将DOI定义为URN命名空间(字符串urn:doi:10.1000/1而不是更简单的doi:10.1000/1),以及增加一个无益的重定向步骤来访问本已经由http代理或本地解析完成了的解析服务。如果以后有了广泛可用的支持URN标准的RDS机制,DOI会注册为一个URN的。
— 国际DOI基金会, 信息一览表: DOI系统与互联网标识标准[6]

更多

引用条目

参考文献

外部链接