要約

このドキュメントでは、RDF/XMLと呼ばれるRDF用のXML構文を、XMLの名前空間、XML情報セットおよびXMLベースに関して定義しています。

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

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

このドキュメントは、2004年のRDF XML構文仕様勧告を編集したバージョンです。この改訂の目的は、このドキュメントをRDF 1.1ドキュメント集合の一部として利用できるようにすることです。変更は、参考文献の改訂、用語の更新、「はじめに」の調節に限定されます。ドキュメントの技術的な内容は、RDF 1.1ではデータ型XMLLiiteralが非規範的であると示したという事実を除いて変わっていません。変更の詳細は、更新の項に記載しています。XML技術の現状に合わせるため、XMLLiteral解析のための(非規範的)アルゴリズム(7.2.17項)を更新しました。このドキュメントへの編集により以前の実装が無効とはならないため、管理者は、新たな実装報告書は必要ないと決定しました。

このドキュメントは、RDFワーキンググループによって勧告として発表されました。このドキュメントに関してコメントを行いたい場合には、public-rdf-comments@w3.org購読アーカイブ)にお送りください。どのようなコメントでも歓迎します。

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

このドキュメントは、2004年2月5日のW3C特許方針の下で活動しているグループによって作成されました。W3Cは、このグループの成果物に関連するあらゆる特許の開示の公開リストを維持し、このページには特許の開示に関する指示も含まれています。不可欠な請求権(Essential Claim(s))を含んでいると思われる特許に関して実際に知っている人は、W3C特許方針の6項に従って情報を開示しなければなりません。

目次

1. はじめに

このドキュメントでは、RDFグラフ用のXML[XML10]構文を定義しています。

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

このドキュメントは、一連のRDF 1.1ドキュメントの一部です。その一連のドキュメントに含まれているその他のドキュメントは次のとおりです。

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

2. RDFのXML構文

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

2.1 序論

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

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

QNameによって表現されたIRIは、QNameの名前空間名(IRI)部分の後に、QNameのローカル名部分を追加することによって定まります。これは、すべての述語と一部のノードのIRIを短縮化するために使用されます。主語ノードと目的語ノードを識別するIRIは、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グラフでは、ノードを楕円形で表してそれを持つIRIを含み、すべての述語アークをIRIでラベル付けし、文字列リテラルのノードを長方形で書いてあります。

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

