要約

RDF(Resource Description Framework)は、ウェブで情報を表現するための汎用言語です。

このドキュメントは、共通の使用パターンとデータ型の省略形を用いて、RDFグラフをコンパクトで自然なテキスト形式で完全に記述できるTurtleと呼ばれるRDF用のテキスト形式の構文を定義しています。Turtleは、SPARQL W3C勧告のトリプル・パターン構文やN-Triple[N-TRIPLES]形式と様々なレベルで互換性があります。

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

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

このドキュメントは、RDF 1.1ドキュメント群の一部です。このドキュメントでは、RDFの具象構文[RDF11-CONCEPTS]であるTurtle(Terse RDF Triple Language)を定義しています。

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

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

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

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

目次

1. はじめに

この項は非規範的です。

このドキュメントでは、RDFの具象構文[RDF11-CONCEPTS]であるTurtle(Terse RDF Triple Language)を定義しています。

Turtleドキュメントは、RDFグラフをテキスト形式で表現したものです。次のTurtleドキュメントは、グリーン・ゴブリン(Green Goblin)とスパイダーマン(Spiderman)の関係を記述しています。

例1
@base <http://example.org/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix rel: <http://www.perceive.net/schemas/relationship/> .

<#green-goblin>
    rel:enemyOf <#spiderman> ;
    a foaf:Person ;    # マーベル・ユニバースのコンテキストで
    foaf:name "Green Goblin" .

<#spiderman>
    rel:enemyOf <#green-goblin> ;
    a foaf:Person ;
    foaf:name "Spiderman", "Человек-паук"@ru .

この例は、@baseと相対IRI@prefixと接頭辞名、「;」で区切られた述語リスト、「,」で区切られた目的語リストaというトークン、リテラルといった、Turtle言語の特徴の多くを取り入れています。

triplesに対するTurtle文法は、TriplesBlockに対するSPARQL 1.1クエリ言語[SPARQL11-QUERY]の文法のサブセットです。可能である場合には、この2つの文法は、生成規則と終端記号の名前を共有しています。

TurtleドキュメントからのRDFグラフの構築については、Turtle文法解析で定義しています。

2. Turtle言語

この項は非規範的です。

Turtleドキュメントにより、RDFグラフをコンパクトなテキスト形式で記述できるようになります。RDFグラフは、主語、述語、目的語から成るトリプルで構成されます。

コメントは、「#」の後に記述でき、別の字句トークンの一部ではなく、行末まで続きます。

2.1 シンプルなトリプル

最もシンプルなトリプル・ステートメントは、用語(主語、述語、目的語)のシーケンスで、余白で区切られ、各トリプルの後に「.」を置いて終了します。

例2
<http://example.org/#spiderman> <http://www.perceive.net/schemas/relationship/enemyOf> <http://example.org/#green-goblin> .

2.2 述語リスト

複数の述語が同じ主語を参照することがよくあります。predicateObjectList生成規則は、一連の述語および目的語とマッチし、「;」で区切って主語の後に置きます。これは、その主語を持つ一連のRDFトリプルがあり、述語と目的語がそれぞれ1つのトリプルに割り当てられられている状況を表します。したがって、「;」という記号は、述語と目的語のRDF用語のみが異なるトリプルの主語を繰り返すために用いられます。

次の2つの例は、スパイダーマンに関するトリプルを記述する同等な方法です。

例3
<http://example.org/#spiderman> <http://www.perceive.net/schemas/relationship/enemyOf> <http://example.org/#green-goblin> ;
				<http://xmlns.com/foaf/0.1/name> "Spiderman" .
例4
<http://example.org/#spiderman> <http://www.perceive.net/schemas/relationship/enemyOf> <http://example.org/#green-goblin> .
<http://example.org/#spiderman> <http://xmlns.com/foaf/0.1/name> "Spiderman" .

2.3 目的語リスト

述語と同様に、目的語はしばしば同じ主語と述語で繰り返されます。objectList生成規則は、一連の目的語とマッチし、「,」で区切って述語の後に置きます。これは、同じ主語と述語を持つ一連のRDFトリプルがあり、目的語がそれぞれ1つのトリプルに割り当てられている状況を表します。したがって、「,」という記号は、目的語のRDF用語のみが異なるトリプルの主語と述語を繰り返すために用いられます。

次の2つの例は、2つの言語でスパイダーマンの名前を記述する同等な方法です。

例5
<http://example.org/#spiderman> <http://xmlns.com/foaf/0.1/name> "Spiderman", "Человек-паук"@ru .
例6
<http://example.org/#spiderman> <http://xmlns.com/foaf/0.1/name> "Spiderman" .
<http://example.org/#spiderman> <http://xmlns.com/foaf/0.1/name> "Человек-паук"@ru .

RDF概念で定義されているRDF用語には、IRI(Internationalized Resource Identifiers)、リテラル空白ノードの3種類があります。Turtleは、それぞれを記述する多くの方法を提供します。

2.4 IRI

IRIは、相対IRIまたは絶対IRI、もしくは接頭辞名として記述できます。相対IRIと絶対IRIは、「<」と「>」で囲まれ、数値エスケープ・シーケンス(以下で述べる)を含むことができます。例えば、<http://example.org/#green-goblin>

<#green-goblin>のような相対IRIは、現在の基底IRI対して解決されます。新しい基底IRIは「@base」か「BASE」指示子で定義できます。このオペレーションの詳細は、6.3IRI参照 で定義しています。

Turtleトリプルの述語の位置にある「a」というトークンは、http://www.w3.org/1999/02/22-rdf-syntax-ns#typeというIRIを表します。

