要約

N-Quadsは、RDFデータセットをコード化するための、行ベースの、プレーン・テキストの形式です。

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

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

このドキュメントは、RDF 1.1ドキュメント群の一部です。N-Quadsの形式は、N-Triples[N-TRIPLES]と似た特色を持つ行ベースのRDF構文です。主な違いは、N-Quadsでは複数のグラフのコード化が認められていることです。

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

ワーキンググループの実装報告書を参照してください。

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

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

目次

1. はじめに

この文書では、N-Quadsという、解析が容易な、行ベースのRDFデータセット[RDF11-CONCEPTS]の具象構文を定義しています。

N-quadsステートメントは、主語、述語、目的語、RDFトリプルのグラフ・ラベルとデータセットの一部であるグラフを表すRDF用語のシーケンスです。これらは空白(#x20の空白または#x9のタブ)で区切られている可能性があります。このシーケンスは「.」と改行(ドキュメント末尾ではオプション)で終了します。

例1

2. N-Quads言語

2.1 シンプルなステートメント

最もシンプルなステートメントは、RDFトリプルを形成する(主語、述語、目的語)用語と、オプションの空白ノード・ラベルまたはトリプルがデータセット内のどのグラフに属しているかをラベル付けしたIRIのシーケンスであり、すべて空白で区切られ、各ステートメントは「.」で終了します。

例2

グラフ・ラベルIRIは省略可能で、その場合、トリプルはRDFデータセットのデフォルト・グラフの一部とみなされます。

2.2 IRI

IRIは絶対IRIとしてのみ記述できます。IRIは「<」と「>」で囲まれ、数値エスケープ・シーケンスが含まれる可能性があります(下記で説明)。例えば、<http://example.org/#green-goblin>

2.3 RDFリテラル

リテラルは、文字列、数値、日付などの値を識別するために用います。

リテラル(文法生成規則リテラル)では、字句形式の後に言語タグまたはデータ型IRI(または、これらのどちらもない)が置かれます。字句形式の表現は、"U+0022)という先頭の区切り記号、認められている文字列か数値エスケープ・シーケンスか文字列エスケープ・シーケンス、最後の区切り記号で構成されます。リテラルには、"LFCRという文字は含まれていないかもしれません。さらに、「\」(U+005C)は、エスケープ・シーケンスの一部として出現する場合を除き、引用符付きリテラルには出現できません。対応するRDF字句形式は、エスケープ・シーケンス処理後の、区切り記号の間の文字です。言語タグがあれば、その前に「@」(U+0040)が置かれます。言語タグがなければ、「^^」(U+005E U+005E)の後にデータ型IRIが置かれるかもしれません。データ型IRIも言語タグもないときには、データ型はxsd:stringです。

リテラル(文法生成規則 RDFLiteral)では、字句形式の後に、言語タグまたはデータ型IRI(または、これらのどちらもない)が置かれます。

2.4 RDF空白ノード

N-QuadsのRDF空白ノードは、_:で表され、その後に一連の名前文字である空白ノード・ラベルが続きます。ラベル内の文字は、PN_CHARS_BASEに基づいて構築されますが、次のとおりに緩和されています。

新しいRDF空白ノードは、ドキュメント内の一意の空白ノード・ラベルにそれぞれ割り当てられます。同じ空白ノード・ラベルを繰り返して用いると、同じRDF空白ノードを識別します。

例3

3. 適合性

非規範的と記している項と同じく、この仕様のすべての作成ガイドライン、図、例、注は、非規範的です。この仕様のその他の部分はすべて規範的です。

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

この仕様は、次のものに関する適合性基準を定義しています。

適合N-Quadsドキュメントは、4文法で定義されている文法と追加の制約に準拠したUnicodeの文字列で、nquadsDoc生成規則で始まります。N-QuadドキュメントはRDFデータセットをシリアル化します。

N-Quadsドキュメントは、RDFデータセットの一部でありえる空のグラフをシリアル化する方法を提供しません。

適合N-Quadsパーサは、アプリケーションの代わりにN-Quadsドキュメントを読むことができるシステムです。5解析で定義しているように、これによってシリアル化されたRDFグラフが作成され、通常は何らかのAPI形式で、それをアプリケーションに利用できます。

N-Quads言語を識別するIRIは、http://www.w3.org/ns/formats/N-Quadsです。

3.1 メディア・タイプとコンテンツ・エンコーディング

N-Quadsのメディア・タイプはapplication/n-quadsです。N-Quadsのコンテンツのコンテンツ・エンコーディングは、常にUTF-8です。メディア・タイプの登録形式については、N-Quadsメディア・タイプを参照してください。

3.1.1 その他のメディア・タイプ

元の仕様(N-Quads:コンテキストによるN-Triplesの拡張)は、7ビットUS-ASCIIを用いたエンコードのtext/x-nquadsというメディア・タイプの使用を提案しています。

4. 文法

N-Quadsドキュメントは、UTF-8でエンコードされたUnicode[UNICODE]文字列です。U+0~U+10FFFFの範囲のUnicodeコード・ポイントのみが認められています。

空白(U+0009のタブまたはU+0020の空白)は、そうしないと1つの終端記号と(誤)認識されてしまう2つの終端記号を分離するために用いられます。空白は生成規則STRING_LITERAL_QUOTEにおいて重要です。

N-Quads内のコメントは、IRIREFSTRING_LITERAL_QUOTEの外部では、「#」の形式をとり、行末(EOL)まで続くか、コメント記号の後に行末がない場合にはファイルの最後まで続きます。コメントは空白として扱われます。

ここで用いるEBNFは、XML 1.0[EBNF-NOTATION]で定義されています。

エスケープ・シーケンスの規則はTurtle[TURTLE]と同じです。しかし、STRING_LITERAL_QUOTE生成規則のみが認められているため、リテラル内の改行はエスケープしなければなりません(MUST)。

[1] nquadsDoc ::= statement? (EOL statement)* EOL?
[2] statement ::= subject predicate object graphLabel? '.'
[3] subject ::= IRIREF | BLANK_NODE_LABEL
[4] predicate ::= IRIREF
[5] object ::= IRIREF | BLANK_NODE_LABEL | literal
[6] graphLabel ::= IRIREF | BLANK_NODE_LABEL
[7] literal ::= STRING_LITERAL_QUOTE ('^^' IRIREF | LANGTAG)?

終端記号の生成規則

[144s] LANGTAG ::= '@' [a-zA-Z]+ ('-' [a-zA-Z0-9]+)*
[8] EOL ::= [#xD#xA]+
[10] IRIREF ::= '<' ([^#x00-#x20<>"{}|^`\] | UCHAR)* '>'
[11] STRING_LITERAL_QUOTE ::= '"' ([^#x22#x5C#xA#xD] | ECHAR | UCHAR)* '"'
[141s] BLANK_NODE_LABEL ::= '_:' (PN_CHARS_U | [0-9]) ((PN_CHARS | '.')* PN_CHARS)?
[12] UCHAR ::= '\u' HEX HEX HEX HEX | '\U' HEX HEX HEX HEX HEX HEX HEX HEX
[153s] ECHAR ::= '\' [tbnrf"'\]
[157s] PN_CHARS_BASE ::= [A-Z] | [a-z] | [#x00C0-#x00D6] | [#x00D8-#x00F6] | [#x00F8-#x02FF] | [#x0370-#x037D] | [#x037F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]
[158s] PN_CHARS_U ::= PN_CHARS_BASE | '_' | ':'
[160s] PN_CHARS ::= PN_CHARS_U | '-' | [0-9] | #x00B7 | [#x0300-#x036F] | [#x203F-#x2040]
[162s] HEX ::= [0-9] | [A-F] | [a-f]

5. 解析

N-Quadsの解析には、次の1つのアイテムの状態が必要です。

5.1 RDF用語コンストラクタ

次の表は、生成規則と字句トークンを、RDF termsまたは5解析で挙げたRDF termsの構成要素にマッピングしています。

生成規則 手順
IRIREF IRI 「<」と「>」の間の文字を用いて、エスケープ・シーケンスをエスケープしないで、IRIのUnicode文字列を形成します。
STRING_LITERAL_QUOTE 字句形式 最も外側の「"」の間の文字を用いて、エスケープ・シーケンスをエスケープしないで、字句形式のUnicode文字列を形成します。
LANGTAG 言語タグ @の後の文字は、言語タグのUnicode文字列を形成します。
literal リテラル リテラルには、STRING_LITERAL_QUOTEという最初の規則の引数、およびLANGTAGの言語タグかiriのデータ型式IRIの語彙のフォームのいずれか(リテラルがどの規則が入力とマッチしたかによる)の字句形式があります。LANGTAGの規則がマッチした場合、データ型はrdf:langStringで、言語タグはLANGTAGです。言語タグもデータ型IRIも提供されなければ、リテラルはxsd:stringというデータ型を持ちます。
BLANK_NODE_LABEL 空白ノード 2番目の引数であるPN_LOCALとマッチする文字列は、bnodeLabelsのキーです。マップに対応する空白ノードがない場合、1が割り当てられます。

5.2 RDFデータセットの構築

N-Quadsドキュメントは、RDFトリプルの集合で構成されるRDFグラフにより構成されるRDFデータセットを定義しています。statement(ステートメント)生成規則により、subject(主語)、predicate(述語)、object(目的語)のために構築された用語により定義されたトリプルが作成されます。このRDFトリプルは、生成規則graphLabelによりラベル付けされたグラフに追加され、graphLabelgraphLabelが存在していなければ、このトリプルがRDFデータセット・デフォルト・グラフに追加されます。

6. 謝辞

この項は非規範的です。

RDF 1.1の編集者は、Gregg Kellogg、Andy Seaborne、Eric Prud'hommeaux、Dave Beckett、David Robillard、Gregory Williams、Antoine Zimmermann、Sandro Hawke、Richard Cyganiak、Pat Hayes、Henry S. Thompson、Bob Ferris、Henry Story、Andreas Harth、Lee Feigenbaum、Peter Ansell、Evan Patton、およびDavid Boothの有益な貢献に感謝いたします。

この仕様は、Guus SchreiberとDavid Woodが議長を務めるRDFワーキンググループのメンバーにより積み重ねられた議論の成果です。 これは、Richard Cyganiak、Andreas Harth、およびAidan Hoganにより編集されたN-Quads:コンテキストによるN-Triplesの拡張という過去の仕様を参考にしています。

A. 変更履歴

A.1 勧告案と勧告との変更

A.2 勧告候補と勧告案との変更

A.3 最終草案と勧告候補との変更

代替となる変更なし。

A.4 ノートとしての公開と最終草案との変更

B. N-Quadsのインターネット・メディア・タイプ、ファイル拡張子、およびマッキントッシュ・ファイル・タイプ

連絡先:
Eric Prud'hommeaux
参照:
W3C仕様に関するメディア・タイプの登録方法
インターネット・メディア・タイプ登録、使用の整合性
TAGの発見事項 2002年6月3日(2002年9月4日改定)

N-Quadsのインターネット・メディア・タイプ/MIMEタイプは、「application/n-quads」です。

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

マッキントッシュHFSファイル・システム上に保存されたN-Quadsファイルには、ファイル・タイプ「TEXT」が付与されていることが推奨されます。

下記のこの情報は、IANAでのレビュー、承認、および登録のためにIESGに提出されるでしょう。

タイプ名:
application
サブタイプ名:
n-quads
必須パラメータ:
なし
任意のパラメータ:
なし
コード化に関する留意点:
N-Quadsの構文は、Unicode[UNICODE]のコード・ポイントで表されます。コード化は、常にUTF-8[UTF-8]です。
Unicodeコード・ポイントは、Xが16進の[0-9A-F]である場合、\uXXXX(U+0~U+FFFF)または\UXXXXXXXX構文(U+10000以降)を用いて表現できます。
セキュリティに関する留意点:
N-Quadsは汎用の言明言語です。アプリケーションは、より多くの言明を推論したり、IRIを逆参照するためにデータを評価でき、そのIRIのスキームに関するセキュリティ上の検討事項が生じます。特に、HTTP IRIに関する[RFC3023]の10項のプライバシー問題に注意してください。不正確または悪質なデータ情報源から得たデータは、意図しないIRIの逆参照のみならず、不正確または誤解を招く結果に結びつくかもしれません。調べた資源に対する信頼性を、意図されているデータ利用の感度と慎重に合わせなければなりません。例えば、潜在的な内科療法の推論には、旅行計画の推論とは恐らく異なる信頼性が必要でしょう。
N-Quadsは任意のアプリケーション・データを表すために用います。セキュリティ上の検討事項は、使用領域によって変わるでしょう。テキストに適用できるセキュリティ・ツールやプロトコル(例えば、PGP暗号化、MD5チェックサム検証、パスワードで保護された圧縮)は、N-Quadsドキュメントにも使用できます。組み込まれた情報の感度を反映したセキュリティー/プライバシー・プロトコルを課さなければなりません。
N-Quadsは、ユーザに提示するデータを表すことができます(例えば、RDFスキーマ・ラベル)。信頼できないN-Quadsドキュメントから検索された文字列を表示するアプリケーションは、読者を誤解させるような悪質な文字列が用いられていなことを保証しなければなりません。XMLのメディア・タイプ登録におけるセキュリティに関する考察([RFC3023]]の10項)は、任意のデータとマークアップの表現に関するガイダンスを追加提供します。
N-Quadsは、IRIを用語識別子として用います。N-Quadsで表現されたデータを解釈するアプリケーションは、URI(Uniform Resource Identifier): 一般的構文[RFC3986]の7項とIRI(Internationalized Resource Identifiers)[RFC3987]の8項のセキュリティ問題に取り組むべきです。
複数のIRIの見た目が同じでありえます。異なるスクリプトの文字が同じに見えるかもしれません(キリル文字の「о」はラテン文字の「o」と同じに見えるかもしれません)。結合文字が後続する文字は、別の文字と同じ視覚的表現を持っているかもしれません(結合アキュート・アクセントが後続するラテン小文字Eは、アキュート付きラテン小文字Eと同じ視覚的表現を持っています)。Turtleでデータを記述または解釈する人やアプリケーションは、意図するセマンティクスとマッチするIRIを慎重に用いて、同じように見えるIRIを回避しなければなりません。類似している文字のマッチングに関する詳細は、Unicodeセキュリティに関する留意点[UNICODE-SECURITY]およびIRI(Internationalized Resource Identifiers)[RFC3987]の8項にあります。
互換性に関する留意点:
互換性の問題は知られていません。
公開済み仕様書:
この仕様書。
このメディア・タイプを使用するアプリケーション:
このメディア・タイプを用いる広く展開したアプリケーションは知られていません。これは、これらのデータを用いる一部のウェブ・サービスとクライアントで使用できます。
追加情報:
マジック・ナンバー:
なし
ファイル拡張子:
「.nq」
マッキントッシュ・ファイル・タイプ・コード:
「TEXT」
詳細情報に関する連絡先:
Eric Prud'hommeaux <eric@w3.org>
意図する使途:
汎用
使用上の制限:
なし
著者/改版管理者:
N-Quads仕様は、RDF WGの成果です。W3Cは、この仕様書に対する変更管理を保持します。

C. 参考文献

C.1 規範的な参考文献

[EBNF-NOTATION]
Tim Bray; Jean Paoli; C. M. Sperberg-McQueen; Eve Maler; Francois Yergeau. EBNF Notation 26 November 2008. W3C Recommendation. URL: http://www.w3.org/TR/REC-xml/#sec-notation
[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/
[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
[RFC3023]
M. Murata; S. St.Laurent; D. Kohn. XML Media Types (RFC 3023). January 2001. RFC. URL: http://www.ietf.org/rfc/rfc3023.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
[RFC3987]
M. Durst; M. Suignard. Internationalized Resource Identifiers (IRIs). January 2005. RFC. URL: http://www.ietf.org/rfc/rfc3987.txt
[UNICODE]
The Unicode Standard. URL: http://www.unicode.org/versions/latest/
[UTF-8]
F. Yergeau. UTF-8, a transformation format of ISO 10646. IETF RFC 3629. November 2003. URL: http://www.ietf.org/rfc/rfc3629.txt

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

[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/
[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/
[UNICODE-SECURITY]
Mark Davis; Michel Suignard. Unicode Security Considerations. URL: http://www.unicode.org/reports/tr36/