One Path Through the Graph
2 グラフの1つのパス(SVGバージョン

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

  1. IRI http://www.w3.org/TR/rdf-syntax-grammarを持つノード
  2. IRI http://example.org/terms/editorでラベル付けされた述語Arc
  3. IRIを持たないノード
  4. IRI http://example.org/terms/homePageでラベル付けされた述語Arc
  5. IRI 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のグラフは、IRIであるいくつかのノード(および、その他のIRIではないもの)で構成され、ノード要素にrdf:about属性を使用してRDF/XMLにこれを追加すると例2になります。

例2
IRIを追加したノード要素

<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 1.1 XML Syntax</dc:title>
</rdf:Description>

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

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

例3を例に挙げると、複数のプロパティー要素をとることができる2つのノード要素があります。IRI 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 1.1 XML Syntax</dc:title>
</rdf:Description>

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

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

この例では、プロパティー要素ex:homePageには、IRI 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 1.1 XML Syntax</dc:title>
</rdf:Description>

2.5 プロパティー属性

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

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

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

例6
文字列リテラル・コンテンツを持つプロパティー要素のプロパティー属性への置き換え

<rdf:Description rdf:about="http://www.w3.org/TR/rdf-syntax-grammar"
           dc:title="RDF 1.1 XML Syntax">
  <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="RDF1.1 XML Syntax">
    <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 [XML10]の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 1.1 XML Syntax</dc:title>
    <dc:title xml:lang="en">RDF 1.1 XML Syntax</dc:title>
    <dc:title xml:lang="en-US">RDF 1.1 XML Syntax</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リテラル[RDF11-CONCEPTS]を述語の目的語ノードとして付与できます。これは、プロパティー要素(プロパティー属性ではなく)のコンテンツとしてRDF/XMLで記述され、包含するプロパティー要素においてrdf:parseType="Literal"属性を使用して示されます。

XMLリテラルの記述例を例9で示しており、ここには、主語ノードIRI http://example.org/item01、述語IRI 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では、型付きリテラルを述語の目的語ノードとして付与できます。型付きリテラルは、リテラルの文字列とデータ型IRIで構成されています。これは、プロパティー要素形式(プロパティー属性ではない)のリテラルの文字列ノードに対するものと同じ構文を使用してRDF/XMLで書かれていますが、プロパティー要素にrdf:datatype="datatypeURI"属性が追加使用されています。属性ではあらゆるIRIが使用できます。

RDFの型付きリテラルの例を例10で示しており、ここには、主語ノードIRI http://example.org/item01、述語IRI http://example.org/stuff/1.0/sizeex:sizeの)、XMLスキーマ [XMLSCHEMA-2]データ型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グラフの空白ノードは多様ですが、IRI識別子を持っていません。同じグラフの空白ノードを、いくつかのRDFトリプルの主語や述語などのような複数の場所のRDF/XMLで参照する必要があることもあります。この場合、それをドキュメントで識別するために、空白ノードに空白ノード識別子を付与できます。RDF/XMLの空白ノード識別子は、包含するXML情報セットの文書情報項目で詳述されています。空白ノード識別子は、ノード要素ではrdf:about="IRI"を、プロパティー要素ではrdf:resource="IRI"を、どちらの場合も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 1.1 XML Syntax">
    <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グラフの空白ノード(IRIノードではない)は、<rdf:Description> </rdf:Description>の対を省略した形式で記述できます。この省略は、プロパティー要素をプロパティーとノードの要素(property-and-node element)に変えるrdf:parseType="Resource"属性を、包含しているプロパティー要素に置くことで行われ、それ自身はプロパティー要素とプロパティー属性の両方を持つことができます。プロパティー属性とrdf:nodeID属性は、プロパティーとノードの要素(property-and-node)では許されていません。

以前の例7を例にとると、ex:editorプロパティー要素のコンテンツはこのような方法でも行うことができ、例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 1.1 XML Syntax">
    <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度現れ、IRI目的語ノードを持つ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 1.1 XML Syntax">
    <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ノード要素を、タイプ関係の値のIRIに対応する名前空間要素(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:ID and xml:base

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

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

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

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

例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:li and rdf:_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属性値に連結された相対IRI #から作成されたIRIとして構築されるべきで、スコープ内の基底URIに対して解決されます。そのため、例えば、rdf:ID="triple"である場合、基底URIに対する相対IRI #tripleから作成されたIRIと同等です。それぞれの(rdf:ID属性値、基底URI)の対は、RDF/XMLドキュメントで1つでなければなりません。constraint-idを参照してください。

例20では、rdf:IDが、具体化されたトリプルにIRI 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 [RFC2119]で記述されているように解釈されるべきです。

修飾がない文字列の使用はすべてUnicode[UNICODE]の文字列、つまり、Unicodeの区点位置で表される文字列を示します。

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

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

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

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

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

5. グローバルな問題

5.1 RDF名前空間と語彙

RDF名前空間IRI(または、名前空間名)は、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名前空間IRIであるXML名前空間の使用が許されています。

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

5.2 識別子

RDF概念ドキュメント[RDF11-CONCEPTS]は、ノードおよび/または述語として機能する、以下の3種類のRDFデータを定義しています。

IRI

IRIは、ノード(主語と目的語の両方)、および述語として機能することができます。

IRIsは、以下のいずれかでありえます。

  • スコープ内の基底URIに対して解決される相対IRIであると解釈されるXML属性値として付与し、5.3項で述べられているように絶対IRIを付与。
  • XMLの名前空間修飾要素(namespace-qualified element)や属性名(QName)から変換。
  • rdf:ID属性値から変換。

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

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

リテラル

リテラルは、目的語ノードとしてのみ機能することができます。

リテラルには常にデータ型があります。言語タグ付き文字列は、データ型rdf:langStringを持ちます。言語タグがなかったり、データ型が指定されていない場合には、リテラルはデータ型xsd:stringを持つと仮定されます。

空白ノード

空白ノードは、主語ノードおよび目的ノードとして機能することができます。

空白ノードは、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 IRIの解決

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

テスト: 下記で示されています。:
test001.rdftest001.nt
test004.rdftest004.nt
test008.rdftest008.nt

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

テスト: 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ドキュメントの[SAX] XML APIによって作成されるイベントのシーケンスと同じようなものにすることを意図しています。イベントの順序を文法と照合すれば、構文的に整形式のRDF/XMLかどうかを判断できます。

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

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

特に、

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

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

この仕様には、少なくとも以下の情報項目とRDF/XMLのプロパティーをサポートする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]

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

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

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

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

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

6.1 イベント

以下の小項目では、9種類のイベントを定義しています。ほとんどのイベントがInfoset情報項目(IRI空白ノードプレーン・リテラル型付きリテラルを除く)で構成されています。イベント・コンストラクタには、すべての他のイベントと異なる、固有のアイデンティティを持つ新しいイベントを作成するという効果があります。イベントにはアクセサの操作が備わっており、大部分は、静的な値か算出された文字列値(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]の値に設定。
parent
要素情報項目プロパティー[parent]の値に設定。
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アクセサのエスケープは、IRIにN-トリプル・エスケープ[[N_TRIPLES]]を使用します。

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

6.1.3 終了要素イベント

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

6.1.4 属性イベント

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

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

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

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

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

URI-string-value

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

URIアクセサのエスケープは、IRIにN-トリプル・エスケープ[N-TRIPLES]を使用します。

6.1.5 テキスト・イベント

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

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

6.1.6 IRIイベント

以下のアクセサを持っているIRIのイベント。

identifier
IRIとして使用される文字列値をとる。
string-value

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

identifierアクセサ値のエスケープは、IRIにN-トリプル・エスケープ[N-TRIPLES]を使用します。

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

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

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

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

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

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

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

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

RDF 1.1では、RDF/XMLのプレーン・リテラルは、データ型xsd:stringを持つリテラルに対する糖衣構文として扱われるか(言語タグが存在しないとき)、データ型rdf:langStringを備えたリテラルとして扱われます(言語タグが存在するとき)。この小項目で定義しているN-トリプルへのマッピングには、この変更による影響はありません。

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

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

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

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

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

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

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

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

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

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

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

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

literal-valueアクセサ値のエスケープは、"などの特定の文字をエスケープするために、文字列にN-トリプル・エスケープ[N-TRIPLES]を使用します。literal-datatypeアクセサ値のエスケープは、IRIにN-トリプル・エスケープ[N-TRIPLES]を使用しなければなりません。

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

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

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

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

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

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

6.3 文法表記法

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

number event-type event-content

action...

N-Triples

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

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

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の解決で定義されているように、文字列s6.1.2 要素イベントebase-uriアクセサに対する相対IRIとして解釈することで作成される文字列。その結果作成される文字列は、IRIを表現します。
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[XML10]定義空白規則[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 | datatypeAttr )?, 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 IRI。
7.2.33 literal 3.1 開始タグ、終了タグ、空要素タグの項の[XML10]定義要素のコンテンツ(Content of Elements)規則[43]コンテンツによって許されているXML要素コンテンツ。
7.2.34 rdf-id 正当な[XML-NAMES]トークン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 )

