要約

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項に従って情報を開示しなければなりません。

目次

1. はじめに

このドキュメントは、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のタブ)で区切られている可能性があります。このシーケンスは「.」と改行(ドキュメント末尾ではオプション)で終了します。

例1

N-Triplesのトリプルは、Turtleのシンプルなトリプルでもありますが、Turtleには他のRDF用語の表現やRDFトリプルの省略形が含まれています。N-Triples形式のデータを、Turtleパーサで解析すると、N-triples言語のパーサとまったく同じトリプルが作成されます。

N-Triplesドキュメントで表されるRDFグラフには、N-Triplesのtriple生成規則とマッチする各トリプルが正確に含まれています。

2. N-Triples言語

2.1 シンプルなトリプル

最もシンプルなトリプルのステートメントは、(主語、述語、目的語)用語のシーケンスであり、空白で区切られ、各トリプルは「.」で終了します。

例2

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も言語タグもないときには、それはシンプルなリテラルであり、データ型はhttp://www.w3.org/2001/XMLSchema#stringです。

例3

2.4 RDF空白ノード

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

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

例4

3. RDFテストケース形式からの変更点

この項は非規範的です。

4. N-Triplesの正規形式

この項では、レイアウトに可変性が少ないN-Triplesの正規形式を定義しました。言語の文法は同じです。実装者は、この形式を作成することをお進めします。

正規N-Triplesは、レイアウトに次の追加的な制約があります。

5. 適合性

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

この仕様の「しなければならない(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です。

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

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

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

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ドキュメントではありません。

7. 文法

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

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

N-Triples内のコメントは、IRIREFSTRING_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]

8. 解析

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

8.1 RDF用語コンストラクタ

次の表は、生成規則と字句トークンを、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が割り当てられます。

8.2 RDFトリプルの構築

N-Triplesドキュメントは、RDFトリプルの集合で構成されるRDFグラフを定義しています。triple(トリプル)生成規則により、subject(主語)、predicate(述語)、object(目的語)のために構築された用語により定義されたトリプルが作成されます。

9. 謝辞

この項は非規範的です。

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テストケースという過去の仕様を参考にしています。

A. 更新履歴

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

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

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

実質的な変更なし。

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

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

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

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

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

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

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

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

[UNICODE-SECURITY]
Mark Davis; Michel Suignard. Unicode Security Considerations. URL: http://www.unicode.org/reports/tr36/