[36] URI (Uniform Resource Identifiers,
統一資源識別子) は、資源を識別するための統一的な仕組みです。
簡単に言えば、色々なもの
に名前を付けるための仕組みです。
あるいは、その仕組みによる識別子をも URI と呼びます。
また、文脈で意味が曖昧でない場合には、識別子によって参照される資源のことすらも
URI と呼ぶことがあります。
[37] 従来の情報システム・計算機システムは、 それぞれで資源を識別する仕組みや番地付けの仕組みを持っていました。 しかし、それらはあくまでそれぞれのシステムの範囲内でのみ有効な識別子システムでした。
ところが、1990年頃 TimBL が発明した WWW
では、番地付けのために URI を採用しました。
URI は URI scheme によって命名システムを識別し、
URI scheme ごとにその中で更に具体的な資源を識別するという構造を持っています。
そのため、従来の情報システムの識別子を URI scheme
として再定義することによってあらゆる資源を統一
的に扱うことに成功したのです。
参考: そのような設計が採用された背景には、
当時様々な情報システムが提案されて割拠していたことがあります。
WWW は HTTP だけではなく、それら他のシステムも
URI によって取り込む
ことで魅力的な情報システムになったのです。
[38] URI で識別される資源
は、何も計算機で表現できるものに限りません。
urn:isbn: URI を使えば ISBN
によって書籍を識別することができます。
物理的に存在するもの以外でも、
言葉や抽象概念などありとあらゆる資源
を識別することが可能です。
[39] URI が元々 HTTP と HTML で番地付けのために使われてきたことから、
単にネットワーク資源の位置を表す住所のようなものと考えられることがよくあります。
しかし、 >>38 のように URI はネットワークで取出す
ことができないものであっても識別
できます。
Webブラウザで画面に表示することはできないかもしれませんが、
それだけが URI の役割ではないのです。
[2000] 「URI」という言葉の定義は、URI を定義する仕様自体でも歴史的に変化していますし、 URI を参照する様々な仕様でも様々な意味に用いられています。 仕様内でもそうなのですから、それ以外の世界ではその意味は全く安定していないといっても過言ではありません。
[2001] 最も大きな定義上の混乱の1つは、 URI と URI参照の違いです。 最新の URI の定義である RFC 3986 によると、相対参照は URI参照ですが、 URI ではありません。その前の RFC 2396 の定義によると、素片識別子を含んだものは URI参照ですが、URI ではありませんでした。 仕様書以外の場面 (や多くの関連仕様!) では、「URI」というと URI参照を指すことが多くあります。 これらについては URI参照や素片識別子の項をごらんください。
[2002] もう1つの最大の混乱は、利用可能な文字の種類に関するものです。 URI で本来認められない ASCII文字や、IRI では認められる非ASCII文字の扱いをめぐって、 多くの仕様がいろいろなものを「URI」と呼んでいます。 詳しくは IRI の項をご覧ください。
[2003] 前述の2つに比べれば細かい話ですが、 URI の構文や相対参照の解決の方法は新しい仕様書が発行される度に変化しています。 特に最新の RFC 3986 とその1つ前の RFC 2732 あるいは RFC 2396 との関係は、 どちらがどちらの部分集合でも超集合でもありません。 URI を用いる色々な仕様がそれぞれ異なる版の URI を参照しており、 通常そのような仕様が多数組み合わせて用いられるので、 厳密に解釈すると URI の扱いは非常にややこしいことになります。
[42] URI 関係の古い用語:
scheme の後が //
の URI でしか相対URI は使えない
→ どんな URI でも相対参照は使える
- URI
- A Uniform Resource Identifier is a formatted string that serves as an identifier for a resource, typically on the Internet. URIs are used in HTML to identify the anchors of hyperlinks. URIs in common practice include Uniform Resource Locators (URLs)[URL] and Relative URLs [RELURL].
(名無しさん [sage])
[50] >>49 について、この定義ではURNはURIに含まれていないのではないかと指摘する人がいますが、単にURLがURIに含まれていることを述べているに過ぎず、URN (やURCやその他の何か) については何も言及していないと解釈するのが適当だと思います。 (名無しさん)
[55] fragment identifiers from Roy T. Fielding on 2002-07-23 (www-tag@w3.org from July 2002) <http://lists.w3.org/Archives/Public/www-tag/2002Jul/0253.html> (名無しさん)
# もどうとか無茶苦茶なこと言ってたし、混乱は当分収まりそうにない。XML//URI 参照)。[41] URI.NET <http://uri.net/>
ちょっと古いしちゃんと管理されていないみたい。 (名無しさん 2005-03-11 03:40:22 +00:00)
→.//仕様書参照。
[1] URI の構造は、大きく scheme
(識別方式), authority (命名権者),
path (経路), query (照会),
fragment (素片識別子) の5つに分けられます。
このうち、 scheme は
authority,
path, query
の詳細な構文と意味を決定します。
URI では様々な scheme が定義・利用されています。 それぞれの URI scheme はその構文と、 誰が識別子を作ることができるのか、 その識別子がどんな意味を持つのか、 色々なプロトコルや書式でどんな風に使うことができるのかなどを規定しています。
[2] このように URI scheme はそれぞれ独立した識別子の空間を作っています。 この独立性により、新しい資源の識別方法を URI に取り込むことが可能になっています。
[3] 詳しくは URI scheme の項をご覧下さい。
[6] URI の5大部品の一つが素片識別子
(fragment) です。素片識別子以外の URI
が識別した資源の一部分・一表現を、
素片識別子は更に細かく識別します。
素片識別子は URI の一部ではないなどと呼ばれていた時代もありましたが、 現在では URI の一部分と考えられています。
[8] URI (絶対URI参照) は URI scheme の名前から始まり、一つの資源を識別するべく説明を加えていきます。 例えば http://www.example.com/foo/bar/baz は特定の baz という資源を識別するために、 http: URI scheme を使うこと、 命名権者が www.example.com であること、 その中の foo の中の bar の中の baz が識別したい資源であることを順次説明しています。
しかし、このような説明は冗長なことがあります。
http://www.example.com/foo/bar/hoge
が自分と同じ階層
に存在する baz
を指すためにわざわざ http: からはじめるのは面倒ですし、
不便なことも色々あります。
そこで、 URI の相対参照という表現が規定されています。
例えば baz が相対参照です。
ただし、 baz だけでは URI (絶対 URI 参照)
ではありません。
http://www.example.com/foo/bar/hoge
という文脈
の情報 (基底URI
と言います。) があって始めて
http://www.example.com/foo/bar/baz
という URI (絶対 URI 参照) に解決されます。
参考: もし同じ相対参照 baz でも基底 URI が http://example.net/foo なら、 http://example.net/baz に解決されます。
[9] (TBW)
[10] (TBW)
- Martin
- URI は元々人間が見るものじゃなかったんすよ。 <mid:6.0.0.20.2.20051107184759.06dd4750@localhost>
- RoyF
- んな阿呆な。 <mid:2f1b97034b715561e35a2b370ec13d19@gbiv.com>
- Martin
- いやね、 TimBL の旦那がそう言っとりましたよ。 1990年とかそこらの話だと思いやすけど。 <mid:6.0.0.20.2.20051108185959.06a21ec0@localhost>
(名無しさん 2005-11-10 08:39:02 +00:00)
[48] >>47 確かにそんなこと Tim が言ってたのを www-talk かどこかで見た記憶がある。
[61] スラッシュドット ジャパン | ユーザーの意識からURLが消滅する日は近い? <http://slashdot.jp/article.pl?sid=06/10/17/1950226&from=rss> (名無しさん 2006-10-20 00:27:03 +00:00)
→ URLの決め方
[23] あまり意識されることはありませんが、 URI である文字列に対して著作権が主張される可能性があります。 単に資源の位置を表すに過ぎない URL 的な URI の類が著作物足る要件を満たすとは考えにくいですが、 ほとんどあらゆる種類のものが URI として表現し得ます。 特に、
data: URI scheme を使った任意のデータを含む URIjavascript: URI scheme を使った任意の
JavaScript 符号を含む URImethod が post な HTML
のフォームを提出した結果得られる URIのようなものは、著作物が URI の一部として入り込む可能性が高いといえます。
任意のデータが data: URI
にした途端著作権が消滅するのはおかしいですから、
著作物たる data: URI が存在することは間違いありません。
また、 Bookmarklet などは創作性が高いと考えられますから、
簡単なものを除いて著作物だとの主張が認められる可能性が高いと思われます。
もちろん、百分率符号化などの仔細な表現上の違いは著作権が存在するかどうかの議論とは無関係です。
[24] URI が著作物足り得るかどうかの議論は、 ハイパーテキストにおけるリンクの自由性にも関わってきます。
[25] URI に著作権は及ばないという主張の例:
[31] URI に著作権が及ぶという主張の例:
http: URI
の著作権を主張しています。[63]
葉っぱ日記 - ぼくはまちちゃん!(Hatena) - urlのポエム化 (2007-01-17 09:25:44 +09:00 版) <http://d.hatena.ne.jp/hasegawayosuke/20070117/p1>
(名無しさん 2007-01-17 00:28:09 +00:00)
[51] プログラム言語EではURIが言語の構文に組み込まれている。
URI Expressions <http://www.erights.org/elang/io/uri-exprs.html>
(名無しさん [sage])
[52] 他にURIを積極的に言語そのものに取り入れたプログラム言語といえばWMLScriptがある。 (名無しさん [sage])
[5] URI が使われる文脈で使われる、 URI でない (又はなさそうな, あってほしくない) ものたち
eiwa:, kokugo:, CODE[waei: に続けて語句を指定すると、その語句を辞書で検索する。IMG: (case-sensitive) 画像参照。IW: (case-sensitive) InterWiki の接頭辞。 See <IW:SuikaWiki:InterWiki>MAIL: (case-sensitive) 電子メイルの宛先。URL: URL の前につける。例:
<URL:http://foo.example/>[53] ResourceUtils (Spring Framework) <http://www.springframework.org/docs/api/org/springframework/util/ResourceUtils.html>
Javaのパッケージを表す
がある。classpath: pseudo URL
404。[43] URI は URI を意識せずに作られた識別子体系でもそのまま取り込んでしまうことができます (もちろん相性のようなものはありますが)。 既に色々な識別子を URI として使う方法が定義されています。
[44] 色々な識別子の体系を URI 1つにまとめると、 何かしたいときに各識別子体系それぞれに対してその方法を考える必要がなくなります。 例えば引用文献を記述する時に、引用する文献が Web頁 (URI) でも紙の書籍 (ISBN) でも両方 URI として扱えると便利になることがあります。 あるいは連絡先がインターネットの電子メイル (電子メイル・アドレス) でも従来の電話 (電話番号) でも統一して扱えたりもします。
[45] 既存の識別子と URI の対応
| 既存の識別子体系 | URI | 備考 |
| 出版物 | ||
| ISBN | urn:isbn: | |
| ISSN | urn:issn: | |
| 公開識別子 | urn:publicid: | |
| RFC | urn:ietf:rfc: | |
| ネットワーク番地 | ||
| 電話番号 | tel: | |
| FTP | ftp: | |
| インターネットの電子メイル | mailto: | |
| ニュース組 | news: | |
| チャットのチャンネル | irc: | |
| 言語・文化 | ||
| 言語札 | urn:x-suika-fam-cx:lang: | |
| その他 | ||
| UUID | urn:uuid: | |
[54] UriTesting - ESW Wiki <http://esw.w3.org/topic/UriTesting>
[62]
Index of /uri (2007-01-05 15:38:16 +09:00 版) <http://skew.org/uri/>
(名無しさん 2007-01-05 06:39:54 +00:00)
java:など他にも複数ある。