[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]*