CyberLibrarian

【注意】 このドキュメントは、W3CのRDF/XML Syntax Specification (Revised) W3C Recommendation 10 February 2004の和訳です。
このドキュメントの正式版はW3Cのサイト上にある英語版であり、このドキュメントには翻訳に起因する誤りがありえます。誤訳、誤植などのご指摘は、訳者までお願い致します。

First Update: 2005年11月13日


W3C

RDF/XML構文仕様(改訂版)

W3C 勧告 2004年2月10日

本バージョン:
http://www.w3.org/TR/2004/REC-rdf-syntax-grammar-20040210/
最新バージョン:
http://www.w3.org/TR/rdf-syntax-grammar/
旧バージョン:
http://www.w3.org/TR/2003/PR-rdf-syntax-grammar-20031215/
編集者:
Dave Beckett (University of Bristol)
シリーズ編集者:
Brian McBride (Hewlett Packard Labs)

このドキュメントに対する正誤表を参照してください。いくつかの規範的な修正が含まれているかもしれません。

翻訳版も参照してください。


要約

RDF(Resource Description Framework)は、ウェブ上で情報を表現するための汎用言語です。

このドキュメントでは、RDF/XMLと呼ばれるRDF用のXML構文を、XMLの名前空間XML情報セットおよびXMLベースに関して定義しています。RDF概念および抽象構文で定義されているように、構文の形式文法には、RDFグラフのトリプルを生成するアクションに関するアノテーションが付与されています。トリプルは、機械処理が可能な形式でのより正確にマッピングの記録が可能にする形式をシリアル化するN-トリプルRDFグラフを使用して書かれています。このマッピングは、テストケースとして記録、集約され、RDFテストケースで公表されています。

このドキュメントのステータス

このドキュメントは、W3Cメンバーおよび他の利害関係者によりレビューされ、W3C勧告として管理者の協賛を得ました。勧告の作成におけるW3Cの役割は、仕様に注意を引き付け、広範囲な開発を促進することです。これによってウェブの機能性および相互運用性が増強されます。

本ドキュメントは、以前のRDF仕様、RDFモデルおよび構文(1999年勧告)RDFスキーマ(2000年勧告候補)を同時に置き換えることを目的とする一連の6つのドキュメント(入門概念構文セマンティクス語彙、およびテストケース)のうちの1つです。これは、2004年2月10日の公開に向けてW3Cセマンティック・ウェブ・アクティビティアクティビティ声明グループ憲章)の一部としてRDFコア・ワーキンググループによって開発されてきたものです。

勧告案草案以後のこのドキュメントに対する変更の詳細は、変更履歴に記述されています。

一般の方々はコメントをwww-rdf-comments@w3.orgアーカイブ)に送り、www-rdf-interest@w3.orgアーカイブ)における関連技術の一般的な議論に参加してください。

実装のリストが利用可能です。

W3Cは、この事業に関するあらゆる特許の開示のリストを維持します。

この項は、このドキュメントの公開時のステータスについて記述しています。他のドキュメントがこのドキュメントに取って代わることがありえます。現行のW3Cの刊行物および技術報告の最新の改訂版のリストは、http://www.w3.org/TR/のW3C技術報告インデックスにあります。


目次

1 はじめに
2 RDFのXML構文
  2.1 序論
  2.2 ノード要素とプロパティー要素
  2.3 複数のプロパティー要素
  2.4 空白のプロパティー要素
  2.5 プロパティー属性
  2.6 ドキュメントの完成: ドキュメント要素とXML宣言
  2.7 言語: xml:lang
  2.8 XMLリテラル: rdf:parseType="Literal"
  2.9 型付きリテラル: rdf:datatype
  2.10 空白ノードの識別: rdf:nodeID
  2.11 空白ノードの省略: rdf:parseType="Resource"
  2.12 ノードの省略: 空白プロパティー要素のプロパティー属性
  2.13 型付きノード要素
  2.14 URI参照の省略: rdf:IDxml:base
  2.15 コンテナ・メンバーシップ・プロパティー要素: rdf:lirdf:_n
  2.16 コレクション: rdf:parseType="Collection"
  2.17 ステートメントの具体化: rdf:ID
3 用語
4 RDF MIMEタイプ、ファイル拡張子、マッキントッシュ・ファイル・タイプ
5 グローバルな課題
  5.1 RDF名前空間と語彙
  5.2 識別子
  5.3 URIの解決
  5.4 制約
  5.5 適合性
6 構文データ・モデル
  6.1 イベント
  6.2 情報セット・マッピング
  6.3 文法表記法
7 RDF/XML文法
  7.1 文法の要約
  7.2 文法生成規則
  7.3 具体化規則
  7.4 リスト拡張規則
8 RDF/XMLへのRDFグラフのシリアル化
9 HTMLやXHTMLとのRDF/XMLの使用
10 SVGとRDF/XMLとの使用
11 謝辞
12 参考文献

付録

A 構文スキーマ(参考情報)
  A.1 RELAX NGコンパクト・スキーマ(参考情報)
B 2003年10月10日以後の改訂(参考情報)


1 はじめに

このドキュメントでは、元々RDFモデルおよび構文 [RDF-MS] W3C勧告で定義されていたRDFグラフのXML [XML]構文を定義しています。この構文の発表後の実装やその結果生成されたRDFグラフの比較によって、曖昧さの存在が判明しました — 実装により多種多様なグラフや構文形式が作成されたため、あまり広く実装されませんでした。

このドキュメントでは、空白要素の特定の形式のような、少々低レベルであったXMLの細部を変更したXML情報セット [INFOSET]の情報項目(information item)に関して当初のRDF/XML文法を改訂しています。これによって、文法をより正確に記録でき、XML構文からRDFグラフへのマッピングをより明確に示すことができます。RDFグラフへのマッピングは、RDFセマンティクス [RDF-SEMANTICS]で定義されているセマンティクスを持つRDFグラフを作成するRDFテストケース [RDF-TESTS]N-トリプル部分で定義されている形式でステートメントを作成することで行えます。

RDFの完全な仕様は、以下の多くのドキュメントで構成されています。

過去の概観を含むRDF/XML構文のより詳細な概論に関しては、RDF: ストライプRDF/XML構文の理解 [STRIPEDRDF]を参照してください。

2 RDFのXML構文

この項では、RDF/XML構文を紹介し、RDF/XML構文によるRDFグラフのコード化方法を記述し、例を使用してこれを解説しています。この非形式的な記述と、6 構文データ・モデルや7 RDF/XML文法の項の構文や文法の形式的な記述との間に矛盾がある場合は、後者の2つの項が優先します。

2.1 序論

RDF概念および抽象構文 [RDF-CONCEPTS]では、RDFグラフ・データ・モデル(3.1項)とRDFグラフ抽象構文(6項)を定義しています。これは、RDFセマンティクス [RDF-SEMANTICS]とともに、抽象構文に必要な形式意味論を提供します。RDFグラフは、ノードと、対になったノードをリンクするラベル付きの有向のアークを持っており、各トリプルは主語ノード述語目的語ノードを含んでいる1組のRDFトリプルとして表現されます。ノードは、RDF URI参照RDFリテラルであるか、空白ノードです。空白ノードには、空白ノード識別子と呼ばれる、ドキュメント内のみで有効な、RDF URI参照ではない識別子を付与できます。述語は、RDF URI参照であり、2つのノード間の関係、あるいは、ある主語ノードに対する属性値(目的語ノード)の定義のどちらかとして解釈できます。

XMLでグラフをコード化するためには、ノードと述語はXML用語 — 要素名、属性名、要素コンテンツ、属性値で表されなければなりません。RDF/XMLでは、XMLの名前空間[XML-NS]で定義されているとおりにRDF URI参照を表すためにXMLQNameを用います。すべてのQNameは、URI参照や短いローカル名名前空間名を持っています。さらに、QNameは、短い接頭辞を持っているか、デフォルトの名前空間宣言で宣言して何も持たないかのどちらかです(しかし、依然として名前空間名を持っている)。

QNameによって表現されたRDF URI参照は、QNameの名前空間名(URI参照)部分の後に、QNameのローカル名部分を追加することによって定まります。これは、すべての述語と一部のノードのRDF URI参照を短縮化するために使用されます。主語ノードと目的語ノードを識別するRDF URI参照は、XML属性値としても格納できます。RDFリテラル(目的語ノードでしかありえない)は、XML要素テキスト・コンテンツかXML属性値かのどちらかになります。

グラフは、全体のグラフをカバーする、ノード、述語アーク、ノード、述語アーク、ノード、述語アーク…ノードという形式のパスの集合であると考えることができます。RDF/XMLでは、これらは、ノードと述語アークの要素を交互に繰り返した要素内の要素順になります。これは、一連のノード/アークのストライプと呼ばれます。このシーケンスの最初のノードは最外部の要素になり、次の述語アークは子要素などになります。このストライプは通常、RDF/XMLドキュメントの最上部で始まり、常にノードで始まります。

以下の項では、完全なRDF/XMLドキュメントになるまで、いくつかのRDF/XMLの例を追加提供していきます。例7が、最初の完全なRDF/XMLドキュメントです。

2.2 ノード要素とプロパティー要素

RDF/XMLのグラフの例
図1: RDF/XMLのグラフの例 (SVGバージョン)

RDFグラフを図1で示しています。このRDFグラフでは、ノードを楕円形で表してそれを持つRDF URI参照を含み、すべての述語アークをRDF URI参照でラベル付けし、プレーン・リテラルのノードを長方形で書いてあります。

1つのノード、述語アーク ... と辿って行けば、グラフのノード・パスは図2のようになります。

図2: グラフの1つのパス
図2: グラフの1つのパスSVGバージョン

図2のグラフの左側は、以下のノード/述語アークのストライプに対応しています。

  1. RDF URI参照 http://www.w3.org/TR/rdf-syntax-grammarを持つノード
  2. RDF URI参照 http://example.org/terms/editorでラベル付けされた述語Arc
  3. RDF URI参照を持たないノード
  4. RDF URI参照 http://example.org/terms/homePageでラベル付けされた述語Arc
  5. RDF URI参照 http://purl.org/net/dajobe/を持つノード

RDF/XMLでは、図2の左側の5つのノードと述語アークのシーケンスは、グラフのノードと述語アークに対する、2種類の5つのXML要素の使用に対応しています。これらは、慣習的にそれぞれノード要素プロパティー要素と呼ばれます。例1のストライピングでは、rdf:Descriptionはノード要素(3つのノードで3回使用)で、ex:editorex:homePageは2つのプロパティー要素です。

