Uniform Resource Names

URN (Web)

[3] URN (Uniform Resource Names, 統一資源名) は、 URI名前としての性質を指した言葉です。

URI識別子ですが、 Webブラウザのように物理的な番地 (アドレス) (所在を表す記号) として使われることがよくあります (この性質を指して URL といいます)。それに対して、資源 (もの) の名前として URI を捉えるのが URN 的考え方です。

もちろん、所在地と名前は対立するものではなく、 時には所在地が名前となったり、名前を所在地に使えたりします。 以前には所在地 (URL) と名前 (URN) を別のものと考えていた時代もありましたが、 現在ではあらゆる識別子 (URI) を名前と見なし得るので、 URN という概念自体があまり使われなくなっています。

古い考え方

[18] 以前は、よく URI = URL + URN ということが言われていました。 資源 (もの) の識別子である URI は、 資源を位置で識別する URL と名前で識別する URN の (たぶん重ならない) 2つの集合の和であると考えられていたのです。

URL が先に実用化・標準化されたのですが、元々は URL と URN というようなことは考えられなかったので、 URL の識別方法を表す scheme (http: など) は名前空間に定義され、 後から定義される URN は urn: URI scheme に収納 (例: ISBN を使って書式を識別する urn:isbn: URN scheme (NID)。) して名前空間を分けることが予定されていました。

しかし、 >>3 のような URI は URL でもあり、 URN でもあるという考え方が一般的になり、分かりやすい URI = URL + URN という式も、 urn: URI schemeURN を納めるという話も怪しくなってきました。 というより元々 mid: (Message-ID を使ってメッセージを識別。) のような URN らしい URL があったり、最初から怪しかったといえば怪しかったのです。 第一 URI の発明者である TimBL は、最初から URL ではなく URI (当初は UDI) を提案していました。

[32] URNurn: scheme

歴史的経緯はともかく、現代的な考え方ではURL (番地) とURN (名前) に明確な区別はなく、 個々のURI番地的性質を持っていたり、 名前的性質を持っていたり、両方の性質を持っていたりするに過ぎません。

従って、URN的性質を持ったURIが必ずしもurn: URI schemeをつかって要る必要はありません。 例えばtag: URI schemeURN的性質を持っています。 また、http: URI scheme名前空間URIとして使われる時はURI的性質を持っています。