接頭辞名は、接頭辞ラベルとローカル部分(local part)で、コロン「":"」で区切られています。接頭辞名は、接頭辞に関連付けられているIRIとローカル部分とを連結することによりIRIになります。「@prefix」や「PREFIX」指示子は、接頭辞ラベルをIRIに関連付けます。その後の「@prefix」や「PREFIX」指示子は、同じ接頭辞ラベルを再マッピングできます。

Turtle言語は当初、接頭辞と基底の指示子の記述に「@」という文字が含まれている構文のみを認めていました。大文字・小文字を区別しない「PREFIX」と「BASE」の形式は、Turtle構文をSPARQL構文と揃えるために追加されました。RDF 1.1 Turtleパーサが広く利用されるようになるまでは、「@prefix」と「@base」の形式でRDFをシリアル化するのが望ましいです。

接頭辞名を用いてhttp://www.perceive.net/schemas/relationship/enemyOfを記述するためには、

  1. http://www.perceive.net/schemas/relationship/という語彙のIRIの接頭辞ラベルをsomePrefixと定義します。
  2. 次に、somePrefix:enemyOfと記述します。これは、<http://www.perceive.net/schemas/relationship/enemyOf>と記述するのと同等です。

これは、元のTurtle構文を接頭辞宣言に用いるか、

例7
@prefix somePrefix: <http://www.perceive.net/schemas/relationship/> .

<http://example.org/#green-goblin> somePrefix:enemyOf <http://example.org/#spiderman> .

SPARQLの構文を接頭辞宣言に用いるかのどちらかで記述できます。

例8
PREFIX somePrefix: <http://www.perceive.net/schemas/relationship/>

<http://example.org/#green-goblin> somePrefix:enemyOf <http://example.org/#spiderman> .

接頭辞名は、XML QNamesの上位集合です。これらは接頭辞名のローカル部分に次のものを含むことができるという点に違いがあります。

次のTurtleドキュメントには、TurtleでIRIを記述するあらゆる方法の例が含まれています。

例9
# すべてが絶対IRIのトリプル
<http://one.example/subject1> <http://one.example/predicate1> <http://one.example/object1> .

@base <http://one.example/> .
<subject2> <predicate2> <object2> .     # 相対IRI。例:http://one.example/subject2

BASE <http://one.example/>
<subject2> <predicate2> <object2> .     # 相対IRI。例:http://one.example/subject2

@prefix p: <http://two.example/> .
p:subject3 p:predicate3 p:object3 .     # 接頭辞名。例:http://two.example/subject3

PREFIX p: <http://two.example/>
p:subject3 p:predicate3 p:object3 .     # 接頭辞名。例:http://two.example/subject3

@prefix p: <path/> .                    # 接頭辞 p: 現在 http://one.example/path/ を表す。
p:subject4 p:predicate4 p:object4 .     # 接頭辞名。例:http://one.example/path/subject4

@prefix : <http://another.example/> .    # 空の接頭辞
:subject5 :predicate5 :object5 .        # 接頭辞名。例:http://another.example/subject5

:subject6 a :subject7 .                 # 右記と同じ。 :subject6 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> :subject7 .

<http://伝言.example/?user=أكرم&amp;channel=R%26D> a :subject8 . # 多文字種(multi-script)の主語IRI。

@prefix」と「@base」の指示子には、IRIの後に終了文字「.」が必要で、これらと同等の「PREFIX」と「BASE」は、指示子のIRI部分の後に終了文字「.」があってはなりません。

2.5 RDFリテラル

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

例10
@prefix foaf: <http://xmlns.com/foaf/0.1/> .

<http://example.org/#green-goblin> foaf:name "Green Goblin" .

<http://example.org/#spiderman> foaf:name "Spiderman" .

2.5.1 引用符付きリテラル

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

\」(U+005C)は、エスケープ・シーケンスの一部として出現する場合を除き、引用符付きリテラルには出現できません。その他の制限は、次のとおり、区切り記号に依存します。

  • 'U+0027)で区切られたリテラルには、'LFU+000A)、CRU+000D)の文字を含むことができません。
  • "で区切られたリテラルには、"LFCRの文字を含むことができません。
  • '''で区切られたリテラルには、'''の文字列を含むことができません。
  • """で区切られたリテラルには、"""の文字列を含むことができません。
例11
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix show: <http://example.org/vocab/show/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

show:218 rdfs:label "That Seventies Show"^^xsd:string .            # XMLスキーマ文字列データ型のリテラル
show:218 rdfs:label "That Seventies Show"^^<http://www.w3.org/2001/XMLSchema#string> . # 同上
show:218 rdfs:label "That Seventies Show" .                                            # 同上
show:218 show:localName "That Seventies Show"@en .                 # 言語タグ付きリテラル
show:218 show:localName 'Cette Serie des Annees Soixante-dix'@fr . # シングル引用符で区切られたリテラル
show:218 show:localName "Cette Serie des Annees Septante"@fr-be .  # 領域サブタグ付きリテラル
show:218 show:blurb '''This is a multi-line                        # 組み込み改行(new line)および引用符付きリテラル
literal with many quotes (""""")
and up to two sequential apostrophes ('').''' .

2.5.2 数値

数値は、その他のリテラルと同じように、字句形式とデータ型(例えば、"-5.0"^^xsd:decimal)で記述できます。Turtleには、整数の値、任意の精度の10進数の値、倍精度浮動小数点数の値を記述するための省略構文があります。