例1: ストライプ状のRDF/XML(ノード述語アーク
<rdf:Description>
  <ex:editor>
    <rdf:Description>
      <ex:homePage>
        <rdf:Description>
        </rdf:Description>
      </ex:homePage>
    </rdf:Description>
  </ex:editor>
</rdf:Description>

図2のグラフは、RDF URI参照であるいくつかのノード(および、その他のRDF URI参照ではないもの)で構成され、ノード要素にrdf:about属性を使用してRDF/XMLにこれを追加すると例2になります。

例2: RDF URI参照を追加したノード要素
<rdf:Description rdf:about="http://www.w3.org/TR/rdf-syntax-grammar">
  <ex:editor>
    <rdf:Description>
      <ex:homePage>
        <rdf:Description rdf:about="http://purl.org/net/dajobe/">
        </rdf:Description>
      </ex:homePage>
    </rdf:Description>
  </ex:editor>
</rdf:Description>

図1のグラフで例2のRDF/XMLに他の2つのパスを加えると例3になります(この例では、空白ノードが2つのパスの間で共有されていることが示されていません。2.10を参照。)

例3: すべてのグラフ・パスの完全な記述
<rdf:Description rdf:about="http://www.w3.org/TR/rdf-syntax-grammar">
  <ex:editor>
    <rdf:Description>
      <ex:homePage>
        <rdf:Description rdf:about="http://purl.org/net/dajobe/">
        </rdf:Description>
      </ex:homePage>
    </rdf:Description>
  </ex:editor>
</rdf:Description>

<rdf:Description rdf:about="http://www.w3.org/TR/rdf-syntax-grammar">
  <ex:editor>
    <rdf:Description>
      <ex:fullName>Dave Beckett</ex:fullName>
    </rdf:Description>
  </ex:editor>
</rdf:Description>

<rdf:Description rdf:about="http://www.w3.org/TR/rdf-syntax-grammar">
  <dc:title>RDF/XML Syntax Specification (Revised)</dc:title>
</rdf:Description>

2.3 複数のプロパティー要素

共通する部分をより簡単に記述するために使用できる省略形がいくつかあります。特に、RDFグラフの主語ノードは、一般的に複数の外向きの述語アークを持っています。資源に関するノード要素が複数のプロパティー要素を持つ場合には、RDF/XMLでは対応する構文に省略形を提供します。これは、主語ノードを記述しているノード要素内で複数の子プロパティー要素を使用して省略形にできます。

例3を例に挙げると、複数のプロパティー要素をとることができる2つのノード要素があります。URI参照http://www.w3.org/TR/rdf-syntax-grammarを持つ主語ノードはプロパティー要素ex:editorex:titleを持ち、空白ノードのノード要素はex:homePageex:fullNameをとることができます。この省略形によって、例4で示している結果になります(この例は、1つの空白ノードがあることを示しています)。

例4: ノード要素で複数のプロパティー要素を使用
<rdf:Description rdf:about="http://www.w3.org/TR/rdf-syntax-grammar">
  <ex:editor>
    <rdf:Description>
      <ex:homePage>
        <rdf:Description rdf:about="http://purl.org/net/dajobe/">
        </rdf:Description>
      </ex:homePage>
      <ex:fullName>Dave Beckett</ex:fullName>
    </rdf:Description>
  </ex:editor>
  <dc:title>RDF/XML Syntax Specification (Revised)</dc:title>
</rdf:Description>

2.4 空白のプロパティー要素

RDFグラフの述語アークが、それ以上の述語アークがない目的語ノードを指し、RDF/XMLで空白ノード要素<rdf:Description rdf:about="..."> </rdf:Description>(または、<rdf:Description rdf:about="..." />) として表示される場合、この形式は短縮化できます。これは、包含しているプロパティー要素において、目的語ノードのRDF URI参照をXML属性rdf:resourceの値として使用し、プロパティー要素を空にすることで行えます。

この例では、プロパティー要素ex:homePageには、RDF URI参照 http://purl.org/net/dajobe/を持つ空白ノード要素が含まれています。これは、例5で示しているような空白プロパティー要素の形式に置き換えることができます。

例5: 空白プロパティー要素
<rdf:Description rdf:about="http://www.w3.org/TR/rdf-syntax-grammar">
  <ex:editor>
    <rdf:Description>
      <ex:homePage rdf:resource="http://purl.org/net/dajobe/"/>
      <ex:fullName>Dave Beckett</ex:fullName>
    </rdf:Description>
  </ex:editor>
  <dc:title>RDF/XML Syntax Specification (Revised)</dc:title>
</rdf:Description>

2.5 プロパティー属性

プロパティー要素のコンテンツが文字列リテラルである場合には、これを包含しているノード要素のXML属性として使用できるかもしれません。これは、プロパティーの要素名が繰り返されず(XMLで要求される — XML要素には属性名は1つのみ)、プロパティー要素の文字列リテラル(もしあれば)のスコープ内のxml:langが同じである場合にのみ、同じノード要素の複数のプロパティーに対して可能となります(2.7項を参照)。この省略形は、プロパティー属性として知られており、あらゆるノード要素に適用できます。

この省略形は、プロパティー要素がrdf:typeであり、その値がRDF URI参照の目的語ノードとして解釈されるrdf:resource属性を持っている場合にも使用できます。

例5には、文字列リテラル・コンテンツを持つ、dc:titleex:fullNameプロパティー要素という2つのプロパティー要素があります。これらは、例6で示している結果になるプロパティー属性に置き換えることができます。

例6: 文字列リテラル・コンテンツを持つプロパティー要素のプロパティー属性への置き換え
<rdf:Description rdf:about="http://www.w3.org/TR/rdf-syntax-grammar"
                 dc:title="RDF/XML Syntax Specification (Revised)">
  <ex:editor>
    <rdf:Description ex:fullName="Dave Beckett">
      <ex:homePage rdf:resource="http://purl.org/net/dajobe/"/>
    </rdf:Description>
  </ex:editor>
</rdf:Description>

2.6 ドキュメントの完成: ドキュメント要素とXML宣言

完全なRDF/XMLドキュメントを作成するためには、最上位のXMLドキュメント要素としてrdf:RDFのXML要素内には、通常はXMLへのグラフのシリアル化が含まれています。慣習上、rdf:RDF要素は、使用しているXML名前空間を宣言するためにも使用されますが、これは必須ではありません。rdf:RDF内に最上位のノード要素が1つしかないときにであっても、XML名前空間は宣言しなければなりませんが、このrdf:RDFは省略できます。

XMLの仕様では、ドキュメントの先頭に、XMLバージョンと恐らくXMLコンテンツのコード化を含むXML宣言も許されています。これはオプションですが、推薦されます。

RDF/XMLの完成は、例4以後の正しい完全なグラフの例のいずれに対しても可能ですが、最も小さな例6の場合、最終的な構成要素を加えれば例7の最初の図1のグラフの完全なRDF/XML表現になります。

例7: 図1グラフの完全なRDF/XML記述example07.rdfからexample07.ntを出力)
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:dc="http://purl.org/dc/elements/1.1/"
         xmlns:ex="http://example.org/stuff/1.0/">
  <rdf:Description rdf:about="http://www.w3.org/TR/rdf-syntax-grammar"
		   dc:title="RDF/XML Syntax Specification (Revised)">
    <ex:editor>
      <rdf:Description ex:fullName="Dave Beckett">
	<ex:homePage rdf:resource="http://purl.org/net/dajobe/" />
      </rdf:Description>
    </ex:editor>
  </rdf:Description>
</rdf:RDF>

rdf:RDF内にはrdf:Descriptionが1つのみ存在するため、上記例7rdf:RDFを省略できますが、これはここでは示していません。

2.7 言語: xml:lang

RDF/XMLでは、コンテンツの言語の識別が可能になるように、XML 1.0 [XML]2.12 言語識別で定義されているようなxml:lang属性の使用が許されています。xml:lang属性は、あらゆるノード要素やプロパティー要素で使用でき、含まれているコンテンツがその言語であることを示せます。XMLリテラルを含んでいる型付きリテラルは、この属性に影響されません。この現在最も特定的なスコープ内の言語(もしあれば)は、文字列リテラル・コンテンツやプロパティー属性値に適用されます。xml:lang=""の形式は、言語識別子の欠如を示します。

RDFプロパティーのコンテンツの言語をマークアップするいくつかの例を例8で示しています。

例8: xml:langの完全な例example08.rdfからexample08.ntを出力)
<?xml version="1.0" encoding="utf-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:dc="http://purl.org/dc/elements/1.1/">
  <rdf:Description rdf:about="http://www.w3.org/TR/rdf-syntax-grammar">
    <dc:title>RDF/XML Syntax Specification (Revised)</dc:title>
    <dc:title xml:lang="en">RDF/XML Syntax Specification (Revised)</dc:title>
    <dc:title xml:lang="en-US">RDF/XML Syntax Specification (Revised)</dc:title>
  </rdf:Description>

  <rdf:Description rdf:about="http://example.org/buecher/baum" xml:lang="de">
    <dc:title>Der Baum</dc:title>
    <dc:description>Das Buch ist ausergewohnlich</dc:description>
    <dc:title xml:lang="en">The Tree</dc:title>
  </rdf:Description>
</rdf:RDF>

2.8 XMLリテラル: rdf:parseType="Literal"

RDFでは、XMLリテラル[RDF-CONCEPTS]の5項、RDFグラフ内のXMLコンテンツ)を述語の目的語ノードとして付与できます。これは、プロパティー要素(プロパティー属性ではなく)のコンテンツとしてRDF/XMLで記述され、包含するプロパティー要素においてrdf:parseType="Literal"属性を使用して示されます。

XMLリテラルの記述例を例9で示しており、ここには、主語ノードRDF URI参照 http://example.org/item01、述語RDF URI参照 http://example.org/stuff/1.0/propex:propの)、a:Boxで始まるXMLリテラル・コンテンツを持つ目的語ノードを持つ1つのRDFがあります。

例9: rdf:parseType="Literal"の完全な例example09.rdfからexample09.ntを出力)
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:ex="http://example.org/stuff/1.0/">
  <rdf:Description rdf:about="http://example.org/item01">
    <ex:prop rdf:parseType="Literal"
             xmlns:a="http://example.org/a#"><a:Box required="true">
         <a:widget size="10" />
         <a:grommit id="23" /></a:Box>
    </ex:prop>
  </rdf:Description>
</rdf:RDF>

2.9 型付きリテラル: rdf:datatype

RDFでは、型付きリテラルを述語の目的語ノードとして付与できます。型付きリテラルは、リテラルの文字列とデータ型RDF URI参照で構成されています。これは、プロパティー要素形式(プロパティー属性ではない)のリテラルの文字列ノードに対するものと同じ構文を使用してRDF/XMLで書かれていますが、プロパティー要素にrdf:datatype="datatypeURI"属性が追加使用されています。属性ではあらゆるRDF URI参照が使用できます。

RDFの型付きリテラルの例を例10で示しており、ここには、主語ノードRDF URI参照 http://example.org/item01、述語RDF URI参照 http://example.org/stuff/1.0/sizeex:sizeの)、W3C XMLスキーマ [XML-SCHEMA2]データ型intとして解釈される型付きリテラル(「123」、http://www.w3.org/2001/XMLSchema#int)を持つ目的語ノードを持つ1つのRDFトリプルがあります。

例10: rdf:datatypeの完全な例example10.rdfからexample10.ntを出力)
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:ex="http://example.org/stuff/1.0/">
  <rdf:Description rdf:about="http://example.org/item01">
    <ex:size rdf:datatype="http://www.w3.org/2001/XMLSchema#int">123</ex:size>
  </rdf:Description>
</rdf:RDF>

2.10 空白ノードの識別: rdf:nodeID

RDFグラフの空白ノードは多様ですが、RDF URI参照識別子を持っていません。同じグラフの空白ノードを、いくつかのRDFトリプルの主語や述語などのような複数の場所のRDF/XMLで参照する必要があることもあります。この場合、それをドキュメントで識別するために、空白ノード空白ノード識別子を付与できます。RDF/XMLの空白ノード識別子は、包含するXML情報セットの文書情報項目で詳述されています。空白ノード識別子は、ノード要素ではrdf:about="RDF URI参照"を、プロパティー要素ではrdf:resource="RDF URI reference"を、どちらの場合もrdf:nodeID="blank node identifier"と置き換えるために使用されます。

例7を例にとり、abc空白ノード識別子をその空白ノードに明示的に付与すると、例11で示す結果が得られます。2番目のrdf:Descriptionプロパティー要素が空白ノードに関するものです。

例11: 空白ノードを識別するrdf:nodeIDを使用したグラフの完全なRDF/XML記述example11.rdfからexample11.ntを出力)
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:dc="http://purl.org/dc/elements/1.1/"
         xmlns:ex="http://example.org/stuff/1.0/">
  <rdf:Description rdf:about="http://www.w3.org/TR/rdf-syntax-grammar"
		   dc:title="RDF/XML Syntax Specification (Revised)">    <ex:editor rdf:nodeID="abc"/>  </rdf:Description>

  <rdf:Description rdf:nodeID="abc"
                   ex:fullName="Dave Beckett">
    <ex:homePage rdf:resource="http://purl.org/net/dajobe/"/>
  </rdf:Description>
</rdf:RDF>

2.11 空白ノードの省略: rdf:parseType="Resource"

RDFグラフの空白ノードRDF URI参照ノードではない)は、<rdf:Description> </rdf:Description>の対を省略した形式で記述できます。この省略は、プロパティー要素をプロパティーとノードの要素(property-and-node element)に変えるrdf:parseType="Resource"属性を、包含しているプロパティー要素に置くことで行われ、それ自身はプロパティー要素とプロパティー属性の両方を持つことができます。プロパティー属性とrdf:nodeID属性は、プロパティーとノードの要素(property-and-node)では許されていません。

以前の例7を例にとると、ex:editorプロパティー要素のコンテンツはこのような方法でも行うことができ、例12で示している形式になります。

Example 12: 例12: rdf:parseType="Resource"を使用した完全な例example12.rdfからexample12.ntを出力)
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:dc="http://purl.org/dc/elements/1.1/"
         xmlns:ex="http://example.org/stuff/1.0/">
  <rdf:Description rdf:about="http://www.w3.org/TR/rdf-syntax-grammar"
		   dc:title="RDF/XML Syntax Specification (Revised)">
    <ex:editor rdf:parseType="Resource">      <ex:fullName>Dave Beckett</ex:fullName>
      <ex:homePage rdf:resource="http://purl.org/net/dajobe/"/>
    </ex:editor>
  </rdf:Description>
