[1] turtleDoc ::= (statement)*
[2] statement ::= directive "."
| triples "."
[3] directive ::= prefixID
| base
[4] prefixID ::= PREFIX PNAME_NS IRI_REF
[5] base ::= BASE IRI_REF
[6] triples ::= subject predicateObjectList
[7] predicateObjectList ::= verb objectList ( ";" verb objectList )* (";")?
[8] objectList ::= object ( "," object )*
[9] verb ::= predicate
| "a"
[10] subject ::= IRIref
| blank
[11] predicate ::= IRIref
[12] object ::= IRIref
| blank
| literal
[13] literal ::= RDFLiteral
| NumericLiteral
| BooleanLiteral
[14] blank ::= BlankNode
| blankNodePropertyList
| collection
[15] blankNodePropertyList ::= "[" predicateObjectList "]"
[16] collection ::= "(" object* ")"
[60s] RDFLiteral ::= String ( LANGTAG | ( "^^" IRIref ) )?
[61s] NumericLiteral ::= NumericLiteralUnsigned
| NumericLiteralPositive
| NumericLiteralNegative
[62s] NumericLiteralUnsigned ::= INTEGER
| DECIMAL
| DOUBLE
[63s] NumericLiteralPositive ::= INTEGER_POSITIVE
| DECIMAL_POSITIVE
| DOUBLE_POSITIVE
[64s] NumericLiteralNegative ::= INTEGER_NEGATIVE
| DECIMAL_NEGATIVE
| DOUBLE_NEGATIVE
[65s] BooleanLiteral ::= "true"
| "false"
[66s] String ::= STRING_LITERAL1
| STRING_LITERAL2
| STRING_LITERAL_LONG1
| STRING_LITERAL_LONG2
[67s] IRIref ::= IRI_REF
| PrefixedName
[68s] PrefixedName ::= PNAME_LN
| PNAME_NS
[69s] BlankNode ::= BLANK_NODE_LABEL
| ANON
[17] ::= "@base"
[18] ::= "@prefix"
[70s] ::= "<" ( [^<>\"{}|^`\\] - [#0000- ] | UCHAR )* ">"
[71s] ::= (PN_PREFIX)? ":"
[72s] ::= PNAME_NS PN_LOCAL
[73s] ::= "_:" PN_LOCAL
[74s] ::= "?" VARNAME
[75s] ::= "$" VARNAME
[76s] ::= BASE
| PREFIX
| "@" [a-zA-Z]+ ( "-" [a-zA-Z0-9]+ )*
[77s] ::= [0-9]+
[78s] ::= [0-9]+ "." [0-9]*
| "." [0-9]+
[79s] ::= [0-9]+ "." [0-9]* EXPONENT
| "." ( [0-9] )+ EXPONENT
| ( [0-9] )+ EXPONENT
[80s] ::= "+" INTEGER
[81s] ::= "+" DECIMAL
[82s] ::= "+" DOUBLE
[83s] ::= "-" INTEGER
[84s] ::= "-" DECIMAL
[85s] ::= "-" DOUBLE
[86s] ::= [eE] [+-]? [0-9]+
[87s] ::= "'" ( ( [^'\\\n\r] ) | ECHAR | UCHAR )* "'"
[88s] ::= '"' ( ( [^\"\\\n\r] ) | ECHAR | UCHAR )* '"'
[89s] ::= "'''" ( ( "'" | "''" )? ( [^'\\] | ECHAR | UCHAR ) )* "'''"
[90s] ::= '"""' ( ( '"' | '""' )? ( [^\"\\] | ECHAR | UCHAR ) )* '"""'
[19] ::= ( "\\u" [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F] )
| ( "\\U" [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F]
[0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F] )
[91s] ::= "\\" [tbnrf\\\"']
[92s] ::= "(" (WS)* ")"
[93s] ::= " "
| "\t"
| "\r"
| "\n"
[94s] ::= "[" (WS)* "]"
[95s] ::= [A-Z]
| [a-z]
| [#00C0-#00D6]
| [#00D8-#00F6]
| [#00F8-#02FF]
| [#0370-#037D]
| [#037F-#1FFF]
| [#200C-#200D]
| [#2070-#218F]
| [#2C00-#2FEF]
| [#3001-#D7FF]
| [#F900-#FDCF]
| [#FDF0-#FFFD]
| [#10000-#EFFFF]
| UCHAR
[96s] ::= PN_CHARS_BASE
| "_"
[97s] ::= ( PN_CHARS_U | [0-9] ) ( PN_CHARS_U | [0-9] | #00B7 | [#0300-#036F] | [#
203F-#2040] )*
[98s] ::= PN_CHARS_U
| "-"
| [0-9]
| #00B7
| [#0300-#036F]
| [#203F-#2040]
[99s] ::= PN_CHARS_BASE ( ( PN_CHARS | "." )* PN_CHARS )?
[100s] ::= ( PN_CHARS_U | [0-9] ) ( ( PN_CHARS | "." )* PN_CHARS )?
[-] PASSED TOKENS ::= [ \t\r\n]+
| "#" [^\r\n]*