データ型 省略形 字句形 説明
xsd:integer -5 "-5"^^xsd:integer 整数の値は、オプションの記号と、一連の数字で記述できます。整数は、「[+-]?[0-9]+」という正規表現とマッチします。
xsd:decimal -5.0 "-5.0"^^xsd:decimal 任意の精度の10進数は、オプションの記号、0以上の数、小数点、1以上の数で記述できます。10進数は、「[+-]?[0-9]*\.[0-9]+」という正規表現とマッチします。
xsd:double 4.2E9 "4.2E9"^^xsd:double 倍精度浮動小数点数の値は、オプションで小数点が付く任意符号付き仮数、「e」または「E」の文字、任意符号付き整数指数で記述できます。指数は「[+-]?[0-9]+」という正規表現とマッチし、仮数は「[+-]?[0-9]+\.[0-9]+」、「[+-]?\.[0-9]+」または「[+-]?[0-9]」の正規表現のひとつとマッチします。
例12
@prefix : <http://example.org/elements> .                                                                              
<http://en.wikipedia.org/wiki/Helium>
    :atomicNumber 2 ;               # xsd:integer
    :atomicMass 4.002602 ;          # xsd:decimal
    :specificGravity 1.663E-4 .     # xsd:double

2.5.3 ブール値

ブール値は、「true」か「false」(大文字・小文字を区別する)のどちらかで記述でき、xsd:booleanというデータ型を持つRDFリテラルを表します。

例13
@prefix : <http://example.org/stats> .
<http://somecountry.example/census2007>
    :isLandlocked false .           # xsd:boolean

2.6 RDF空白ノード

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

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

例14
@prefix foaf: <http://xmlns.com/foaf/0.1/> .

_:alice foaf:knows _:bob .
_:bob foaf:knows _:alice .

2.7 入れ子にしたTurtleのラベルなし空白ノード

Turtleでは、生成規則のblankNodePropertyListと終端記号のANONがマッチするときにも新しいRDF空白ノードが割り当てられます。これらの両方ともがトリプルの主語または目的語の位置に出現可能です(Turtle文法を参照)。その主語または目的語は、新しいRDF空白ノードです。この空白ノードは、blankNodePropertyListに組み込まれたpredicateObjectList生成規則とのマッチングにより生成されるトリプルの主語の機能も果たします。これらのトリプルの生成については、述語リストで記述しています。空白ノードは、下記で述べているコレクションにも割り当てられます。

例15
@prefix foaf: <http://xmlns.com/foaf/0.1/> .

# 誰かが他の誰かを知っていて、その人は「Bob」という名前を持っている。
[] foaf:knows [ foaf:name "Bob" ] .

Turtle文法では、blankNodePropertyListを入れ子にすることができます。このケースでは、個々の内部の[は、新しい主語の空白ノードを設け、]で外部ノードに戻り、述語目的語リストに対する現在の主語の機能を果たします。

blankNodePropertyListにおけるpredicateObjectListの使用は、ノードの一連のプロパティーを表すための一般的な成句です。

省略形:

例16
@prefix foaf: <http://xmlns.com/foaf/0.1/> .

[ foaf:name "Alice" ] foaf:knows [
    foaf:name "Bob" ;
    foaf:knows [
        foaf:name "Eve" ] ;
    foaf:mbox <bob@example.com> ] .
				

対応するシンプルなトリプル:

例17

_:a <http://xmlns.com/foaf/0.1/name> "Alice" .
_:a <http://xmlns.com/foaf/0.1/knows> _:b .
_:b <http://xmlns.com/foaf/0.1/name> "Bob" .
_:b <http://xmlns.com/foaf/0.1/knows> _:c .
_:c <http://xmlns.com/foaf/0.1/name> "Eve" .
_:b <http://xmlns.com/foaf/0.1/mbox> <bob@example.com> .

2.8 コレクション

RDFは、RDFノードのリストにコレクション[RDF11-MT]の構造を提供します。コレクション用のTurtle構文は、()で囲まれたRDF用語の恐らく空のリストです。このコレクションは、()で囲まれた用語の順序であるrdf:firstステートメントの目的語のシーケンスを持つrdf:first/rdf:restリスト構造を表します。

(…)という構文は、トリプルの主語目的語の位置に出現しなければなりません(MUST)(Turtle文法を参照)。リスト冒頭の空白ノードは、含まれているトリプルの主語か目的語です。

例18

@prefix : <http://example.org/foo> .
# このトリプルの目的語はRDFコレクション空白ノード
:subject :predicate ( :a :b :c ) .

# 空のコレクション値 - rdf:nil
:subject :predicate2 () .

3.

この項は非規範的です。

この例は、RDF/XML構文仕様例7をTurtleに変換したものです(example1.ttl)。

例19
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix ex: <http://example.org/stuff/1.0/> .

<http://www.w3.org/TR/rdf-syntax-grammar>
  dc:title "RDF/XML Syntax Specification (Revised)" ;
  ex:editor [
    ex:fullname "Dave Beckett";
    ex:homePage <http://purl.org/net/dajobe/>
  ] .

2つのリテラルのRDFコレクションの例。

例20

PREFIX : <http://example.org/stuff/1.0/>
:a :b ( "apple" "banana" ) .

上記は、下記の省略形です(example2.ttl)。

例21
@prefix : <http://example.org/stuff/1.0/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
:a :b
  [ rdf:first "apple";
    rdf:rest [ rdf:first "banana";
               rdf:rest rdf:nil ]
  ] .

改行を含んだリテラルの目的語が含まれている2つの同じトリプルの例で、プレーン・リテラルと長いリテラルの形式で記述されています。この例の改行は、LINE FEED(U+000A)です(example3.ttl)。

例22
@prefix : <http://example.org/stuff/1.0/> .

:a :b "The first line\nThe second line\n  more" .

:a :b """The first line
The second line
  more""" .

