【注意】 このドキュメントは、W3CのRDF/XML Syntax Specification (Revised) W3C Recommendation 10 February 2004の和訳です。
このドキュメントの正式版はW3Cのサイト上にある英語版であり、このドキュメントには翻訳に起因する誤りがありえます。誤訳、誤植などのご指摘は、訳者までお願い致します。
First Update: 2005年11月13日
このドキュメントに対する正誤表を参照してください。いくつかの規範的な修正が含まれているかもしれません。
翻訳版も参照してください。
Copyright © 2004 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C liability, trademark, document use and software licensing rules apply.
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:ID
とxml:base
2.15 コンテナ・メンバーシップ・プロパティー要素: rdf:li
とrdf:_
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日以後の改訂(参考情報)
このドキュメントでは、元々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]を参照してください。
この項では、RDF/XML構文を紹介し、RDF/XML構文によるRDFグラフのコード化方法を記述し、例を使用してこれを解説しています。この非形式的な記述と、6 構文データ・モデルや7 RDF/XML文法の項の構文や文法の形式的な記述との間に矛盾がある場合は、後者の2つの項が優先します。
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ドキュメントです。
RDFグラフを図1で示しています。このRDFグラフでは、ノードを楕円形で表してそれを持つRDF URI参照を含み、すべての述語アークをRDF URI参照でラベル付けし、プレーン・リテラルのノードを長方形で書いてあります。
1つのノード、述語アーク ... と辿って行けば、グラフのノード・パスは図2のようになります。
図2のグラフの左側は、以下のノード/述語アークのストライプに対応しています。
http://www.w3.org/TR/rdf-syntax-grammar
を持つノードhttp://example.org/terms/editor
でラベル付けされた述語Archttp://example.org/terms/homePage
でラベル付けされた述語Archttp://purl.org/net/dajobe/
を持つノードRDF/XMLでは、図2の左側の5つのノードと述語アークのシーケンスは、グラフのノードと述語アークに対する、2種類の5つのXML要素の使用に対応しています。これらは、慣習的にそれぞれノード要素とプロパティー要素と呼ばれます。例1のストライピングでは、rdf:Description
はノード要素(3つのノードで3回使用)で、ex:editor
とex:homePage
は2つのプロパティー要素です。
<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になります。
<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を参照。)
<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>
共通する部分をより簡単に記述するために使用できる省略形がいくつかあります。特に、RDFグラフの主語ノードは、一般的に複数の外向きの述語アークを持っています。資源に関するノード要素が複数のプロパティー要素を持つ場合には、RDF/XMLでは対応する構文に省略形を提供します。これは、主語ノードを記述しているノード要素内で複数の子プロパティー要素を使用して省略形にできます。
例3を例に挙げると、複数のプロパティー要素をとることができる2つのノード要素があります。URI参照http://www.w3.org/TR/rdf-syntax-grammar
を持つ主語ノードはプロパティー要素ex:editor
とex:title
を持ち、空白ノードのノード要素はex:homePage
とex:fullName
をとることができます。この省略形によって、例4で示している結果になります(この例は、1つの空白ノードがあることを示しています)。
<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>
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で示しているような空白プロパティー要素の形式に置き換えることができます。
<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>
プロパティー要素のコンテンツが文字列リテラルである場合には、これを包含しているノード要素のXML属性として使用できるかもしれません。これは、プロパティーの要素名が繰り返されず(XMLで要求される — XML要素には属性名は1つのみ)、プロパティー要素の文字列リテラル(もしあれば)のスコープ内のxml:lang
が同じである場合にのみ、同じノード要素の複数のプロパティーに対して可能となります(2.7項を参照)。この省略形は、プロパティー属性として知られており、あらゆるノード要素に適用できます。
この省略形は、プロパティー要素がrdf:type
であり、その値がRDF URI参照の目的語ノードとして解釈されるrdf:resource
属性を持っている場合にも使用できます。
例5には、文字列リテラル・コンテンツを持つ、dc:title
とex:fullName
プロパティー要素という2つのプロパティー要素があります。これらは、例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>
完全な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表現になります。
<?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つのみ存在するため、上記例7のrdf:RDF
を省略できますが、これはここでは示していません。
xml:lang
RDF/XMLでは、コンテンツの言語の識別が可能になるように、XML 1.0 [XML]の2.12 言語識別で定義されているようなxml:lang
属性の使用が許されています。xml:lang
属性は、あらゆるノード要素やプロパティー要素で使用でき、含まれているコンテンツがその言語であることを示せます。XMLリテラルを含んでいる型付きリテラルは、この属性に影響されません。この現在最も特定的なスコープ内の言語(もしあれば)は、文字列リテラル・コンテンツやプロパティー属性値に適用されます。xml:lang=""
の形式は、言語識別子の欠如を示します。
RDFプロパティーのコンテンツの言語をマークアップするいくつかの例を例8で示しています。
<?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>
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/prop
(ex:prop
の)、a:Box
で始まるXMLリテラル・コンテンツを持つ目的語ノードを持つ1つのRDFがあります。
<?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>
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/size
(ex:size
の)、W3C XMLスキーマ [XML-SCHEMA2]データ型intとして解釈される型付きリテラル(「123」、http://www.w3.org/2001/XMLSchema#int
)を持つ目的語ノードを持つ1つのRDFトリプルがあります。
<?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>
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
プロパティー要素が空白ノードに関するものです。
<?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>
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で示している形式になります。
<?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>
空白ノード要素のすべてのプロパティー要素が、同じスコープ内のxml:lang
値(存在していれば)を持つ文字列リテラル値を持っており、これらのプロパティー要素のそれぞれが高々1度現れ、RDF URI参照目的語ノードを持つrdf:type
プロパティー要素が高々1つ存在する場合、これらは、これらを移動し、空白要素になった包含するプロパティー要素のプロパティー属性にすることで省略形にできます。
以前の例5を例にとると、ex:editor
プロパティー要素には、2つのプロパティー要素ex:fullname
とex:homePage
を持つ空白ノード要素が含まれています。ex:homePage
は、文字列リテラル値を持っていないため、ここでは適合せず、そのため、この例の目的により無視しています。省略形は、ex:fullName
プロパティー要素を削除し、この削除したプロパティー要素の文字列リテラル値を持つ新しいプロパティー属性ex:fullName
をex:editor
プロパティー要素に追加します。空白ノード要素は、現在空白のex:editor
プロパティー要素で暗黙的になります。この結果は、例13で示しています。
<?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>
RDFグラフが主語ノードに属するrdf:type
述語を持っていることは普通です。これは慣習的に、グラフでは型付きノードと呼び、RDF/XMLでは型付きノード要素と呼びます。RDF/XMLでは、rdf:Description
ノード要素を、タイプ関係の値のRDF URI参照に対応する名前空間要素(namespaced-element)に置き換えることによって、このトリプルをより簡潔に表現できます。もちろん、複数のrdf:type
述語が存在しえますが、この方法では1つしか使用できず、他はプロパティー要素かプロパティー属性のままでなければなりません。
型付きノード要素は、RDF語彙の組み込みクラスを持つRDF/XMLで一般に使用されます:rdf:Seq
、rdf:Bag
、rdf:Alt
、rdf:Statement
、rdf:Property
、rdf:List
。
例えば、例14のRDF/XMLは例15のように記述できます。
<?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>
<?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>
rdf:ID
とxml:base
RDF/XMLでは、さらに2つの方法でXML属性のRDF URI参照を省略化できます。XML Infosetは、相対RDF URI参照を解決するために基底URIを定めた基底URI属性xml:base
を提供しますが、そうでない場合には基底URIはドキュメントのものです。基底URIは、rdf:about
、rdf:resource
、rdf:ID
、rdf: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:base
とrdf: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参照です。
<?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>
rdf:li
とrdf:_
nRDFには、型付きノード要素として記述できるrdf:Seq
クラス、rdf:Bag
クラス、rdf:Alt
クラスのインスタンスと一緒に通常用いられる、コンテナ・メンバーシップ・プロパティーと対応するプロパティー要素とのまとまりがあります。リスト・プロパティーは、rdf:_1
、rdf:_2
などで、例17で示しているプロパティー要素やプロパティー属性として記述できます。rdf:_1
、rdf:_2
の順序のものと同等なrdf:li
という特別なプロパティー要素があり、7.4項で詳細を説明しています。コンテナ・メンバーシップ・プロパティーへのマッピングは、常にrdf:li
という特別なプロパティー要素がXMLに出現する順序で行われます — ドキュメントの順序は重要です。この方法で記述した、例17と同等なRDF/XMLを例18で示しています。
<?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>
<?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>
rdf:parseType="Collection"
RDF/XMLでは、プロパティー要素でにおいてrdf:parseType="Collection"
属性を使用して複数のノード要素を含むことができます。これらの含まれたノード要素は、コレクションの主語ノードの集合を示します。この構文形式は、主語ノードのコレクションをつなげた1組のトリプルに対応しており、生成された厳密なトリプルに関しては、7.2.19項 生成規則parseTypeCollectionPropertyEltで詳細に説明しています。コレクションは常に、ノード要素がXMLドキュメントで出現する順序で構築されます。ノードのコレクションの順序が重要かどうかは、アプリケーションの問題であるため、ここでは定義していません。
例19では、この形式を使用して、ex:hasFruit
プロパティー要素の終わりに3つのノード要素のコレクションを示しています。
<?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>
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
プロパティー要素から作成されたトリプルを具体化するために使用されていることを示しています。
<?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>
このドキュメントの「しなければならない(MUST)」「してはならない(MUST NOT)」「必須である/要求される(REQUIRED)」「することになる(SHALL)」「することはない(SHALL NOT)」「すべきである/する必要がある(SHOULD)」「すべきでない/する必要がない(SHOULD NOT)」「推奨される(RECOMMENDED)」「することができる/してもよい(MAY)」「選択できる/任意である(OPTIONAL)」というキーワードは、RFC 2119 [KEYWORDS]で記述されているように解釈されるべきです。
修飾がない文字列の使用はすべてUnicode[UNICODE]の文字列、つまり、Unicodeの区点位置で表される文字列を示します。(3.4 文字列の項の[CHARMOD]で定義されているように)。
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文字目に空白文字)が付与されていることが推奨されます。
注意(参考情報): aboutEach
とaboutEachPrefix
の名前は、RDFコア・ワーキンググループによって言語とRDF語彙から削除されました。詳細に関しては、rdfms-abouteachとrdfms-abouteachprefixの問題の解決を参照してください。
注意(参考情報): 名前List
、first
、rest
、nil
は、rdfms-seq-representationの問題に加えられました。名前XMLLiteral
とdatatype
は、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
を持っています。
RDFグラフ(RDF概念および抽象構文の3項)は、以下の3種類のノードと1種類の述語を定義しています。
RDF URI参照(RDF概念および抽象構文の3.1項)は、以下のいずれかでありえます。
rdf:ID
属性値から変換。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ドキュメントでそのマッピングを実行することです。
RDF/XMLは、・root event・と・element 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.rdfとtest001.ntで示されています。
テスト: test004.rdfとtest004.ntで示されています。
テスト: test008.rdfとtest008.ntで示されています。
テスト: test013.rdfとtest013.ntで示されています。
テスト: test016.rdfとtest016.ntで示されています。
空の同じドキュメントの参照、""は、基底URIのURI部分に対して解決し、フラグメント部分は無視されます。URI(Uniform Resource Identifier)[URIS]の4.2項を参照してください。
テスト: test013.rdfとtest013.ntで示されています。
実装注意(参考情報): パス要素(/)がない階層的な基底URIを使用する際には、解決のために基底URIを使用する前にこれを追加しなければなりません。
テスト: test011.rdfとtest011.ntで示されています。
生成規則idAttrの各アプリケーションは、属性と一致します。一致した属性の・string-value・アクセサと、一致した属性の・base-uri・アクセサによって形成される対は、1つのRDF/XMLドキュメント内に1つしか存在しません。
この名前の構文は、rdf-id生成規則と一致しなければなりません。
テスト: test014.rdfとtest014.ntで示されています。
このドキュメントでは、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]が必要です。
以下の項目のデータ・モデルイ・ベントへのマッピングは存在していません。
他の情報項目とプロパティーには、構文データ・モデル・イベントへのマッピングがありません。
予約済みのXML名(XML 1.0の名前を参照)を持つ要素情報の項目は、データ・モデル要素イベントにマッピングされません。これは、xml
(大文字と小文字を区別しない比較)で始まるプロパティー[prefix]を持つものすべてであり、値を持たない[prefix]プロパティーを持つもので、xml
(大文字と小文字を区別しない比較)で始まる[local name]を持つものすべてです。
parseTypeLiteralPropertyElt生成規則と一致するXML要素内に含まているすべての情報項目はXMLリテラルを形成し、このマッピングに従いません。詳細に関しては、parseTypeLiteralPropertyEltを参照してください。
この項は、[INFOSET]仕様の適合性の要件を満たすことを目的としています。ここでは、この仕様を実装するために必要な情報項目とプロパティーを明記しています。
以下の小項目では、9種類のイベントを定義しています。ほとんどのイベントがInfoset情報項目(URI参照、空白ノード、プレーン・リテラル、型付きリテラルを除く)で構成されています。イベント・コンストラクタには、すべての他のイベントと異なる、固有のアイデンティティを持つ新しいイベントを作成するという効果があります。イベントにはアクセサの操作が備わっており、大部分は、静的な値か算出された文字列値(string-value)のアクセサを持っています。
ドキュメント情報項目から構築され、以下のアクセサと値をとります。
要素情報項目から構築され、以下のアクセサと値をとります。
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・アクセサのエスケープは、3.3 URI参照で述べたように、URI参照にN-トリプル・エスケープを使用します。
アクセサがありません。その順序の包含要素の終了を示します。
属性情報項目から構築され、以下のアクセサと値をとります。
・namespace-name・が存在する場合、・namespace-name・アクセサの値と、・local-name・アクセサの値を連結した文字列値に設定します。そうでない場合には、・local-name・が、ID
やabout
、resource
、parseType
、type
である場合、・RDF namespace URI reference・と・local-name・アクセサの値を結合した文字列値に設定します。他の非名前空間・local-name・アクセサ値は禁じられています。
限られた集合の非名前空間名のサポートが必要で(REQUIRED)、[RDF-MS]で指定されているRDF/XMLドキュメントが有効なままでありえるようにすることを目的としています。つまり、新しいドキュメントはこれらの修飾のない属性を使用べきではなく(SHOULD NOT)、アプリケーションは修飾のない形式がドキュメントにある時に警告することを選択できます(MAY)。
XML属性のRDF URI参照の構築により、異なるXML属性の同じRDF URI参照を生成できます。これによって、属性イベントを一致させる際に、文法があいまいになる可能性があります(rdf:about
とabout
の両方のXML属性が存在しているときなどに)。これがあるドキュメントは、不正です。
値は、「<」、・URI・アクセサのエスケープされた値、・URI・アクセサ、「>」を、この順で連結させたものです。
・URI・アクセサのエスケープは、3.3 URI参照で述べたように、URI参照にN-トリプル・エスケープを使用します。
一連の1つ以上の文字情報項目のシーケンスから構築されます。1つのアクセサを持っています。
以下のアクセサを持っているRDF URI参照のイベント。
値は、「<」、・identifier・アクセサのエスケープされた値、「>」を連結したものです。
・identifier・アクセサ値のエスケープは、3.3 URI参照で述べたように、URI参照にN-トリプル・エスケープを使用します。
これらのイベントは、・identifier・アクセサに値を与えることによって構築されます。
RDFグラフの識別子の詳細に関しては、5.2項を参照してください。
以下のアクセサを持っている空白ノード識別子のイベント。
これらのイベントは、・identifier・アクセサに値を与えることによって構築されます。
RDFグラフの識別子の詳細に関しては、5.2項を参照してください。
以下のアクセサを持つことができるプレーン・リテラルのイベント。
値は以下の他のアクセサから計算されます。
・literal-language・が空の文字列である場合、値は、「"」(1つのダブル引用符)、・literal-value・アクセサのエスケープされた値、「"」(1つのダブル引用符)を連結したものです。
そうでない場合には、値は、「"」(1つのダブル引用符)、・literal-value・アクセサのエスケープされた値、「"@」(1つのダブル引用符と「@」)、・literal-language・アクセサの値を連結したものです。
・literal-value・アクセサ値のエスケープは、3.2 文字列で述べたように、"などの特定の文字をエスケープするために文字列にN-トリプル・エスケープを使用します。
これらのイベントは、・literal-value・と・literal-language・アクセサの値を与えることによって構築されます。
相互運用性注記(参考情報): Unicodeの結合文字で始まるリテラルは、相互運用性の問題を引き起こすかもしれませんが、許されています。詳細に関しては、[CHARMOD]を参照してください。
以下のアクセサを持つことができる型付きリテラルのイベント
値は、「"」(1つのダブル引用符)、・literal-value・アクセサのエスケープされた値、「"」(1つのダブル引用符)、「^^<」、・literal-datatype・アクセサのエスケープされた値、「>」を、この順序で連結したものです。
・literal-value・アクセサ値のエスケープは、3.2 文字列で述べたように、"などの特定の文字をエスケープするために、文字列にN-トリプル・エスケープを使用します。・literal-datatype・アクセサ値のエスケープは、3.3 URI参照で述べたように、URI参照にN-トリプル・エスケープを使用しなければなりません。
これらのイベントは、・literal-value・と・literal-datatype・のアクセサに値を与えることによって構築されます。
相互運用性注記(参考情報): Unicodeの結合文字で始まるリテラルは、相互運用性の問題を引き起こすかもしれませんが、許されています。詳細に関しては、[CHARMOD]を参照してください。
実装注記(参考情報): XMLスキーマ(パート1)[XML-SCHEMA1]では、空白(white space)の正規化は、whiteSpace相(facet)の値による妥当性検証の間に起こります。このドキュメントで使用される構文マッピングはこの後に起こるため、whiteSpace相には形式的にはそれ以上の効果はありません。
Infosetをドキュメント順でイベントのシーケンスに変換するためには、各情報項目を上記で述べたように変換して、アクセサと値でイベントのツリー(tree)を生成します。その後に、以下で述べるように各要素イベントを置き換え、イベントのツリーをドキュメント順のシーケンスに変えます。
以下の表記法は、6項で示したようなデータ・モデル・イベントのシーケンスの一致と、この一致のために実行するアクションを記述するために使用します。RDF/XML文法は、これらの一致したデータ・モデル・イベントからトリプルへのマッピングに関して、以下の形式の表記法を使用して定義されます。
number event-type event-content
action...
このとき、イベント・コンテンツは、イベント・タイプ(6.1項で定義されているように)に一致している表現で、以下の項で示された表記法を使用しています。数は参考のために使用しています。アクションという文法には、N-トリプル形式で記述された、グラフに対する新しいトリプルの生成が含まれています。
以下の項では、使用している一般的な表記法と、イベントの一致とアクションの表記法について記述しています。
表記 | 意味 |
---|---|
event.accessor | イベント・アクセサの値。 |
rdf: X |
5.1項で定義されているようなURI。 |
"ABC" | A、B、Cの順の文字列。 |
表記 | 意味 |
---|---|
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() | テキスト・イベントに一致。 |
表記 | 意味 |
---|---|
A := B | Aを値Bに割り当てる。 |
concat(A, B, ..) | 用語を順番に連結することによって作成された文字列。 |
resolve(e, s) | 5.3項 URIの解決で定義されているように、文字列sをeの・base-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, ...) | 新しい型付きリテラル・イベントを作成。 |
RDF/XMLが独立型のXMLドキュメント(application/rdf+xml RDF MIMEタイプオブジェクトとしての表現やその他の手段で識別される)である場合、文法は生成規則docや生成規則nodeElementで開始できます。
RDF/XMLが他のXMLコンテンツに組み込まれているときなどの、文脈によってコンテンツがRDF/XMLであると判明している場合には、要素イベント RDF(要素がその時点でXMLにおいて正当であるときにのみ)において、または、生成規則nodeElementList(これは要素のリストであるため、要素コンテンツが正当であるときにのみ)において文法を開始できます。このような組み込みRDF/XMLには、ルート・イベントは利用できないため、最外部要素の・base-uri・値を、包含するXMLから初期化しなければなりません。このような組み込みが行われた場合、文法を何度か入力できますが、状態は保存されそうにないということに注意してください。
rdf:RDF
| rdf:ID
| rdf:about
| rdf:parseType
| rdf:resource
| rdf:nodeID
| rdf:datatype
RDF/XMLで使用される5.1項のRDF語彙の構文用語のサブセット。
coreSyntaxTerms | rdf:Description
| rdf:li
RDF/XMLで使用される5.1項のRDF語彙のすべての構文用語。
rdf:aboutEach
| rdf:aboutEachPrefix
| rdf:bagID
これらは言語から抜き出したRDF語彙の名前です。詳細に関しては、問題rdfms-aboutEach-on-object、問題rdfms-abouteachprefix、最終草案問題timbl-01の解決を参照してください。
エラー・テスト: error001.rdfとerror002.rdfで示されています。
anyURI - ( coreSyntaxTerms | rdf:li
| oldTerms )
ノード要素で許されているRDF URI参照。
anyURI - ( coreSyntaxTerms | rdf:Description
| oldTerms )
プロパティー要素で許されているURI。
anyURI - ( coreSyntaxTerms | rdf:Description
| rdf:li
| oldTerms )
プロパティー属性で許されているRDF URI参照。
root(document-element == RDF,
children == list(RDF))
start-element(URI == rdf:RDF
,
attributes == set())
nodeElementList
end-element()
ws* (nodeElement ws* )*
start-element(URI == nodeElementURIs
attributes == set((idAttr | nodeIdAttr | aboutAttr?)?, propertyAttr*))
propertyEltList
end-element()
ノード要素eに関しては、子イベントやその他の属性の処理などの他の作業の前に、いくつかの属性の処理を行わなければなりません。これらは、順不同で処理できます。
rdf:ID
を持つ属性aがある場合、e.subject := uri(identifier := resolve(e, concat("#", a.string-value)))です。rdf:nodeID
を持つ属性aがある場合、e.subject := bnodeid(identifier:=a.string-value)です。rdf:about
を持つ属性aがある場合、e.subject := uri(identifier := resolve(e, a.string-value))です。e.subjectが空である場合、e.subject := bnodeid(identifier := generated-blank-node-id())です。
次に、以下を順不同で実行できます。
rdf:Description
である場合、以下のステートメントがグラフに追加されます。
e.subject.string-value <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> e.URI-string-value .
rdf:type
を持つpropertyAttrに属性aがある場合、
u:=uri(identifier:=resolve(a.string-value))であり、以下のトリプルがグラフに追加されます。
e.subject.string-value <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> u.string-value .
rdf:type
ではなく)と一致する属性aに対し、Unicode文字列a.string-valueは正規形C[NFC]であるべきで(SHOULD)、o := literal(literal-value := a.string-value, literal-language := e.language)であり、以下のステートメントがグラフに追加されます。
ws* (propertyElt ws* ) *
要素eにe.URI = rdf:li
がある場合、7.4項の要素e.parentにリスト拡張規則を適用し、新しいURI uとe.URI := uを付与します。
サブマッチ(resourcePropertyElt ... emptyPropertyElt)のアクションの前に、この生成規則のアクションを行わなければなりません。そうでない場合は、すべてのサブマッチのうちの最初の動作として実行するなどように、その結果は、まるでこのアクションが最初に実行されたかのようでなければなりません。
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)))で具体化されます。
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)))で具体化されます。
start-element(URI == propertyElementURIs ),
attributes == set(idAttr?, parseLiteral))
literal
end-element()
要素eとrdf:parseType="Literal"
コンテンツであるリテラルlに関して。lは、構文データ・モデル・マッピングによってイベントに変換されずに(6 構文データ・モデルで述べたように)XML情報項目のXML Infosetのままです。
lは、以下のアルゴリズムによって、RDFグラフx(Unicodeの文字列)におけるXMLリテラルの字句形式に変換されます。これは、実装方法を強いません — 同じ結果が得られる他の方法を使用できます。
そうすれば、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.rdfとtest009.ntで示されている空のリテラルの事例
rdf:ID
属性aが与えられた場合、上記のステートメントは、7.3項の具体化規則とe.subject := iを使用して、i := uri(identifier := resolve(e, concat("#", a.string-value)))で具体化されます。
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.rdfとtest004.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を使用して、結果として作成されたシーケンスを処理します。
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())であり、sにnを追加して、イベントのシーケンスを付与します。
sが空でない場合、nはsの最初のイベント識別子であり、以下のステートメントがグラフに追加されます。
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が空でない場合、nがsの最後のイベント識別子で、以下のステートメントがグラフに追加されます。
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> .
start-element(URI == propertyElementURIs ),
attributes == set(idAttr?, parseOther))
propertyEltList
end-element()
文字列「Resource」「Literal」「Collection」以外のすべてのrdf:parseType
属性値は、その値が「Literal」であるかのように扱われます。この生成規則は、生成規則parseTypeLiteralPropertyEltが一致したかのように一致し、動作します。他のrdf:parseType
値に対しては、余分なトリプルは作成されません。
start-element(URI == propertyElementURIs ),
attributes == set(idAttr?, ( resourceAttr | nodeIdAttr )?, propertyAttr*))
end-element()
属性がない場合、または、オプションのrdf:ID
属性iのみがある場合、o := literal(literal-value:="", literal-language := e.language)であり、以下のステートメントがグラフに追加されます。
e.parent.subject.string-value e.URI-string-value o.string-value .
そして、iが与えられた場合、上記のステートメントは、7.3項の具体化規則を使用して、uri(identifier := resolve(e, concat("#", i.string-value)))で具体化されます。
テスト: test002.rdfとtest002.ntで示されています。
テスト: test005.rdfとtest005.ntで示されています。
そうでない場合は、
rdf:resource
属性iがある場合、r := uri(identifier := resolve(e, i.string-value))です。rdf:nodeID
属性iがある場合、r := bnodeid(identifier := i.string-value)です。以下は順不同で行われます。
すべてのpropertyAttr属性aに関し(順不同)、
a.URI == rdf:type
である場合、u:=uri(identifier:=resolve(a.string-value))であり、以下のトリプルがグラフに追加されます。
r.string-value <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> u.string-value .
そうでない場合は、Unicodeの文字列a.string-valueは、正規形C[NFC]であるべきで(SHOULD)、o := literal(literal-value := a.string-value, literal-language := e.language)であり、以下のステートメントがグラフに追加されます。
r.string-value a.URI-string-value o.string-value .
テスト: test013.rdfとtest013.ntで示されています。
テスト: test014.rdfとtest014.ntで示されています。
以下のステートメントをグラフに追加します。
e.parent.subject.string-value e.URI-string-value r.string-value .
そうすれば、rdf:ID
属性iが与えられる場合、上記のステートメントは、7.3項の具体化規則を使用して、uri(identifier := resolve(e, concat("#", i.string-value)))で具体化されます。
attribute(URI == rdf:ID
,
string-value == rdf-id)
制約: constraint-idは、rdf:ID
属性の値に適用されます。
attribute(URI == rdf:nodeID
,
string-value == rdf-id)
attribute(URI == rdf:about
,
string-value == URI-reference)
attribute(URI == propertyAttributeURIs,
string-value == anyString)
attribute(URI == rdf:resource
,
string-value == URI-reference)
attribute(URI == rdf:datatype
,
string-value == URI-reference)
attribute(URI == rdf:parseType
,
string-value == "Literal")
attribute(URI == rdf:parseType
,
string-value == "Resource")
attribute(URI == rdf:parseType
,
string-value == "Collection")
attribute(URI == rdf:parseType
,
string-value == anyString - ("Resource" | "Literal" | "Collection") )
3.1 開始タグ、終了タグ、および空要素タグの項の[XML]定義要素のコンテンツ(Content of Elements)規則[43]コンテンツに従って許されているXML要素コンテンツです。
結果として作成されるイベントに対する文字列値に関しては、7.2.17項で論じます。
正当な[XML-NS]トークンNCNameと一致する属性・string-value・です。
以下の、ある与えられたURI参照イベントrと、N-トリプルに対応している用語s、p、oを持つステートメントに関して、
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> .
与えられた要素eに対し、新しいRDF URI参照 u := concat("http://www.w3.org/1999/02/22-rdf-syntax-ns#_", e.li-counter)を作成し、e.li-counterプロパティーを1つ増やし、uを返します。
RDF概念と抽象構文で定義されているように、RDF/XMLでシリアル化できないいくつかのRDFグラフがあります。これらは、以下に該当するものです。
実装注記(参考情報): RDFがRDF/XMLにシリアル化されていて、XMLスキーマ・データ型(XSD)を持っているときには、空白の処理を必要としない形式で書かれているべきです(SHOULD)。XSDサポートは、RDFやRDF/XMLでは必須でない(NOT)ため、これはオプションです。
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モジュール化 — LinkTypes、XHTML 2.0 — LinkTypesを参照してください。
例21は、XHTMLドキュメント内のlink
タグでこの方法を使用して外部のRDF/XMLドキュメントにリンクしています。
<?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>
RDF互換メタデータをSVG — Scalable Vector Graphics(SVG)1.0仕様[SVG]の21項 メタデータとScalable Vector Graphics(SVG)1.1仕様[SVG11]の21項 メタデータで定義されているように、この目的のために明確に設計されたメタデータ要素 — に関連付ける標準化された方法があります。
このドキュメントには、このようなメタデータ要素内に組み込まれたRDF/XMLを持つSVGの2つのグラフの例が含まれています(図1と図2)。
以下の人々は、このドキュメントに有益な貢献をしてくださいました。
このドキュメントは、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)です。
application/rdf+xml
の登録は、http://www.w3.org/2001/sw/RDFCore/mediatype-registrationでアーカイブされています。この付録には、RDF/XML形式の妥当性検証のためのXMLスキーマが含まれています。これらは、参考情報のみとしてのスキーマの例であり、この仕様の一部ではありません。
これは、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)?, 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 }* }
2003年10月10日の第2次最終草案以後の変更
これは、編集上以外のものと編集上のものに分けられます。編集上以外の変更には、派生的な編集上の変更も記載しています。編集上の変更によって、RDFドキュメントの意味やRDFアプリケーションの動作が変ることはありません。
なし
rdf:parseType="Resource"
とともには使用できないという構文定義を反映するために更新rdf:type
の事例の新しいURIイベントの使用を追加なし