統一資源名稱

使用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]

更多

編輯

引用條目

編輯

參考文獻

編輯

外部連結

編輯