メモ

  • [7] URN と URL の違いは、あるものを論理的に命名するか物理的に命名するか。参考 (にはあまりならないかも): <http://pc.2ch.net/hp/kako/992/992708594.html> >>150-170
  • [8] URI を URL と URN に二分する考えからすると、 URN は urn: scheme の URI ということになる。 URN/URL をもっと概念的に捉えると、 URL と URN の区別は一意には定まらない。 (例えば http://foo.example/nanika/no/namae> は一見 URL だが、意味的に URN かもしれない。) この2つの考え方はどちらが正しいというものでもない。

[17] WIRE - W3 Identifier Resolution Extensions <http://ftp.ics.uci.edu/pub/ietf/http/draft-girod-w3-id-res-ext-00.txt> : HTTP を微妙に拡張して URN の解決に使おうという I-D。

urn: URL scheme

NID

[28] urn: shceme の URI で 文字列 urn: の直後にくる文字列は、 名前空間識別子 (NID) といいます。

詳しくは NID をごらんください。

不正な URN

[29] 名前空間 urn:mozilla の URN では、 / が使われることがありますが、これは URN 構文では認められていません。

[30] 名前空間名 (NID) x-suika.fam.cx, x-tomikou.net が以前使われていましたが、 文字 . は NID では認められていないので urn:x-suika-fam-cxurn:x-tomikou-net に変更されました。

メモ

[16] Q: urn:nid:*urn の部分と nid の大文字・小文字は区別されますか?

[27] A: >>16 どちらもされません。但し、その後の * の部分で区別されるかされないかは、 その個々の定義によるので一概には言えません。 (一般には区別されます。)

普遍資源名機能 (Web SGML)

[13] WebSGML では、 SGML宣言他機構で宣言できる機能に URN が加わりました。

この機能が有効である場合、公開識別子RFC 2141 の普遍資源名として解釈されます。

なお、旧来の SGML から存在する FORMAL も有効になっている場合は、公開識別子は、 公式公開識別子又は URN のいずれかとして解釈されます。

URN は必ず "urn:" から始まり、一方公式公開識別子は ISO所有者識別子が使われない限り絶対に衝突しません。 ISO 所有者識別子は、 ISO の気が狂いでもして、その出版物の名前の最初の4文字を "urn:" にしたりでもしない限り、衝突しません。仮にこの部分で衝突したとしても、公的公開識別子は絶対に間隔を含みますが、逆に正しい URN は絶対に含まないので、確実に区別できます。

[15] この機能は悪くはありませんが、実際には URN NID の登録は成功しておらず、色々な人が勝手に使っています。従って URN を使っても、未登録所有者識別子と同程度しか一意性の保証ができません。従って、公開識別子に URN を使用するくらいなら、インターネット・ドメイン名所有者識別子を使う方が賢明でしょう。

解決

[40] URN は「名前」であり、 URL とは違ってプロトコルによるアクセス方法の記述では無いとされていました。 URNの解決によって資源を得るためには、 そのためのプロトコルが必要であるとされ、いくつかの方法が提案されました。

[41]

関連

歴史

  • RFC2141
    • 『URN Syntax (URN 構文)』
    • R. Moats, 1997年5月。提案標準。

[22] IRC logs: freenode / #whatwg / 20100131 ( 版) <http://krijnhoetmer.nl/irc-logs/whatwg/20100131#l-262>

[23] Uniform Resource Names, Revised (urnbis) - Charter ( ( 版)) <https://datatracker.ietf.org/wg/urnbis/charter/>

[24] draft-ietf-urnbis-semantics-clarif-00 - URN Semantics Clarification ( ( 版)) <http://tools.ietf.org/html/draft-ietf-urnbis-semantics-clarif-00>

[25] draft-ietf-urnbis-ns-reg-transition-03 - Uniform Resource Name (URN) Namespace Registration Transition ( ( 版)) <http://tools.ietf.org/html/draft-ietf-urnbis-ns-reg-transition-03>

[26] draft-ietf-urnbis-rfc2141bis-urn-08 - Uniform Resource Names (URNs) ( ( 版)) <http://tools.ietf.org/html/draft-ietf-urnbis-rfc2141bis-urn-08>

[1] RFC 3404 - Dynamic Delegation Discovery System (DDDS) Part Four: The URI Resolution Application () <https://tools.ietf.org/html/rfc3404>

[2] RFC 1737 - Functional Requirements for Uniform Resource Names () <https://tools.ietf.org/html/rfc1737>

[4] RFC 2169 - A Trivial Convention for using HTTP in URN Resolution () <https://tools.ietf.org/html/rfc2169>

[5] RFC 2483 - URI Resolution Services Necessary for URN Resolution () <https://tools.ietf.org/html/rfc2483>

[6] RFC 2168 - Resolution of Uniform Resource Identifiers using the Domain Name System () <https://tools.ietf.org/html/rfc2168>

[9] Uniform Resource Names (URN) Progress Report () <http://www.dlib.org/dlib/february96/02arms.html>

[10] RFC 2276 - Architectural Principles of Uniform Resource Name Resolution () <https://tools.ietf.org/html/rfc2276>

[11] RFC 2611 - URN Namespace Definition Mechanisms () <https://tools.ietf.org/html/rfc2611>

[12] RFC 8141 - Uniform Resource Names (URNs) () <https://tools.ietf.org/html/rfc8141>

[31] Protocol Handlers for Microsoft Internet Explorer - misuzilla.org (Mayuki Sawatari 著, 版) <http://www.misuzilla.org/dist/net/mphandler/>

[33] URN supported w3m - Ancient library (KONDOU, Kazuhiro 著, 版) <http://www.alib.jp/perl/w3m_urn.html>

[34] Features | AXR: Arbitrary XML Rendering | AXR Project ( (Miro Keller 著, 版)) <http://axr.vg/about/features>

[35] OASIS Open Document Format for Office Applications (OpenDocument) Version 1.2 - Part 3: Packages ( 版) <http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part3.html#a4_8_1manifest_algorithm-name>

[36] OASIS Open Document Format for Office Applications (OpenDocument) Version 1.2 - Part 3: Packages ( 版) <http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part3.html#a4_8_1manifest_algorithm-name>

urn:oasis:names:tc:opendocument:xmlns:manifest:1.0#blowfish: The same algorithm as identified by Blowfish CFB. 

[37] GetOrders - API Reference - Trading API () <http://developer.ebay.com/devzone/xml/docs/reference/ebay/getorders.html>

<GetOrdersRequest xmlns="urn:ebay:apis:eBLBaseComponents">

[38] ( ()) <http://www.bbwtest.info/~nandaka_furari/framexs/framexs.xml>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xh="http://www.w3.org/1999/xhtml" xmlns:framexs="urn:framexs" version="1.0">

[39] RFC 6241 - Network Configuration Protocol (NETCONF) () <https://tools.ietf.org/html/rfc6241#section-8.8.3>

The :url capability is identified by the following capability string:

urn:ietf:params:netconf:capability:url:1.0?scheme={name,...}