* RDFa 処理器 (RDFa 1.0) [2] [DFN[[RUBYB[適合]@en[conforming]] RDFa [RUBYB[処理器]@en[processor]]]]は、 [[RDFa]] 仕様書に従って [[RDF]] [[三項組]]を取り出す[[処理器]]です。 ** 仕様書 [REFS[ -[1] [CITE@en[RDFa in XHTML: Syntax and Processing]] ([TIME[2008-10-14 00:17:32 +09:00]] 版) ]REFS] ** 要件 -[3] [[消費応用]]に対し、 [[RDFa]] 仕様書の[[処理モデル]]の章の規則によって生成した[[三項組]]すべてを含む単一の [[RDFグラフ]]を提供しなければ[['''なりません''']] -[5] >>4 の追加[[三項組]]を[[既定グラフ]]において提供しては[['''なりません''']] ** 許可 -[4] [[RDFa]] 仕様書の規則に則らない[[三項組]]を提供して[['''構いません''']] ** 関連 [6] [[適合RDFa利用者エージェント]]との関係は明示されていません。 * RDFa 処理器 (RDFa 1.1) [17] [[RDFa]] が含まれる[[文書]]を処理して[[グラフ]]を取り出すものを [DFN[RDFa [RUBYB[処理器]@en[processor]]]]といいます。 [15] [[RDFa]] の処理は[[文書木]]に対する[[探索]]として定義されています。[[文書]]オブジェクトから順に[[子要素]]を[[文書順]]にたどって処理していきます。 [SRC[>>16]] ** 仕様書 [REFS[ - [14] [CITE@en[RDFa Core 1.1 - Second Edition]] ([TIME[2013-08-15 17:12:47 +09:00]] 版) - [16] [CITE@en[RDFa Core 1.1 - Second Edition]] ([TIME[2013-08-15 17:12:47 +09:00]] 版) - [130] [CITE@en[RDFa Core 1.1 - Second Edition]] ([TIME[2013-08-15 17:12:47 +09:00]] 版) ]REFS] ** 出力 [11] [DFN[[RUBYB[[[適合RDFa処理器]]]@en[conforming RDFa Processor]]]]は処理の結果として[DFN[[RUBYB[[[出力グラグ]]]@en[output graph]]]]と[DFN[[RUBYB[[[処理器グラグ]]]@en[processor graph]]]]を[[応用]]に提供しなければ[['''なりません''']]。 [SRC[>>5]] [12] [[出力グラフ]]は、 [[RDFa 1.1]] の処理モデルにより得られたすべての[[三項組]]からなる[[RDFグラグ]]です。 [SRC[>>5]] [13] [[処理器グラフ]]は、[[RDFa処理器]]が報告した[[エラー]]、[[警告]]、情報を集めたものです。 [SRC[>>5]] ;; [127] [[処理器グラフ]]には[[接頭辞]]に関するエラーなどが含まれることになっています。 そのようなエラーがあっても処理自体は継続されます。 ;; [128] エラーといっても[[接頭辞]]以外はほとんどどんな記述であっても適当に解釈されてしまうので、 誤った[[マーク付け]]を検出する目的ではあまり使いものにならなそうです。 [129] [[RDFa処理器]]が [[Webアプリケーション]]として実装されている場合には [DFN[[CODE[[[rdfagraph]]]]]] という [[query parameter]] でどの[[グラフ]]を得たいかを指定することになっています [SRC[>>16]]。 ** 評価文脈 [18] [[RDFa]] の処理は[DFN[[RUBYB[[[評価文脈]]]@en[evaluation context]]]]を使って行われます。 開始時には[DFN[[RUBYB[初期文脈]@en[initial context]]]]が使われ、[[子要素]]の評価の際はそれぞれのために作られた[[評価文脈]]が使われます。 [SRC[>>16]] [19] [[評価文脈]]には次の項目が含まれます [SRC[>>16]]。 [FIG[ -[DFN[[RUBYB[基底]@en[base]]]] -[DFN[[RUBYB[親主語]@en[parent subject]]]] -[DFN[[RUBYB[親目的語]@en[parent object]]]] -[DFN[[RUBYB[IRI 写像]@en[IRI mappings]]]]のリスト -[DFN[[RUBYB[不完全三項組]@en[incomplete triples]]]]のリスト -[DFN[[RUBYB[リスト写像]@en[list mapping]]]] -[DFN[[RUBYB[言語]@en[language]]]] -[DFN[[RUBYB[語写像]@en[term mappings]]]]のリスト -[DFN[[RUBYB[既定語彙]@en[default vocabulary]]]] ]FIG] [20] [[初期文脈]]は次のように定義されています。 [FIG[ - [[基底]]は処理する[[文書]]の[[基底URL]] [SRC[>>16]] - [[親主語]]は[[基底]]と同じ [SRC[>>16]] - [[親目的語]]は null [SRC[>>16]] - [[IRI写像]]のリストは空 ([[RDFaホスト言語]]が定義することもできる) [SRC[>>16]] - [[不完全三項組]]のリストは空 [SRC[>>16]] - [[リスト写像]]は空 [SRC[>>16]] - [[言語]]は null [SRC[>>16]] - [[語写像]]のリストは定義しない ([[RDFaホスト言語]]が定義して[['''構わない''']]) [SRC[>>16]] - [[既定語彙]]は定義しない ([[RDFaホスト言語]]が定義して[['''構わない''']]) [SRC[>>16]] ]FIG] ;; [21] 仕様書の規定は曖昧かつ分散しています。この程度の単純な定義くらいはっきり書けてほしいのですが・・・。 [154] [[RDFa Core 1.1]] 本体仕様には明記されていませんが、[[初期文脈]]は複数あって順番に適用するということがあり得るようです。 (>>145) [131] この[[ホスト言語]]による[[初期文脈]]の定義については、 構文解析器はそれをハードコードしても構いませんし、外部の文書として読み込む形にしても構いません。 その外部の文書は、 [[RDFaホスト言語]]として承認されたものを使い、 [[RDFa]] 仕様書で規定された[[語彙]]により記述され[['''なければならない''']] [SRC[>>130]] とされています。 いずれにせよよく知られた安定した[[初期文脈]]の定義は埋め込んでいる[['''べきです''']] [SRC[>>130]]。 ;; [132] [[RDFaホスト言語]]の適合性の規定によると、そのような文書を用意すること自体は[['''推奨''']]でしかないようです。 [22] [[評価文脈]]に関連して、処理中は次の一時変数が使われます [SRC[>>16]]。 [FIG[ - [DFN[[RUBYB[IRI写像の局所リスト]@en[local list of IRI mappings]]]]: 初期状態は空 - [DFN[[RUBYB[不完全三項組の局所リスト]@en[local list of incomplete triples]]]]: 初期状態は空 - [DFN[[RUBYB[現在言語]@en[current language]]]]: 初期状態は空 - [DFN[[RUBYB[要素を飛ばす]@en[skip element]]]]フラグ - [DFN[[RUBYB[新主語]@en[new subject]]]] - [DFN[[RUBYB[現在特性値]@en[current property value]]]] - [DFN[[RUBYB[現在目的語資源]@en[current object resource]]]] - [DFN[[RUBYB[型付き資源]@en[typed resource]]]] - [DFN[[RUBYB[局所語写像]@en[local term mappings]]]] - [DFN[[RUBYB[局所リスト写像]@en[local list mapping]]]] - [DFN[[RUBYB[局所既定語彙]@en[local default vocabulary]]]] ]FIG] ** 処理 [23] [[RDFa]] の[[属性]]は[[ホスト言語]]によっては省くことができますが、 その場合当該[[属性]]に関する処理は行いません [SRC[>>16]]。 [27] [[CURIE]] を含む[[属性]]の処理については、 [[CURIE]] の項をご覧ください。 [[CURIE]] 等が[[非妥当]]である場合その値が無視されると規定されており、その結果[[属性]]が[[空]]とみなされることもあります。 空と[[属性]]が存在しないのは別の状態のようです。 [25] [DFN[[RUBYB[現在要素]@en[current element]]]]に対する [[RDFa]] の処理は次のように行われます [SRC[>>16]]。 [FIG[ = [24] 次の通り初期化します。 -- [[要素を飛ばす]]フラグは[[偽]]に -- [[新主語]]、[[現在目的語資源]]、[[型付き資源]]、[[不完全三項組の局所リスト]]は [[null]] に -- その他は[[評価文脈]]の値に = [26] [[現在要素]]の [CODE(HTMLa)@en[[[vocab]]]] [[属性]]の値があれば、それを[[解決]]して[[局所既定語彙]]とします。空なら、[[ホスト言語]]によって規定された既定値 (または null) とします。 -- ここでいう既定値とは[[初期文脈]]の[[既定語彙]]と同じものでしょうか? -= [28] 値があれば ([[基底]], [CODE(URI)[[[http://www.w3.org/ns/rdfa#usesVocabulary]]]], [[局所既定語彙]]) の[[三項組]]を生成します。 = [29] [[現在要素]]で[[IRI写像]]が定義されていれば、[[IRI写像の局所リスト]]に追加します。既に同名のものがあれば上書きします。 == [30] [CODE(XML)@en[[[xmlns]]]] [[宣言]]があれば、[[名前空間接頭辞]]を[[接頭辞]]、[[属性値]]を [[IRI]] とする[['''べきです''']]。 --- この手順は[['''べき''']]レベルであり、[['''必須''']]ではないようです。 == [31] [CODE(HTMLa)@en[[[prefix]]]] [[属性]]があれば、そこにある[[接頭辞]]と [[IRI]] の組を最初から最後の順で処理していきます。 =- [32] ここで[[接頭辞]]は[[小文字]]に変換しなければ[['''なりません''']]。 =- [33] また [[IRI]] を[[解決]]しては[['''なりません''']]。 = [34] [[現在要素]]から[[言語]]を設定します。[[ホスト言語]]はこの方法を定義して[['''構いません''']]。 -- 定義されていないときは好きにしていいのでしょうか...? -- [[XML+RDFa]] では [CODE(XMLa)@en[[[xml:lang]]]] [[属性]]を使っています。 = [35] [[現在要素]]が [CODE(HTMLa)@en[[[rel]]]] も [CODE(HTMLa)@en[[[rev]]]] を有していなければ、 == [36] [[現在要素]]が [CODE(HTMLa)@en[[[property]]]] [[属性]]を有しており、 [CODE(HTMLa)@en[[[content]]]] も [CODE(HTMLa)@en[[[datatype]]]] も持っていなければ、 === [37] [[新主語]]を次の値とします。 ==== [38] [CODE(HTMLa)@en[[[about]]]] [[属性]]から値を得られれば、その[[資源]] ==== [39] そうでなく[[現在要素]]が[[文書]]の[[根要素]]なら、空の [CODE(HTMLa)@en[[[about]]]] [[属性]]があったとみなし、その[[資源]] ==== [40] そうでなく[[親目的語]]があれば、それ === [41] [CODE(HTMLa)@en[[[typeof]]]] があれば、[[型付き資源]]を次の値とします。 ==== [42] [CODE(HTMLa)@en[[[about]]]] [[属性]]から値を得られれば、その[[資源]] ==== [43] そうでなく[[現在要素]]が[[文書]]の[[根要素]]なら、空の [CODE(HTMLa)@en[[[about]]]] [[属性]]があったとみなし、その[[資源]] ==== [44] そうでなければ、 ===== [45] [CODE(HTMLa)@en[[[resource]]]] [[属性]]から値を得られれば、その[[資源]] ===== [46] そうでなく [CODE(HTMLa)@en[[[href]]]] [[属性]]から値を得られれば、その [[IRI]] ===== [47] そうでなく [CODE(HTMLa)@en[[[src]]]] [[属性]]から値を得られれば、その [[IRI]] ===== [48] そうでなければ新しい [[bnode]] ===== [49] いずれにせよ、[[現在オブジェクト資源]]を[[型付き資源]]の値とします。 == [50] そうでないなら、 === [51] [CODE(HTMLa)@en[[[about]]]], [CODE(HTMLa)@en[[[href]]]], [CODE(HTMLa)@en[[[src]]]], [CODE(HTMLa)@en[[[resource]]]] のいずれかがあれば、[[新主語]]は次の値とします。 ==== [52] [CODE(HTMLa)@en[[[about]]]] [[属性]]から値を得られれば、その[[資源]] ==== [53] そうでなく [CODE(HTMLa)@en[[[resource]]]] [[属性]]から値を得られれば、その[[資源]] ==== [54] そうでなく [CODE(HTMLa)@en[[[href]]]] [[属性]]から値を得られれば、その [[IRI]] ==== [55] そうでなく [CODE(HTMLa)@en[[[src]]]] [[属性]]から値を得られれば、その [[IRI]] === [56] そうでなく [CODE(HTMLa)@en[[[resource]]]] [[属性]]から[[資源]]を得られなければ、 ==== [57] そうでなく[[現在要素]]が[[文書]]の[[根要素]]なら、空の [CODE(HTMLa)@en[[[about]]]] [[属性]]があったとみなし、その[[資源]]を[[新主語]]とします。 ==== [58] そうでなく [CODE(HTMLa)@en[[[typeof]]]] があれば、[[新主語]]をその [[bnode]] とします。 ==== [59] そうでなく[[親目的語]]があれば、[[新主語]]をその値とします。また [CODE(HTMLa)@en[[[property]]]] [[属性]]がなければ、[[要素を飛ばす]]フラグを[[真]]とします。 === [60] [CODE(HTMLa)@en[[[typeof]]]] [[属性]]があれば、[[型付き資源]]を[[新主語]]の値とします。 = [61] [[現在要素]]が [CODE(HTMLa)@en[[[rel]]]] か [CODE(HTMLa)@en[[[rev]]]] を有していれば、 == [62] [[新主語]]を次の値とします。 === [63] [CODE(HTMLa)@en[[[about]]]] [[属性]]から値を得られれば、その[[資源]] == [64] [CODE(HTMLa)@en[[[typeof]]]] があれば、[[型付き資源]]の値を[[新主語]]とします。 == [65] これで資源が決まらなければ次のようにします。 === [66] [[現在要素]]が[[文書]]の[[根要素]]なら、空の [CODE(HTMLa)@en[[[about]]]] [[属性]]があったとみなし、その[[資源]]を[[新主語]]とします。 === [67] そうでなく[[親目的語]]があれば、それを[[新主語]]とします。 == [68] [[現在目的語資源]]を次の値とします。 === [69] [CODE(HTMLa)@en[[[resource]]]] [[属性]]から値を得られれば、その[[資源]] === [70] そうでなく [CODE(HTMLa)@en[[[href]]]] [[属性]]から値を得られれば、その [[IRI]] === [71] そうでなく [CODE(HTMLa)@en[[[src]]]] [[属性]]から値を得られれば、その [[IRI]] === [72] そうでなく [CODE(HTMLa)@en[[[typeof]]]] があって [CODE(HTMLa)@en[[[about]]]] がなければ新しい [[bnode]] == [73] [CODE(HTMLa)@en[[[typeof]]]] があって [CODE(HTMLa)@en[[[about]]]] がなければ、[[型付き資源]]を[[現在目的語資源]]とします。 = [74] >>35 か >>61 で[[型付き資源]]が [[null]] 以外に設定されたなら、 == [75] [CODE(HTMLa)@en[[[typeof]]]] から得られた [[IRI]] それぞれについて、[[三項組]] ([[型付き資源]]、 [CODE[[[rdf:type]]]]、 [[IRI]]) を生成します。 = [76] ここまでで[[新主語]]が [[null]] 以外かつ[[親目的語]]以外に設定されていれば、 [[評価文脈]]の[[リスト写像]]を新しい空の[[写像]]に置き換えます。 = [77] ここまでで[[現在目的語資源]]が [[null]] 以外に設定されていれば、 == [78] [CODE(HTMLa)@en[[[inlist]]]] と [CODE(HTMLa)@en[[[rel]]]] の両方があれば、 === [79] [CODE(HTMLa)@en[[[rel]]]] から得られた [[IRI]] それぞれについて、 ==== [80] [[IRI]] に関連付けられたリストが[[局所リスト写像]]になければ、新しいリストを追加します。 ==== [81] そのリストに[[現在目的語資源]]を追加します。 == [82] [CODE(HTMLa)@en[[[rel]]]] [[属性]]があって [CODE(HTMLa)@en[[[inlist]]]] [[属性]]がなければ、 [CODE(HTMLa)@en[[[rel]]]] [[属性]]から得られた [[IRI]] それぞれについて、[[三項組]] ([[新主語]], [[IRI]], [[現在目的語資源]]) を追加します。 == [84] [CODE(HTMLa)@en[[[rev]]]] [[属性]]があれば、得られた [[IRI]] それぞれについて、 [[三項組]] ([[現在目的語資源]], [[IRI]], [[新主語]]) を追加します。 = [85] [[現在目的語資源]]が null であれば、 == [86] [CODE(HTMLa)@en[[[rel]]]] と [CODE(HTMLa)@en[[[inlist]]]] があれば、 [CODE(HTMLa)@en[[[rel]]]] から得られた [[IRI]] それぞれについて、 === [87] [[IRI]] に関連付けられたリストが[[局所リスト写像]]になければ、新しいリストを追加します。 === [88] [[不完全三項組の局所リスト]]に (リスト = [[局所リスト写像]]から [[IRI]] へのリスト, 方向性 = なし) を追加します。 == [89] そうでなければ、[[不完全三項組の局所リスト]]に (述語 = [[IRI]], 方向性 = 正) を追加します。 == [90] [CODE(HTMLa)@en[[[rev]]]] があれば、得られた [[IRI]] それぞれについて、[[不完全三項組の局所リスト]]に (述語 = [[IRI]], 方向性 = 逆) を追加します。 == [91] これらいずれかの場合には、[[現在目的語資源]]は新しい [[bnode]] とします。 = [92] [CODE(HTMLa)@en[[[property]]]] があれば、 == [93] [[現在特性値]]は次の値です。 === [94] [CODE(HTMLa)@en[[[datatype]]]] があり、空以外の値を得られ、それが [[rdf:XMLLiteral]] 以外なら、 [[型付きリテラル]]とします。その[[リテラル]]の値は、 [CODE(HTMLa)@en[[[content]]]] があればその値、なければ[[子孫]]の[[テキスト節点]]の値を連結したものとします。型は [CODE(HTMLa)@en[[[datatype]]]] から得た値とします。 === [95] そうでなく [CODE(HTMLa)@en[[[datatype]]]] が空であれば、 [[平リテラル]]とします。その[[リテラル]]の値は、[CODE(HTMLa)@en[[[content]]]] があればその値、なければ[[子孫]]の[[テキスト節点]]の値を連結したものとします。 === [96] そうでなく、 [CODE(HTMLa)@en[[[datatype]]]] があり、得られた値が [[rdf:XMLLiteral]] なら、 [[XMLリテラル]]とします。 [[XMLリテラル]]の値は[[現在要素]]の[[子孫]] ([[現在要素]]自体は含みません。) を[[排他的XML正準化1.0]]により[[直列化]]したものとします。型は [[rdf:XMLLiteral]] の [[IRI]] とします。 === [97] そうでなく [CODE(HTMLa)@en[[[content]]]] があれば、その値の[[平リテラル]]とします。 === [98] そうでなく [CODE(HTMLa)@en[[[rel]]]]、[CODE(HTMLa)@en[[[rev]]]]、[CODE(HTMLa)@en[[[content]]]] のいずれもないなら、 ==== [99] [CODE(HTMLa)@en[[[resource]]]] があればそこから得られる[[資源]] ==== [100] そうでなく [CODE(HTMLa)@en[[[href]]]] があればそこから得られる [[IRI]] ==== [101] そうでなく [CODE(HTMLa)@en[[[src]]]] があればそこから得られる [[IRI]] === [102] そうでなく [CODE(HTMLa)@en[[[typeof]]]] があって [CODE(HTMLa)@en[[[about]]]] がなければ[[型付き資源]] === [103] そうでなければ[[平リテラル]] == [104] [[現在言語]]の値があれば、[[平リテラル]]の言語はその値とします。 == [105] [CODE(HTMLa)@en[[[property]]]] から得られる [[IRI]] それぞれについて、 === [106] [CODE(HTMLa)@en[[[inlist]]]] があれば、 ==== [107] [[IRI]] に関連付けられたリストが[[局所リスト写像]]になければ、新しいリストを追加します。 ==== [108] そのリストに[[現在特性値]]を追加します。 === [109] そうでなければ、[[三項組]] ([[新主語]], [[IRI]], [[現在特性値]]) を生成します。 = [110] [[要素を飛ばす]]フラグが[[偽]]で[[新主語]]が [[null]] 以外なら、 == [111] [[評価文脈]]の[[不完全三項組のリスト]]の[[不完全三項組]]それぞれについて、 === [112] 「方向」が無しなら、「リスト」に[[新主語]]を追加します。 === [113] 「方向」が正なら、[[三項組]] ([[親主語]], 「述語」, [[新主語]]) を生成します。 === [114] 「方向」が逆なら、[[三項組]] ([[新主語]], 「述語」, [[親主語]]) を生成します。 = [115] [[子要素]]それぞれについて、新しい[[評価文脈]]を使って再帰的に処理します。 == [116] [[要素を飛ばす]]フラグが[[真]]なら、現在の[[評価文脈]]を複写して、[[言語]]と[[IRI写像のリスト]]を[[現在言語]]と[[IRI写像の局所リスト]]に置き換えます。 == [117] そうでないなら、次のようにします。 ==- [[基底]]は現在の[[評価文脈]]のもの ==- [[親主語]]は[[新主語]]が [[null]] でないならそれ、そうでないなら現在の[[評価文脈]]の[[親主語]] ==- [[親目的語]]は[[現在目的語資源]]が [[null]] でないならそれ、そうでなく[[新主語]]が null でないならそれ、 そうでないなら現在の[[評価文脈]]の[[親主語]] ==- [[IRI写像のリスト]]は[[IRI写像の局所リスト]]、[[不完全三項組のリスト]]は[[不完全三項組の局所リスト]]、 [[リスト写像]]は[[局所リスト写像]]、[[言語]]は[[現在言語]]、[[既定語彙]]は[[現在既定語彙]] = [118] [[局所リスト写像]]の [[IRI]] それぞれについて、[[評価文脈]]の方に同じリストがなければ (つまり[[現在要素]]において作られたものなら)、 == [119] その [[IRI]] に関連付けられたリストに何もなければ、[[三項組]] ([[現在主語]], [[IRI]], [[rdf:nil]]) を生成します。 == [120] そうでなければ、 === [121] リスト中のそれぞれについて [[bnode]] を生成します。 === [122] [[bnode]] とリスト中の [[IRI]] や[[リテラル]] の組それぞれについて、[[三項組]] ([[bnode]], [[rdf:first]], [[IRI]] か[[リテラル]]) を生成します。 === [123] 各 [[bnode]] について[[三項組]] ([[bnode]], [[rdf:rest]], 次の [[bnode]] (なければ [[rdf:nil]])) を生成します。 === [124] [[三項組]] ([[現在主語]], [[IRI]], 最初の [[bnode]]) を生成します。 ]FIG] [125] [[XML+RDFa]] では [CODE(XMLa)@en[[[xml:base]]]] も使われることになっていますが (>>137)、 この処理ではなぜか使われていません。 ;; [126] [[RDFa]] は似たような機能を持つ[[属性]]が複数あったりして、本来 [[RDF]] を表現するために必要な以上に処理が複雑になっているように思えます。[[著者]]にとってもどの[[属性]]を使ったらいいのかわかりませんし、 どのように表現するとどう解釈するのか理解するのが困難でしょう。 [[RDF/XML]] の処理と比べてもこれは相当に複雑です。 [149] 鬼畜なことに >>148 で [[XHTML+RDFa]] においては一部の処理が[[猿パッチ]]されています。 ;; [150] 普通[[猿パッチ]]は別の時期、別のグループの仕様書に対して変更を注入するものなのに、なぜ同時に同グループが出版した [[XHTML+RDFa 1.1]] が [[RDFA Core 1.1]] の規定を書き換える必要があるのですかね... [155] この処理では [CODE(HTMLa)@en[[[datatype]]]] [[属性]]の値によって分岐するところがありますが、 [[XHTML+RDFa 1.1]] の [[Metainformation Attributes Module]] では [CODE(HTMLa)@en[[[datatype]]]] の既定値が [CODE@en[[[xs:string]]]] とされています。これらの規定の整合性がない気がしますがどうなっているのかは不明です。 ** XML+RDFa 文書 [10] [[RDFa処理器]]は [[XML+RDFa文書]]を次の[[初期文脈]]により処理します [SRC[>>133]]。 [FIG[ - [134] [CODE(URI)@en[[[http://www.w3.org/2011/rdfa-context/rdfa-1.1]]]] で定義されている既定の[RUBYB[[[語]]]@en[term]]を用います。 - [135] [CODE(URI)@en[[[http://www.w3.org/2011/rdfa-context/rdfa-1.1]]]] で定義されている既定の[[IRI写像]]を用います。 - [136] [[既定語彙]] IRI はありません。 - [137] [CODE(XMLa)@en[[[xml:base]]]] [[属性]]により[[基底]]を設定できます。 - [138] [CODE(XMLa)@en[[[xml:lang]]]] [[属性]]により現在の[[言語]]を設定できます。 ]FIG] [REFS[ - [133] [CITE@en[RDFa Core 1.1 - Second Edition]] ([TIME[2013-08-15 17:12:47 +09:00]] 版) ]REFS] ;; [139] なぜか要件ではなく事実の文となっています。 ;; [140] このように [CODE(MIME)@en[[[application/xml]]]] などと [CODE(MIME)@en[[[application/xhtml+xml]]]] などを区別するのは一般的な [[Webブラウザー]]の処理モデルと異なっています。また [[RDFa+XHTML]] などの処理とこの [[XML+RDFa]] の処理が衝突するおそれもあるはずですが、何も説明がありません。 ;; [141] >>137 と >>138 は[[初期文脈]]ではなく[[評価文脈]]に関する処理モデルの一部のような・・・。 ([[RDFa]] の仕様書はこのような若干のエスパーが必要な曖昧な記述が多いですね。) ** XHTML+RDFa 文書 [151] [[RDFa処理器]]は [CODE(HTMLe)@en[[[html]]]] [[要素]]の [CODE(HTMLa)@en[[[version]]]] [[属性]]が使われている時にその値を調べなければ[['''なりません''']]。 [[XHTML+RDFa]] の版として定義されているものであれば、その版の処理規則を用いなければ[['''なりません''']]。 そうでないか、 [CODE(HTMLa)@en[[[version]]]] [[属性]]がない場合は、 [[XHTML+RDFa]] の最新版を使わなければ[['''なりません''']]。 [SRC[>>143]] ;; [152] これってつまり、 [[XHTML+RDFa 1.1]] の[[RDFa処理器]]は [[XHTML+RDFa 1.0]] も実装しないといけないってことですよね・・・。 [142] [[XHTML+RDFa 1.1]] 文書は次のように処理されます [SRC[>>143]]。 [FIG[ - [144] [[既定語彙IRI]]は未定義 - [145] [[RDFa Core 1.1]] の[[初期文脈]] [CODE(URI)@en[[[http://www.w3.org/2011/rdfa-context/rdfa-1.1]]]] の後に [[XHTML+RDFa]] の[[初期文脈]] [CODE(URI)@en[[[http://www.w3.org/2011/rdfa-context/xhtml-rdfa-1.1]]]] を適用する - [146] [[基底]]は [CODE(HTMLe)@en[[[base]]]] [[要素]]を使って設定できる - [147] [[現在言語]]は [CODE(HTMLa)@en[[[lang]]]] または [CODE(XMLa)@en[[[xml:lang]]]] を使って設定できる - [148] >>35 と >>61 において、 [CODE(HTMLa)@en[[[about]]]], [CODE(HTMLa)@en[[[href]]]], [CODE(HTMLa)@en[[[resource]]]], [CODE(HTMLa)@en[[[src]]]] など資源属性によって [[IRI]] が指定されていない時で、 [CODE(HTMLe)@en[[[head]]]] [[要素]]か [CODE(HTMLe)@en[[[body]]]] [[要素]]であれば、[[新主語]]は[[親目的語]]に設定されているように動作する ]FIG] [REFS[ - [143] [CITE@en[XHTML+RDFa 1.1 - Second Edition]] ([TIME[2013-08-15 17:11:45 +09:00]] 版) ]REFS] ;; [153] [[RDFa]] 本体の処理モデルの一部を書き換えるのがありなのですね・・・。びっくりです。 普通[[プロファイル]]的なものって本体の仕様に従って特定の状況に適応させたもので、本体の仕様自体は変更しないものだと思うのですがね・・・。 (>>149) * 初期文脈 [158] [[RDFa Core 1.1]] は[[初期文脈]]として [DFN[[CODE(URI)@en[[[http://www.w3.org/2011/rdfa-context/rdfa-1.1]]]]]] を使っており、 [[XHTML+RDFa 1.1]] は追加の[[初期文脈]]として [DFN[[CODE(URI)@en[[[http://www.w3.org/2011/rdfa-context/xhtml-rdfa-1.1]]]]]] を使っています。 これら [[URL]] は [[RDFa Core 1.1]] と [[XHTML+RDFa 1.1]] でそれぞれ [[URL]] のみ規定されていて、 その内容は随時更新されているようです。 ** 仕様書 [REFS[ - [156] [CITE[RDFa Core Initial Context]] ([TIME[2013-11-28 00:07:18 +09:00]] 版) - [157] [CITE[XHTML+RDFa Initial Context]] ([TIME[2011-12-10 18:34:41 +09:00]] 版) ]REFS] ** 内容 [159] >>156 には [[RDF]] 界隈でよく使われる[[接頭辞]]と[[名前空間URL]]の対応関係が定義されています。 [160] >>156 と >>157 では[RUBYB[語]@en[term]]が定義されています。元々 [CODE(HTMLa)@en[[[rel]]]] [[属性]]として使われていたものが選ばれているようです。 [161] 現時点で >>156 には [CODE(HTML)@en[[[describedby]]]]、 [CODE(HTML)@en[[[license]]]]、 [CODE(HTML)@en[[[role]]]] が、 >>157 には [[HTML4]] の[[リンク型]]と [CODE(HTML)@en[[[meta]]]], [CODE(HTML)@en[[[license]]]], [CODE(HTML)@en[[[icon]]]], [CODE(HTML)@en[[[p3pv1]]]] が含まれています。 ;; [163] なぜか [CODE(HTML)[[[license]]]] は両方に含まれています。 >>156 は [[XHTML Vocabulary]] と [[IANA登録簿]]の両方を参照しており、 >>157 は [[XHTML Vocabulary]] だけを参照しています。 両者が同じものなのかどうか、重複していて問題ないのかどうかは不明です。 [162] どちらも [[W3C]] の文書で定義されているものという一応の基準はあるようですが、 どのような手続きで追加されるのか、どういう基準で振り分けられているのかなどは不明です。 ほとんどの値は出典が [[XHTML Vocabulary]] になっていますが、そこに含まれているすべてが >>156 と >>157 にも含まれているというわけでもありません。 ** GRDDL [164] [[RDFa]] と [[GRDDL]] は直接関係ありませんが、 [CODE(URI)@en[[[http://www.w3.org/2011/rdfa-context/xhtml-rdfa-1.1]]]] を [CODE(HTMLe)@en[[[head]]]] [[要素]]の [CODE(HTMLa)@en[[[profile]]]] [[属性]]に指定することで、[[GRDDL]] 的に [[RDFa]] から [[RDF]] に変換できるようになるとされています。 ;; [[HTMLメタ情報プロファイル]]の項も参照。 [REFS[ - [165] [CITE@en[XHTML+RDFa 1.1 - Second Edition]] ([TIME[2013-08-15 17:11:45 +09:00]] 版) ]REFS]