</rdf:RDF>

2.12 ノードの省略: 空白プロパティー要素のプロパティー属性

空白ノード要素のすべてのプロパティー要素が、同じスコープ内のxml:lang値(存在していれば)を持つ文字列リテラル値を持っており、これらのプロパティー要素のそれぞれが高々1度現れ、RDF URI参照目的語ノードを持つrdf:typeプロパティー要素が高々1つ存在する場合、これらは、これらを移動し、空白要素になった包含するプロパティー要素のプロパティー属性にすることで省略形にできます。

以前の例5を例にとると、ex:editorプロパティー要素には、2つのプロパティー要素ex:fullnameex:homePageを持つ空白ノード要素が含まれています。ex:homePageは、文字列リテラル値を持っていないため、ここでは適合せず、そのため、この例の目的により無視しています。省略形は、ex:fullNameプロパティー要素を削除し、この削除したプロパティー要素の文字列リテラル値を持つ新しいプロパティー属性ex:fullNameex:editorプロパティー要素に追加します。空白ノード要素は、現在空白のex:editorプロパティー要素で暗黙的になります。この結果は、例13で示しています。

例13: 空白プロパティー要素のプロパティー属性の完全な例example13.rdfからexample13.ntを出力)
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:dc="http://purl.org/dc/elements/1.1/"
         xmlns:ex="http://example.org/stuff/1.0/">
  <rdf:Description rdf:about="http://www.w3.org/TR/rdf-syntax-grammar"
		   dc:title="RDF/XML Syntax Specification (Revised)">
    <ex:editor ex:fullName="Dave Beckett" />
    <!-- Note the ex:homePage property has been ignored for this example -->
  </rdf:Description>
</rdf:RDF>

2.13 型付きノード要素

RDFグラフが主語ノードに属するrdf:type述語を持っていることは普通です。これは慣習的に、グラフでは型付きノードと呼び、RDF/XMLでは型付きノード要素と呼びます。RDF/XMLでは、rdf:Descriptionノード要素を、タイプ関係の値のRDF URI参照に対応する名前空間要素(namespaced-element)に置き換えることによって、このトリプルをより簡潔に表現できます。もちろん、複数のrdf:type述語が存在しえますが、この方法では1つしか使用できず、他はプロパティー要素かプロパティー属性のままでなければなりません。

型付きノード要素は、RDF語彙の組み込みクラスを持つRDF/XMLで一般に使用されます:rdf:Seqrdf:Bagrdf:Altrdf:Statementrdf:Propertyrdf:List

例えば、例14のRDF/XMLは例15のように記述できます。

例14: rdf:typeを持つ完全な例example14.rdfからexample14.ntを出力)
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:dc="http://purl.org/dc/elements/1.1/"
         xmlns:ex="http://example.org/stuff/1.0/">
  <rdf:Description rdf:about="http://example.org/thing">
    <rdf:type rdf:resource="http://example.org/stuff/1.0/Document"/>
    <dc:title>A marvelous thing</dc:title>
  </rdf:Description>
</rdf:RDF>

例15: rdf:typeを置き換えるために型付きノード要素を使用した完全な例example15.rdfからexample15.ntを出力)
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:dc="http://purl.org/dc/elements/1.1/"
         xmlns:ex="http://example.org/stuff/1.0/">
  <ex:Document rdf:about="http://example.org/thing">
    <dc:title>A marvelous thing</dc:title>
  </ex:Document>
</rdf:RDF>

2.14 URIの省略: rdf:IDxml:base

RDF/XMLでは、さらに2つの方法でXML属性のRDF URI参照を省略化できます。XML Infosetは、相対RDF URI参照を解決するために基底URIを定めた基底URI属性xml:baseを提供しますが、そうでない場合には基底URIはドキュメントのものです。基底URIは、rdf:aboutrdf:resourcerdf:IDrdf:datatypeといったRDF URI参照を処理するすべてのRDF/XML属性に適用されます。

ノード要素(プロパティー要素ではなく)のrdf:ID属性は、rdf:aboutの代わりに使用でき、rdf:ID属性値と連結した#と同等の相対RDF URI参照を提供します。今までの例では、rdf:ID="name"であれば、rdf:about="#name"と同等です。xml:base値(または、提供されない場合には、ドキュメント)のスコープ内では同じ名前は1度しか出現できないため、rdf:IDは付加的なチェックを提供し、同じRDF URI参照と相対関係にある、別個で、関連する用語の集合を定義するためにも役に立ちます。

両方の形式では、スコープ内のxml:baseかRDF/XMLドキュメントのURIのどちらかの基底URIが分かっている必要があります。

例16では、http://example.org/here/xml:baserdf:Descriptionノード要素のrdf:IDを使用したhttp://example.org/here/#snackのノードRDF URI参照の省略を示しています。ex:prop述語の目的語ノードは、RDF URI参照http://example.org/here/fruit/appleになるようにスコープ内の基底URIを使用してrdf:resourceのXML属性値を解決した絶対RDF URI参照です。

例16: URIを短縮するためにrdf:IDxml:baseを使用した完全な例example16.rdfからexample16.ntを出力)
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:ex="http://example.org/stuff/1.0/"
         xml:base="http://example.org/here/">
  <rdf:Description rdf:ID="snack">
    <ex:prop rdf:resource="fruit/apple"/>
  </rdf:Description>
</rdf:RDF>

2.15 コンテナ・メンバーシップ・プロパティー要素: rdf:lirdf:_n

RDFには、型付きノード要素として記述できるrdf:Seqクラス、rdf:Bagクラス、rdf:Altクラスのインスタンスと一緒に通常用いられる、コンテナ・メンバーシップ・プロパティーと対応するプロパティー要素とのまとまりがあります。リスト・プロパティーは、rdf:_1rdf:_2などで、例17で示しているプロパティー要素やプロパティー属性として記述できます。rdf:_1rdf:_2の順序のものと同等なrdf:liという特別なプロパティー要素があり、7.4項で詳細を説明しています。コンテナ・メンバーシップ・プロパティーへのマッピングは、常にrdf:liという特別なプロパティー要素がXMLに出現する順序で行われます — ドキュメントの順序は重要です。この方法で記述した、例17と同等なRDF/XMLを例18で示しています。

例17: RDFリスト・プロパティーを使用した複雑な例example17.rdfからexample17.ntを出力)
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <rdf:Seq rdf:about="http://example.org/favourite-fruit">
    <rdf:_1 rdf:resource="http://example.org/banana"/>
    <rdf:_2 rdf:resource="http://example.org/apple"/>
    <rdf:_3 rdf:resource="http://example.org/pear"/>
  </rdf:Seq>
</rdf:RDF>
例18: リスト・プロパティーに対してrdf:liプロパティー要素を使用した完全な例example18.rdfからexample18.ntを出力)
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <rdf:Seq rdf:about="http://example.org/favourite-fruit">
    <rdf:li rdf:resource="http://example.org/banana"/>
    <rdf:li rdf:resource="http://example.org/apple"/>
    <rdf:li rdf:resource="http://example.org/pear"/>
  </rdf:Seq>
</rdf:RDF>

2.16 コレクション: rdf:parseType="Collection"

RDF/XMLでは、プロパティー要素でにおいてrdf:parseType="Collection"属性を使用して複数のノード要素を含むことができます。これらの含まれたノード要素は、コレクションの主語ノードの集合を示します。この構文形式は、主語ノードのコレクションをつなげた1組のトリプルに対応しており、生成された厳密なトリプルに関しては、7.2.19項 生成規則parseTypeCollectionPropertyEltで詳細に説明しています。コレクションは常に、ノード要素がXMLドキュメントで出現する順序で構築されます。ノードのコレクションの順序が重要かどうかは、アプリケーションの問題であるため、ここでは定義していません。

例19では、この形式を使用して、ex:hasFruitプロパティー要素の終わりに3つのノード要素のコレクションを示しています。

例19: rdf:parseType="Collection"を使用したノードのRDFコレクションの完全な例example19.rdfからexample19.ntを出力)
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:ex="http://example.org/stuff/1.0/">
  <rdf:Description rdf:about="http://example.org/basket">
    <ex:hasFruit rdf:parseType="Collection">
      <rdf:Description rdf:about="http://example.org/banana"/>
      <rdf:Description rdf:about="http://example.org/apple"/>
      <rdf:Description rdf:about="http://example.org/pear"/>
    </ex:hasFruit>
  </rdf:Description>
</rdf:RDF>

2.17 ステートメントの具体化: rdf:ID

rdf:ID属性をプロパティー要素で使用してそれが生成するトリプルを具体化できます(完全な詳細に関しては、7.3項 具体化規則を参照)。トリプルの識別子は、rdf:ID属性値に連結された相対URI参照#から作成されたRDF URI参照として構築されるべきで、スコープ内の基底URIに対して解決されます。そのため、例えば、rdf:ID="triple"である場合、基底URIに対する相対URI参照#tripleから作成されたRDF URI参照と同等です。それぞれの(rdf:ID属性値、基底URI)の対は、RDF/XMLドキュメントで1つでなければなりません。constraint-idを参照してください。

例20では、rdf:IDが、具体化されたトリプルにRDF URI参照 http://example.org/triples/#triple1を提供するex:propプロパティー要素から作成されたトリプルを具体化するために使用されていることを示しています。

例20: プロパティー要素を具体化するrdf:IDの完全な例example20.rdfからexample20.ntを出力)
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:ex="http://example.org/stuff/1.0/"
         xml:base="http://example.org/triples/">
  <rdf:Description rdf:about="http://example.org/">
    <ex:prop rdf:ID="triple1">blah</ex:prop>
  </rdf:Description>
</rdf:RDF>

3 用語

このドキュメントの「しなければならない(MUST)」「してはならない(MUST NOT)」「必須である/要求される(REQUIRED)」「することになる(SHALL)」「することはない(SHALL NOT)」「すべきである/する必要がある(SHOULD)」「すべきでない/する必要がない(SHOULD NOT)」「推奨される(RECOMMENDED)」「することができる/してもよい(MAY)」「選択できる/任意である(OPTIONAL)」というキーワードは、RFC 2119 [KEYWORDS]で記述されているように解釈されるべきです。

修飾がない文字列の使用はすべてUnicode[UNICODE]の文字列、つまり、Unicodeの区点位置で表される文字列を示します。(3.4 文字列の項の[CHARMOD]で定義されているように)。

4 RDF MIMEタイプ、ファイル拡張子、マッキントッシュ・ファイル・タイプ

RDF/XMLのインターネット・メディア・タイプ/MIMEタイプは、「application/rdf+xml」です — RFC 3023 [RFC-3023] 8.18項を参照。

登録注意(参考情報): MIMEタイプの登録状況に関しては、IANA MIMEメディア・タイプ [IANA-MEDIA-TYPES]を参照してください。

RDF/XMLファイルは、すべてのプラットホーム上で拡張子「.rdf」(すべて小文字)であることが推奨されます。

マッキントッシュHFSファイル・システム上に保存されたRDF/XMLファイルには、ファイル・タイプ「rdf 」(すべて小文字、4文字目に空白文字)が付与されていることが推奨されます。

5 グローバルな問題

5.1 RDF名前空間と語彙

注意(参考情報): aboutEachaboutEachPrefixの名前は、RDFコア・ワーキンググループによって言語とRDF語彙から削除されました。詳細に関しては、rdfms-abouteachrdfms-abouteachprefixの問題の解決を参照してください。

注意(参考情報): 名前Listfirstrestnilは、rdfms-seq-representationの問題に加えられました。名前XMLLiteraldatatypeは、RDFデータ・タイピングをサポートするために加えられました。名前nodeIDは、問題rdfms-syntax-incompleteのために加えられました。詳細に関しては、RDFコア課題リストを参照してください。

RDF名前空間URI参照(または、名前空間名)は、http://www.w3.org/1999/02/22-rdf-syntax-ns#であり、他の接頭辞文字列が使用されることもありますが、通常は接頭辞rdfを持つXMLで使用されます。RDF語彙は、この名前空間名によって識別され、以下の名前のみで構成されています。

構文名 — 概念ではない

RDF Description ID about parseType resource li nodeID datatype

クラス名

Seq Bag Alt Statement Property XMLLiteral List

プロパティー名

