【注意】 このドキュメントは、W3CのRDF 1.1 N-Quads : A line-based syntax for RDF datasets W3C Recommendation 25 February 2014の和訳です。
このドキュメントの正式版はW3Cのサイト上にある英語版であり、このドキュメントには翻訳に起因する誤りがありえます。誤訳、誤植などのご指摘は、訳者までお願い致します。
First Update: 2016年3月25日
公開以後に報告されたエラーや問題がないか正誤表を確認してください。
この仕様の英語版が唯一の規範のバージョンです。非規範の翻訳版も入手可能かもしれません。
Copyright © 2012-2014 W3C® (MIT, ERCIM, Keio, Beihang), All Rights Reserved. W3C liability, trademark and document use rules apply.
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項に従って情報を開示しなければなりません。
この文書では、N-Quadsという、解析が容易な、行ベースのRDFデータセット[RDF11-CONCEPTS]の具象構文を定義しています。
N-quadsステートメントは、主語、述語、目的語、RDFトリプルのグラフ・ラベルとデータセットの一部であるグラフを表すRDF用語のシーケンスです。これらは空白(#x20の空白または#x9のタブ)で区切られている可能性があります。このシーケンスは「.」と改行(ドキュメント末尾ではオプション)で終了します。
最もシンプルなステートメントは、RDFトリプルを形成する(主語、述語、目的語)用語と、オプションの空白ノード・ラベルまたはトリプルがデータセット内のどのグラフに属しているかをラベル付けしたIRIのシーケンスであり、すべて空白で区切られ、各ステートメントは「.」で終了します。
グラフ・ラベルIRIは省略可能で、その場合、トリプルはRDFデータセットのデフォルト・グラフの一部とみなされます。
IRIは絶対IRIとしてのみ記述できます。IRIは「<」と「>」で囲まれ、数値エスケープ・シーケンスが含まれる可能性があります(下記で説明)。例えば、<http://example.org/#green-goblin>。
リテラルは、文字列、数値、日付などの値を識別するために用います。
リテラル(文法生成規則リテラル)では、字句形式の後に言語タグまたはデータ型IRI(または、これらのどちらもない)が置かれます。字句形式の表現は、"(U+0022)という先頭の区切り記号、認められている文字列か数値エスケープ・シーケンスか文字列エスケープ・シーケンス、最後の区切り記号で構成されます。リテラルには、"、LFやCRという文字は含まれていないかもしれません。さらに、「\」(U+005C)は、エスケープ・シーケンスの一部として出現する場合を除き、引用符付きリテラルには出現できません。対応するRDF字句形式は、エスケープ・シーケンス処理後の、区切り記号の間の文字です。言語タグがあれば、その前に「@」(U+0040)が置かれます。言語タグがなければ、「^^」(U+005E U+005E)の後にデータ型IRIが置かれるかもしれません。データ型IRIも言語タグもないときには、データ型はxsd:stringです。
N-QuadsのRDF空白ノードは、_:で表され、その後に一連の名前文字である空白ノード・ラベルが続きます。ラベル内の文字は、PN_CHARS_BASEに基づいて構築されますが、次のとおりに緩和されています。
_という文字と数字は、空白ノード・ラベルのどこに出現してもよい。.という文字は、最初または最後の文字を除き、どこに出現してもよい。-、U+00B7、U+0300~U+036F、U+203F~U+2040の文字は、最初の文字を除き、どこでも認められる。新しいRDF空白ノードは、ドキュメント内の一意の空白ノード・ラベルにそれぞれ割り当てられます。同じ空白ノード・ラベルを繰り返して用いると、同じRDF空白ノードを識別します。
非規範的と記している項と同じく、この仕様のすべての作成ガイドライン、図、例、注は、非規範的です。この仕様のその他の部分はすべて規範的です。
この仕様の「しなければならない(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です。
N-Quadsのメディア・タイプはapplication/n-quadsです。N-Quadsのコンテンツのコンテンツ・エンコーディングは、常にUTF-8です。メディア・タイプの登録形式については、N-Quadsメディア・タイプを参照してください。
元の仕様(N-Quads:コンテキストによるN-Triplesの拡張)は、7ビットUS-ASCIIを用いたエンコードのtext/x-nquadsというメディア・タイプの使用を提案しています。
N-Quadsドキュメントは、UTF-8でエンコードされたUnicode[UNICODE]文字列です。U+0~U+10FFFFの範囲のUnicodeコード・ポイントのみが認められています。
空白(U+0009のタブまたはU+0020の空白)は、そうしないと1つの終端記号と(誤)認識されてしまう2つの終端記号を分離するために用いられます。空白は生成規則STRING_LITERAL_QUOTEにおいて重要です。
N-Quads内のコメントは、IRIREFやSTRING_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] |
N-Quadsの解析には、次の1つのアイテムの状態が必要です。
bnodeLabels — 文字列から空白ノードへのマッピング。次の表は、生成規則と字句トークンを、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が割り当てられます。 |
N-Quadsドキュメントは、RDFトリプルの集合で構成されるRDFグラフにより構成されるRDFデータセットを定義しています。statement(ステートメント)生成規則により、subject(主語)、predicate(述語)、object(目的語)のために構築された用語により定義されたトリプルが作成されます。このRDFトリプルは、生成規則graphLabelによりラベル付けされたグラフに追加され、graphLabelgraphLabelが存在していなければ、このトリプルがRDFデータセット・デフォルト・グラフに追加されます。
この項は非規範的です。
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の拡張という過去の仕様を参考にしています。
text/x-nquadsという過去のメディア・タイプに関する参考情報の注を追加。代替となる変更なし。
N-Quadsのインターネット・メディア・タイプ/MIMEタイプは、「application/n-quads」です。
N-Quadsファイルは、すべてのプラットホーム上で拡張子「.nq」(すべて小文字)であることが推奨されます。
マッキントッシュHFSファイル・システム上に保存されたN-Quadsファイルには、ファイル・タイプ「TEXT」が付与されていることが推奨されます。
下記のこの情報は、IANAでのレビュー、承認、および登録のためにIESGに提出されるでしょう。