[1] Web Linking は、文書の形式や応用に依存しない型付きリンクの枠組です。 RFC 5988 として IETF で標準化されています。
[48] 事実上、 HTTP の Link:
ヘッダーのデータモデルを規定するものとなっています。
IETF としてはリンク一般に適用される標準モデルとしたいようですが、
成功しているようには見えません。
[7] Web Linking におけるリンクは、 RFC 3987 IRI によって識別される2つの資源の間の型付きの連結です。 リンクは次の要素により構成されます。 >>2 3.
[9] リンクの濃度には制限がなく、 ある IRI からの、あるいはある IRI へのリンクが複数あっても構いませんし、 特定の2つの IRI の間に異なるリンク型の複数のリンクがあっても構いません。 >>2 3.
[11] 特定の直列化方式における、あるいは直列化方式をまたがった複数のリンク相互の順序やその意味は定義されていません。 応用によって順序に意味を持たせたければ、持たせることができます。 >>2 3.
[12] 対象属性群は、リンクやその対象を説明する名前と値の組の集合です。 ただしその名前や用法については定義していません。 >>2 3.
[23] これは Link:
欄における type
,
hreflang
などの引数が該当します。
[38] しかし各直列化法によりその表現方法は様々で、データモデルレベルでも一貫性がありません。 各直列化法は Web Linking のモデルに従った定義をしておらず、 それぞれの都合で必要な部分だけ独自に定義しているので、 Web Linking 全体で共通化した処理を行うのは困難でしょう。
[37] Atom や WebFinger では、対象URLも href
という名前で対象属性群と並列に表現されます。
[56] (Web Linking 以前からある) Atom のリンク型の中には、 XML名前空間を使って拡張した独自の属性や子要素を規定するものもあります。 Web Linking の立場からそれらがどう位置付けられるのかは不明です。
atom:link
参照。[40] Link:
では title
属性は
title
や title*
として表現されます。
後者では言語タグも指定できますが、複数の言語は指定できません。
Atom では title
属性として表現されます。
言語タグは要素自体と共通にしかできません。
WebFinger では titles
として任意の言語タグと値の組を指定できます。
[41] Metalink/HTTP が追加した geo
属性を
Link:
以外の、例えば Atom や WebFinger
で指定できるのかは明確ではありません。
[42] XRD では対象資源の URL の代わりに URI Template を指定できます。
[44] CoRE は href
を予約しています >>43。
[50] CoRE 関連仕様の RFC 7641 は、 CoAP 資源への
Web Linking リンクで対象属性 obs
を使うことができる >>49 と規定しています。
CoRE link format での利用が例示されているものの、
それに限らないことが暗示されています。しかしそれ以上の規定はありません。
本属性は値を持ってはならないこと、複数指定してはならないこと、
複数指定されていれば最初のもの以外無視しなければならないことなどの規定がありますが、
CoRE link format 以外の場合では適用できるのかすら謎です。
[59] Collection.Doc+JSON はリンクが「primary link relations」と 「secondary link relations」を持てるとしています。前者は必ず1つ、 後者は任意個持てるようです。
[14] Web Linking 本体仕様としては、具体的にリンクをどう表現するか (直列化) を定義していません。 >>2 3.
[15] RFC 5988 は次のような直列化を示しています。
[45] Web Linking および関連仕様は次の仕様を Web Linking の応用であるかのように扱うことがありますが、 当該仕様側にはそのような規定がありません。
a
要素や area
要素がどう扱われているのかは謎です。
これらは link
要素と似たところもあれば、
異なるところもあります。最も大きな違いは、
link
要素は文書全体について記述するのに対し、
a
要素や area
要素には「文脈」があることでしょうが、それを Web Linking
のモデルでどう扱う (あるいは扱わない) のかは定かではありません。[64] Activity Streams の Link
は、「closely related to the conceptual model of Links as established in [RFC5988]」
というものを RFC 5988 を一部参照しつつ規定しています >>63。
あるいは「fundamental model for links is established by [ RFC5988]」
と説明しています >>65。 RFC 5988 に基づきつつも独自の規定を積み上げているようではありますが、
具体的にどの規定がどこまで適用されるのか、よくわかりません。
リンク関係に関しては RFC 5988 のみならず HTML 5.0 も参照しています。
[47] GitHub の Web API は JSONP の JSON 部分に
HTTP Link:
ヘッダーに相当する情報を含めています >>46。
[60] BEACON は RFC 5988 リンク関係を使っていますが、 それ以外に Web Linking に基づくとは言っていません。
[21] 定義上対象IRIや文脈IRIは IRI とされていますが、実際にはプロトコル等の制限で URI となることもあります。 >>2 3.
[34] Web Linking は、リンクのデータモデルを定義し、 いくつかのハイパーテキスト形式への直列化の方法を説明していますが、 逆にそれを構文解析し、何らかの処理を加える方法は定義していません。
[35] ですから、あるハイパーテキスト形式で記述されたリンクを Web Linking にのっとり処理する方法は、明確ではありません。特に HTML や Atom は、 Web Linking ではなく、それぞれの仕様で定義されたリンクの意味と処理が存在しますから、 これを Web Linking の仕様に従って処理しようと試みても、 HTML や Atom の仕様上の定義とは矛盾してしまいます。
[36] 実際上は、 Web Linking に基づき定義されたそれぞれのリンク関係型において、
その処理が定義されていることがあります。 (それぞれの項を参照してください。)
ただし、すべてのリンク関係型の処理がすべての形式・場面で定義されているわけではありません。
例えばリンク関係型 stylesheet
が HAL
で用いられていたとして、それがどう解釈されるのかはまったく不明です。
[3] Web 上の資源の関係や、その関係の型を表現する方法 (すなわちリンク) は HTML や Atom で定義されていますが、 これらは概念的に類似しているものの、別個に規定されています。資源が複数の表現を持つ場合など、 具体的な表現方法の如何に関わらず、書式に依存しない型付きリンクの枠組を規定することは有用であると考えられたことから、 IETF は RFC 5988 でこれを Web Linking として標準化しました。 >>2 1.
[4] 既に Atom は atom:link
要素の rel
属性のためにリンク型の IANA 登録簿と語彙を規定していましたが、 RFC 5988
はこれを改訂して書式に依存しないリンク型の登録簿としました。更に、 HTML4
で規定されていたリンク型を登録簿に追加しています。
[5] RFC 5988 の支持者は HTML のリンク型の定義を RFC 5988 に変更するべく HTML WG で工作活動を行いましたが、結局十分な支持を集められませんでした。
[26] RFC 5988 に基づきリンク型を定義する RFC は、このような流れの中で勝手に HTML
の rel
属性で当該リンク型を使った例を示していたりします。
[52] 先述の通り、「Web Linking」全体の一般化された実装はほとんど不可能か、
意味をなしません。「Web Linking」の実装を名乗るものの多くは、実際は単なる
HTTP Link:
ヘッダーの実装のようです。
[19] 抽象的な「リンク」の形式を規定し、それに則った具体的なリンクを各種文書形式に規定させる、 という発想は HyTime や初期の XLink 案、あるいは HLink と共通していますが、 Web Linking はより抽象的かつ単純です。リンクそのものの標準化を試みた HyTime などと異なり、 Web Linking におけるリンクの定義はむしろリンク型の登録簿の標準化の試みのために最低限の体裁を整えたに過ぎないと評価することもできるでしょう。
[20] Web Linking はその一般的な名前に反して Web におけるリンクのごく一部の限られた種類しかカバーしていません。
例えば HTML の a
要素のように IRI
で表現できるとは限らないアンカーを扱うリンクは表現できません。
[62] Web Linking におけるリンクの捉え方は Semantic Web とも親和性は高そうですが、 RDF との関係も定義されていませんし、 意外と関心が重なっていないのか相互に言及も無さそうです。
[31] Five JSON REST API Link Formats Compared | Sam Placette ( ( 版)) <http://samplacette.com/five-json-rest-api-link-formats-compared/>
[32] mnot’s blog: Linking in JSON ( ( 版)) <https://www.mnot.net/blog/2011/11/25/linking_in_json>
[53] Web Linking ( 版) <https://mnot.github.io/I-D/rfc5988bis/>