subject predicate object type value first rest _n
nが先行する0を持たない0以上の10進の整数である場合。

資源名

nil

これら以外の名前は定義されておらず、問題に遭遇した場合には警告を発するべきです(SHOULD)が、それ以外の場合には、通常に動作すべきです。

RDF/XMLドキュメント内では、その名前空間名を追加文字に連結したRDF名前空間URI参照であるXML名前空間の使用が許されています。

このドキュメント内では、用語rdf:名前は、名前がRDF語彙に由来し、名前RDF名前空間URI参照と連結したRDF URI参照を持っているということを示すために使用されます。例えば、rdf:typeは、RDF URI参照 http://www.w3.org/1999/02/22-rdf-syntax-ns#typeを持っています。

5.2 識別子

RDFグラフRDF概念および抽象構文の3項)は、以下の3種類のノードと1種類の述語を定義しています。

RDF URI参照ノードと述語

RDF URI参照RDF概念および抽象構文の3.1項)は、以下のいずれかでありえます。

RDF/XML内では、XML QNameは、XMLローカル名を名前空間名(URI参照)に追加することによって、RDF URI参照に変換されます。例えば、XML名前空間接頭辞fooが、名前空間名(URI参照)http://example.org/somewhere/を持っている場合、QName foo:barがRDF URI参照http://example.org/somewhere/barに対応しています。これは、どのRDF URI参照を作成できるかということや、同じURIを様々な方法で付与できるということは制限されることに注意してください。

rdf:ID値は、5.3項 URIの解決で定義されているスコープ内の基底URIに「#」を追加したものに属性値を追加することによって、RDF URI参照に変換されます。

リテラル・ノード(常に目的語ノード)

RDFリテラルRDF概念および抽象構文の6.5)は、プレーン・リテラル(ibid)か型付きリテラル(ibid)のどちらかです。後者には、XMLリテラル(ibidの5項、RDFグラフ内のXMLコンテンツ)が含まれます。

空白ノード識別子

空白ノードは、RDFグラフにおいて固有のアイデンティティーを持ってます。グラフがRDF/XMLなどの構文で記述されているときには、この空白ノードには、この特徴を保持するためにグラフ・ローカルな(graph-local)識別子と構文が必要です。このローカルな識別子は、空白ノード識別子と呼ばれ、生成規則nodeIdAttrで提供されている構文とともにrdf:nodeID属性の値としてRDF/XMLで使用されます。RDF/XMLの空白ノード識別子は、XML情報セット文書情報項目で詳述されています。

空白ノード識別子がrdf:nodeID属性値として明示的に付与されていない場合は、作成する必要があります(作成した空白ノードID(generated-blank-node-id)の使用に関しては、6.3.3項を参照してください)。このような空白ノード識別子は、rdf:nodeID属性値から作成されたいかなる空白ノード識別子とも衝突してはなりません。これは、グラフのすべての空白ノードの固有のアイデンティティーを保持するという方法で行えます、すなわち、同じ空白ノード識別子を異なる空白ノードに付与しません。可能な方法の1つは、不変な接頭辞をすべてのrdf:nodeID属性値に加えて、作成済みの空白ノード識別子がその接頭辞を確実に使用していないようにすることです。もう1つの方法は、すべてのrdf:nodeID属性値を新しく作成した空白ノード識別子にマッピングし、このようなすべての値においてRDF/XMLドキュメントでそのマッピングを実行することです。

5.3 URIの解決

RDF/XMLは、root eventelement eventのそれぞれに対してbase-uriアクセサを定義するXMLベース[XML-BASE]をサポートしています。相対URI参照は、XMLベース[XML-BASE](およびRFC 2396)で指定されているアルゴリズムに従ってRDF URI参照に変換されます。これらの仕様では、RDF URI参照への#fooや空の文字列""のような、フラグメント識別子のみを解決するためのアルゴリズムを定めていません。RDF/XMLでは、フラグメント識別子は、フラグメント識別子をスコープ内の基底URIに追加することによって、RDF URI参照に変換されます。空の文字列は、スコープ内の基底URIを置き換えることによって、RDF URI参照に変換されます。

テスト: test001.rdftest001.ntで示されています。

テスト: test004.rdftest004.ntで示されています。

テスト: test008.rdftest008.ntで示されています。

テスト: test013.rdftest013.ntで示されています。

テスト: test016.rdftest016.ntで示されています。

空の同じドキュメントの参照、""は、基底URIのURI部分に対して解決し、フラグメント部分は無視されます。URI(Uniform Resource Identifier)[URIS]の4.2項を参照してください。

テスト: test013.rdftest013.ntで示されています。

実装注意(参考情報): パス要素(/)がない階層的な基底URIを使用する際には、解決のために基底URIを使用する前にこれを追加しなければなりません。

テスト: test011.rdftest011.ntで示されています。

5.4 制約

constraint-id

生成規則idAttrの各アプリケーションは、属性と一致します。一致した属性のstring-valueアクセサと、一致した属性のbase-uriアクセサによって形成される対は、1つのRDF/XMLドキュメント内に1つしか存在しません。

この名前の構文は、rdf-id生成規則と一致しなければなりません。

テスト: test014.rdftest014.ntで示されています。

5.5 適合性

定義:
RDFドキュメントは、具象構文へのRDFグラフのシリアル化です。
定義:
RDF/XMLドキュメントは、このドキュメントで定義されているとおりに、推奨されるRDFに対するXML転送構文で記述されているRDFドキュメントです。
適合性:
このドキュメントで定義されている仕様に従わない場合は、RDF/XMLドキュメント適合したRDF/XMLドキュメントです。

6 構文データ・モデル

このドキュメントでは、RDF/XMLの構文を記号のアルファベットに基く文法であると明記しています。記号は、[XPATH]情報セット・マッピングの形式ではイベントと呼ばれています。イベントのシーケンスは通常、XMLドキュメントから得られ、その場合、以下の6.2項 情報セット・マッピングで定義しているように、イベントはドキュメント順です。これらのイベントが形成するシーケンスは、同じXMLドキュメントの[SAX2] XML APIによって作成されるイベントのシーケンスと同じようなものにすることを意図しています。イベントの順序を文法と照合すれば、構文的に整形式のRDF/XMLかどうかを判断できます。

文法の生成規則には、その生成規則が認識される際に起こすアクションを含むことができます。これらのアクションをもとに、構文的に整形式のRDF/XMLのイベントのシーケンスからN-トリプル言語で表現されたRDFグラフへの変換が定義されます。

ここで示したモデルは、RDF/XMLドキュメントからRDFグラフの表現を作成する1つの方法を例示しています。実装方法を強いるものではありません — 他の方法で同じRDFグラフの表現を作成してもかまいません。

特に、

構文は、非整形のXMLドキュメントも、XML情報セットを持っていないドキュメントもサポートしていません。例えば、XMLの名前空間[XML-NS]に準拠していないドキュメントをサポートしていません。

Infosetには、XMLベース[XML-BASE]に対するサポートが必要です。RDF/XMLでは、5.3項で論じた情報項目のプロパティー[base URI]を使用します。

この仕様には、少なくとも以下の情報項目とRDF/XMLのプロパティーをサポートするXML情報セット[INFOSET]が必要です。

ドキュメント情報項目(document information item)
[document element], [children], [base URI]
要素情報項目(element information item)
[local name], [namespace name], [children], [attributes], [parent], [base URI]
属性情報項目(attribute information item)
[local name], [namespace name], [normalized value]
文字情報項目(character information item)
[character code]

以下の項目のデータ・モデルイ・ベントへのマッピングは存在していません。

処理命令情報項目(processing instruction information item)
非展開実体参照情報項目(unexpanded entity reference information item)
コメント情報項目(comment information item)
文書型宣言情報項目(document type declaration information item)
非解析実体情報項目(unparsed entity information item)
表記法情報項目(notation information item)
名前空間情報項目(namespace information item)

他の情報項目とプロパティーには、構文データ・モデル・イベントへのマッピングがありません。

予約済みのXML名(XML 1.0名前を参照)を持つ要素情報の項目は、データ・モデル要素イベントにマッピングされません。これは、xml(大文字と小文字を区別しない比較)で始まるプロパティー[prefix]を持つものすべてであり、値を持たない[prefix]プロパティーを持つもので、xml(大文字と小文字を区別しない比較)で始まる[local name]を持つものすべてです。

parseTypeLiteralPropertyElt生成規則と一致するXML要素内に含まているすべての情報項目はXMLリテラルを形成し、このマッピングに従いません。詳細に関しては、parseTypeLiteralPropertyEltを参照してください。

この項は、[INFOSET]仕様の適合性の要件を満たすことを目的としています。ここでは、この仕様を実装するために必要な情報項目とプロパティーを明記しています。

6.1 イベント

以下の小項目では、9種類のイベントを定義しています。ほとんどのイベントがInfoset情報項目(URI参照空白ノードプレーン・リテラル型付きリテラルを除く)で構成されています。イベント・コンストラクタには、すべての他のイベントと異なる、固有のアイデンティティを持つ新しいイベントを作成するという効果があります。イベントにはアクセサの操作が備わっており、大部分は、静的な値か算出された文字列値(string-value)のアクセサを持っています。

6.1.1 ルート・イベント

ドキュメント情報項目から構築され、以下のアクセサと値をとります。

document-element
ドキュメント情報項目プロパティー[document-element]の値に設定。
children
ドキュメント情報項目プロパティー[children]の値に設定。
base-uri
ドキュメント情報項目プロパティー[base URI]の値に設定。
language
空の文字列に設定。

6.1.2 要素イベント

要素情報項目から構築され、以下のアクセサと値をとります。

local-name
要素情報項目プロパティー[local name]の値に設定。
namespace-name
要素情報項目プロパティー[namespace name]の値に設定。
children
要素情報項目プロパティー[children]の値に設定。
base-uri
要素情報項目プロパティー[base URI]の値に設定。
attributes

1組の属性情報項目である要素情報項目プロパティー[attributes]の値から作成。

