rdf:XMLLiteral

XML リテラル (RDF)

[5] http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral (rdf:XMLLiteral) は、 RDF における XML 型の値 (XMLリテラル) です。

仕様書

定義

[26] データ型 http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral は次のように定義されています >>24

[27] 字句空間は、 well-balanced で self-contained な XML 1.0内容 (content) で、任意の XML開始タグ終了タグの間に挟むと XML名前空間に適合するようなすべての文字列集合です >>24

[28] 「well-balanced」と「self-contained」は XML でも RDF でも定義されていません。 意図するところは推測できますが、推測しないといけないような仕様書でいいのでしょうか・・・。

[29] 値空間は、 DOM DocumentFragment 節点集合です >>24DocumentFragment が等しいかどうかは isEqualNode メソッドかどうかによります >>24

[30] 字句から値への写像は、相当する DocumentFragment 節点を用意して、 normalize メソッドを適用するというもの >>24 です。

[31] どのように DocumentFragment を作るのかは明記されていません。

[32] 正準写像 (canonical mapping) は、排他的XML正準化 (1.0) を注釈あり、 InclusiveNamespaces PrefixList は空として適用するというもの >>24 です。

[34] 厳密にはこの結果はUnicode文字列ではなく UTF-8 オクテット列になってしまいそうですが・・・。

[6] rdf:XMLLiteral は、XMLリテラル値クラスです >>2rdf:XMLLiteralrdfs:Datatype実現値であり、 rdfs:Literal部分クラスです >>2

[33] XML名前空間言語基底URLは文脈から得られませんから、 XML に含めておく必要があります >>24

RDF/XML 構文

[7] RDF/XML では、要素内容リテラルで、 rdf:parseTypeLiteral なら、XMLリテラルと解釈されます。

[8] 内容リテラルXML情報集合から RDFグラフにおけるXMLリテラルの字句形 (Unicode文字列) へは次のようにして変換します >>3

  1. [9] リテラルから XDM 3.0 XPath (sequence) を構築します。
  2. [10] XPath 3.0 関数 fn:serialize を適用し、 xsd:string 型の値を得ます。
  3. [11] 得られた値が字句形です。

[16] 版では次のように定義されていました >>15

  1. [17] リテラルから XPath 1.0 節点集合 (正準XML 文書部分集合) を構築します。
  2. [18] 排他的XML正準化 (1.0) によりオクテット列を得ます。このとき、注釈あり、InclusiveNamespaces PrefixList は空とします。
  3. [19] このオクテット列UTF-8 文字列と解釈したのが字句形です。

[21] RDF 1.1 の変更点 >>20 によると2004年版からの変更点は参考になったことだけで、技術的内容は変わっていないとされているのですが、 実際には排他的XML正準化fn:serialize直列化の方法が違っています。 後者は属性の順序が決まっていないなど、自由度があり、結果が一意に定まりません。 (>>30 の通り、正準字句形正準化の結果とされていますから、 RDF/XML の段階ではまだこの処理を行わなくても良くなったということなのでしょう。)

[23] ちなみに1999年版仕様 >>22 はデータモデルベースの仕様ではなく XML文書の文字列ベースの仕様だったので、 文字列化の方法は規定されていませんでした。空白の正規化などは将来の課題と言及されていました。

[12] >>11 の値は NFC であるべきです >>3

[13] なぜか仕様 >>3 上は >>12 も手順に含まれていますが、「SHOULD be in NFC」 とあるので、著者の要件だと推測されます。

[14] >>11リテラル値で、リテラルデータ型http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral である型付きリテラルとなります >>3

[38] RDF 1.1 版の規定だと、XML情報集合からイベント列に変換する時点で XMLで始まる名前要素属性が除去されてしまうので、 XMLリテラル内の xml:lang なども消失することになりますが、 本当にそれでいいのでしょうか。

歴史

[1] Defining rdf:XMLLiteral in terms of the DOM ( (Richard Cyganiak 著, 版)) http://lists.w3.org/Archives/Public/public-rdf-wg/2012May/0186.html

[4] RDF 1.1 では XMLLiteral に関する部分が規定から参考に格下げされています >>20。 これは DOM4W3C勧告でないためと説明されています >>24

[25] RDF 1.0 では規定の一部だった XMLLiteral参考に格下げさせた W3C Process や、規定の一部を曲げてまで RDF 1.1W3C勧告に進めたことに一体どれだけの意味や価値があるのでしょう...

[35] しかしこのような非互換変更が平気で行われた上に参考に格下げされるなど、 XMLLiteral の扱いが低いのは、それだけ使われていないということなのでしょうかね。 RDF コミュニティーにおける RDF/XML の地位低下に伴って使いづらくもなっていそうですし、 すべて三項組正規化できるという RDF (Semantic Web) の世界観に反しているのかもしれません。

[36] need CR? :( Re: Denotation of XMLLiterals: poll (Dan Brickley著, ) https://lists.w3.org/Archives/Public/w3c-rdfcore-wg/2003Aug/0086.html

[37] RIF Datatypes and Built-Ins 1.0 (Second Edition) () https://www.w3.org/TR/2013/REC-rif-dtb-20130205/#Functions_and_Predicates_on_rdf:XMLLiterals