【注意】 このドキュメントは、W3CのRDF 1.1 N-Triples : A line-based syntax for an RDF graph W3C Recommendation 25 February 2014の和訳です。
このドキュメントの正式版はW3Cのサイト上にある英語版であり、このドキュメントには翻訳に起因する誤りがありえます。誤訳、誤植などのご指摘は、訳者までお願い致します。
First Update: 2016年4月8日
公開以後に報告されたエラーや問題がないか正誤表を確認してください。
この仕様の英語版が唯一の規範のバージョンです。非規範の翻訳版も入手可能かもしれません。
Copyright © 2001-2014 W3C® (MIT, ERCIM, Keio, Beihang), All Rights Reserved. W3C liability, trademark and document use rules apply.
N-Triplesは、RDFグラフをコード化するための、行ベースの、プレーン・テキストの形式です。
この項は、このドキュメントの公開時のステータスについて記述しています。他のドキュメントがこのドキュメントに取って代わることがありえます。現行のW3Cの刊行物およびこの技術報告の最新の改訂版のリストは、http://www.w3.org/TR/のW3C技術報告インデックスにあります。
このドキュメントは、RDF 1.1ドキュメント群の一部です。N-Triplesは、元々RDFテストケース[RDF-TESTCASES]ドキュメントの構文として定義されました。交換フォーマットとして評判が良かったため、RDFワーキンググループは、更新バージョンを公表することにしました。このドキュメントは、RDFワーキンググループによって勧告として公開されましたこのドキュメントに関してコメントを行いたい場合には、public-rdf-comments@w3.org(購読、アーカイブ)にお送りください。どのようなコメントでも歓迎します。
ワーキンググループの実装報告書を参照してください。
このドキュメントは、W3Cメンバー、ソフトウェア開発者、他のW3Cグループ、および他の利害関係者によりレビューされ、W3C勧告として管理者の協賛を得ました。これは確定済みドキュメントであり、参考資料として用いたり、別のドキュメントで引用することができます。勧告の作成におけるW3Cの役割は、仕様に注意を引き付け、広範囲な開発を促進することです。これによってウェブの機能性および相互運用性が増強されます。
このドキュメントは、2004年2月5日のW3C特許方針の下で活動しているグループによって作成されました。W3Cは、このグループの成果物に関連するあらゆる特許の開示の公開リストを維持し、このページには特許の開示に関する指示も含まれています。不可欠な請求権(Essential Claim(s))を含んでいると思われる特許に関して実際に知っている人は、W3C特許方針の6項に従って情報を開示しなければなりません。
このドキュメントは、N-Triplesという、RDF[RDF11-CONCEPTS]の具象構文を定義しています。N-Triplesは、解析が容易な、行ベースの、Turtle[TURTLE]のサブセットです。
この構文は、RDFテストケース[RDF-TESTCASES]ドキュメントで元々定義されていたN-Triplesの改訂バージョンです。元々の目的は、テストケースを記述するためでしたが、RDFデータの交換フォーマットとして評判が良いことが判明しました。
N-Triplesドキュメントには解析指示子が含まれていません。
N-Triplesのトリプルは、RDFトリプルの主語、述語、目的語を表すRDF用語のシーケンスです。これらは空白(U+0020
の空白またはU+0009
のタブ)で区切られている可能性があります。このシーケンスは「.
」と改行(ドキュメント末尾ではオプション)で終了します。
N-Triplesのトリプルは、Turtleのシンプルなトリプルでもありますが、Turtleには他のRDF用語の表現やRDFトリプルの省略形が含まれています。N-Triples形式のデータを、Turtleパーサで解析すると、N-triples言語のパーサとまったく同じトリプルが作成されます。
N-Triplesドキュメントで表されるRDFグラフには、N-Triplesのtriple
生成規則とマッチする各トリプルが正確に含まれています。
最もシンプルなトリプルのステートメントは、(主語、述語、目的語)用語のシーケンスであり、空白で区切られ、各トリプルは「.
」で終了します。
IRIは絶対IRIとしてのみ記述できます。IRIは「<
」と「>
」で囲まれ、数値エスケープ・シーケンスが含まれる可能性があります(下記で説明)。例えば、<http://example.org/#green-goblin>
。
リテラルは、文字列、数値、日付などの値を識別するために用います。
リテラル(文法生成規則リテラル)では、字句形式の後に言語タグまたはデータ型IRI(または、これらのどちらもない)が置かれます。字句形式の表現は、"
(U+0022)という先頭の区切り記号、認められている文字列か数値エスケープ・シーケンスか文字列エスケープ・シーケンス、最後の区切り記号で構成されます。リテラルには、エスケープ形式による場合を除き、"
、 LF
、CR
という文字は含まれていないかもしれません。さらに、「\
」(U+005C)は、エスケープ・シーケンスの一部として出現する場合を除き、引用符付きリテラルには出現できません。対応するRDF字句形式は、エスケープ・シーケンス処理後の、区切り記号の間の文字です。言語タグがあれば、その前に「@
」(U+0040)が置かれます。言語タグがなければ、「^^
」(U+005E U+005E)の後にデータ型IRIが置かれるかもしれません。データ型IRIも言語タグもないときには、それはシンプルなリテラルであり、データ型はhttp://www.w3.org/2001/XMLSchema#string
です。
N-TriplesのRDF空白ノードは、_:
で表され、その後に一連の名前文字である空白ノード・ラベルが続きます。ラベル内の文字は、PN_CHARS_BASEに基づいて構築されますが、次のとおりに緩和されています。
_
という文字と[0-9]
字は、空白ノード・ラベルのどこに出現してもよい。.
という文字は、最初または最後の文字を除き、どこに出現してもよい。-
、U+00B7
、U+0300
~U+036F
、U+203F
~U+2040
の文字は、最初の文字を除き、どこでも認められる。新しいRDF空白ノードは、ドキュメント内の一意の空白ノード・ラベルにそれぞれ割り当てられます。同じ空白ノード・ラベルを繰り返して用いると、同じRDF空白ノードを識別します。
この項は非規範的です。
application/n-triples
という固有のメディアタイプを定義\b
と\f
が認められているこの項では、レイアウトに可変性が少ないN-Triplesの正規形式を定義しました。言語の文法は同じです。実装者は、この形式を作成することをお進めします。
正規N-Triplesは、レイアウトに次の追加的な制約があります。
subject
(主語)、predicate
(述語)、object
(目的語)の後の空白は、1つの空白(U+0020
)でなければなりません(MUST)。空白が認められている他のすべての位置は空でなければなりません(MUST)。HEX
には大文字([A-F]
)のみを用いなければなりません(MUST)。UCHAR
で表現してはなりません(MUST NOT)。ECHAR
を用いてコード化されるのはU+0022
、U+005C
、U+000A
、U+000D
という文字のみです。STRING_LITERAL_QUOTEで直接認められている文字にECHAR
を用いてはなりません(MUST NOT)。非規範的と記している項と同じく、この仕様のすべての作成ガイドライン、図、例、注は、非規範的です。この仕様のその他の部分はすべて規範的です。
この仕様の「しなければならない(MUST)」、「してはならない(MUST NOT)」、「必須である/要求される(REQUIRED)」、「すべきである/する必要がある(SHOULD)」、「すべきでない/する必要がない(SHOULD NOT)」、「推奨される(RECOMMENDED)」、「することができる/してもよい(MAY)」、「選択できる/任意である(OPTIONAL)」というキーワードは、[RFC2119]で記述されているように解釈されるべきです。
この仕様は、次のものに関する適合性基準を定義しています。
適合N-Triplesドキュメントは、7項 文法で定義されている文法と追加の制約に準拠したUnicodeの文字列で、ntriplesDoc
生成規則で始まります。N-QuadドキュメントはRDFデータセットをシリアル化します。N-TriplesドキュメントはRDFグラフをシリアル化します。
適合正規N-Triplesドキュメントは、正規N-Triplesの追加的な制約に従ったN-Triplesドキュメントです。
適合N-Triplesパーサは、アプリケーションの代わりにN-Triplesドキュメントを読むことができるシステムです。5項 解析で定義しているように、これによってシリアル化されたRDFグラフが作成され、通常は何らかのAPI形式で、それをアプリケーションに利用できます。
N-Triples言語を識別するIRIは、http://www.w3.org/ns/formats/N-Triples
です。
N-Triplesのメディア・タイプはapplication/n-triples
です。N-Triplesのコンテンツ・エンコーディングは、常にUTF-8です。メディア・タイプの登録形式については、N-Triplesメディア・タイプを参照してください。
N-Triplesは、以前は他のメディアタイプで提供されていました。N-Triplesはtext/plain
でも提供できます。N-Triplesをこの方法で用いる場合には、US-ASCII以外の文字のエスケープ形式を用いなければなりません(MUST)。N-TriplesはTurtleのサブセットであるため、N-Triplesドキュメントは、text/turtle
でも提供できます(MAY)。N-Triplesドキュメントはapplication/n-triples
でのみ提供されるため、これらのどちらのケースでも、ドキュメントはN-Triplesドキュメントではありません。
N-Triplesドキュメントは、UTF-8でエンコードされたUnicode[UNICODE]文字列です。U+0~U+10FFFFの範囲のUnicodeコード・ポイントのみが認められています。
空白(U+0009
のタブまたはU+0020
の空白)は、そうしないと1つの終端記号と(誤)認識されてしまう2つの終端記号を分離するために用いられます。空白は生成規則STRING_LITERAL_QUOTEにおいて重要です。
N-Triples内のコメントは、IRIREF
やSTRING_LITERAL_QUOTE
の外部では、「#
」の形式をとり、行末(EOL
)(行末を含まない)まで続くか、コメント記号の後に行末がない場合にはファイルの最後まで続きます。コメントは空白として扱われます。
ここで用いるEBNFは、XML 1.0[EBNF-NOTATION]で定義されています。
エスケープ・シーケンスの規則はTurtle[TURTLE]と同じです。しかし、STRING_LITERAL_QUOTE
生成規則のみが認められているため、リテラル内の改行はエスケープしなければなりません(MUST)。
[1] | ntriplesDoc |
::= | triple? (EOL triple)* EOL? |
[2] | triple |
::= | subject predicate object '. ' |
[3] | subject |
::= | IRIREF | BLANK_NODE_LABEL |
[4] | predicate |
::= | IRIREF |
[5] | object |
::= | IRIREF | BLANK_NODE_LABEL | literal |
[6] | literal |
::= | STRING_LITERAL_QUOTE ('^^ ' IRIREF | LANGTAG)? |
終端記号の生成規則 |
|||
[144s] | LANGTAG |
::= | '@ ' [a-zA-Z ]+ ('- ' [a-zA-Z0-9 ]+ )* |
[7] | EOL |
::= | [#xD#xA ]+ |
[8] | IRIREF |
::= | '< ' ([^#x00-#x20<>"{}|^`\ ] | UCHAR)* '> ' |
[9] | STRING_LITERAL_QUOTE |
::= | '" ' ([^#x22#x5C#xA#xD ] | ECHAR | UCHAR)* '" ' |
[141s] | BLANK_NODE_LABEL |
::= | '_: ' (PN_CHARS_U | [0-9 ]) ((PN_CHARS | '. ')* PN_CHARS)? |
[10] | 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-Triplesの解析には、次の1つのアイテムの状態が必要です。
bnodeLabels
— 文字列から空白ノードへのマッピング。次の表は、生成規則と字句トークンを、RDF terms
または8項 解析で挙げた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 | 空白ノード | _: の後の文字列は、bnodeLabelsのキーです。マップに対応する空白ノードがない場合、1が割り当てられます。 |
N-Triplesドキュメントは、RDFトリプルの集合で構成されるRDFグラフを定義しています。triple
(トリプル)生成規則により、subject
(主語)、predicate
(述語)、object
(目的語)のために構築された用語により定義されたトリプルが作成されます。
この項は非規範的です。
RDF 1.1の編集者は、Gregg Kellogg、Eric Prud'hommeaux、Dave Beckett、David Robillard、Gregory Williams、Pat Hayes、Richard Cyganiak、Henry S. Thompson、Peter Ansell、Evan Patton、およびDavid Boothの有益な貢献に感謝いたします。
この仕様は、RDFワーキンググループのメンバーにより積み重ねられた議論の成果です。 これは、Dave Beckettにより編集されたRDFテストケースという過去の仕様を参考にしています。
実質的な変更なし。
N-Triplesのインターネット・メディア・タイプ/MIMEタイプは、「application/n-triples」です。
N-Triplesファイルは、すべてのプラットホーム上で拡張子「.nt」(すべて小文字)であることが推奨されます。
マッキントッシュHFSファイル・システム上に保存されたN-Triplesファイルには、ファイル・タイプ「TEXT」が付与されていることが推奨されます。
下記のこの情報は、IANAでのレビュー、承認、および登録のためにIESGに提出されるでしょう。