* URN (Uniform Resource Identifiers) [3] [DFN[URN]] ([DFN[Uniform Resource Names]], [DFN[統一資源名]]) は、 [ABBR[[[URI]]][Uniform Resource Identifiers]] の [Q[名前]]としての性質を指した言葉です。 [ABBR[URI][Uniform Resource Identifiers]] は[Q[識別子]]ですが、 [[Webブラウザ]]のように物理的な[RUBY[番地][アドレス]] (所在を表す記号) として使われることがよくあります (この性質を指して [DFN[[ABBR[[[URL]]][Uniform Resource Locators]]]] といいます)。それに対して、[[資源]] ([Q[もの]]) の'''名前'''として [ABBR[URI][Uniform Resource Identifiers]] を捉えるのが [ABBR[URN][Uniform Resource Names]] 的考え方です。 もちろん、所在地と名前は対立するものではなく、 時には所在地が名前となったり、名前を所在地に使えたりします。 以前には所在地 (URL) と名前 (URN) を別のものと考えていた時代もありましたが、 現在ではあらゆる識別子 (URI) を名前と見なし得るので、 [Q[URN]] という概念自体があまり使われなくなっています。 [[#comment]] ** 古い考え方 [18] 以前は、よく [Q[URI = URL + URN]] ということが言われていました。 [[資源]] ([Q[もの]]) の[Q[識別子]]である [[URI]] は、 [[資源]]を位置で識別する [[URL]] と名前で識別する [[URN]] の (たぶん重ならない) 2つの集合の和であると考えられていたのです。 [[URL]] が先に実用化・標準化されたのですが、元々は URL と URN というようなことは考えられなかったので、 URL の識別方法を表す [[scheme]] ([SAMP(URI)[[[http]]:]] など) は[Q[[[根]]]]名前空間に定義され、 後から定義される URN は [CODE(URI)[[[urn]]:]] [[URI scheme]] に収納 (例: [[ISBN]] を使って書式を識別する [SAMP(URI)[[[urn:isbn]]:]] URN scheme ([[NID]])。) して名前空間を分けることが予定されていました。 しかし、 >>3 のような URI は URL でもあり、 URN でもあるという考え方が一般的になり、分かりやすい [Q[URI = URL + URN]] という式も、 [CODE(URI)[urn:]] [[URI scheme]] に [[URN]] を納めるという話も怪しくなってきました。 というより元々 [CODE(URI)[[[mid]]:]] ([CODE(822)[[[Message-ID]]]] を使って[[メッセージ]]を識別。) のような URN らしい [Q[[[URL]]]] があったり、最初から怪しかったといえば怪しかったのです。 第一 [[URI]] の発明者である [[TimBL]] は、最初から [[URL]] ではなく [[URI]] [WEAK[(当初は [[UDI]])]] を提案していました。 [[#comment]] ** メモ - [7] URN と [[URL]] の違いは、あるものを論理的に命名するか物理的に命名するか。参考 (にはあまりならないかも): >>150-170 - [8] URI を URL と URN に二分する考えからすると、 URN は [[urn:]] [[scheme]] の URI ということになる。 URN/URL をもっと概念的に捉えると、 URL と URN の区別は一意には定まらない。 (例えば [SAMP(URI)[http://foo.example/nanika/no/namae>]] は一見 URL だが、意味的に URN かもしれない。) この2つの考え方はどちらが正しいというものでもない。 [17] ''WIRE - W3 Identifier Resolution Extensions'' : [[HTTP]] を微妙に拡張して URN の解決に使おうという I-D。 * 関連 - [19] [[XRI]] - [20] [[PURL]] -[21] [[FPI]] * [CODE(URI)[urn:]] URI scheme → [[urn]] **URN NID (名前空間識別子) → [[NID]] **不正な URN → [[urn]] * 普遍資源名機能 (Web SGML) [13] [[WebSGML]] では、 [[SGML宣言]]の[[他機構]]で宣言できる機能に [CODE(SGML)[URN]] が加わりました。 -[14] [CODE(ABNF)[[DFN[urn feature]] = 1*[[ps]] 'URN' 1*ps ('NO' / 'YES') ;; Web SGML [198.1] (K.3.8.1)]] この機能が有効である場合、[[公開識別子]]は [[RFC 2141]] の普遍資源名として解釈されます。 なお、旧来の [[SGML]] から存在する [CODE(SGML)[[[FORMAL]]]] も有効になっている場合は、公開識別子は、 [[公式公開識別子]]又は URN のいずれかとして解釈されます。 [WEAK[URN は必ず [CODE(ABNF)["urn:"]] から始まり、一方公式公開識別子は [[ISO所有者識別子]]が使われない限り絶対に衝突しません。 ISO 所有者識別子は、 [[ISO]] の気が狂いでもして、その出版物の名前の最初の4文字を [CODE(ABNF)["urn:"]] にしたりでもしない限り、衝突しません。仮にこの部分で衝突したとしても、公的公開識別子は絶対に[[間隔]]を含みますが、逆に正しい URN は絶対に含まないので、確実に区別できます。]] [15] この機能は悪くはありませんが、実際には URN NID の登録は成功しておらず、色々な人が勝手に使っています。従って URN を使っても、[[未登録所有者識別子]]と同程度しか一意性の保証ができません。従って、公開識別子に URN を使用するくらいなら、[[インターネット・ドメイン名所有者識別子]]を使う方が賢明でしょう。 [[#comment]] * メモ [22] [CITE[IRC logs: freenode / #whatwg / 20100131]] ([TIME[2010-02-02 22:30:53 +09:00]] 版) [23] [CITE@en[Uniform Resource Names, Revised (urnbis) - Charter]] ( ([TIME[2011-03-05 16:21:56 +09:00]] 版))