HN 日本語サマリー

← 一覧へ戻る
Web開発

Matrix URI、ティム・バーナーズ=リーが提案し、実装されなかったURL構文(1996年)

Matrix URIs, a URL syntax from Tim Berners-Lee that never shipped (1996) (w3.org)

43 pointsby napolux26 コメント

要約

この記事は、ティム・バーナーズ=リーが1996年に提案したものの、実装されなかったMatrix URIというURL構文について考察しています。これは、階層的なパスだけでなく、セミコロンで区切られた名前と値のペアで属性を表現することで、より柔軟なリソース識別を可能にしようとする試みでした。相対URLの解釈やパラメータの順序、削除方法など、未解決の課題が多く、最終的にウェブの機能としては採用されませんでした。

全文翻訳

ティム・バーナーズ=リー 日付: 1996年12月19日 ステータス: 個人的見解。編集ステータス: イタリック体のテキストはラフです。完全な編集と場合によっては修正が必要ですが、内容は基本的に存在しています。「公理」や「定理」といった言葉は、ここでは何の厳密性もなく、気ままに使い捨てられています。このファイルは、Matrix URIの解析がウェブの機能ではないため、2001年1月15日にAxioms.htmlから分割されました。これは、単に存在し得たものに過ぎません。 デザインの問題へ戻る Matrix URIs - Webアーキテクチャに関するアイデア Matrix URIs Matrix空間とセミコロン 多くの階層システムがあることは、おそらく明白なことです。階層的な力と興味深い類推ができるのは、プログラミング言語における、コマンドやプロシージャに供給される一連のパラメータです。例えば、一部の言語では、プロシージャは位置パラメータを受け取ることができ、それらはオプションであるため、ある時点以降のパラメータは省略できます。この構文は、スラッシュで区切られた階層的なURLパスと比較できます。これは興味深い類推です。なぜなら、プロシージャパラメータの代替表現として、プロシージャ名と値のペアのリストがあるからです。これは自然に、URLにおけるセミコロンの使用とMatrix構文の議論に導きます。スラッシュで区切られた要素のセットがツリーを表現するのに有用であるのと同様に、名前と等しく重要なパラメータのセットは、より(疎な可能性のある)行列のような空間を表現できます。この場合、「近い」場所へのナビゲーションは、行列の次元を形成する1つ以上のパラメータを変更することによって行われます。これが、URLの歴史の後半で追加された、URL構文のa=b;部分の目的です。当初の必要性は、それ自体が階層的であるURLに修飾子を付けることでした。プロシージャコールの類推は、結合された形式を見ても依然として成り立ちます。URLの階層部分は最初に解析され、次にセミコロンで区切られた修飾子は、ある行列内の位置を示すものとして解析されます。例として、緯度、経度、スケールのパラメータが個別に与えられる、自動生成された地図のURLを想像してみましょう。それぞれに名前を付けることができ、それぞれが省略された場合はデフォルト値を取ることができます。例えば、//moremaps.com/map/color;lat=50;long=20;scale=32000 は、自動生成された地図のURLになるかもしれません。 Matrix URLの解析: 問題点 この文脈で相対URLをどのように解析すべきでしょうか?最も便利なのは、単純に;scale=64000を相対URLとして指定することで、異なるスケールの同様の地図を選択できることでしょう。この構文の解析はURL関係者の間では明確に定義されておらず、私の知る限り、一貫して使用されていません。したがって、1997年1月時点では、これは良いアイデアかもしれませんが、現在は実装されていません。しかし、これは名前付きパラメータ値を含む相対URLを解析する自然な方法です。もう一つの未解決の疑問は、そのようなパラメータの順序が重要であるべきかということです。論理的には、同じパラメータセットを異なる順序で表現しても、通常は同じセマンティクスを持ちます。相対URLがセミコロンで始まる場合、その意味は、パラメータ以外のURLのすべての部分が変更されないこと、相対URLで指定されていないパラメータが変更されないこと、そしてURLで与えられたパラメータが元のURLのGET値に代わってその値を取ることだと想像できます。明らかに、別のパラメータ値を追加する際に、それがパラメータ値のセット内のどこに位置するかを指定することはできません。これは、パラメータの順序が重要ではないことを意味します。相対URLで論理的にパラメータを削除する方法についても疑問がありますが、欠落したパラメータが、空文字列を値とする存在するパラメータと同じ意味を持つという慣例があれば、これは明らかに可能です。これが最も賢明であるとは全く明らかではないため、おそらくパラメータを削除するために特別な構文を使用すべきでしょう。 Matrix URLの解析 注: 相対Matrix URLは一般的に実装されていないため、これは単なる理論的議論です。ベースURLとは異なる属性値のセットを取る相対URLが「;」で始まる場合にのみ意味があります。これは以下を意味します。 属性は1回しか出現できません(特定の出現箇所を識別して削除する構文がない限り、これは非常に煩雑です)。 属性を削除するための構文が必要であり、削除された属性と値が空文字列である属性を区別できることが望ましいです。 属性は順序付けられていません。 したがって、これらのルールに基づいて、//moremaps.com/us/ma/cambridge;scale=50000;roads=main または同等の //moremaps.com/us/ma/cambridge;roads=main;scale=50000 に対する相対URLは次のように解析されます。 相対URIは次のように解釈されるべきです。 ; //moremaps.com/us/ma/cambridge;scale=50000;roads=main ;scale=25000 //moremaps.com/us/ma/cambridge;scale=25000;roads=main ;roads //moremaps.com/us/ma/cambridge;scale=50000 ;roads= //moremaps.com/us/ma/cambridge;scale=50000;roads= ;rivers=all //moremaps.com/us/ma/cambridge;scale=50000;roads=main;rivers=all これが危機なく展開できるのであれば(1996年)、導入する価値がありますが、今日のブラウザでは明らかに信頼できません。 $Id: MatrixURIs.html,v 1.2 2001/02/15 21:02:49 timbl Exp $ 「URIs」に戻る デザインの問題へ戻る htm