文法で示されているように、コレクション主語目的語のどちらかになりえます。この主語や目的語は、コレクションに1つ以上の目的語があれば最初の目的語に対する新しい空白ノードになり、コレクションが空の場合にはrdf:nilになるでしょう。

例えば、

例23
@prefix : <http://example.org/stuff/1.0/> .
(1 2.0 3E1) :p "w" .

上記は、下記の糖衣構文です(b0b1b2の空白ノードがRDFグラフの他のいかなる位置にも出現ないことに注意)。

例24
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
    _:b0  rdf:first  1 ;
          rdf:rest   _:b1 .
    _:b1  rdf:first  2.0 ;
          rdf:rest   _:b2 .
    _:b2  rdf:first  3E1 ;
          rdf:rest   rdf:nil .
    _:b0  :p         "w" . 

RDFコレクションは入れ子にすることができ、他の構文形式を含むことができます。

例25
PREFIX : <http://example.org/stuff/1.0/>
(1 [:p :q] ( 2 ) ) :p2 :q2 .

上記は、下記の糖衣構文です。

例26
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
    _:b0  rdf:first  1 ;
          rdf:rest   _:b1 .
    _:b1  rdf:first  _:b2 .
    _:b2  :p         :q .
    _:b1  rdf:rest   _:b3 .
    _:b3  rdf:first  _:b4 .
    _:b4  rdf:first  2 ;
          rdf:rest   rdf:nil .
    _:b3  rdf:rest   rdf:nil .

4. TurtleとSPARQLの比較

この項は非規範的です。

SPARQL 1.1クエリ言語SPARQL)[SPARQL11-QUERY]は、そのTriplesBlock生成規則にTurtle形式の構文を用います。この生成規則は、次の点においてTurtle言語と異なっています。

  1. SPARQLは、RDFトリプルの主語としてRDFリテラルを認めます
  2. SPARQLでは、その形式のトリプルのどの部分でも変数(?または$)が認められています。
  3. Turtleでは、トリプルの外部のいかなる場所でも接頭辞と基底宣言が認められています。SPARQLでは、これは(SPARQLクエリの最初の)Prologueでのみ認められています。
  4. SPARQLは、「a」を除き、大文字・小文字を区別しないキーワードを用います。Turtleの@prefix@baseの宣言は大文字・小文字を区別し、SPARQL由来のPREFIXBASEは大文字・小文字を区別しません。
  5. true」と「false」は、SPARQLでは大文字・小文字を区別せず、Turtleでは区別します。TrUeは、Turtleでは有効なブール値ではありません。

詳細な情報に関しては、SPARQLクエリ・ドキュメント[SPARQL11-QUERY]のIRIの構文の項とSPARQL文法の項を参照してください。

5. 適合性

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

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

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

適合Turtleドキュメントは、6Turtle文法で定義されている文法と追加の制約に準拠したUnicodeの文字列で、turtleDoc生成規則で始まります。TurtleドキュメントはRDFグラフをシリアル化します。

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

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

この仕様は、Turtleのパーサが非適合の入力ドキュメントを扱う方法を定義しません。

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

Turtleのメディア・タイプはtext/turtleです。Turtleのコンテンツのコンテンツ・エンコーディングは、常にUTF-8です。MIME形式のCharsetパラメータは、text/のメディア・タイプのツリーがcharsetパラメータなしにUTF-8を送信することを認めるような時が来るまで、必須です。メディア・タイプの登録形式については、Bインターネット・メディア・タイプ、ファイル拡張子、およびマッキントッシュ・ファイル・タイプを参照してください。

6. Turtle文法

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

6.1 空白

空白(生成規則WS)は、そうしないと1つの終端記号と(誤)認識されてしまう2つの終端記号を分離するために用いられます。下記の大文字の規則名は、空白が重要なものです。これらは、Turtleパーサの構築のために選択できる終端記号を形成します。

空白は生成規則Stringにおいて重要です。

6.2 コメント

Turtle内のコメントは、IRIREFStringの外部では、「#」の形式をとり、行末(U+000DかU+000Aの文字で記述される)か、コメント記号の後に行末がない場合にはファイルの最後まで続きます。コメントは空白として扱われます。

6.3 IRI参照

相対IRIは、URI(Uniform Resource Identifier): 一般的構文[RFC3986]にあるとおり、5.2項の基本アルゴリズムのみを用いて、基底IRIで解決されます。構文に基づく正規化もスキームに基づく正規化も(RFC3986の6.2.2および6.2.3項に記述されている)実行されません。IRI参照で追加的に認められている文字は、IRI(Internationalized Resource Identifiers)[RFC3987]の6.5項にあるとおり、URI参照で無制限の文字が扱われているのと同じ方法で扱われます。

RFC3986の5.1.1項「コンテンツ内に組み込まれた基底URI」にあるとおり、@baseBASEの指示子は、相対IRIを解決するために用いる基底IRIを指定します。5.1.2項「カプセル化されたエンティティーからの基底URI」では、xml:base指示子を持つSOAPエンベロープやContent-Locationヘッダーを持つマイム・マルチパート・ドキュメントのようなカプセル化されたドキュメントから、スコープ内の基底IRI(In-Scope Base IRI)を持ってくる方法を定めています。5.1.3項「検索URIからの基底URI」で識別された「検索URI」は、特定のTurtleが検索されたURLです。上記のどの方法でも基底URIを指定できない場合は、デフォルト基底URI(5.1.4項「デフォルト基底URI」)が用いられます。@baseBASEの指示子は、前のものに対して相対的に、それぞれ新しいスコープ内の基底URIを設定します。

6.4 エスケープ・シーケンス

turtleドキュメントで用いるエスケープには次の3つの形式があります。