この集合が属性情報項目xml:lang(値「http://www.w3.org/XML/1998/namespace」を持つ[namespace name]プロパティーと[local name]プロパティーの値「lang」)を含んでいる場合、これは属性情報項目の集合から削除され、languageアクセサが属性情報項目の[normalized-value]プロパティーに設定されます。

残りすべての予約されたXML名(XML 1.0名前を参照)は現在、この集合から削除されています。これは、xml(大文字と小文字を区別しない比較)で始まるプロパティー[prefix]を持つ集合のすべての属性情報項目であり、値を持たない[prefix]プロパティーを持つすべての属性情報項目で、xml(大文字と小文字を区別しない比較)で始まる[local name]を持つものは削除されています。[base URI]アクセサは、xml:base属性情報項目が削除される前にXMLベースで計算されることに注意してください。

その後、属性情報項目の残りの集合は、このアクセサの値として割り当てられた属性イベントの新しい集合を構築するために使用されます。

URI
名前空間名アクセサの値とローカル名アクセサの値を連結した文字列値に設定。
URI-string-value

値は、「<」、URIアクセサのエスケープされた値、「>」を、この順序で連結したものです。

URIアクセサのエスケープは、3.3 URI参照で述べたように、URI参照にN-トリプル・エスケープを使用します。

li-counter
整数値1に設定。
language
上記で述べたように、attributesから設定。値が属性から得られない場合、この値は、親イベント(ルート・イベント要素イベントのどちらか)における言語アクセサの値に設定し、これは空の文字列でありえます。
subject
初期値がありません。識別子イベントである値をとります。このアクセサは、RDFグラフの1つのノードを処理する要素で使用され、一般にこれはステートメントの主語です。

6.1.3 終了要素イベント

アクセサがありません。その順序の包含要素の終了を示します。

6.1.4 属性イベント

属性情報項目から構築され、以下のアクセサと値をとります。

local-name
属性情報項目プロパティー[local name]の値に設定。
namespace-name
属性情報項目プロパティー[namespace name]の値に設定。
string-value
[XML]で指定されているように、属性情報項目プロパティー[normalized value]の値に設定(正規化した値がゼロの長さの文字である属性である場合、文字列値もゼロの長さの文字列です)。
URI

namespace-nameが存在する場合、namespace-nameアクセサの値と、local-nameアクセサの値を連結した文字列値に設定します。そうでない場合には、local-nameが、IDaboutresourceparseTypetypeである場合、RDF namespace URI referencelocal-nameアクセサの値を結合した文字列値に設定します。他の非名前空間local-nameアクセサ値は禁じられています。

限られた集合の非名前空間名のサポートが必要で(REQUIRED)、[RDF-MS]で指定されているRDF/XMLドキュメントが有効なままでありえるようにすることを目的としています。つまり、新しいドキュメントはこれらの修飾のない属性を使用べきではなく(SHOULD NOT)、アプリケーションは修飾のない形式がドキュメントにある時に警告することを選択できます(MAY)。

XML属性のRDF URI参照の構築により、異なるXML属性の同じRDF URI参照を生成できます。これによって、属性イベントを一致させる際に、文法があいまいになる可能性があります(rdf:aboutaboutの両方のXML属性が存在しているときなどに)。これがあるドキュメントは、不正です。

URI-string-value

値は、「<」、URIアクセサのエスケープされた値、URIアクセサ、「>」を、この順で連結させたものです。

URIアクセサのエスケープは、3.3 URI参照で述べたように、URI参照にN-トリプル・エスケープを使用します。

6.1.5 テキスト・イベント

一連の1つ以上の文字情報項目のシーケンスから構築されます。1つのアクセサを持っています。

string-value
各文字情報項目の[character code]プロパティーの連結から作られる文字列の値に設定。

6.1.6 URI参照イベント

以下のアクセサを持っているRDF URI参照のイベント。

identifier
RDF URI参照として使用される文字列値をとる。
string-value

値は、「<」、identifierアクセサのエスケープされた値、「>」を連結したものです。

identifierアクセサ値のエスケープは、3.3 URI参照で述べたように、URI参照にN-トリプル・エスケープを使用します。

これらのイベントは、identifierアクセサに値を与えることによって構築されます。

RDFグラフの識別子の詳細に関しては、5.2項を参照してください。

6.1.7 空白ノード識別子イベント

以下のアクセサを持っている空白ノード識別子のイベント。

identifier
文字列値をとります。
string-value
値は、identifierアクセサの値の関数です。値は「_:」で始まり、全体の値はN-トリプルnodeID生成規則に一致していなければなりません(MUST)。関数は、5.2項 識別子で論じたように、固有の空白ノードのアイデンティティーを保持していなければなりません(MUST)。

これらのイベントは、identifierアクセサに値を与えることによって構築されます。

RDFグラフの識別子の詳細に関しては、5.2項を参照してください。

6.1.8 プレーン・リテラル・イベント

以下のアクセサを持つことができるプレーン・リテラルのイベント。

literal-value
文字列値をとります。
literal-language
RDFのプレーン・リテラルで言語タグとして使用される文字列値を取ります。
string-value

値は以下の他のアクセサから計算されます。

literal-languageが空の文字列である場合、値は、「"」(1つのダブル引用符)、literal-valueアクセサのエスケープされた値、「"」(1つのダブル引用符)を連結したものです。

そうでない場合には、値は、「"」(1つのダブル引用符)、literal-valueアクセサのエスケープされた値、「"@」(1つのダブル引用符と「@」)、literal-languageアクセサの値を連結したものです。

literal-valueアクセサ値のエスケープは、3.2 文字列で述べたように、"などの特定の文字をエスケープするために文字列にN-トリプル・エスケープを使用します。

これらのイベントは、literal-valueliteral-languageアクセサの値を与えることによって構築されます。

相互運用性注記(参考情報): Unicodeの結合文字で始まるリテラルは、相互運用性の問題を引き起こすかもしれませんが、許されています。詳細に関しては、[CHARMOD]を参照してください。

6.1.9 型付きリテラル・イベント

以下のアクセサを持つことができる型付きリテラルのイベント

literal-value
文字列値をとります。
literal-datatype
RDF URI参照として使用される文字列値をとります。
string-value

値は、「"」(1つのダブル引用符)、literal-valueアクセサのエスケープされた値、「"」(1つのダブル引用符)、「^^<」、literal-datatypeアクセサのエスケープされた値、「>」を、この順序で連結したものです。

literal-valueアクセサ値のエスケープは、3.2 文字列で述べたように、"などの特定の文字をエスケープするために、文字列にN-トリプル・エスケープを使用します。literal-datatypeアクセサ値のエスケープは、3.3 URI参照で述べたように、URI参照にN-トリプル・エスケープを使用しなければなりません。

これらのイベントは、literal-valueliteral-datatypeのアクセサに値を与えることによって構築されます。

相互運用性注記(参考情報): Unicodeの結合文字で始まるリテラルは、相互運用性の問題を引き起こすかもしれませんが、許されています。詳細に関しては、[CHARMOD]を参照してください。

実装注記(参考情報): XMLスキーマ(パート1)[XML-SCHEMA1]では、空白(white space)の正規化は、whiteSpace相(facet)の値による妥当性検証の間に起こります。このドキュメントで使用される構文マッピングはこの後に起こるため、whiteSpace相には形式的にはそれ以上の効果はありません。

6.2 情報セット・マッピング

Infosetをドキュメント順でイベントのシーケンスに変換するためには、各情報項目を上記で述べたように変換して、アクセサと値でイベントのツリー(tree)を生成します。その後に、以下で述べるように各要素イベントを置き換え、イベントのツリーをドキュメント順のシーケンスに変えます。

  1. 最初の要素イベント
  2. 再帰的に変換されたアクセサの値、恐らくイベントの空の順序付きリスト。
  3. 終了要素イベント

6.3 文法表記法

以下の表記法は、6項で示したようなデータ・モデル・イベントのシーケンスの一致と、この一致のために実行するアクションを記述するために使用します。RDF/XML文法は、これらの一致したデータ・モデル・イベントからトリプルへのマッピングに関して、以下の形式の表記法を使用して定義されます。

number event-type event-content

action...

このとき、イベント・コンテンツは、イベント・タイプ6.1項で定義されているように)に一致している表現で、以下の項で示された表記法を使用しています。数は参考のために使用しています。アクションという文法には、N-トリプル形式で記述された、グラフに対する新しいトリプルの生成が含まれています。

以下の項では、使用している一般的な表記法と、イベントの一致とアクションの表記法について記述しています。

6.3.1 文法一般記法

文法一般表記法
表記 意味
event.accessor イベント・アクセサの値。
rdf:X 5.1項で定義されているようなURI。
"ABC" A、B、Cの順の文字列。

6.3.2 文法イベント一致表記法

文法イベント一致表記法
表記 意味
A == B イベント・アクセサAは式Bに一致する。
A != B AはBと等しくない。
A | B | ... A、B、... 用語は択一的である。
A - B Bのすべての用語を除いたAの用語。
anyURI. 任意のURI。
anyString. 任意の文字列。
list(item1, item2, ...); list() イベントの順序付きリスト。空のリスト。
set(item1, item2, ...); set() 順不同のイベントの集合。空の集合。
* 0以上の先行する用語。
? 0か1の先行する用語。
+ 1以上の先行する用語。
root(acc1 == value1,
    acc2 == value2, ...)
ルート・イベントをアクセサに一致。
start-element(acc1 == value1,
    acc2 == value2, ...)
children
end-element()
要素イベントのシーケンスをアクセサに一致。恐らく、要素コンテンツと終了要素イベントとしてのイベントの空のリスト。
attribute(acc1 == value1,
    acc2 == value2, ...)
属性イベントをアクセサに一致。
text() テキスト・イベントに一致。

6.3.3 文法アクション表記法

文法アクション表記法
表記 意味
A := B Aを値Bに割り当てる。
concat(A, B, ..) 用語を順番に連結することによって作成された文字列。
resolve(e, s) 5.3項 URIの解決で定義されているように、文字列sebase-uriアクセサに対する相対URI参照として解釈することで作成される文字列。その結果作成される文字列は、RDF URI参照を表現します。
generated-blank-node-id() 5.2項 識別子で定義されているように、生成した新しい固有の空白ノード識別子の文字列値。
event.accessor := value 与えられた値にイベント・アクセサを設定。
uri(identifier := value) 新しいURI参照イベントを作成。
bnodeid(identifier := value) 新しい空白ノード識別子イベントを作成。5.2 識別子の項も参照。
literal(literal-value := string,
    literal-language := language, ...)
新しいプレーン・リテラル・イベントを作成。
typed-literal(literal-value := string, ...) 新しい型付きリテラル・イベントを作成。

7 RDF/XML文法

7.1 文法の要約

7.2.2 coreSyntaxTerms rdf:RDF | rdf:ID | rdf:about | rdf:parseType | rdf:resource | rdf:nodeID | rdf:datatype
7.2.3 syntaxTerms coreSyntaxTerms | rdf:Description | rdf:li
7.2.4 oldTerms rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID
7.2.5 nodeElementURIs anyURI - ( coreSyntaxTerms | rdf:li | oldTerms )
7.2.6 propertyElementURIs anyURI - ( coreSyntaxTerms | rdf:Description | oldTerms )
7.2.7 propertyAttributeURIs anyURI - ( coreSyntaxTerms | rdf:Description | rdf:li | oldTerms )
7.2.8 doc root(document-element == RDF, children == list(RDF))
7.2.9 RDF start-element(URI == rdf:RDF, attributes == set())
nodeElementList
end-element()
7.2.10 nodeElementList ws* (nodeElement ws* )*
7.2.11 nodeElement start-element(URI == nodeElementURIs
    attributes == set((idAttr | nodeIdAttr | aboutAttr?)?, propertyAttr*))
propertyEltList
end-element()
7.2.12 ws 共通構文構成子(Common Syntactic Constructs)の項の[XML]定義空白規則[3]Sで定義されている空白に一致しているテキスト・イベント
7.2.13 propertyEltList ws* (propertyElt ws* ) *
7.2.14 propertyElt resourcePropertyElt | literalPropertyElt | parseTypeLiteralPropertyElt | parseTypeResourcePropertyElt | parseTypeCollectionPropertyElt | parseTypeOtherPropertyElt | emptyPropertyElt
7.2.15 resourcePropertyElt start-element(URI == propertyElementURIs ), attributes == set(idAttr?))
ws* nodeElement ws*
end-element()
7.2.16 literalPropertyElt start-element(URI == propertyElementURIs ), attributes == set(idAttr?, datatypeAttr?))
text()
end-element()
7.2.17 parseTypeLiteralPropertyElt start-element(URI == propertyElementURIs ), attributes == set(idAttr?, parseLiteral))
literal
end-element()
7.2.18 parseTypeResourcePropertyElt start-element(URI == propertyElementURIs ), attributes == set(idAttr?, parseResource))
propertyEltList
end-element()
7.2.19 parseTypeCollectionPropertyElt start-element(URI == propertyElementURIs ), attributes == set(idAttr?, parseCollection))
nodeElementList
end-element()
7.2.20 parseTypeOtherPropertyElt start-element(URI == propertyElementURIs ), attributes == set(idAttr?, parseOther))
propertyEltList
end-element()
7.2.21 emptyPropertyElt start-element(URI == propertyElementURIs ), attributes == set(idAttr?, ( resourceAttr | nodeIdAttr )?, propertyAttr*))
end-element()
7.2.22 idAttr attribute(URI == rdf:ID, string-value == rdf-id)
7.2.23 nodeIdAttr attribute(URI == rdf:nodeID, string-value == rdf-id)
7.2.24 aboutAttr attribute(URI == rdf:about, string-value == URI-reference)
7.2.25 propertyAttr attribute(URI == propertyAttributeURIs, string-value == anyString)
7.2.26 resourceAttr attribute(URI == rdf:resource, string-value == URI-reference)
7.2.27 datatypeAttr attribute(URI == rdf:datatype, string-value == URI-reference)
7.2.28 parseLiteral attribute(URI == rdf:parseType, string-value == "Literal")
7.2.29 parseResource attribute(URI == rdf:parseType, string-value == "Resource")
7.2.30 parseCollection attribute(URI == rdf:parseType, string-value == "Collection")
7.2.31 parseOther attribute(URI == rdf:parseType, string-value == anyString - ("Resource" | "Literal" | "Collection") )
7.2.32 URI-reference RDF URI参照
7.2.33 literal 3.1 開始タグ、終了タグ、空要素タグの項の[XML]定義要素のコンテンツ(Content of Elements)規則[43]コンテンツによって許されているXML要素コンテンツ。
7.2.34 rdf-id 正当な[XML-NS]トークンNCNameに一致している属性string-value

7.2 文法生成規則

7.2.1 文法の開始

RDF/XMLが独立型のXMLドキュメント(application/rdf+xml RDF MIMEタイプオブジェクトとしての表現やその他の手段で識別される)である場合、文法は生成規則docや生成規則nodeElementで開始できます。

