* Atom 1.0 におけるリンク関係型 [74] [[Atom]] は [CODE(XMLe)@en[[[atom:link]]] [[要素]]の [CODE(XMLa)@en[[[rel]]]] [[属性]]の値として[DFN[[RUBYB[リンク関係型]@en[link relation type]]]]を使っています。 ** 仕様書 -[76] [[RFC 4287]] -- '''''' ** 構文 [75] [[属性値]]は [[RFC 3987]] の [CODE(ABNF)@en[[[isegment-nz-nc]]]] と [CODE(ABNF)@en[[[IRI]]]] のいずれかの[[生成規則]]に[[一致]]しなければならないとされています [SRC[[[RFC 4287]] 4.2.7.2.]]。 [77] [[RELAX NG]] [[スキーマ]] ([[参考]]) では [CODE(XML)@en[[[atomNCName]]]] または [CODE(XML)@en[[[atomUri]]]] とされています [SRC[[[RFC 4287]] 4.2.7.2.]]。 [78] [[HTML4]] や [[HTML5]] と比較すると、任意の[[文字列]]ではなく [[IRI]] に制限されている点、複数の型は指定できず、1つだけである点が異なります。 ** 意味 [79] [CODE(ABNF)@en[[[isegment-nz-nc]]]] による[[名前]]が与えられた場合、 [[IANA登録簿]]にあるのと同じ名前、従って [CODE(URI)@en[[[http://www.iana.org/assignments/relation/]]]] の後に当該文字列が連結された値と同じものが指定されたのと同じとみなされなけば[['''なりません''']] [SRC[[[RFC 4287]] 4.2.7.2.]]。 ** [CODE(URI)[http://www.iana.org/assignments/relation/]] [112] [DFN[[CODE(URI)@en[[[http://www.iana.org/assignments/relation/]]]]]] は現在 [['''404''']] エラーを返していますし、 [[Internet Archive]] によれば以前から存在していなかったようです。 [[リンク型]]を結合した [[URL]] についても同様です。 [113] [[HTTP]] [CODE(HTTP)@en[[[Link:]]]] も以前の [[Internet Draft]] は [[Atom]] と同じくこの [[URL]] を使っていましたが、 [[RFC 5988]] は採用していません。 ** 関連 [147] [[Web Linking]] のリンク型 (>>99) とは、 [[URI]] ではなく [[IRI]] をベースにしていることや、 >>79 の通り短い文字列も [[URL]] として表した長い文字列の簡略形である点が異なっており、 厳密には互換性がありません。 [148] [[IANA登録簿]]については [[Web Linking]] によって置き換えられています (>>118) が、 [[Atom]] のデータ型として、あるいは [CODE(XMLe)@en[[[atom:link]]]] [[要素]]の定義としては置き換えられているとは記載されておらず、 引き続き [[RFC 4287]] の規定が有効なものと思われます。 * Web Linking におけるリンク型 [99] [[Web Linking]] における[DFN[[RUBYB[[[リンク関係型]]]@en[link relation type]]]]は、 [[リンク]]の[[意味]]や、対象となる[[資源]]が有する属性や動作を表すものです。 [SRC[>>98]] [EG[ [100] 例えば、[[リンク関係型]] [CODE[[[copyright]]]] は、[[対象IRI]]で識別される[[資源]]が[[文脈IRI]] で表される[[資源]]に関する著作権を記述している、という[[リンク]]の意味を表しています。 [SRC[>>98]] [101] 例えば、[[リンク関係型]] [CODE[[[service]]]] は、[[対象IRI]]で識別される[[資源]]があるプロトコルの一部、 この場合はサービス記述文書であることを暗示しています。 [SRC[>>98]] ]EG] ** 仕様書 [REFS[ - [98] [CITE@en[RFC 5988 - Web Linking]] ([TIME[2012-03-22 09:19:11 +09:00]] 版) ]REFS] ** 相互関係 [103] [[リンク関係型]]は、他の[[リンク関係型]]が存在する、あるいは存在しないことにより、 あるいは同じ[[リンク関係型]]の個数により、意味が変わる[['''べきではありません''']]。 ただし、 [CODE(HTML)@en[[[alternate]]]] と [CODE(HTML)@en[[[stylesheet]]]] の組み合わせは例外とします。 [SRC[>>98]] ;; [104] [[HTML]] の[[リンク型]]はこれ以外にもいくつかこの手の[[リンク型]]が存在するので、 その意味で [[HTML]] と [[Web Linking]] には互換性がありません。 ** 登録関係型 [105] [DFN[[RUBYB[[[登録関係型]]]@en[registered link type]]]]とは、 [[IANA]] に登録された[[リンク関係型]]を言います。 [106] [[登録関係型]]の名前は [CODE[reg-rel-type]] [[生成規則]]に適合し[['''なければなりません''']]。 比較は[[大文字・小文字不区別]]で行わなければ[['''なりません''']]。 [[登録関係型]]の名前は十分詳しくある[['''べき''']]であり、 特定の[[応用]]のための関係が一般的な名前を使うべきではありません。 [[文脈IRI]]の[[MIME型]]を含んだり、制約したりしては[['''なりません''']]。 [SRC[>>98]] [PRE(ABNF code)[ reg-rel-type = LOALPHA *( LOALPHA | DIGIT | "." | "-" ) ]PRE] ;; [111] [CODE[[[reg-rel-type]]]] はすべて[[ASCII文字]]なので、[[ASCII大文字・小文字不区別]]です。 [107] 特定の[[応用]]での処理のための情報、例えば [[Webブラウザー]]の処理方法についても登録簿に含めることができます。 [SRC[>>98]] ** 拡張関係型 [108] [DFN[[RUBYB[拡張関係型]@en[extension relation type]]]]とは、 [[URI]] として表される[[リンク関係型]]を言います。 [109] 登録したくない[[応用]]は [[RFC 3986]] [[URI]] を[[拡張関係型]]として使うことができます。 [[URI]] が指す[[資源]]に[[リンク関係型]]の意味の定義を含めることができますが、 [[クライアント]]がこれに自動アクセスする[['''べきではありません''']]。 比較の際は[[大文字・小文字不区別]]で文字列として行わなければ[['''なりません''']]。 すべて[[小文字]]の [[URI]] を使う[['''べきです''']]。 ;; [110] [[URI]] はすべて[[ASCII文字]]なので、[[ASCII大文字・小文字不区別]]です。 文字列として、ということなので[[相対参照]]の[[解決]]は行われません。ただし、 [[CURIE]] として記述されている [[URI]] を元の [[URI]] に復元する、という処理が言及されているので、 同様に任意の[[URI参照]]として記述されている [[URI]] を[[解決]]して元の [[URI]] に復元する、という記述形式を定義することは可能だと思われます。 [146] [[リンク関係型]]が [[URI]] であって [[IRI]] であるのは、[[比較]]の容易のためであるとされています。 また、 [[リンク関係型]]は[[利用者]]に対して表示するものではないともされています。 [SRC[>>98 8.]] ** 関連 [102] >>101 のような使われ方から、 [[MIME型]]と混同しそうですが、[[資源]]の[[表現]]の書式を表すために使うものではなく、 あくまでも関係性を述べるものに過ぎない、とされています。 [SRC[>>98]] * IANA リンク型登録簿 [116] [[IANA]] は [[Web Linking]] 仕様に基づく [[IETF]] の[[リンク関係型]]の登録簿を管理しています。 ** 仕様書 [REFS[ - [122] [CITE[Link Relations]] - [124] [CITE@en[RFC 5988 - Web Linking]] ([TIME[2012-03-22 09:19:11 +09:00]] 版) ]REFS] [128] 登録簿 (>>122) は他の [[IANA登録簿]]同様、 [[HTML]]、[[XML]]、[[平文]]で提供されています。 [TIME[2012-06-28T12:48:18.700Z]] ** 登録手続き [132] 登録はまず [DFN[[[link-relations@ietf.org]]]] [[メーリング・リスト]]に登録雛形を埋めて送信することで行われます。 [SRC[>>124]] [127] [[RFC 5226]] [RUBYB[[[指定専門家]]]@en[Designated Expert]]の助言に基づき、 [RUBYB[[[仕様書必須]]]@en[Specification Required]]の形で登録されることとなっています。 [SRC[>>124]] [129] 登録雛形を埋めたものは通常 [[RFC]] または [[RFC 2026]] [RUBYB[[[開放型標準]]]@en[Open Standard]]により出版されることになっていますが、 [[指定専門家]]は出版されることを前提に出版前に承認して構いません。 [SRC[>>124]] [130] 未登録の[[リンク関係型]]が広く使われており、直ちに登録される見込みもない場合、 [[指定専門家]]の判断により第三者が登録することもできます。 [SRC[>>124]] [133] [[指定専門家]]は承認または拒否を14日以内に決定します。 決定に対する不服は [[Application Area Directors]]へ、更には [[IESG]] 全体へと申し立てられます。 [SRC[>>124]] [131] 登録雛形には次の項目が含まれます [SRC[>>124]]。 [FIG[ - 登録名 - 説明 - 参考文献 - メモ ([[任意選択]]) - 応用データ ([[任意選択]]) ]FIG] ** 歴史 *** Atom リンク関係登録簿 [80] [[RFC 4287]] は [[Atom]] の[[リンク関係型]]のための登録簿 (「Registry of Link Relations」) を定義していました。 [REFS[ - [117] [CITE@en[RFC 4287 - The Atom Syndication Format]] ([TIME[2009-08-20 17:27:51 +09:00]] 版) ]REFS] [120] [[IANA]] 登録簿への登録は、 [[IANA]] において受け付けた後、転送されて [[RFC 2434]] [RUBYB[[[IESG承認]]]@en[IESG Approval]]によるとされていました。 [SRC[>>80]] [119] 登録簿は、次の内容を含めることになっていました。 [SRC[>>80]] [FIG[ - 属性値 - 説明 - 期待される表示上の性質 - セキュリティに関して ]FIG] [121] 初期状態として、 [[RFC 4287]] で規定される5つの値 [CODE(XML)@en[[[alternate]]]], [CODE(XML)@en[[[related]]]], [CODE(XML)@en[[[self]]]], [CODE(XML)@en[[[enclosure]]]], [CODE(XML)@en[[[via]]]] [SRC[>>80]] が登録されていました。 [118] この登録簿は [[RFC 5988]] により置き換えられています。 ;; [123] 登録簿の [[URL]] は >>122 でした。内容はそのまま新しい登録簿に引き継がれています。 ** RFC 5988 [125] [[RFC 5988]] は [[RFC 4287]] による登録簿に替えて、 [[Web Linking]] 仕様に基づく[[リンク関係型]]の登録簿「Link Relation Type Registry」を規定しています。 [126] [[RFC 5988]] によれば [[XML]] 版は [[BSDライセンス]]文を含まなければならないことになっています [SRC[>>124]] が、 現時点ではそのようにはなっていません。 [TIME[2012-06-28T12:44:23.300Z]] [134] [[RFC 5988]] は元の [[RFC 4287]] の登録簿に登録されていた[[リンク型]]を初期状態として改めて規定しています。 出典なしで登録されていた[[リンク型]]は [[RFC 5988]] が出典という扱いになっています。 [SRC[>>124]] [135] [[RFC 4287]] では登録された[[リンク型]]も長い [[URL]] としての形式に対応づけられることになっていましたが、 [[RFC 5988]] にはそのような言及がまったくありません。 (>>113) * IANA リンク型応用データ登録簿 [137] [[RFC 5988]] は[[リンク関係型]]に加えて、[[リンク型応用データ]]に関する [[IANA]] 登録簿 ([[Link Relation Application Data Registry]]) も定義しています。 [145] ただし [[RFC]] には具体例が示されておらず、現時点で1つも登録が無いため、 どのような利用を想定しているのかはっきりしていません。 [REFS[ - [122] [CITE[Link Relations]] - [136] [CITE@en[RFC 5988 - Web Linking]] ([TIME[2012-03-22 09:19:11 +09:00]] 版) ]REFS] ** 登録手続き [140] 登録は [[RFC 5226]] [RUBYB[[[指定専門家]]]@en[Designated Expert]]の助言により [[RFC 5226]] [RUBYB[[[仕様書必須]]]@en[Specification Requred]]]]の方式により行います。 [SRC[>>136]] [144] 登録雛形は [[link-relations@ietf.org]] に送られるべきであり、 [[指定専門家]]は14日以内に承認または拒否の判断を下します。 21日を超えて決定が下されないときは [[IESG]] に上訴できます。 [SRC[>>136]] [141] 登録雛形には次の項目が含まれます [SRC[>>136]]。 [FIG[ - 応用名 - 説明 - 既定値 - メモ ([[任意選択]]) ]FIG] [142] ここで説明には応用データの[[値空間]]を含める[['''べきです''']]。 [SRC[>>136]] [143] 既定値は応用データが適用されない[[リンク関係型]]に対して適当でなければ[['''なりません''']]。 応用データの登録以前に登録された[[リンク関係型]]には既定値が適用されるものとみなします。 これが不適当であるときは[[指定専門家]]や (可能なら) 登録者と相談の上適切に修正するべきであります。 [SRC[>>136]] ** 歴史 [138] この登録簿は [[RFC 5988]] により新設されました。 [139] 現時点で何も登録されていません。 [TIME[2012-06-28T14:17:45.500Z]] * リンク型の一覧 [97] [[リンク型の一覧]]を参照。 * 歴史 ** HTML 4 のリンク型 [35] [[HTML4]] の仕様書で認められた (recognized) リンク型は に、 その慣習的な (conventional) 解釈と共に挙げられています。 わざわざ「慣習的」と言っているからには、 特に HTML 4 で規定するのではなく、そう解釈されてきたからこれからもそうするといいよと言っているように思われます。 * 参考 - [1] ''リンクタイプの深淵'' - [2] ''Link Type Definitions'' (英語) ——各仕様書からリンク型関連規定を抜粋。 - [3] ''Strict-XHTML スレッド 1.0 SE'' - [5] ちょっと気になるんですが、リンク型を複数指定した場合、それは [[and]] なのですか、 [[or]] なのですか。 - [6] >>5 の表現はちょっと正しくないかもしれん。 [CODE(HTML)[]] の場合、 [VAR[foo]] ってのは [CODE[stylesheet]] で, それの [CODE[alternate]] (つまり代替スタイルシート) であって、リンクしている文書の [CODE[stylesheet]] であると共にリンクしている文書の [CODE[alternate]] でもあるわけでは'''ない'''でしょ。 - [7] ''5=6'': で、たまに見かける例 [CODE(HTML)[]] は、どういう風に解釈するのがいいのか、と小一時間問詰めてみたくなるんです。 - [8] [[favicon.ico]] - [9] >>5-7 [CODE(HTML)[]] の [VAR[foo]] は一体何なのか、とかね。一番の解は今のところ, リンク型の列挙は [CODE[alternate stylesheet]] と [CODE[shortcut icon]] 以外使わない、ってことですか。 - [10] ''HTML META, REL and REV Tags'' - [12] ''Lynx Users Guide v2.8.3'' [[Lynx]] が対応するリンク型 - [15] HTML 4 では明記されていませんが、 [[rel]] 属性などでのリンク型の複数の指定は、順序問わずです。 (今 [[www-html]] で話題になってました。) - [16] ''www-html@w3.org from October 2001: The Element in'' - [21] ''"Link要素の行き先"メモ'' - [22] '''みんな、accesskeyってどうしてる? tabindexは?''' : [[accesskey]] 属性的観点から見た [[rel]], [[rev]], リンク型についての話題が出ています。 -- リンク型については、特に --- [[top]], [[home]], [[start]], [[up]] リンク型について --- 複数リンク型の間隔区切りの併記について -- が参考になります。 - [23] ''2001-10 + 遠吠え'' : リンク型複数指定がブラウザでちゃんと実装されてないことを嘆いている。 - [24] ''iCabを極める'' : [[iCab]] での実装 - [25] ''w3c-wai-gl@w3.org from July to September 2000: Suggestion for T'' : [CODE(HTML)[bookmark]] を文書中の主要位置 (大きな節の見出しとか。) へのポインタとして使う提案。 - [27] Moz 1.3 から 1.4b にしたら、 [[SiteNavigationBar]] で [CODE(HTML)[rel=home]] がボタン「Top」にならなくなって、他の未知型と一緒に「More」に入るようになりました。 - [28] ''HTML 4.0 Specification'' : 古い HTML 4 の原案 - [29] リンク型って、リンクの [CODE(HTML)[[[class]]]] なんだよなあ。で、古い時代にはリンクの級と始点アンカーの級が混同されてて、どちらも [CODE(HTML)[[[rel]]]] になってたような感じがする。 HTML 4 位の時代に整理されてリンクの級としての役割が確立したのかなあ? - [30] で、ふと思ったんだが、 >>29 よ、「デットリンク」であることを明示したいと思ったら、これはなんの属性なんだ? 「デッドリンク」と言うくらいだから、「デッド」はリンクの属性だよな? だけど [CODE(HTML)[rel]] ってのはあくまで「関係」であって、級の一種ではあるけど級そのものではない以上、この属性に指定は出来ないなあ。いや、別に >>29 の言ってることを否定するわけじゃないよ。 - [31] >>30 [CODE[rel isSubPropertyOf リンクの属性]]で、[CODE[(死んでいるか否か) isSubPropertyOf リンクの属性]]なんだな。で、 HTML でこれを表現するとすると、「リンクの属性」を「始点アンカーの属性」と分けて与える属性は存在しないから、諦めて [CODE(HTML)[[[class]]]] 属性に指定するか、 XHTML で独自名前空間の属性で指定するか。或いは、 [[XLink]] の [CODE(XML)[[[from]]]]・・・[CODE(XML)[[[to]]]] を使って、リンクを定義する要素の属性として与える、っていう方法もあるのかな? [SAMP(XML)[]] [40] [CITE[Specifying schemas for document link relationships]] ([[名無しさん]]) [41] [CITE[Webweavers - weavin' - rel="nofollow"]] ([[名無しさん]]) [42] [CITE[Preventing comment spam]] ([[名無しさん]] [WEAK[2005-01-22 00:40:49 +00:00]]) [43] [CITE[DTV A S E L 1 (DASE-1) P 2: D A E ATSC Standard]] は、 [CODE(HTMLa)[rel]] 属性で HTML 4 リンク型以外には [CODE(HTML)[x-]] を接頭辞として付けることを要求しています。 [SRC[5.1.1.6.6 [CSECTION[[CODE(HTMLe)[link]] element]]]] [55] [CITE[XHTML link types in RDF]] [[XHTML 2.0]]の[[リンク型]] as [[RDF]][[語彙]] ([[名無しさん]]) [56] [CITE[Bug 103469 - Need unified spec for rel=""]] ([[名無しさん]]) [57] [CITE[Index of /specs/html/link]] [[Ian Hickson]]の昔の提案。 ([[名無しさん]] [sage]) [58] [CITE[Bug 2800 - No UI for HTML2 "LINK" element]] ([[名無しさん]] [sage]) [59] @@ 複数の値についてのまとめが必要 [61] [CITE[HyperText Design Issues: Link types]] ([CODE[2000-02-25 02:43:14 +09:00]] 版) ([[名無しさん]]) [62] [CITE[Describing and Linking Web Resources]] ([CODE[1996-11-13 23:39:22 +09:00]] 版) ([[名無しさん]]) [63] [CITE[Relationships in HTML links]] ([CODE[1996-05-30 22:21:50 +09:00]] 版) ([[名無しさん]]) [64] [CITE@en[The Continuous Media Markup Language (CMML), Version 2.1]] ([CODE[2006-05-06 10:39:46 +09:00]] 版) ([[名無しさん]]) [65] [CITE@en[RDF Sitemaps using HTML link types and Dublin Core]] ([CODE[1999-04-16 16:23:49 +09:00]] 版) ([[名無しさん]]) [66] [CITE@en[RDF Sitemaps using HTML link types and Dublin Core]] ([CODE[1999-04-16 16:23:49 +09:00]] 版) ([[名無しさん]]) [67] [CITE[Hatena::agenda]] ([CODE[2007-07-07 14:25:21 +09:00]] 版) ([[名無しさん]]) [68] [CITE[Re: Where did the "rev" attribute go?]] ([[Ian Hickson ]] 著, [CODE[2007-08-08 04:15:31 +09:00]] 版) ([[名無しさん]]) [69] [CITE@en[existing-rel-values - Microformats]] ([TIME[2008-07-29 06:50:44 +09:00]] 版) [70] [CITE[Hypertext links in HTML]] ([TIME[1998-07-22 04:57:02 +09:00]] 版) [71] [CITE@en[HTML WG face-to-face meeting -- 23 Oct 2008]] ([TIME[2008-11-13 01:26:40 +09:00]] 版) [72] [73] [CITE@en[RDFa in XHTML: Syntax and Processing]] ([TIME[2008-10-14 00:17:32 +09:00]] 版) [83] [86] [CITE[Working Group Decision on ISSUE-118 broken-link-types]] ( ([TIME[2011-03-01 07:18:23 +09:00]] 版)) [87] [CITE[IRC logs: freenode / #whatwg / 20110201]] ( ([TIME[2011-03-18 00:46:22 +09:00]] 版)) [88] [CITE[IRC logs: freenode / #whatwg / 20110301]] ( ([TIME[2011-03-27 15:00:02 +09:00]] 版)) [89] [CITE[IRC logs: freenode / #whatwg / 20110310]] ( ([TIME[2011-04-02 03:23:11 +09:00]] 版)) [90] [CITE@en[Web Applications 1.0 r6000 8793]] ( ([TIME[2011-04-13 09:31:00 +09:00]] 版)) [91] [CITE@en[existing rel values · Microformats Wiki]] ( ([TIME[2011-04-13 22:31:34 +09:00]] 版)) [92] [CITE[IRC logs: freenode / #whatwg / 20110517]] ( ([TIME[2011-05-21 14:39:15 +09:00]] 版)) [93] [CITE[IRC logs: freenode / #whatwg / 20110606]] ( ([TIME[2011-06-09 22:15:17 +09:00]] 版)) [94] [CITE[IRC logs: freenode / #whatwg / 20110613]] ( ([TIME[2011-06-19 23:46:45 +09:00]] 版)) [95] [CITE@en[Web Applications 1.0 r6486 Remove pointless part of this requirement.]] ( ([TIME[2011-08-17 14:00:00 +09:00]] 版)) [96] [CITE[OData Protocol Atom Format]] ( ([TIME[2012-02-08 21:02:21 +09:00]] 版)) [114] [CITE[Web Application Description Language]] ( ([TIME[2009-09-10 03:59:24 +09:00]] 版)) [115] [CITE[IRC logs: freenode / #whatwg / 20120531]] ( ([TIME[2012-06-21 00:39:22 +09:00]] 版))