ノード要素で許されているIRI。

7.2.6 生成規則propertyElementURIs

anyURI - ( coreSyntaxTerms | rdf:Description | oldTerms )

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

7.2.7 生成規則propertyAttributeURIs

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

プロパティー属性で許されているIRI。

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

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

7.2.13 生成規則propertyEltList

ws* (propertyElt ws* ) *

7.2.14 生成規則propertyElt

要素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を処理しなければなりません。すると、以下のステートメントがグラフに追加されます。

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)であり、以下のステートメントがグラフに追加されます。

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-DATAMODEL-30]を構築します。
  2. xsd:string xを付与するためにこのシーケンスにhttp://www.w3.org/TR/xpath-functions-30/#func-serialize[XPATH-FUNCTIONS-30]を適用します。
  3. Unicodeの文字列xは、lの字句形式として使用されます。
  4. このUnicodeの文字列xは、正規形C[NFC]であるべきです(SHOULD)。

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

テスト: 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())です。

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

テスト: 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 <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 | datatypeAttr )?, 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 生成規則IRI

IRI。

7.2.33 生成規則literal

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

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

7.2.34 生成規則rdf-id

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

7.3 具体化規則

以下の、ある与えられたIRIイベント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に対し、新しいIRI u := concat("http://www.w3.org/1999/02/22-rdf-syntax-ns#_", e.li-counter)を作成し、e.li-counterプロパティーを1つ増やし、uを返します。

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

