<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[14]</anchor-end> かつての <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> の仕様では <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">reserved</anchor> / <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">unreserved</anchor> の違いがありました。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">unreserved</anchor>
は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>してもしなくても同じ意味である<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字</anchor>でした。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[15]</anchor-end> 現在の <cite xmlns="http://www.w3.org/1999/xhtml">URL Standard</cite> には <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">reserved</anchor> / <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">unreserved</anchor> の区別はありません。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="21" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[21]</anchor-end> この予約、非予約という概念は非常にわかりにくい上に、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">仕様書</anchor>が改訂されるたびに大きく変更され続けていましたから、
技術者コミュニティーでは十分よく理解されることがなく混乱の元になっていました。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="22" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[22]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プログラミング言語</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ライブラリー</anchor>などはそうそう頻繁に作り直されるものではありませんから、
今でも当時の古い概念を基に作られていることがあります。それは過去のどれかの仕様書に基づくものかもしれませんし、
開発者の誤解に基づく仕様書とは異なるものであることもままあります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="23" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[23]</anchor-end> 
また、古い時代に書かれた解説はもちろんのこと、最近書かれたものであっても著者が不勉強な低品質な解説の類には、
過去の仕様書に基づく予約、非予約やそれを曲解した誤った予約、非予約の説明がなされていることがあります。</p><section><h1>RFC 1738 時代</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC1738</anchor>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC1808</anchor> では:<ul><li>unreserved     = alpha | digit | safe | extra</li><li>safe           = &quot;$&quot; | &quot;-&quot; | &quot;_&quot; | &quot;.&quot; | &quot;+&quot;</li><li>extra          = &quot;!&quot; | &quot;*&quot; | &quot;'&quot; | &quot;(&quot; | &quot;)&quot; | &quot;,&quot;</li></ul></p><p>結局、<ul><li><code class="ABNF">rfc1738.unreserved = &lt;[A-Za-z0-9$_.+!*'(),-]&gt;</code></li><li>rfc1808.unreserved = rfc1738.unreserved</li></ul></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="26" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[26]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC1738</anchor> 及び <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC1808</anchor>
の定義するところでは:<ul><li>uchar          = <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">unreserved</anchor> | <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">escape</anchor></li></ul></p><p>すなわち、<ul><li><code class="ABNF"><dfn>rfc1738.uchar</dfn> = &lt;[A-Za-z0-9$_.+!*'(),-]&gt; / escape</code></li><li>rfc1808.uchar = rfc1738.uchar</li></ul></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="27" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[27]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC2068</anchor> でも <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="26" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;26</anchor-internal> と同じ定義ですが、 unreserved の定義上、 rffc2068.uchar = (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OCTET</anchor> - (%x00-20 / &lt;&quot;&gt; / &quot;#&quot; / &quot;%&quot; / &quot;&lt;&quot; / &quot;&gt;&quot;)) / escape です。 (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">pchar</anchor> 参照。)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP/1.1</anchor>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC2068</anchor>) では:<ul><li>unreserved     = ALPHA | DIGIT | safe | extra | national</li></ul></p><p>結局、<ul><li>rfc2068.unreserved = <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OCTET</anchor> - (%x00-20 / &lt;&quot;&gt; / &quot;#&quot; / &quot;%&quot; / &quot;&lt;&quot; / &quot;&gt;&quot;)</li></ul></p><p>随分おおざっぱな定義ですが、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">pchar</anchor>
参照。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> <code class="URI">~</code> が追加されたのは、 <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://foo.example/~user/">http://foo.example/~user/</anchor-external> のような使用が非常に広く行われており、追認せざるを得なかったからです。本来はこの文字は national に分類されていたように存在しない<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号化文字集合</anchor>が多い (その最たる例は日本の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">シフトJIS</anchor>。厳密にはシフト JIS で生チルダを含む URI は書けません。) ですし、容易に入力できない鍵盤・入力方式も少なくありませ。 (日本では <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WWW</anchor> の普及後雑誌や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">掲示板</anchor>などで <code class="char">~</code> の入力方法についての記事や質問が激増しました。)</p></section><section><h1>RFC 2396 時代</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="17" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[17]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC2396</anchor> では<ul><li><code class="ABNF">rfc2396.unreserved = &lt;[A-Za-z0-9_.!~*'()-]&gt;</code></li></ul></p><p>で、 <code class="URI"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">$</anchor></code>,
<code class="URI"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">+</anchor></code>,
<code class="URI"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">,</anchor></code>
が消えて、 <code class="URI"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">~</anchor></code>
が追加されました。
削除されたものは <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">reserved</anchor>
へ移動、追加されたものは
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">national</anchor> からの編入です。</p><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="18" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[18]</anchor-end> 比較:
<cite xml:lang="en">Compare character sets &quot;$rfc1738:unreserved&quot; and &quot;$rfc2396:unreserved&quot;</cite> (<time>2013-10-28 09:59:58 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://chars.suikawiki.org/set/compare?expr1=%24rfc1738%3Aunreserved&amp;expr2=%24rfc2396%3Aunreserved">http://chars.suikawiki.org/set/compare?expr1=%24rfc1738%3Aunreserved&amp;expr2=%24rfc2396%3Aunreserved</anchor-external></li></ul></refs><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[19]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 2396</anchor></figcaption><blockquote><box xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><section xmlns="http://www.w3.org/1999/xhtml"><h1>2.3. Unreserved Characters</h1><p>Data characters that are allowed in a URI but do not have a reserved
purpose are called unreserved.  These include upper and lower case
letters, decimal digits, and a limited set of punctuation marks and
symbols.</p><p>URI で認められているが<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">予約</anchor>目的を持たないデータ文字を<dfn><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">非予約</anchor></dfn>と呼びます。
これには大文字と小文字, 10進数字,
嗅ぎられた句読点印・記号の集合を含みます。</p><ul><li>unreserved  = alphanum | mark</li><li>mark        = &quot;-&quot; | &quot;_&quot; | &quot;.&quot; | &quot;!&quot; | &quot;~&quot; | &quot;*&quot; | &quot;'&quot; | &quot;(&quot; | &quot;)&quot;</li></ul><p>Unreserved characters can be escaped without changing the semantics
of the URI, but this should not be done unless the URI is being used
in a context that does not allow the unescaped character to appear.</p><p>非予約文字は URI
の意味を変えることなく <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">escape</anchor>
することが出来ますが、
このことは URI
がその非予約文字の出現が許されない文脈で使われるのでない限りするべきではありません。</p></section></box></blockquote><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[20]</anchor-end> G.2 (抜粋)</p><blockquote><box xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml">The tilde &quot;~&quot; character was added to those in the &quot;unreserved&quot; set,
since it is extensively used on the Internet in spite of the
difficulty to transcribe it with some keyboards.</p><p xmlns="http://www.w3.org/1999/xhtml"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">チルダ</anchor> <code class="URI"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">~</anchor></code>
文字を「非予約」集合に加えました。
この文字は転写し辛い鍵盤があるにもかかわらずインターネットで広く用いられているからです。</p></box></blockquote></figure></section><section><h1>RFC 3986 時代</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 2396</anchor> と <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3986</anchor> と比べると5文字 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">sub-delims</anchor> に移動しています。</p><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> <cite xml:lang="en">Compare character sets &quot;$rfc2396:unreserved&quot; and &quot;$rfc3986:unreserved&quot;</cite> (<time>2013-10-28 10:01:19 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://chars.suikawiki.org/set/compare?expr1=%24rfc2396%3Aunreserved&amp;expr2=%24rfc3986%3Aunreserved">http://chars.suikawiki.org/set/compare?expr1=%24rfc2396%3Aunreserved&amp;expr2=%24rfc3986%3Aunreserved</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> <cite xml:lang="en">Compare character sets &quot;<strong>[</strong>!'-*<strong>]</strong>&quot; and &quot;$rfc3986:sub-delims&quot;</cite> (<time>2013-10-28 10:01:46 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://chars.suikawiki.org/set/compare?expr1=%5B%21%27-%2A%5D&amp;expr2=$rfc3986:sub-delims">http://chars.suikawiki.org/set/compare?expr1=%5B%21%27-%2A%5D&amp;expr2=$rfc3986:sub-delims</anchor-external></li></ul></refs><section><h1>IRI</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3986</anchor> <code class="ABNF" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">reserved</anchor></code> と <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3987</anchor> <code class="ABNF" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">iunreserved</anchor></code>
の違いは <code class="ABNF" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ucschar</anchor></code> です。</p><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> <cite xml:lang="en">Compare character sets &quot;$rfc3986:unreserved&quot; and &quot;$rfc3987:iunreserved&quot;</cite> (<time>2013-10-28 10:02:45 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://chars.suikawiki.org/set/compare?expr1=%24rfc3986%3Aunreserved&amp;expr2=%24rfc3987%3Aiunreserved">http://chars.suikawiki.org/set/compare?expr1=%24rfc3986%3Aunreserved&amp;expr2=%24rfc3987%3Aiunreserved</anchor-external></li></ul></refs></section><section><h1>bidi 文字</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IRI</anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3987</anchor>) では <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">bidi</anchor> の表示の制御に関わる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字</anchor>
<code class="charname" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">LRM</anchor></code>, <code class="charname" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RLM</anchor></code>, <code class="charname" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">LRE</anchor></code>, 
<code class="charname" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RLE</anchor></code>, <code class="charname" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">LRO</anchor></code>, <code class="charname" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RLO</anchor></code>, 
<code class="charname" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">PDF</anchor></code>
(<code class="char"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">U+200E</anchor></code>, <code class="char"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">U+200F</anchor></code>, 
<code class="char"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">U+202A</anchor></code>-<code class="char"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">U+202E</anchor></code>)
の利用が禁じられています。しかし、この制限はなぜか <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ABNF</anchor>
に反映されておらず、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">未予約文字</anchor>であるかのようにも見えます。
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3987</anchor> 4章の本文で禁止されています。)</p><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[13]</anchor-end> <cite xml:lang="en">Character set &quot;$rfc3987:iunreserved - $rfc3987:bidi-disallowed&quot;</cite> (<time>2013-10-28 10:03:57 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://chars.suikawiki.org/set?expr=%24rfc3987%3Aiunreserved+-+%24rfc3987%3Abidi-disallowed">http://chars.suikawiki.org/set?expr=%24rfc3987%3Aiunreserved+-+%24rfc3987%3Abidi-disallowed</anchor-external></li></ul></refs><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IRI</anchor> を参照する仕様の中には、「<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3987</anchor> の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ABNF</anchor>
構文に合致するもの」のような引用の仕方のものがあり、その場合に <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal>
の制約が適用されるのか不明です。</p></section></section><section><h1>関連</h1><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">予約文字</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">非安全文字</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">百分率符号化</anchor></li></ul><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="24" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[24]</anchor-end> 
現在の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> の仕様書である <cite>URL Standard</cite> には<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">予約</anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">非予約</anchor>に相当する概念はありません。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="25" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[25]</anchor-end> 
強いて言うなら<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化集合</anchor>が近い位置にある概念ですが、
混乱した<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">予約</anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">非予約</anchor>の概念を解体したもので、
用語として直接的機械的に置換できるものではありません。</p></section><section><h1>メモ</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3986</anchor> まで一貫して <code class="URI">.</code> は非予約文字に分類されてきました。
ということは <code class="URI">.</code> と <code class="URI">%2E</code> は <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">(許されている場所では)</weak> 常に等価です。</p><p>ところで、 <code class="URI">.</code> または <code class="URI">..</code> だけの <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">path</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">segment</anchor> は特別な意味を持ちます。
<weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">(その扱いの詳細は RFC 3986 で明確化されています。)</weak>
従って、 path segment で特別な意味を持たない <q>.</q> や <q>..</q> を使おうと思っても、その方法は存在しないということになります。
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor>)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end>
<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;4</anchor-internal> はファイル・システムでは普通 <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">(ファイル・システムでも <code xmlns="http://www.w3.org/1999/xhtml" class="file">.</code> や <code xmlns="http://www.w3.org/1999/xhtml" class="file">..</code> を特別な意味に割り当てていることが多いので)</weak>
問題になりませんが、ファイル・システム以外のデータベース <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">(たとえば任意の <anchor>WikiName</anchor> が使える <anchor>wiki</anchor>)</weak> 
を URI path に写像する場合に問題となり得ます。</p><p>回避策としては、 URI で特別な意味を持つのが <q>.</q> や <q>..</q> <em>だけ</em>で構成される
path segment であるということから、それ以外の文字を混ぜてやれば、というのが1つ考えられます。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URI scheme</anchor> の定義に依存しますが、
空の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数</anchor>があると仮定した <code class="URI">.;</code> や <code class="URI">..;</code>
のような path segment を使うのが一番ましな設計かもしれません。</p><p>(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor>)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[16]</anchor-end> <cite xml:lang="EN">R2RML: RDB to RDF Mapping Language</cite>
( (<time>2012-09-27 00:23:35 +09:00</time>))
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://www.w3.org/TR/2012/REC-r2rml-20120927/#dfn-iri-safe">https://www.w3.org/TR/2012/REC-r2rml-20120927/#dfn-iri-safe</anchor-external></p></section></body></html>