[36] [DFN[[[URI]]]] ([DFN[Uniform Resource Identifiers]],
[DFN[統一資源識別子]]) は、[[資源]]を[[識別]]するための統一的な仕組みです。
簡単に言えば、色々な[Q[もの]]に名前を付けるための仕組みです。
あるいは、その仕組みによる識別子をも URI と呼びます。
また、文脈で意味が曖昧でない場合には、識別子によって参照される資源のことすらも
URI と呼ぶことがあります。
[37] 従来の情報システム・計算機システムは、
それぞれで資源を識別する仕組みや[[番地付け]]の仕組みを持っていました。
しかし、それらはあくまでそれぞれのシステムの範囲内でのみ有効な識別子システムでした。
ところが、1990年頃 [[TimBL]] が発明した [[WWW]]
では、番地付けのために URI を採用しました。
URI は [[URI scheme]] によって命名システムを識別し、
URI scheme ごとにその中で更に具体的な資源を識別するという構造を持っています。
そのため、従来の情報システムの識別子を URI scheme
として再定義することによってあらゆる資源を[Q[統一]]的に扱うことに成功したのです。
参考: そのような設計が採用された背景には、
当時様々な情報システムが提案されて割拠していたことがあります。
WWW は [[HTTP]] だけではなく、それら他のシステムも
URI によって[Q[取り込む]]ことで魅力的な情報システムになったのです。
[38] URI で識別される[Q[資源]]は、何も計算機で表現できるものに限りません。
[CODE(URI)[[[urn:isbn:]]]] [[URI]] を使えば [[ISBN]]
によって[[書籍]]を識別することができます。
物理的に存在するもの以外でも、
言葉や抽象概念などありとあらゆる[Q[資源]]を識別することが可能です。
[39] URI が元々 [[HTTP]] と [[HTML]] で[[番地付け]]のために使われてきたことから、
単にネットワーク資源の位置を表す[[住所]]のようなものと考えられることがよくあります。
しかし、 >>38 のように URI はネットワークで[Q[[[取出す]]]]ことができないものであっても[Q[識別]]できます。
[[Webブラウザ]]で画面に表示することはできないかもしれませんが、
それだけが URI の役割ではないのです。
[68]
P18PA0 ojcvxmsyhwjn, [url=http://balixriketvr.com/]balixriketvr[/url], [link=http://ikaihldbptbz.com/]ikaihldbptbz[/link], http://egtrhwxgouok.com/
([[imesnngki]] [fhlaca@rrqxcp.com] [WEAK[2007-12-15 12:55:41 +00:00]])
[[#comment]]
* Scheme
[1] [[URI]] の構造は、大きく [CODE(ABNF)[[[scheme]]]]
(識別方式), [CODE(ABNF)[[[authority]]]] (命名権者),
[CODE(ABNF)[[[path]]]] (経路), [CODE(ABNF)[[[query]]]] (照会),
[CODE(ABNF)[[[fragment]]]] (素片識別子) の5つに分けられます。
このうち、 [CODE(ABNF)[[[scheme]]]] は
[CODE(ABNF)[[[authority]]]],
[CODE(ABNF)[[[path]]]], [CODE(ABNF)[[[query]]]]
の詳細な構文と意味を決定します。
URI では様々な scheme が定義・利用されています。
それぞれの [[URI scheme]] はその構文と、
誰が識別子を作ることができるのか、
その識別子がどんな意味を持つのか、
色々な[[プロトコル]]や[[書式]]でどんな風に使うことができるのかなどを規定しています。
[2] このように [[URI scheme]] はそれぞれ独立した識別子の空間を作っています。
この独立性により、新しい[[資源]]の識別方法を URI
に取り込むことが可能になっています。
[3] 詳しくは [[URI scheme]] の項をご覧下さい。
* 素片識別子
[6] URI の5大部品の一つが[[素片識別子]]
([CODE(ABNF)[[[fragment]]]]) です。素片識別子以外の URI
が識別した[[資源]]の一部分・一表現を、
素片識別子は更に細かく識別します。
素片識別子は URI の一部ではないなどと呼ばれていた時代もありましたが、
現在では URI の一部分と考えられています。
[18] 詳しくは[[素片識別子]]の項をご覧下さい。
* 相対参照
[8] URI ([[絶対URI参照]]) は [[URI scheme]]
の名前から始まり、一つの[[資源]]を識別するべく説明を加えていきます。
例えば [SAMP(URI)[http://www.example.com/foo/bar/baz]]
は特定の [SAMP[baz]] という[[資源]]を識別するために、
[SAMP(URI)[[[http]]:]] URI scheme を使うこと、
[[命名権者]]が [SAMP(URI)[www.example.com]] であること、
その中の [SAMP(URI)[foo]] の中の [SAMP(URI)[bar]]
の中の [SAMP(URI)[baz]] が識別したい資源であることを順次説明しています。
しかし、このような説明は冗長なことがあります。
[SAMP(URI)[http://www.example.com/foo/bar/hoge]]
が自分と同じ[Q[[[階層]]]]に存在する [SAMP[baz]]
を指すためにわざわざ [SAMP(URI)[http:]] からはじめるのは面倒ですし、
不便なことも色々あります。
そこで、 URI の[DFN[[RUBYB[[[相対参照]]] [relative references]]]]という表現が規定されています。
例えば [SAMP(URI)[baz]] が相対参照です。
ただし、 [SAMP(URI)[baz]] だけでは URI (絶対 URI 参照)
ではありません。
[SAMP(URI)[http://www.example.com/foo/bar/hoge]]
という[Q[文脈]]の情報 ([DFN[[RUBYB[[[基底URI]]] [base URI]]]]
と言います。) があって始めて
[SAMP(URI)[http://www.example.com/foo/bar/baz]]
という URI (絶対 URI 参照) に[DFN[[RUBYB[[[解決]]] [resolve]]]]されます。
参考: もし同じ相対参照 [SAMP(URI)[baz]] でも基底 URI が
[SAMP(URI)[http://example.net/foo]] なら、
[SAMP(URI)[http://example.net/baz]] に解決されます。
[7] 詳しくは[[相対参照]]の項をご覧下さい。
* 安全性
[9] (TBW)
[[#comment]]
* 可用性
[10] (TBW)
* URI の著作権
[23] あまり意識されることはありませんが、 URI
である文字列に対して[[著作権]]が主張される可能性があります。
単に[[資源]]の位置を表すに過ぎない [[URL]]
的な URI の類が[[著作物]]足る要件を満たすとは考えにくいですが、
ほとんどあらゆる種類のものが URI として表現し得ます。
特に、
- [CODE(URI)[[[data]]:]] URI scheme を使った任意のデータを含む URI
- [CODE(URI)[[[javascript]]:]] URI scheme を使った任意の
[[JavaScript]] 符号を含む URI
- [CODE(HTMLa)[[[method]]]] が [CODE(HTML)[[[post]]]] な [[HTML]]
の[[フォーム]]を[[提出]]した結果得られる URI
のようなものは、著作物が URI の一部として入り込む可能性が高いといえます。
任意のデータが [CODE(URI)[data:]] URI
にした途端著作権が消滅するのはおかしいですから、
著作物たる [CODE(URI)[data:]] URI が存在することは間違いありません。
また、 [[Bookmarklet]] などは創作性が高いと考えられますから、
簡単なものを除いて著作物だとの主張が認められる可能性が高いと思われます。
もちろん、[[百分率符号化]]などの仔細な表現上の違いは著作権が存在するかどうかの議論とは無関係です。
[24] URI が著作物足り得るかどうかの議論は、
[[ハイパーテキストにおけるリンクの自由性]]にも関わってきます。
[25] URI に著作権は及ばないという主張の例:
- [33] [CITE[壇弁護士の事務室: ちょっと、変更]]
- [26] [CITE[@はんのう]]
- [27] [CITE[yoosee.net : copyright & disclaimer]]
- [28] [CITE[リンクと著作権のメモ]]
- [29] [CITE[著作権および免責事項]]
- [30] [CITE[無題ドキュメント]]
- [34] [CITE[Webページの作法]]
- [35] [CITE[」」」 Kiss The Moon 」」」]]
[31] URI に著作権が及ぶという主張の例:
- [32] [CITE[Copyright and So on.]]
-- この文書の著者が命名権者らしい [CODE(URI)[[[http]]:]] URI
の著作権を主張しています。
[63]
[CITE[葉っぱ日記 - ぼくはまちちゃん!(Hatena) - urlのポエム化]] ([CODE[2007-01-17 09:25:44 +09:00]] 版)
([[名無しさん]] [WEAK[2007-01-17 00:28:09 +00:00]])
[[#comment]]
* URI と商標権
[40] [[URI]] として使用する文字列の一部が[[商標]]としてみなされることがあります。
特に URI に一部としてよく使われる[[ドメイン名]]は頻繁に商標に関する係争が発生しています。
ドメイン名に限らず、商標を根拠に商標権者が URI
の使用者に使用しないように主張する可能性があります。
[[#comment]]
* URI もどき
[5] URI が使われる文脈で使われる、 URI でない (又はなさそうな,
あってほしくない) ものたち
- [[emacs-w3m]] で
-- [CODE[eiwa:]], [CODE[kokugo:]], [[CODE[waei:]] に続けて語句を指定すると、その語句を辞書で検索する。
- [[IRI]] ・・・URI の多文字拡張
- [[SuikaWiki]] の URI もどき
-- [CODE[IMG:]] (case-sensitive) 画像参照。
-- [CODE[IW:]] (case-sensitive) [[InterWiki]] の接頭辞。 See
-- [CODE[MAIL:]] (case-sensitive) 電子メイルの宛先。
-- 詳細は [[SuikaWiki/0.9]] 仕様書を参照。
これらは URI ではありません。
- [CODE[URL:]] [[URL]] の前につける。例:
[SAMP(URI)['''<'''URL:http://foo.example/'''>''']]
[51]
[[プログラム言語]][[E]]では[[URI]]が言語の構文に組み込まれている。
[CITE[URI Expressions]]
([[名無しさん]] [sage])
[52]
他に[[URI]]を積極的に[[言語]]そのものに取り入れた[[プログラム言語]]といえば[[WMLScript]]がある。
([[名無しさん]] [sage])
[53]
[CITE[ResourceUtils (Spring Framework)]]
[[Java]]の[[パッケージ]]を表す[Q@en[[CODE(URI)@en[classpath:]] pseudo URL]]がある。
;; [[Java]]の[[クラス]]のための[[URI scheme]]は[CODE(URI)@en[[[java]]:]]など他にも複数ある。
([[名無しさん]] [sage])
[[#comment]]
* URI RFCs
→[[.//仕様書]]参照。
* 従来の識別子と URI
[43] [[URI]] は [[URI]] を意識せずに作られた[[識別子]]体系でもそのまま取り込んでしまうことができます
[WEAK[(もちろん相性のようなものはありますが)]]。
既に色々な[[識別子]]を [[URI]] として使う方法が定義されています。
[44] 色々な[[識別子]]の体系を [[URI]] 1つにまとめると、
何かしたいときに各[[識別子]]体系それぞれに対してその方法を考える必要がなくなります。
例えば引用文献を記述する時に、引用する文献が [[Web頁]]
([[URI]]) でも紙の書籍 ([[ISBN]]) でも両方 [[URI]]
として扱えると便利になることがあります。
あるいは連絡先が[[インターネット]]の[[電子メイル]]
([[電子メイル・アドレス]]) でも従来の[[電話]] ([[電話番号]])
でも統一して扱えたりもします。
[45] 既存の識別子と URI の対応
,既存の識別子体系 ,URI ,備考
,出版物 ,== ,==
,[[ISBN]] ,[CODE(URI)@en[[[urn:isbn]]:]]
,[[ISSN]] ,[CODE(URI)@en[[[urn:issn]]:]]
,[[公開識別子]] ,[CODE(URI)@en[[[urn:publicid]]:]]
,[[RFC]] ,[CODE(URI)@en[[[urn:ietf:rfc]]:]]
,ネットワーク番地 ,== ,==
,[[電話番号]] ,[CODE(URI)@en[[[tel]]:]]
,[[FTP]] ,[CODE(URI)@en[[[ftp]]:]]
,[[インターネット]]の[[電子メイル]] ,[CODE(URI)@en[[[mailto]]:]]
,[[ニュース組]] ,[CODE(URI)@en[[[news]]:]]
,[[チャット]]の[[チャンネル]] ,[CODE(URI)@en[[[irc]]:]]
,言語・文化 ,== ,==
,[[言語札]] ,[CODE(URI)@en[[[urn:x-suika-fam-cx:lang]]:]]
,その他 ,== ,==
,[[UUID]] ,[CODE(URI)@en[[[urn:uuid]]:]]
[[#comment]]
* 参考文献
- [4] ''IETF - Uniform Resource Identifiers (URI) Working Group'' (終了)
- [14] ''IETF - Uniform Resource Identifiers (URI) Working Group''
- [17] ''Web Naming and Addressing Overview (URIs, URLs, ...)''
[41]
[CITE[URI.NET]]
ちょっと古いしちゃんと管理されていないみたい。
([[名無しさん]] [WEAK[2005-03-11 03:40:22 +00:00]])
[[#comment]]
* 古い用語・概念
[42] URI 関係の古い用語:
- [[URL]] (→ URI)
- [[URN]] (→ URI)
- [[UDI]] → [[URI]]
- [[部分URI]] → [[相対参照]]
- [[完全URI]] → [[絶対URI]], [[絶対URI参照]]
- [[逃避]], [[escape]], [[URI符号化]] → [[百分率符号化]]
- [[素片識別子]]は [[URI]] の一部ではない →
[[素片識別子]]も [[URI]] の一部分
- [[URI]] に変換できる文字列 → [[IRI]], [[IRI]] に変換できる文字列
- [CODE(ABNF)[[[scheme]]]] の後が [CODE(URI)[//]]
の URI でしか[[相対URI]] は使えない
→ どんな URI でも[[相対参照]]は使える
[49]
[[RFC 1868]]における定義:
>
:[DFN@en[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]
[CITE[fragment identifiers from Roy T. Fielding on 2002-07-23 (www-tag@w3.org from July 2002)]]
([[名無しさん]])
[[#comment]]
* メモ
- [15] [[mohta]] 氏が script と language の違いを説いてるのがなんか可笑しい。 (1997年の [[ietf-url]] にて。)
- [16] URI の標準化はかなりいい加減で混乱気味の上に W3C/Martin Durest は [[IRI]] を進めていて、それも [[SP]] を認めるとか [CODE[#]] もどうとか無茶苦茶なこと言ってたし、混乱は当分収まりそうにない。
- [19] RFC 2396 は、絶対 URI だけを URI としており、相対 URI や素片識別子がついた URI も含めた名称を URI 参照としています。 (旧版の RFC 1808 も含めて) 旧来の仕様や慣習では絶対 URI と相対 URI の両方を URI と言っていましたし、素片識別子も仕様書には URI の一部ではないと書いてあるけど実際には曖昧に使われていた [WEAK[(古い URI 仕様書まで遡るとこちらも曖昧だった)]] という歴史的経緯がありまして、単に URI とだけ言われると厳密には何を指しているのだかわかったものではありません。[WEAK[たまに論争の火種になります(w]]
- [20] XML 関連仕様書は URI という名前で IRI を指していたり、「URI と解釈されるもの」というわけのわからんのがでてきたりしますから混迷極まり ([CODE(WikiPage)[[[XML//URI]]]] 参照)。
- [21] あと目立たないけど注意しておきたいのは、空文字列。 RFC 2396 的には URI 参照の一種ですが URI じゃないですし、相対 URI でもないかもしれません。 RFC 1808 から意味が変更されたものですから解釈は実装依存になってしまう。その上使えるかどうかは採用する規格に依存。 (URI 参照を使うと書かれている規格でも、よく見ると字数制限1文字以上で使えなかったりする。)
- [22] 2396bis ではまた変わるみたいです。。。
[46]
[CITE[yohei-y:weblog: 良い URI の設計]]
([[名無しさん]])
[47]
>
:[[Martin]]:URI は元々人間が見るものじゃなかったんすよ。
:[[RoyF]]:んな阿呆な。
:[[Martin]]:いやね、 [[TimBL]] の旦那がそう言っとりましたよ。
1990年とかそこらの話だと思いやすけど。
([[名無しさん]] [WEAK[2005-11-10 08:39:02 +00:00]])
[48]
>>47 確かにそんなこと Tim が言ってたのを [[www-talk]]
かどこかで見た記憶がある。
([[名無しさん]])
[54]
[CITE[UriTesting - ESW Wiki]]
([[名無しさん]])
[56]
[CITE[GoodURIs - ESW Wiki]]
([[名無しさん]])
[57]
[CITE[www-tag@w3.org from June 2006: by thread]]
[[W3C]] の [[URI]] 割り当て方針 (割り当ての年月が入るやつ)
がいけてないという話。[[Ian Hickson]] の
は の [Q[1999]]
のような訳の分からない数字を皮肉ったものらしいww
([[名無しさん]] [WEAK[2006-07-08 04:48:18 +00:00]])
[58]
確かに最近[[名前空間URI]]の年号を覚える or コピペするのがめんどくてうんざりしてるんだよ。。。
([[名無しさん]] [WEAK[2006-07-08 04:49:35 +00:00]])
[59]
[CITE[hxxk.jp - 各種 weblog の URI 設計を比較してみる]]
([[名無しさん]] [WEAK[2006-07-08 12:06:10 +00:00]])
[60]
[CITE[hxxk.jp - 各種 weblog の URI 設計を比較してみる]]
([[名無しさん]] [WEAK[2006-07-08 12:17:24 +00:00]])
[61]
[CITE[スラッシュドット ジャパン | ユーザーの意識からURLが消滅する日は近い?]]
([[名無しさん]] [WEAK[2006-10-20 00:27:03 +00:00]])
[62]
[CITE[Index of /uri]] ([CODE[2007-01-05 15:38:16 +09:00]] 版)
([[名無しさん]] [WEAK[2007-01-05 06:39:54 +00:00]])
[64]
[CITE[Why you should be using disambiguated URLs]] ([CODE[2007-02-10 01:07:29 +09:00]] 版)
([[名無しさん]] [WEAK[2007-02-09 16:15:26 +00:00]])
[65]
[CITE@ja[第20回 “使いやすいURI(URL)”の設計を考える:ITpro]] ([CODE[2007-04-28 12:10:18 +09:00]] 版)
([[名無しさん]] [WEAK[2007-04-28 03:12:39 +00:00]])
[66]
[CITE[URI Declaration Versus Use]] ([CODE[2007-08-02 13:08:18 +09:00]] 版)
([[名無しさん]])
[67]
[CITE@en[h3h.net - Designing URLs for Multilingual Web Sites]] ([CODE[2007-10-07 21:44:44 +09:00]] 版)
([[名無しさん]])
[69]
[CITE[Cool URIs for the Semantic Web]] ([TIME[2007-12-14 19:15:28 +09:00]] 版)
([[名無しさん]])