[RDF11-CONCEPTS]で定義されているように、RDF/XMLでシリアル化できないいくつかのRDFグラフがあります。これらは、以下に該当するものです。

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

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

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

この項は非規範的です。

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

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

A. 謝辞

この項は非規範的です。

Gavin Carothersは、生成規則parseTypeLiteralPropertyEltに関してRDF 1.1の更新を行いました。Ivan Hermanは、有益な指摘を行い、図1と図2を作り替えました。

この仕様は、RDFコア・ワーキンググループおよびRDFとRDFスキーマ・ワーキンググループのメンバーにより積み重ねられた議論の成果です。

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

このドキュメントは、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)です。

B. 2004年勧告以後の更新

この項は非規範的です。

RDF 1.1勧告に対する更新

RDF 1.1勧告編集案の更新

  1. ReSpecへの転換。
  2. RDF 2004の正誤表の処理
    1. XMLとUnicodeのバージョンに対するハードコードされた参考文献を置き換えた(背景情報)。
    2. 解決記号(e, s)を持つ解決アクションを修正した(背景情報)。
    3. 要素イベントに親アクセサーを追加した(背景情報)。
    4. データ型付きの空のリテラルを可能とした(背景情報)。
    5. リテラルのプロパティーにおけるIDとデータ型の排他性を削除した(背景情報)。
  3. RDF 1.1を反映するため、「はじめに」を調節して短縮した。
  4. RDF 1.1ドキュメントへの参考文献を更新した。
  5. 「(RDF)URI参照」を「IRI」に置き換えた。
  6. HTMLへのRDF/XMLの埋め込みに関する項を削除した。
  7. 他のRDF 1.1ドキュメントのタイトルと合わせるため、タイトルから「仕様」を削除した。
  8. 他のドキュメントへの参考文献を更新した。
  9. 2項の例のリンクを相対URIから絶対URIに変更した。付録のRELAXスキーマも同様。
  10. プレーン・リテラルのイベントに関する項に注を追加した。
  11. XML-NAMESのQName定義へのリンクを更新した。
  12. 2004年勧告との差分を追加した。
  13. rdf:XMLLiteralに関する項(2.8項7.2.17項)を非規範であると示した。
  14. rdf:XMLLiteralの非規範なステータスに対応するように生成規則parseTypeLiteralPropertyEltを適合させた。
  15. 図1と図2(同じ内容)を改良版にした。
  16. 古い更新の項を削除した。
  17. 適切でなくなったため、5.1項の冒頭の参考情報の注を削除した。
  18. 新たなデータ型rdf:HTMLをRDF/XMLでシリアル化できないもののリストに追加した。
  19. 2004年のN-トリプルnodeID生成規則へのリンクを、RDF 1.1 N-トリプルBLANK_NODE_LABEL生成規則に置き換えた。

