* 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つだけである点が異なります。 *** 登録 [80] [[IANA]] 登録簿への登録は [[RFC 2434]] [[IESG承認]]によるとされています。 ;; [CITE@en[RFC 4287 - The Atom Syndication Format]] ([TIME[2009-08-20 17:27:51 +09:00]] 版) ** 意味 [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]] は採用していません。 * 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]] に復元する、という記述形式を定義することは可能だと思われます。 ** 関連 [102] >>101 のような使われ方から、 [[MIME型]]と混同しそうですが、[[資源]]の[[表現]]の書式を表すために使うものではなく、 あくまでも関係性を述べるものに過ぎない、とされています。 [SRC[>>98]] * リンク型の一覧 [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]] 版))