RDF/XMLが他のXMLコンテンツに組み込まれているときなどの、文脈によってコンテンツがRDF/XMLであると判明している場合には、要素イベント RDF(要素がその時点でXMLにおいて正当であるときにのみ)において、または、生成規則nodeElementList(これは要素のリストであるため、要素コンテンツが正当であるときにのみ)において文法を開始できます。このような組み込みRDF/XMLには、ルート・イベントは利用できないため、最外部要素のbase-uri値を、包含するXMLから初期化しなければなりません。このような組み込みが行われた場合、文法を何度か入力できますが、状態は保存されそうにないということに注意してください。

7.2.2 生成規則coreSyntaxTerms

rdf:RDF | rdf:ID | rdf:about | rdf:parseType | rdf:resource | rdf:nodeID | rdf:datatype

RDF/XMLで使用される5.1項のRDF語彙の構文用語のサブセット。

7.2.3 生成規則syntaxTerms

coreSyntaxTerms | rdf:Description | rdf:li

RDF/XMLで使用される5.1項のRDF語彙のすべての構文用語。

7.2.4 生成規則oldTerms

rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID

これらは言語から抜き出したRDF語彙の名前です。詳細に関しては、問題rdfms-aboutEach-on-object、問題rdfms-abouteachprefix、最終草案問題timbl-01の解決を参照してください。

エラー・テスト: error001.rdferror002.rdfで示されています。

7.2.5 生成規則nodeElementURIs

anyURI - ( coreSyntaxTerms | rdf:li | oldTerms )

ノード要素で許されているRDF URI参照

7.2.6 生成規則propertyElementURIs

anyURI - ( coreSyntaxTerms | rdf:Description | oldTerms )

プロパティー要素で許されているURI。

7.2.7 生成規則propertyAttributeURIs

anyURI - ( coreSyntaxTerms | rdf:Description | rdf:li | oldTerms )

プロパティー属性で許されているRDF URI参照

7.2.8 生成規則doc

root(document-element == RDF,
    children == list(RDF))

7.2.9 生成規則RDF

start-element(URI == rdf:RDF,
    attributes == set())
nodeElementList
end-element()

7.2.10 生成規則nodeElementList

ws* (nodeElement ws* )*

7.2.11 生成規則nodeElement

start-element(URI == nodeElementURIs
    attributes == set((idAttr | nodeIdAttr | aboutAttr?)?, propertyAttr*))
propertyEltList
end-element()

ノード要素eに関しては、子イベントやその他の属性の処理などの他の作業の前に、いくつかの属性の処理を行わなければなりません。これらは、順不同で処理できます。

e.subjectが空である場合、e.subject := bnodeid(identifier := generated-blank-node-id())です。

次に、以下を順不同で実行できます。

7.2.12 生成規則ws

共通構文構成子の項の[XML]定義空白(White Space)規則[3]Sで定義されている空白と一致しているテキスト・イベント

7.2.13 生成規則propertyEltList

ws* (propertyElt ws* ) *

7.2.14 生成規則propertyElt

resourcePropertyElt | literalPropertyElt | parseTypeLiteralPropertyElt | parseTypeResourcePropertyElt | parseTypeCollectionPropertyElt | parseTypeOtherPropertyElt | emptyPropertyElt

要素ee.URI = rdf:liがある場合、7.4項の要素e.parentにリスト拡張規則を適用し、新しいURI ue.URI := uを付与します。

サブマッチ(resourcePropertyElt ... emptyPropertyElt)のアクションの前に、この生成規則のアクションを行わなければなりません。そうでない場合は、すべてのサブマッチのうちの最初の動作として実行するなどように、その結果は、まるでこのアクションが最初に実行されたかのようでなければなりません。

7.2.15 生成規則resourcePropertyElt

start-element(URI == propertyElementURIs ),
    attributes == set(idAttr?))
ws* nodeElement ws*
end-element()

要素e、および1つの包含されているnodeElement nに関して、最初に生成規則nodeElementを使用してnを処理しなければなりません。すると、以下のステートメントがグラフに追加されます。

   e.parent.subject.string-value e.URI-string-value n.subject.string-value .

rdf:ID属性aが与えられた場合、上記のステートメントは、7.3項の具体化規則とe.subject := iを使用して、i := uri(identifier := resolve(e, concat("#", a.string-value)))で具体化されます。

7.2.16 生成規則literalPropertyElt

start-element(URI == propertyElementURIs ),
    attributes == set(idAttr?, datatypeAttr?))
text()
end-element()

空のリテラルの事例が生成規則emptyPropertyEltで定義されることに注意してください。

要素e、およびテキスト・イベントtに関して。Unicodeの文字列t.string-valueは、正規形C[NFC]であるべきです(SHOULD)。rdf:datatype属性dが与えられた場合、o := typed-literal(literal-value := t.string-value, literal-datatype := d.string-value)であり、そうでない場合は、o := literal(literal-value := t.string-value, literal-language := e.language)であり、以下のステートメントがグラフに追加されます。

e.parent.subject.string-value e.URI-string-value o.string-value .

rdf:ID属性aが与えられた場合、上記のステートメントは、7.3項の具体化規則とe.subject := iを使用して、i := uri(identifier := resolve(e, concat("#", a.string-value)))で具体化されます。

7.2.17 生成規則parseTypeLiteralPropertyElt

start-element(URI == propertyElementURIs ),
    attributes == set(idAttr?, parseLiteral))
literal
end-element()

要素erdf:parseType="Literal"コンテンツであるリテラルlに関して。lは、構文データ・モデル・マッピングによってイベントに変換されずに(6 構文データ・モデルで述べたように)XML情報項目のXML Infosetのままです。

lは、以下のアルゴリズムによって、RDFグラフx(Unicodeの文字列)におけるXMLリテラルの字句形式に変換されます。これは、実装方法を強いません — 同じ結果が得られる他の方法を使用できます。

  1. lを使用して、XPath[XPATH]ノード・セットドキュメントのサブセット)を構築します。
  2. 排他的XML正規化(Exclusive XML Canonicalization) [XML-XC14N])をコメントと空のInclusiveNamespaces PrefixListとともにこのノード・セットに適用して、オクテット列sを提供します。
  3. このオクテット列sは、あるUnicodeの文字列x(Unicodeの文字の列)をUTF-8でコード化したものであると考えることができます。
  4. Unicodeの文字列xは、lの字句形式として使用されます。
  5. このUnicodeの文字列xは、正規形C[NFC]であるべきです(SHOULD)。

そうすれば、o := typed-literal(literal-value := x, literal-datatype := http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral )であり、以下のステートメントがグラフに追加されます。

e.parent.subject.string-value e.URI-string-value o.string-value .

テスト: test009.rdftest009.ntで示されている空のリテラルの事例

rdf:ID属性aが与えられた場合、上記のステートメントは、7.3項の具体化規則とe.subject := iを使用して、i := uri(identifier := resolve(e, concat("#", a.string-value)))で具体化されます。

7.2.18 生成規則parseTypeResourcePropertyElt

start-element(URI == propertyElementURIs ),
    attributes == set(idAttr?, parseResource))
propertyEltList
end-element()

空である可能性のある要素コンテンツcを持つ要素eに関して。

n := bnodeid(identifier := generated-blank-node-id())です。

以下のステートメントがグラフに追加されます。

e.parent.subject.string-value e.URI-string-value n.string-value .

テスト: test004.rdftest004.ntで示されています。

rdf:ID属性aが与えられた場合、上記のステートメントは、7.3項の具体化規則とe.subject := iを使用して、i := uri(identifier := resolve(e, concat("#", a.string-value)))で具体化されます。

要素コンテンツcが空でない場合、イベントnを使用して、以下のようなイベントの新しいシーケンスを作成します。

start-element(URI := rdf:Description,
    subject := n,
    attributes := set())
c
end-element()

次に、生成規則nodeElementを使用して、結果として作成されたシーケンスを処理します。

7.2.19 生成規則parseTypeCollectionPropertyElt

start-element(URI == propertyElementURIs ),
    attributes == set(idAttr?, parseCollection))
nodeElementList
end-element()

空である可能性のあるnodeElementList lを持つ要素イベントeに関して。s:=list()を設定。

lのそれぞれの要素イベントfに対し、n := bnodeid(identifier := generated-blank-node-id())であり、snを追加して、イベントのシーケンスを付与します。

sが空でない場合、nsの最初のイベント識別子であり、以下のステートメントがグラフに追加されます。

e.parent.subject.string-value e.URI-string-value n.string-value .

そうでない場合は、以下のステートメントがグラフに追加されます。

e.parent.subject.string-value e.URI-string-value <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .

rdf:ID属性aが与えられた場合、上記のステートメントのどちらかは、7.3項の具体化規則を使用して、i := uri(identifier := resolve(e, concat("#", a.string-value)))で具体化されます。

sが空である場合、さらなる作業は行われません。

sのそれぞれのイベントnと、lの対応する要素イベントfに対し、以下のステートメントがグラフに追加されます。

n.string-value <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> f.string-value .

sのそれぞれの連続し重複している対のイベント(n, o)に対し、以下のステートメントがグラフに追加されます。

n.string-value <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> o.string-value .

sが空でない場合、nsの最後のイベント識別子で、以下のステートメントがグラフに追加されます。

n.string-value <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .

7.2.20 生成規則parseTypeOtherPropertyElt

start-element(URI == propertyElementURIs ),
    attributes == set(idAttr?, parseOther))
propertyEltList
end-element()

文字列「Resource」「Literal」「Collection」以外のすべてのrdf:parseType属性値は、その値が「Literal」であるかのように扱われます。この生成規則は、生成規則parseTypeLiteralPropertyEltが一致したかのように一致し、動作します。他のrdf:parseType値に対しては、余分なトリプルは作成されません。

7.2.21 生成規則emptyPropertyElt

start-element(URI == propertyElementURIs ),
    attributes == set(idAttr?, ( resourceAttr | nodeIdAttr )?, propertyAttr*))
end-element()

7.2.22 生成規則idAttr

attribute(URI == rdf:ID,
    string-value == rdf-id)

制約: constraint-idは、rdf:ID属性の値に適用されます。

7.2.23 生成規則nodeIdAttr

attribute(URI == rdf:nodeID,
    string-value == rdf-id)

7.2.24 生成規則aboutAttr

attribute(URI == rdf:about,
    string-value == URI-reference)

7.2.25 生成規則propertyAttr

attribute(URI == propertyAttributeURIs,
    string-value == anyString)

7.2.26 生成規則resourceAttr

attribute(URI == rdf:resource,
    string-value == URI-reference)

7.2.27 生成規則datatypeAttr

attribute(URI == rdf:datatype,
    string-value == URI-reference)

7.2.28 生成規則parseLiteral

attribute(URI == rdf:parseType,
    string-value == "Literal")

7.2.29 生成規則parseResource

attribute(URI == rdf:parseType,
    string-value == "Resource")

7.2.30 生成規則parseCollection

attribute(URI == rdf:parseType,
    string-value == "Collection")

7.2.31 生成規則parseOther

attribute(URI == rdf:parseType,
    string-value == anyString - ("Resource" | "Literal" | "Collection") )

7.2.32 生成規則URI-reference

RDF URI参照

7.2.33 生成規則literal

3.1 開始タグ、終了タグ、および空要素タグの項の[XML]定義要素のコンテンツ(Content of Elements)規則[43]コンテンツに従って許されているXML要素コンテンツです。

結果として作成されるイベントに対する文字列値に関しては、7.2.17項で論じます。

7.2.34 生成規則rdf-id

正当な[XML-NS]トークンNCNameと一致する属性string-valueです。

7.3 具体化規則

以下の、ある与えられたURI参照イベントrと、N-トリプルに対応している用語spoを持つステートメントに関して、

s p o .

グラフに以下のステートメントを加えます。

r.string-value <http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> s .
r.string-value <http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> p .
r.string-value <http://www.w3.org/1999/02/22-rdf-syntax-ns#object> o .
r.string-value <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> .

7.4 リスト拡張規則

与えられた要素eに対し、新しいRDF URI参照 u := concat("http://www.w3.org/1999/02/22-rdf-syntax-ns#_", e.li-counter)を作成し、e.li-counterプロパティーを1つ増やし、uを返します。

8 RDF/XMLへのRDFグラフのシリアル化

RDF概念と抽象構文で定義されているように、RDF/XMLでシリアル化できないいくつかのRDFグラフがあります。これらは、以下に該当するものです。