C. 構文スキーマ

この項は非規範的です。

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

C.1 RELAX NGコンパクト・スキーマ

この項は非規範的です。

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

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

        #
        # 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 | datatypeAttr )?, 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 }* }
        

D. 参考文献

D.1 規範的な参考文献

[JSON-LD]
Manu Sporny, Gregg Kellogg, Markus Lanthaler, Editors. JSON-LD 1.0. 16 January 2014. W3C Recommendation. URL: http://www.w3.org/TR/json-ld/
[N-TRIPLES]
Gavin Carothers, Andy Seabourne. RDF 1.1 N-Triples. W3C Recommendation, 25 February 2014. URL: http://www.w3.org/TR/2014/REC-n-triples-20140225/. The latest edition is available at http://www.w3.org/TR/n-triples/
[RDF11-CONCEPTS]
Richard Cyganiak, David Wood, Markus Lanthaler. RDF 1.1 Concepts and Abstract Syntax. W3C Recommendation, 25 February 2014. URL: http://www.w3.org/TR/2014/REC-rdf11-concepts-20140225/. The latest edition is available at http://www.w3.org/TR/rdf11-concepts/
[RDF11-MT]
Patrick J. Hayes, Peter F. Patel-Schneider. RDF 1.1 Semantics. W3C Recommendation, 25 February 2014. URL: http://www.w3.org/TR/2014/REC-rdf11-mt-20140225/. The latest edition is available at http://www.w3.org/TR/rdf11-mt/
[RDF11-SCHEMA]
Dan Brickley, R. V. Guha. RDF Schema 1.1. W3C Recommendation, 25 February 2014. URL: http://www.w3.org/TR/2014/REC-rdf-schema-20140225/. The latest published version is available at http://www.w3.org/TR/rdf-schema/.
[RDFA-PRIMER]
Ivan Herman; Ben Adida; Manu Sporny; Mark Birbeck. RDFa 1.1 Primer - Second Edition. 22 August 2013. W3C Note. URL: http://www.w3.org/TR/rdfa-primer/
[RFC3023]
M. Murata; S. St.Laurent; D. Kohn. XML Media Types (RFC 3023). January 2001. RFC. URL: http://www.ietf.org/rfc/rfc3023.txt
[TRIG]
Gavin Carothers, Andy Seaborne. TriG: RDF Dataset Language. W3C Recommendation, 25 February 2014. URL: http://www.w3.org/TR/2014/REC-trig-20140225/. The latest edition is available at http://www.w3.org/TR/trig/
[TURTLE]
Eric Prud'hommeaux, Gavin Carothers. RDF 1.1 Turtle: Terse RDF Triple Language. W3C Recommendation, 25 February 2014. URL: http://www.w3.org/TR/2014/REC-turtle-20140225/. The latest edition is available at http://www.w3.org/TR/turtle/
[XML-INFOSET]
John Cowan; Richard Tobin. XML Information Set (Second Edition). 4 February 2004. W3C Recommendation. URL: http://www.w3.org/TR/xml-infoset
[XML-NAMES]
Tim Bray; Dave Hollander; Andrew Layman; Richard Tobin; Henry Thompson et al. Namespaces in XML 1.0 (Third Edition). 8 December 2009. W3C Recommendation. URL: http://www.w3.org/TR/xml-names
[XML10]
Tim Bray; Jean Paoli; Michael Sperberg-McQueen; Eve Maler; Francois Yergeau et al. Extensible Markup Language (XML) 1.0 (Fifth Edition). 26 November 2008. W3C Recommendation. URL: http://www.w3.org/TR/xml
[XMLSCHEMA-2]
Paul V. Biron; Ashok Malhotra. XML Schema Part 2: Datatypes Second Edition. 28 October 2004. W3C Recommendation. URL: http://www.w3.org/TR/xmlschema-2/

D.2 参考情報の参考文献

