2. リンク (Links)
本仕様では、リンクは 2 つのリソース間の型付き接続であり、以下の部分で構成されます。
- リンクコンテキスト (link context)
- リンク関係タイプ (link relation type)(第 2.1 節)
- リンクターゲット (link target)
- オプションのターゲット属性 (target attributes)(第 2.2 節)
リンクは次の形式の文として見ることができます。「リンクコンテキストはリンクターゲットにリンク関係タイプのリソースを持ち、そのリソースはターゲット属性を持つ」。
例えば、「https://www.example.com/」は「https://example.com」に「canonical」リソースを持ち、そのリソースは「text/html」の「type」を持つ。
リンクコンテキストとリンクターゲットはどちらも国際化リソース識別子 (Internationalized Resource Identifiers, IRIs) [RFC3987] です。
2.1. リンク関係タイプ (Link Relation Types)
最も単純なケースでは、リンク関係タイプはリンクのセマンティクスを識別します。例えば、関係タイプ「copyright」を持つリンクは、現在のリンクコンテキストがリンクターゲットに著作権リソースを持つことを示します。
関係タイプはメディアタイプ [RFC2046] と混同すべきではありません。関係タイプはリンクを逆参照したときに生成される表現のフォーマットを識別するのではなく、現在のコンテキストが別のリソースとどのように関連しているかを記述するだけです。
関係タイプには 2 種類あります。登録済みと拡張です。
2.1.1. 登録済み関係タイプ (Registered Relation Types)
明確に定義された関係タイプは、第 2.1.1.1 節の手順を使用してトークンとして登録できます。
登録済み関係タイプ名は reg-rel-type ルール(第 3.3 節参照)に準拠しなければならず (MUST)、大文字小文字を区別せずに文字ごとに比較されなければなりません (MUST)。
登録済み関係タイプはリンクコンテキストのメディアタイプを制約してはならず (MUST NOT)、リンクターゲットの利用可能な表現メディアタイプを制約してはなりません (MUST NOT)。
2.1.2. 拡張関係タイプ (Extension Relation Types)
関係タイプを登録したくないアプリケーションは、関係タイプを一意に識別する URI [RFC3986] である拡張関係タイプを使用できます。
拡張関係タイプを比較する場合、それらは文字列として(異なる形式でシリアライズされている場合は URI に変換後)大文字小文字を区別せずに文字ごとに比較されなければなりません (MUST)。
2.2. ターゲット属性 (Target Attributes)
ターゲット属性は、リンクまたはそのターゲットを記述するキー/値ペアのリストです。例えば、メディアタイプのヒントなどです。
これらは個々のリンク関係タイプとリンクシリアライゼーションによって定義できます。