XML名前空間修飾名にすることができないプロパティー名を使用するもの。
XML名前空間修飾名(QName)は、すべてのプロパティーURIをこれらの名前として表現できるというわけではないなどの、正当な文字において制限があります。RDFシリアイザの実装者は、URIを名前空間名とローカル名に分けるために、最後のXML非NCName文字の後で分割し、名前の最初の文字がLetterや「_」であることを確保することをお勧めします。URIが非NCName文字で終了する場合は、「このグラフはRDF/XMLではシリアル化できない」という例外やエラーを出してください。
不適当な予約された名前をプロパティーとして使用するもの。
例えば、syntaxTerms生成規則と同じURIを持つプロパティー。

実装注記(参考情報): RDFがRDF/XMLにシリアル化されていて、XMLスキーマ・データ型(XSD)を持っているときには、空白の処理を必要としない形式で書かれているべきです(SHOULD)。XSDサポートは、RDFやRDF/XMLでは必須でない(NOT)ため、これはオプションです。

9 HTMLやXHTMLとのRDF/XMLの使用

RDF/XMLがHTMLやXHTML内に組み込まれている場合、多くの新しい要素と属性を追加でき、その多くは適切なDTDではないでしょう。この組み込みによって、DTDに対する妥当性検証は失敗します。DTDの変更や拡張という確実そうな解決法は、ほとんど実用的ではありません。この問題は、Sean B. PalmerのHTMLでのRDF: 手法 [RDF-IN-XHTML]で広く分析され、すべてのアプリケーションを充足させつつシンプルさを保つような組み込み方法はないという結論に達しました。

お勧めするのは、HTML/XHTMLにRDF/XMLを組み込むのではなく、HTML/HTMLの<head>要素で<link>要素を使用して別個のRDF/XMLドキュメントを指し示すという方法です。この方法は、ダブリン・コア・メタデータ・イニシアティブ(DCMI)がそのウェブサイトで数年間使用して来ました。

この手法を使用するためには、<link>要素のhrefはRDF/XMLコンテンツのURIを指し示すべきで、提案されているRDF/XMLのMIMEタイプである"application/rdf+xml"の値とともにtype属性を使用するべきです。4項を参照してください。

関係を示すようにrel属性の値を設定することも可能で、これはアプリケーションに依存した値です。DCMIでは、RFC 2731 — HTMLにおけるダブリン・コア・メタデータのコード化 [RFC-2731]でリンクする際には、rel="alternate"が適切であっても、rel="meta"を使用し推奨してきました。様々なバージョンのHTMLに適切でありえる値に関する詳細に関しては、HTML 4.01 リンク・タイプXHTMLモジュール化 — LinkTypesXHTML 2.0 — LinkTypesを参照してください。

例21は、XHTMLドキュメント内のlinkタグでこの方法を使用して外部のRDF/XMLドキュメントにリンクしています。

例21: 外部のRDF/XMLドキュメントとのXHTMLのlinkの使用example21.rdfにリンクしているexample21.html
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <title>My document</title>
    <meta http-equiv="Content-type" content='text/html; charset="utf-8"' />
    <link rel="alternate" type="application/rdf+xml" title="RDF Version" href="example21.rdf" />
  </head>
  <body>
    <h1>My document</h1>

  </body></html>

10 SVGとRDF/XMLとの使用(参考情報)

RDF互換メタデータをSVG — Scalable Vector Graphics(SVG)1.0仕様[SVG]21項 メタデータScalable Vector Graphics(SVG)1.1仕様[SVG11]21項 メタデータで定義されているように、この目的のために明確に設計されたメタデータ要素 — に関連付ける標準化された方法があります。

このドキュメントには、このようなメタデータ要素内に組み込まれたRDF/XMLを持つSVGの2つのグラフの例が含まれています(1と図2)。

11 謝辞(参考情報)

以下の人々は、このドキュメントに有益な貢献をしてくださいました。

このドキュメントは、RDFコア・ワーキンググループによって積み重ねられた検討の成果です。そのメンバーは、Art Barstow (W3C)、Dave Beckett (ILRT)、Dan Brickley (W3C/ILRT)、Dan Connolly (W3C)、Jeremy Carroll (Hewlett Packard)、Ron Daniel (Interwoven Inc)、Bill dehOra (InterX)、Jos De Roo (AGFA)、Jan Grant (ILRT)、Graham Klyne (Clearswift and Nine by Nine)、Frank Manola (MITRE Corporation)、Brian McBride (Hewlett Packard)、Eric Miller (W3C)、Stephen Petschulat (IBM)、Patrick Stickler (Nokia)、Aaron Swartz (HWG)、Mike Dean (BBN Technologies / Verizon)、R. V. Guha (Alpiri Inc)、Pat Hayes (IHMC)、Sergey Melnik (Stanford University)、Martyn Horner (Profium Ltd)です。

また、この仕様は、Ora LassillaとRalph Swickの編集による以前のRDFモデルおよび構文ドキュメント、Dan BrickleyとR. V. Guhaの編集によるRDFスキーマを参考にしています。この以前の作業に貢献したRDFおよびRDFスキーマ・ワーキンググループのメンバーは、Nick Arnett (Verity)、Tim Berners-Lee (W3C)、Tim Bray (Textuality)、Dan Brickley (ILRT / University of Bristol)、Walter Chang (Adobe)、Sailesh Chutani (Oracle)、Dan Connolly (W3C)、Ron Daniel (DATAFUSION)、Charles Frankston (Microsoft)、Patrick Gannon (CommerceNet)、RV Guha (Epinions、以前はNetscape Communications)、Tom Hill (Apple Computer)、Arthur van Hoff (Marimba)、Renato Iannella (DSTC)、Sandeep Jain (Oracle)、Kevin Jones (InterMind)、Emiko Kezuka (Digital Vision Laboratories)、Joe Lapp (webMethods Inc.)、Ora Lassila (Nokia Research Center)、Andrew Layman (Microsoft)、Ralph LeVan (OCLC)、John McCarthy (Lawrence Berkeley National Laboratory)、Chris McConnell (Microsoft)、Murray Maloney (Grif)、Michael Mealling (Network Solutions)、Norbert Mikula (DataChannel)、Eric Miller (OCLC)、Jim Miller (W3C、emeritus)、Frank Olken (Lawrence Berkeley National Laboratory)、Jean Paoli (Microsoft)、Sri Raghavan (Digital/Compaq)、Lisa Rein (webMethods Inc.)、Paul Resnick (University of Michigan)、Bill Roberts (KnowledgeCite)、Tsuyoshi Sakata (Digital Vision Laboratories)、Bob Schloss (IBM)、Leon Shklar (Pencom Web Works)、David Singer (IBM)、Wei (William) Song (SISU)、Neel Sundaresan (IBM)、Ralph Swick (W3C)、Naohiko Uramoto (IBM)、Charles Wicksteed (Reuters Ltd.)、Misha Wolf (Reuters Ltd.)、Lauren Wood (SoftQuad)です。

12 参考文献

規範的な参考文献

[RDF-MS]
Resource Description Framework (RDF) Model and Syntax Specification, O. Lassila and R. Swick, Editors. World Wide Web Consortium. 22 February 1999. 本バージョンは、http://www.w3.org/TR/1999/REC-rdf-syntax-19990222です。RDF M&Sの最新バージョンは、http://www.w3.org/TR/REC-rdf-syntaxにあります。
[XML]
Extensible Markup Language (XML) 1.0, Second Edition, T. Bray, J. Paoli, C.M. Sperberg-McQueen and E. Maler, Editors. World Wide Web Consortium. 6 October 2000. 本バージョンは、http://www.w3.org/TR/2000/REC-xml-20001006です。XMLの最新バージョンは、http://www.w3.org/TR/REC-xmlにあります。
[XML-NS]
Namespaces in XML, T. Bray, D. Hollander and A. Layman, Editors. World Wide Web Consortium. 14 January 1999. 本バージョンは、http://www.w3.org/TR/1999/REC-xml-names-19990114です。XMLのNamespacesの最新バージョンは、http://www.w3.org/TR/REC-xml-namesにあります。
[INFOSET]
XML Information Set, J. Cowan and R. Tobin, Editors. World Wide Web Consortium. 24 October 2001. 本バージョンは、http://www.w3.org/TR/2001/REC-xml-infoset-20011024です。XML情報セットの最新バージョンは、http://www.w3.org/TR/xml-infosetにあります。
[URIS]
RFC 2396 — Uniform Resource Identifiers (URI): Generic Syntax, T. Berners-Lee, R. Fielding and L. Masinter, IETF, August 1998. このドキュメントは、http://www.isi.edu/in-notes/rfc2396.txtです。
[RDF-CONCEPTS]
Resource Description Framework (RDF): Concepts and Abstract Syntax, Klyne G., Carroll J. (Editors), W3C Recommendation, 10 February 2004. 本バージョンは、http://www.w3.org/TR/2004/REC-rdf-primer-20040210/です。最新バージョンは、http://www.w3.org/TR/rdf-concepts/です。
[RDF-TESTS]
RDF Test Cases, Grant J., Beckett D. (Editors), W3C Recommendation, 10 February 2004. 本バージョンは、http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/です。最新バージョンは、http://www.w3.org/TR/rdf-testcases/です。
[KEYWORDS]
RFC 2119 — Key words for use in RFCs to Indicate Requirement Levels, S. Bradner, IETF. March 1997. このドキュメントは、http://www.ietf.org/rfc/rfc2119.txtです。
[RFC-3023]
RFC 3023 — XML Media Types, M. Murata, S. St.Laurent, D.Kohn, IETF. January 2001. このドキュメントは、http://www.ietf.org/rfc/rfc3023.txtです。
[IANA-MEDIA-TYPES]
MIME Media Types, The Internet Assigned Numbers Authority (IANA). このドキュメントは、http://www.iana.org/assignments/media-types/です。application/rdf+xmlの登録は、http://www.w3.org/2001/sw/RDFCore/mediatype-registrationでアーカイブされています。
[XML-BASE]
XML Base, J. Marsh, Editor, W3C Recommendation. World Wide Web Consortium, 27 June 2001. 本バージョンのXML Baseは、http://www.w3.org/TR/2001/REC-xmlbase-20010627です。XML Baseの最新バージョンは、http://www.w3.org/TR/xmlbaseにあります。
[XML-XC14N]
Exclusive XML Canonicalization Version 1.0, J. Boyer, D.E. Eastlake 3rd, J. Reagle, Authors/Editors. W3C Recommendation. World Wide Web Consortium, 18 July 2002. 本バージョンのExclusive XML Canonicalizationは、http://www.w3.org/TR/2002/REC-xml-exc-c14n-20020718です。Canonical XMLの最新バージョンは、http://www.w3.org/TR/xml-exc-c14nにあります。
[UNICODE]
The Unicode Standard, Version 3, The Unicode Consortium, Addison-Wesley, 2000. ISBN 0-201-61633-5、時々新しいバージョンの公表で構成されます。(標準およびUnicode文字データベースのバージョンに関する最新バージョンと追加情報に関しては、http://www.unicode.org/unicode/standard/versions/を参照してください)。
[NFC]
Unicode Normalization Forms, Unicode Standard Annex #15, Mark Davis, Martin Durst. (最新バージョンに関しては、http://www.unicode.org/unicode/reports/tr15/を参照してください)。

参考情報の参考文献

[CHARMOD]
Character Model for the World Wide Web 1.0, M. Durst, F. Yergeau, R. Ishida, M. Wolf, A. Freytag, T Texin, Editors, World Wide Web Consortium Working Draft, work in progress, 20 February 2002. Character Modelの本バージョンは、http://www.w3.org/TR/2002/WD-charmod-20020220です。Character Modelの最新バージョンは、http://www.w3.org/TR/charmodです。
[RDF-SEMANTICS]
RDF Semantics, Hayes P. (Editor), W3C Recommendation, 10 February 2004. 本バージョンは、http://www.w3.org/TR/2004/REC-rdf-mt-20040210/です。最新バージョンは、http://www.w3.org/TR/rdf-mt/です。
[RDF-PRIMER]
RDF Primer, F. Manola, E. Miller, Editors, W3C Recommendation, 10 February 2004. 本バージョンは、http://www.w3.org/TR/2004/REC-rdf-primer-20040210/です。最新バージョンは、http://www.w3.org/TR/rdf-primer/にあります。
[RDF-VOCABULARY]
RDF Vocabulary Description Language 1.0: RDF Schema, Brickley D., Guha R.V. (Editors), W3C Recommendation, 10 February 2004. 本バージョンは、 http://www.w3.org/TR/2004/REC-rdf-schema-20040210/です。最新バージョンは、http://www.w3.org/TR/rdf-schema/です。
[STRIPEDRDF]
RDF: Understanding the Striped RDF/XML Syntax, D. Brickley, W3C, 2001. このドキュメントは、http://www.w3.org/2001/10/stripes/です。
[SVG]
Scalable Vector Graphics (SVG) 1.0 Specification, J. Ferraiolo (editor), 4 September 2001, W3C Recommendation. SVGの本バージョンは、http://www.w3.org/TR/2001/REC-SVG-20010904です。SVGの最新バージョンは、http://www.w3.org/TR/SVGにあります。
[SVG11]
Scalable Vector Graphics (SVG) 1.1 Specification, J. Ferraiolo, J. FUJISAWA, D. Jackson (editors), 14 January 2003, W3C Recommendation. 本バージョンのSVGは、http://www.w3.org/TR/2003/REC-SVG11-20030114/です。SVGの最新バージョンは、http://www.w3.org/TR/SVG11にあります。
[XPATH]
XML Path Language (XPath) Version 1.0, J. Clark and S. DeRose, Editors. World Wide Web Consortium, 16 November 1999. 本バージョンのXPathは、http://www.w3.org/TR/1999/REC-xpath-19991116です。XPathの最新バージョンは、http://www.w3.org/TR/xpathにあります。
[SAX2]
SAX Simple API for XML, version 2, D. Megginson, SourceForge, 5 May 2000. このドキュメントは、http://sax.sourceforge.net/です。
[UNPARSING]
Unparsing RDF/XML, J. J. Carroll, HP Labs Technical Report, HPL-2001-294, 2001. このドキュメントは、http://www.hpl.hp.com/techreports/2001/HPL-2001-294.htmlにあります。
[RELAXNG]
RELAX NG Specification, James Clark and MURATA Makoto, Editors, OASIS Committee Specification, 3 December 2001. 本バージョンのRELAX NGは、http://www.oasis-open.org/committees/relax-ng/spec-20011203.htmlです。RELAX NG Specificationの最新バージョンは、http://www.oasis-open.org/committees/relax-ng/spec.htmlにあります。
[RELAXNG-COMPACT]
RELAX NG Compact Syntax, James Clark, Editor. OASIS Committee Specification, 21 November 2002. このドキュメントは、http://www.oasis-open.org/committees/relax-ng/compact-20021121.htmlです。
[RDF-IN-XHTML]
RDF in HTML: Approaches, Sean B. Palmer, 2002
[RFC-2731]
RFC 2731 — Encoding Dublin Core Metadata in HTML, John Kunze, DCMI, December 1999.
[XML-SCHEMA1]
XML Schema Part 1: Structures, H.S. Thompson, D. Beech, M. Maloney, N. Mendelsohn, Editors, World Wide Web Consortium Recommendation, 2 May 2001. 本バージョンのXML Schema Part 1: Structuresは、http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/です。XML Schema Part 1: Structuresの最新バージョンは、http://www.w3.org/TR/xmlschema-1にあります。
[XML-SCHEMA2]
XML Schema Part 2: Datatypes, P.V. Biron, A. Malhotra, Editors, World Wide Web Consortium Recommendation, 2 May 2001. 本バージョンの XML Schema Part 2: Datatypesは、http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/です。XML Schema Part 2: Datatypesの最新バージョンは、http://www.w3.org/TR/xmlschema-2にあります。

A 構文スキーマ(参考情報)

この付録には、RDF/XML形式の妥当性検証のためのXMLスキーマが含まれています。これらは、参考情報のみとしてのスキーマの例であり、この仕様の一部ではありません。

A.1 RELAX NGコンパクト・スキーマ(参考情報)

これは、RDF/XMLに対するRELAX NGコンパクトのスキーマの例(読みやすさのため)です。アプリケーションは、RELAX NG XMLバージョンを使用することもできます。これらの形式は、RELAX NG[RELAXNG])とRELAX NG Compact[RELAXNG-COMPACT])で記述されています。