[CHARMOD]
Martin Durst; Francois Yergeau; Richard Ishida; Misha Wolf; Tex Texin et al. Character Model for the World Wide Web 1.0: Fundamentals. 15 February 2005. W3C Recommendation. URL: http://www.w3.org/TR/charmod/
[IANA-MEDIA-TYPES]
MIME Media Types. The Internet Assigned Numbers Authority (IANA). The registration for application/rdf+xml is archived at http://www.w3.org/2001/sw/RDFCore/mediatype-registration.
[NFC]
M. Davis, Ken Whistler. TR15, Unicode Normalization Forms.. 17 September 2010, URL: http://www.unicode.org/reports/tr15/
[RDFMS]
Ora Lassila; Ralph R. Swick. Resource Description Framework (RDF) Model and Syntax Specification. 22 February 1999. W3C Recommendation. URL: http://www.w3.org/TR/1999/REC-rdf-syntax-19990222.
[RELAXNG]
James Clark and Murata Makoto, editors. RELAX NG Specification. OASIS Committee Specification, 3 December 2001. Latest version: http://www.oasis-open.org/committees/relax-ng/spec.html.
[RELAXNG-COMPACT]
James Clark, editor. RELAX NG Compact Syntax. OASIS Committee Specification, 21 November 2002. URI: http://www.oasis-open.org/committees/relax-ng/compact-20021121.html.
[RFC2119]
S. Bradner. Key words for use in RFCs to Indicate Requirement Levels. March 1997. Internet RFC 2119. URL: http://www.ietf.org/rfc/rfc2119.txt
[RFC3986]
T. Berners-Lee; R. Fielding; L. Masinter. Uniform Resource Identifier (URI): Generic Syntax (RFC 3986). January 2005. RFC. URL: http://www.ietf.org/rfc/rfc3986.txt
[SAX]
D. Megginson, et al. SAX: The Simple API for XML. May 1998. URL: http://www.megginson.com/downloads/SAX/
[STRIPEDRDF]
D. Brickley. RDF: Understanding the Striped RDF/XML Syntax. W3C, 2001. URI: http://www.w3.org/2001/10/stripes/.
[SVG10]
Jon Ferraiolo. Scalable Vector Graphics (SVG) 1.0 Specification. 4 September 2001. W3C Recommendation. URL: http://www.w3.org/TR/SVG/
[SVG11]
Erik Dahlstrom; Patrick Dengler; Anthony Grasso; Chris Lilley; Cameron McCormack; Doug Schepers; Jonathan Watt; Jon Ferraiolo; Jun Fujisawa; Dean Jackson et al. Scalable Vector Graphics (SVG) 1.1 (Second Edition). 16 August 2011. W3C Recommendation. URL: http://www.w3.org/TR/SVG11/
[UNICODE]
The Unicode Standard. URL: http://www.unicode.org/versions/latest/
[XMLBASE]
Jonathan Marsh; Richard Tobin. XML Base (Second Edition). 28 January 2009. W3C Recommendation. URL: http://www.w3.org/TR/xmlbase/
[XMLSCHEMA-1]
Henry Thompson; David Beech; Murray Maloney; Noah Mendelsohn et al. XML Schema Part 1: Structures Second Edition. 28 October 2004. W3C Recommendation. URL: http://www.w3.org/TR/xmlschema-1/
[XPATH]
James Clark; Steven DeRose. XML Path Language (XPath) Version 1.0. 16 November 1999. W3C Recommendation. URL: http://www.w3.org/TR/xpath
[XPATH-DATAMODEL-30]
Norman Walsh; Anders Berglund; John Snelson. XQuery and XPath Data Model 3.0. 22 October 2013. W3C Proposed Recommendation. URL: http://www.w3.org/TR/xpath-datamodel-30/
[XPATH-FUNCTIONS-30]
Michael Kay. XPath and XQuery Functions and Operators 3.0. 22 October 2013. W3C Proposed Recommendation. URL: http://www.w3.org/TR/xpath-functions-30/