各種のエスケープ・シーケンスを使用できる状況
数値
エスケープ
文字列
エスケープ
予約文字
エスケープ
RDF用語として、または、@prefixPREFIX@base、またはBASE宣言で用いられるIRI yes no no
ローカル名 no no yes
文字列 yes yes no

%エンコードのシーケンスは、IRIの文字範囲にあり、ローカル名で明示的に認められます。これは、「%」の後に2つの16進の文字が置かれる形式で、同じ3文字のシーケンスを表します。このシーケンスが処理中にデコードされることはありません。Turtleで<http://a.example/%66oo-bar>と記述されている用語は、http://a.example/foo-barというIRIではなく、http://a.example/%66oo-barというIRIを指します。@prefix ex: <http://a.example/>という接頭辞を持つex:%66oo-barとして記述されている用語も、http://a.example/%66oo-barというIRIを指します。

6.5 文法

ここで用いるEBNFは、XML 1.0[EBNF-NOTATION]で定義されています。[60s]のように、数値と末尾の「s」で構成される生成規則ラベルは、SPARQL 1.1クエリ言語文法[SPARQL11-QUERY]においてその数を持つ生成規則を参照しています。

注:

  1. シングル引用符内のキーワード(「@base」「@prefix」、「a」「true」「false」)は大文字・小文字を区別します。ダブル引用符(「BASE」、「PREFIX」)内のキーワードは大文字・小文字を区別しません。
  2. UCHARECHARのエスケープ・シーケンスは、大文字・小文字を区別します。
  3. 入力をトークン化し、文法規則を選ぶ時には、最も長いマッチが選ばれます。
  4. 大文字化された名前を持つ規則が終端記号として用いられるとき、Turtle文法はLL(1)とLALR(1)です。
  5. 文法へのエントリー・ポイントはturtleDocです。
  6. 符号付きの数字では、符号と数字の間には空白は許されません。
  7. [162s] ANON ::= '[' WS* ']' というトークンでは、空白とコメントは[]間にいくつでも認められています。シングル・スペースのバージョンは、明瞭さのために文法で用いられます。
  8. prefix」も「base」も公認の言語サブタグではありませんが、「@prefix」と「@base」の文字列は、LANGTAGのパターンとマッチします。この仕様は、これらのトークン(例えば、"A"@base)のどちらかが後続する引用符付きリテラルがTurtle言語に含まれるかどうかを定義しません。
[1] turtleDoc ::= statement*
[2] statement ::= directive | triples '.'
[3] directive ::= prefixID | base | sparqlPrefix | sparqlBase
[4] prefixID ::= '@prefix' PNAME_NS IRIREF '.'
[5] base ::= '@base' IRIREF '.'
[5s] sparqlBase ::= "BASE" IRIREF
[6s] sparqlPrefix ::= "PREFIX" PNAME_NS IRIREF
[6] triples ::= subject predicateObjectList | blankNodePropertyList predicateObjectList?
[7] predicateObjectList ::= verb objectList (';' (verb objectList)?)*
[8] objectList ::= object (',' object)*
[9] verb ::= predicate | 'a'
[10] subject ::= iri | BlankNode | collection
[11] predicate ::= iri
[12] object ::= iri | BlankNode | collection | blankNodePropertyList | literal
[13] literal ::= RDFLiteral | NumericLiteral | BooleanLiteral
[14] blankNodePropertyList ::= '[' predicateObjectList ']'
[15] collection ::= '(' object* ')'
[16] NumericLiteral ::= INTEGER | DECIMAL | DOUBLE
[128s] RDFLiteral ::= String (LANGTAG | '^^' iri)?
[133s] BooleanLiteral ::= 'true' | 'false'
[17] String ::= STRING_LITERAL_QUOTE | STRING_LITERAL_SINGLE_QUOTE | STRING_LITERAL_LONG_SINGLE_QUOTE | STRING_LITERAL_LONG_QUOTE
[135s] iri ::= IRIREF | PrefixedName
[136s] PrefixedName ::= PNAME_LN | PNAME_NS
[137s] BlankNode ::= BLANK_NODE_LABEL | ANON

終端記号の生成規則