注: 文法の一致を試みるためにRNGCスキーマを更新しましたが、これは、確認したり、RDF/XMLの妥当性検証に使用したりしていません。

RDF/XMLのRELAX NGコンパクト・スキーマ
## RELAX NG Compact Schema for RDF/XML Syntax
#
# This schema is for information only and NON-NORMATIVE
## It is based on one originally written by James Clark in
# http://lists.w3.org/Archives/Public/www-rdf-comments/2001JulSep/0248.html
# and updated with later changes.
#

namespace local = ""
namespace rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
datatypes xsd = "http://www.w3.org/2001/XMLSchema-datatypes"


start = doc


# I cannot seem to do this in RNGC so they are expanded in-line

# coreSyntaxTerms = rdf:RDF | rdf:ID | rdf:about | rdf:parseType | rdf:resource | rdf:nodeID | rdf:datatype
# syntaxTerms = coreSyntaxTerms | rdf:Description | rdf:li
# oldTerms    = rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID
# nodeElementURIs       = * - ( coreSyntaxTerms | rdf:li | oldTerms )
# propertyElementURIs   = * - ( coreSyntaxTerms | rdf:Description | oldTerms )
# propertyAttributeURIs = * - ( coreSyntaxTerms | rdf:Description | rdf:li | oldTerms )

# Also needed to allow rdf:li on all property element productions
# since we can't capture the rdf:li rewriting to rdf_<n> in relaxng

# Need to add these explicitly
xmllang = attribute xml:lang { text }
xmlbase = attribute xml:base { text }
# and to forbid every other xml:* attribute, element

doc = 
  RDF | nodeElement

RDF =
  element rdf:RDF { 
     xmllang?, xmlbase?, nodeElementList
}

nodeElementList = 
  nodeElement*

  # Should be something like:
  #  ws* , (  nodeElement , ws* )*
  # but RELAXNG does this by default, ignoring whitespace separating tags.

nodeElement =
  element * - ( local:* | rdf:RDF | rdf:ID | rdf:about | rdf:parseType |
                rdf:resource | rdf:nodeID | rdf:datatype | rdf:li |
                rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID ) {
      (idAttr | nodeIdAttr | aboutAttr )?, xmllang?, xmlbase?, propertyAttr*, propertyEltList
  }
  # It is not possible to say "and not things
  # beginning with _ in the rdf: namespace" in RELAX NG.

ws = 
  " "

  # Not used in this RELAX NG schema; but should be any legal XML
  # whitespace defined by http://www.w3.org/TR/2000/REC-xml-20001006#NT-S


propertyEltList = 
  propertyElt*

  # Should be something like:
  #  ws* , ( propertyElt , ws* )*
  # but RELAXNG does this by default, ignoring whitespace separating tags.
propertyElt = 
  resourcePropertyElt | 
  literalPropertyElt | 
  parseTypeLiteralPropertyElt |
  parseTypeResourcePropertyElt |
  parseTypeCollectionPropertyElt |
  parseTypeOtherPropertyElt |
  emptyPropertyElt

resourcePropertyElt = 
  element * - ( local:* | rdf:RDF | rdf:ID | rdf:about | rdf:parseType |
                rdf:resource | rdf:nodeID | rdf:datatype |
                rdf:Description | rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID |
                xml:* ) {
      idAttr?, xmllang?, xmlbase?, nodeElement
  }

literalPropertyElt =
  element * - ( local:* | rdf:RDF | rdf:ID | rdf:about | rdf:parseType |
                rdf:resource | rdf:nodeID | rdf:datatype |
                rdf:Description | rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID |                xml:* ) {
      (idAttr | datatypeAttr )?, xmllang?, xmlbase?, text 
  }

parseTypeLiteralPropertyElt = 
  element * - ( local:* | rdf:RDF | rdf:ID | rdf:about | rdf:parseType |
                rdf:resource | rdf:nodeID | rdf:datatype |
                rdf:Description | rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID |
                xml:* ) {
      idAttr?, parseLiteral, xmllang?, xmlbase?, literal 
  }

parseTypeResourcePropertyElt = 
  element * - ( local:* | rdf:RDF | rdf:ID | rdf:about | rdf:parseType |
                rdf:resource | rdf:nodeID | rdf:datatype |
                rdf:Description | rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID |
                xml:* ) {
      idAttr?, parseResource, xmllang?, xmlbase?, propertyEltList
  }

parseTypeCollectionPropertyElt = 
  element * - ( local:* | rdf:RDF | rdf:ID | rdf:about | rdf:parseType |
                rdf:resource | rdf:nodeID | rdf:datatype |
                rdf:Description | rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID |
                xml:* ) {
      idAttr?, xmllang?, xmlbase?, parseCollection, nodeElementList
  }

parseTypeOtherPropertyElt = 
  element * - ( local:* | rdf:RDF | rdf:ID | rdf:about | rdf:parseType |
                rdf:resource | rdf:nodeID | rdf:datatype |
                rdf:Description | rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID |
                xml:* ) {
      idAttr?, xmllang?, xmlbase?, parseOther, any
  }

emptyPropertyElt =
   element * - ( local:* | rdf:RDF | rdf:ID | rdf:about | rdf:parseType |
                 rdf:resource | rdf:nodeID | rdf:datatype |
                 rdf:Description | rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID |
                 xml:* ) {
       idAttr?, (resourceAttr | nodeIdAttr)?, xmllang?, xmlbase?, propertyAttr*
   }

idAttr = 
  attribute rdf:ID { 
      IDsymbol 
  }

nodeIdAttr = 
  attribute rdf:nodeID { 
      IDsymbol 
  }

aboutAttr = 
  attribute rdf:about { 
      URI-reference 
  }

propertyAttr = 
  attribute * - ( local:* | rdf:RDF | rdf:ID | rdf:about | rdf:parseType |
                  rdf:resource | rdf:nodeID | rdf:datatype | rdf:li |
                  rdf:Description | rdf:aboutEach |
		  rdf:aboutEachPrefix | rdf:bagID |
                  xml:* ) {
      string
  }

resourceAttr = 
  attribute rdf:resource {
      URI-reference 
  }

datatypeAttr = 
  attribute rdf:datatype {
      URI-reference 
  }

parseLiteral = 
  attribute rdf:parseType {
      "Literal" 
  }

parseResource = 
  attribute rdf:parseType {
      "Resource"
  }

parseCollection = 
  attribute rdf:parseType {
      "Collection"
  }

parseOther = 
  attribute rdf:parseType {
      text
  }

URI-reference = 
  string

literal =
  any

IDsymbol = 
  xsd:NMTOKEN

any =
  mixed { element * { attribute * { text }*, any }* }


B 2003年10月10日以後の改訂(参考情報)

2003年10月10日の第2次最終草案以後の変更

これは、編集上以外のものと編集上のものに分けられます。編集上以外の変更には、派生的な編集上の変更も記載しています。編集上の変更によって、RDFドキュメントの意味やRDFアプリケーションの動作が変ることはありません。

付録B.1: 編集上以外の改訂

なし

付録B.2: 編集上の改訂

ドイツ語訳
Benjamin Nowackによるコメントの後に、2.7項の例8のドイツ語を修正
rdf:parseType="Resource"におけるプロパティー属性の不使用
2.5 Sabadelloによる2003年10月30日のコメントで指摘されたように、プロパティー属性はrdf:parseType="Resource"とともには使用できないという構文定義を反映するために更新
URIコード化
6.1.6, 6.1.8, 6.1.9 Jeremy Carrolによる提案の後に
6.1.2, 6.1.4 要素/属性URI文字列アクセサを追加
7.2.11, 7.2.21 rdf:typeの事例の新しいURIイベントの使用を追加
7.2.11 (<e.URI>と<a.URI>)、7.2.15(<e.URI>)7.2.16(<e.URI>)7.2.17(<e.URI>)7.2.18(<e.URI>)7.2.19(<e.URI>2回)7.2.21(<e.URI>2回、<a.URI>1回)X.URIからX.URI-string-valueへ変更(ハードコード化されたURI参照なしに文法アクションが現れるいかなる場合でも)
7.2.32 アクションの語法を「RDF URI参照」に置き換え
Patel-Schneiderによる2003年10月29日のコメントの後に、2003年10月6日の提案に沿ってすべてを変更

付録B.3: ドキュメントの改訂を必要としない課題

なし


RDF/XML Metadata