[18] IRIREF ::= '<' ([^#x00-#x20<>"{}|^`\] | UCHAR)* '>' /* #x00=NULL #01-#x1F=control codes #x20=space */
[139s] PNAME_NS ::= PN_PREFIX? ':'
[140s] PNAME_LN ::= PNAME_NS PN_LOCAL
[141s] BLANK_NODE_LABEL ::= '_:' (PN_CHARS_U | [0-9]) ((PN_CHARS | '.')* PN_CHARS)?
[144s] LANGTAG ::= '@' [a-zA-Z]+ ('-' [a-zA-Z0-9]+)*
[19] INTEGER ::= [+-]? [0-9]+
[20] DECIMAL ::= [+-]? [0-9]* '.' [0-9]+
[21] DOUBLE ::= [+-]? ([0-9]+ '.' [0-9]* EXPONENT | '.' [0-9]+ EXPONENT | [0-9]+ EXPONENT)
[154s] EXPONENT ::= [eE] [+-]? [0-9]+
[22] STRING_LITERAL_QUOTE ::= '"' ([^#x22#x5C#xA#xD] | ECHAR | UCHAR)* '"' /* #x22=" #x5C=\ #xA=new line #xD=carriage return */
[23] STRING_LITERAL_SINGLE_QUOTE ::= "'" ([^#x27#x5C#xA#xD] | ECHAR | UCHAR)* "'" /* #x27=' #x5C=\ #xA=new line #xD=carriage return */
[24] STRING_LITERAL_LONG_SINGLE_QUOTE ::= "'''" (("'" | "''")? ([^'\] | ECHAR | UCHAR))* "'''"
[25] STRING_LITERAL_LONG_QUOTE ::= '"""' (('"' | '""')? ([^"\] | ECHAR | UCHAR))* '"""'
[26] UCHAR ::= '\u' HEX HEX HEX HEX | '\U' HEX HEX HEX HEX HEX HEX HEX HEX
[159s] ECHAR ::= '\' [tbnrf"'\]
[161s] WS ::= #x20 | #x9 | #xD | #xA /* #x20=space #x9=character tabulation #xD=carriage return #xA=new line */
[162s] ANON ::= '[' WS* ']'
[163s] 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]
[164s] PN_CHARS_U ::= PN_CHARS_BASE | '_'
[166s] PN_CHARS ::= PN_CHARS_U | '-' | [0-9] | #x00B7 | [#x0300-#x036F] | [#x203F-#x2040]
[167s] PN_PREFIX ::= PN_CHARS_BASE ((PN_CHARS | '.')* PN_CHARS)?
[168s] PN_LOCAL ::= (PN_CHARS_U | ':' | [0-9] | PLX) ((PN_CHARS | '.' | ':' | PLX)* (PN_CHARS | ':' | PLX))?
[169s] PLX ::= PERCENT | PN_LOCAL_ESC
[170s] PERCENT ::= '%' HEX HEX
[171s] HEX ::= [0-9] | [A-F] | [a-f]
[172s] PN_LOCAL_ESC ::= '\' ('_' | '~' | '.' | '-' | '!' | '$' | '&' | "'" | '(' | ')' | '*' | '+' | ',' | ';' | '=' | '/' | '?' | '#' | '@' | '%')

7. 解析

RDF 1.1概念および抽象構文仕様[RDF11-CONCEPTS]は、IRIリテラルおよび空白ノードという3種類のRDF用語を定義しています。リテラルは、字句形式と、オプションの言語タグ[BCP47]またはデータ型IRIで構成されます。prefixという別の型は、解析中に文字列識別子を名前空間IRIにマッピングするために用います。この項では、生成規則と字句トークンにマッチする文字列をRDF用語やそれらの構成要素(例えば、言語タグ、リテラルの字句形式)にマッピングすることにより、6.5文法に適合する文字列をトリプルの集合にマッピングします。文法の生成規則により、パーサの状態が変更され、トリプルが作成されます。

7.1 パーサの状態

Turtleの解析には、次の5つのアイテムの状態が必要です。

7.2 RDF用語コンストラクタ

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

生成規則 手順
IRIREF IRI 「<」と「>」の間の文字を用いて、数値エスケープ・シーケンスをエスケープしないで、IRIのUnicode文字列を形成します。相対IRIの解決は6.3項により実行されます。
PNAME_NS 接頭辞 prefixID生成規則またはsparqlPrefix生成規則で用いた時には、prefixは、名前空間マップへのキーである規則の最初の引数にマッチする潜在的に空のUnicode文字列です。
IRI PrefixedName生成規則で用いた時には、iriは、規則の最初の引数に対応する名前空間マップの値です。
PNAME_LN IRI 潜在的に空の接頭辞は、PNAME_NSという最初のシーケンスで識別されます。名前空間マップには対応する名前空間がなければなりません(MUST)。IRIのUnicode文字列は、2番目の引数であるPN_LOCAL予約文字をエスケープせず、namespaceに連結させることで形成されます。
STRING_LITERAL_SINGLE_QUOTE 字句形式 最も外側の「'」の間の文字を用いて、数値および文字列のエスケープ・シーケンスをエスケープしないで、字句形式のUnicode文字列を形成します。
STRING_LITERAL_QUOTE 字句形式 最も外側の「"」の間の文字を用いて、数値および文字列のエスケープ・シーケンスをエスケープしないで、字句形式のUnicode文字列を形成します。
STRING_LITERAL_LONG_SINGLE_QUOTE 字句形式 最も外側の「'''」の間の文字を用いて、数値および文字列のエスケープ・シーケンスをエスケープしないで、字句形式のUnicode文字列を形成します。
STRING_LITERAL_LONG_QUOTE 字句形式 最も外側の「"」の間の文字を用いて、数値および文字列のエスケープ・シーケンスをエスケープしないで、字句形式のUnicode文字列を形成します。
LANGTAG 言語タグ @の後の文字は、言語タグのUnicode文字列を形成します。
RDFLiteral リテラル リテラルには、Stringという最初の規則の引数の字句形式があります。'^^' iriの規則がマッチする場合、データ型はiriで、リテラルには言語タグがありません。LANGTAGの規則がマッチした場合、データ型はrdf:langStringで、言語タグはLANGTAGです。どちらもマッチしなかった場合、データ型はxsd:stringで、リテラルには言語タグがありません。
INTEGER リテラル リテラルには、入力文字列の字句形式と、xsd:integerというデータ型があります。
DECIMAL リテラル リテラルには、入力文字列の字句形式と、xsd:decimalというデータ型があります。
DOUBLE リテラル リテラルには、入力文字列の字句形式と、xsd:doubleというデータ型があります。
BooleanLiteral リテラル リテラルには、truefalseの字句形式があり(どれが入力とマッチしたかによる)と、xsd:booleanのデータ型があります。
BLANK_NODE_LABEL 空白ノード 2番目の引数であるPN_LOCALとマッチする文字列は、bnodeLabelsのキーです。マップに対応する空白ノードがない場合、1が割り当てられます。
ANON 空白ノード 空白ノードが生成されます。
blankNodePropertyList 空白ノード 空白ノードが生成されます。次の項のblankNodePropertyListの規則に注意してください。
collection 空白ノード 空でないリストに対し、空白ノードが生成されます。次の項のcollectionの規則に注意してください。
IRI 空のリストに対し、結果として生じるIRIはrdf:nilです。次の項のcollectionの規則に注意してください。

7.3 RDFトリプル・コンストラクタ

Turtleドキュメントは、RDFトリプルの集合で構成されるRDFグラフを定義しています。subject生成規則は、curSubjectを設定します。verb生成規則は、curPredicateを設定します。ドキュメントの個々の目的語Nは、curSubject curPredicate N .というRDFトリプルを生成します。

プロパティー・リスト

blankNodePropertyList生成規則の開始により、curSubjectcurPredicateが記録され、curSubjectが新しいblank node Bに設定されます。blankNodePropertyList生成規則の終了により、curSubjectcurPredicateは復元されます。blankNodePropertyListとのマッチにより生成されるノードは、空白ノードBです。

コレクション

collection生成規則の開始により、curSubjectcurPredicateが記録されます。collection生成規則の個々のobjectは、新しいblank node Bに設定されたcurSubjectと、rdf:firstに設定されたcurPredicateを持っています。最初のものの後で目的語objectnごとに、objectn-1 rdf:rest objectn .というトリプルが生成されます。collection生成規則の終了により、curSubject rdf:rest rdf:nil .というトリプルが追加生成され、curSubjectcurPredicateが復元されます。collectionとのマッチにより生成されたノードは、空でないリストに対する最初の空白ノードBと、空のリストに対するrdf:nilです。

7.4 解析の例

この項は非規範的です。

次の参考情報の例は、このTurtleドキュメントをLALR(1)パーサで解析する際に行なわれるセマンティックなアクションを示します。

例27

@prefix ericFoaf: <http://www.w3.org/People/Eric/ericP-foaf.rdf#> .
@prefix : <http://xmlns.com/foaf/0.1/> .
ericFoaf:ericP :givenName "Eric" ;
              :knows <http://norman.walsh.name/knows/who/dan-brickley> ,
                      [ :mbox <mailto:timbl@w3.org> ] ,
                      <http://getopenid.com/amyvdh> .

A. HTMLドキュメントへのTurtleの組み込み

この項は非規範的です。

HTML[HTML5]のscriptタグは、ドキュメントにデータ・ブロックを組み込むために使用できます。このように、TurtleはHTMLに容易に組み込むことができます。

例28
<script type="text/turtle">
@prefix dc: <http://purl.org/dc/terms/> .
@prefix frbr: <http://purl.org/vocab/frbr/core#> .

<http://books.example.com/works/45U8QJGZSQKDH8N> a frbr:Work ;
     dc:creator "Wil Wheaton"@en ;
     dc:title "Just a Geek"@en ;
     frbr:realization <http://books.example.com/products/9780596007683.BOOK>,
         <http://books.example.com/products/9780596802189.EBOOK> .

<http://books.example.com/products/9780596007683.BOOK> a frbr:Expression ;
     dc:type <http://books.example.com/product-types/BOOK> .

<http://books.example.com/products/9780596802189.EBOOK> a frbr:Expression ;
     dc:type <http://books.example.com/product-types/EBOOK> .
</script>

Turtleの内容は、type属性をtext/turtleに設定したscriptタグ内に記述すべきです。<>の記号は、scriptタグ内でエスケープする必要はありません。組み込まれたTurtleの文字エンコードは、HTMLドキュメント・エンコーディングとマッチするでしょう。

A.1 XHTML

この項は非規範的です。

JavaScriptのように、HTML(text/html)用に記述したTurtleをXHTML(application/xhtml+xml)で用いると壊れる場合があります。その解決策は、JavaScriptに用いられているものと同じです。

例29
<script type="text/turtle">
# <![CDATA[
@prefix frbr: <http://purl.org/vocab/frbr/core#> .

<http://books.example.com/works/45U8QJGZSQKDH8N> a frbr:Work .
# ]]>
</script>

Turtleデータ・ブロックは、XHTMLに組み込む時には、CDATAセクションで囲まなければなりません。このCDATAマーカーは、Turtleコメント内になければなりません。「]]>」という文字列がドキュメントに出現すれば、それは文字列のエスケープ(\u005d\u0054\u003e)を用いてエスケープされなければなりません。これによって、Turtleは、text/htmlapplication/xhtml+xmlの両方として機能する多言語ドキュメントでも安全になるでしょう。CDATAセクションの使用や「]]>」のスケープを行わないと、整形式ではないXMLドキュメントが作成されるかもしれません。

A.2 HTMLでのTurtleの解析

この項は非規範的です。

組み込まれたTurtleの解析と通常のTurtleドキュメントには、構文上または文法上の違いはありません。HTML DOMから解析されたTurtleドキュメントは、UTF-8エンコードのバイトの列ではなく、文字データの列になるでしょう。HTMLドキュメントが既にDOMで解析されていれば、デコードは必要ありません。個々のscriptデータ・ブロックは、自身のTurtleドキュメントであると考えられます。Turtleデータ・ブロックの@prefix@base宣言の範囲はそのデータ・ブロックであり、その他のデータ・ブロックには影響を与えません。HTMLのlang属性やXHTMLのxml:lang属性は、データ・ブロックの解析には影響を与えません。カプセル化したHTMLドキュメントの基底URIは、RFC3986の5.1.1項により「コンテンツに組み込まれた基底URI」を提供します。

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

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

Turtleのインターネット・メディア・タイプ/MIMEタイプは、「text/turtle」です。

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

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

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

タイプ名:
text
サブタイプ名:
turtle
必須パラメータ:
なし
任意のパラメータ:
charset ― このパラメータは、非ASCIIデータを転送する際に必要です。charsetは、それがもしあれば、常にUTF-8です。
コード化に関する考察:
Turtleの構文は、Unicode[UNICODE]のコード・ポイントで表されます。コード化は、常にUTF-8[UTF-8]です。
Unicodeコード・ポイントは、Xが16進の[0-9A-Fa-f]である場合、\uXXXX(U+0~U+FFFF)または\UXXXXXXXX構文(U+10000以降)を用いて表現できます。
セキュリティに関する考察:
Turtleは汎用の言明言語です。アプリケーションは、より多くの言明を推論したり、IRIを逆参照するためにデータを評価でき、そのIRIのスキームに関するセキュリティ上の検討事項が生じます。特に、HTTP IRIに関する[RFC3023]の10項のプライバシー問題に注意してください。不正確または悪質なデータ情報源から得たデータは、意図しないIRIの逆参照のみならず、不正確または誤解を招く結果に結びつくかもしれません。調べた資源に対する信頼性を、意図されているデータ利用の感度と慎重に合わせなければなりません。例えば、潜在的な内科療法の推論には、旅行計画の推論とは恐らく異なる信頼性が必要でしょう。
Turtleは任意のアプリケーション・データを表すために用います。セキュリティ上の検討事項は、使用領域によって変わるでしょう。テキストに適用できるセキュリティ・ツールやプロトコル(例えば、PGP暗号化、MD5チェックサム検証、パスワードで保護された圧縮)は、Turtleドキュメントにも使用できます。組み込まれた情報の感度を反映したセキュリティー/プライバシー・プロトコルを課さなければなりません。
Turtleは、ユーザに提示するデータを表すことができます(例えば、RDFスキーマ・ラベル)。信頼できないTurtleドキュメントから検索された文字列を表示するアプリケーションは、読者を誤解させるような悪質な文字列が用いられていなことを保証しなければなりません。XMLのメディア・タイプ登録におけるセキュリティに関する考察([RFC3023]の10項)は、任意のデータとマークアップの表現に関するガイダンスを追加提供します。
Turtleは、IRIを用語識別子として用います。Turtleで表現されたデータを解釈するアプリケーションは、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項にあります。
互換性に関する考察:
互換性の問題は知られていません。
公開済み仕様書:
この仕様書。
このメディア・タイプを使用するアプリケーション:
このメディア・タイプを用いる広く展開したアプリケーションは知られていません。これは、これらのデータを用いる一部のウェブ・サービスとクライアントで使用できます。
追加情報:
マジック・ナンバー:
Turtleドキュメントは、文字列「@prefix」または「@base」(大文字・小文字を区別する)、あるいは、ドキュメントの冒頭近くに文字列「PREFIX」または「BASE」(大文字・小文字を区別しない)を持つことができます。
ファイル拡張子:
「.ttl」
基底URI:
Turtleの「@base <IRIref>」または「BASE <IRIref>」用語は、現在の基底URIを、後ほどドキュメントで順次用いるクエリ言語の相対IRIrefと交換できます。
マッキントッシュ・ファイル・タイプ・コード:
「TEXT」
詳細情報に関する連絡先:
Eric Prud'hommeaux <eric@w3.org>
意図する使途:
汎用
使用上の制限:
なし
著者/改版管理者:
Turtle仕様は、RDF WGの成果です。W3Cは、この仕様書に対する変更管理を保持します。

C. 謝辞

この取り組みについては、他のRDF構文やTurtleの背景について論じているNew Syntaxes for RDFという論文(WWW2004に提出され、そこではN-Triples Plusと呼ばれた)で述べられました。

この取り組みは、EU IST-7プログラムIST-2001-34732の資金援助によるSemantic Web Advanced Development Europe (SWAD-Europe)プロジェクト(2002-2004年)の間に始められ、英国のブリストル大学Institute for Learning and Research Technology(2002-2005年9月)の支援でさらに開発がすすめられました。

Gregg Kellogg、Andy Seaborn、Sandro HawkeおよびRDFワーキンググループのメンバーにより、このバージョンへの有用な貢献が行われました。

ドキュメントは、より広範囲のコミュニティーによるレビュー・プロセスを通じて改善されました。

D. 変更履歴

D.1 2014年1月の勧告案以後の変更

D.2 2013年2月の勧告候補から2014年1月の勧告案までの変更

D.3 2011年8月の最初の草案から勧告候補までの変更

D.4 2008年1月のチーム提案から最初の草案までの変更

W3C以前の提案変更履歴も参照してください。

E. 参考文献

E.1 規範的な参考文献

[BCP47]
A. Phillips; M. Davis. Tags for Identifying Languages. September 2009. IETF Best Current Practice. URL: http://tools.ietf.org/html/bcp47
[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

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

[HTML5]
Robin Berjon; Steve Faulkner; Travis Leithead; Erika Doyle Navara; Edward O'Connor; Silvia Pfeiffer. HTML5. 4 February 2014. W3C Candidate Recommendation. URL: http://www.w3.org/TR/html5/
[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/
[RDF11-MT]
Patrick J. Hayes, Peter F. Patel-Schneider. RDF 1.1 Semantics. W3C Recommendation, 25 February 2014. URL: http://www.w3.org/TR/2014/REC-rdf11-mt-20140225/. The latest edition is available at http://www.w3.org/TR/rdf11-mt/
[SPARQL11-QUERY]
Steven Harris; Andy Seaborne. SPARQL 1.1 Query Language. 21 March 2013. W3C Recommendation. URL: http://www.w3.org/TR/sparql11-query/
[UNICODE-SECURITY]
Mark Davis; Michel Suignard. Unicode Security Considerations. URL: http://www.unicode.org/reports/tr36/