etc/turtle.ebnf in ebnf-2.4.0 vs etc/turtle.ebnf in ebnf-2.5.0

- old
+ new

@@ -1,70 +1,73 @@ -[1] turtleDoc ::= statement* -[2] statement ::= directive | triples "." -[3] directive ::= prefixID | base | sparqlPrefix | sparqlBase -[4] prefixID ::= '@prefix' PNAME_NS IRIREF "." -[5] base ::= '@base' IRIREF "." -[28s] sparqlPrefix ::= SPARQL_PREFIX PNAME_NS IRIREF -[29s] sparqlBase ::= SPARQL_BASE 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 +turtleDoc ::= statement* +statement ::= directive | triples '.' +directive ::= prefixID | base | sparqlPrefix | sparqlBase +prefixID ::= '@prefix' PNAME_NS IRIREF '.' +base ::= '@base' IRIREF '.' +sparqlPrefix ::= "PREFIX" PNAME_NS IRIREF +sparqlBase ::= "BASE" IRIREF +triples ::= subject predicateObjectList | blankNodePropertyList predicateObjectList? +predicateObjectList ::= verb objectList (';' (verb objectList)? )* +objectList ::= object ( ',' object )* +verb ::= predicate | 'a' +subject ::= iri | BlankNode | collection +predicate ::= iri +object ::= iri | BlankNode | collection | blankNodePropertyList | literal +literal ::= RDFLiteral | NumericLiteral | BooleanLiteral +blankNodePropertyList ::= '[' predicateObjectList ']' +collection ::= '(' object* ')' +NumericLiteral ::= INTEGER | DECIMAL | DOUBLE +RDFLiteral ::= String ( LANGTAG | ( '^^' iri ) )? +BooleanLiteral ::= 'true' | 'false' +String ::= STRING_LITERAL_QUOTE | STRING_LITERAL_SINGLE_QUOTE + | STRING_LITERAL_LONG_SINGLE_QUOTE | STRING_LITERAL_LONG_QUOTE +iri ::= IRIREF | PrefixedName +PrefixedName ::= PNAME_LN | PNAME_NS +BlankNode ::= BLANK_NODE_LABEL | ANON @terminals -[18] IRIREF ::= '<' ([^<>"{}|^`\]-[#x00-#x20] | UCHAR)* '>' -[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 )* '"' -[23] STRING_LITERAL_SINGLE_QUOTE ::= "'" ( [^#x27#x5C#xA#xD] | ECHAR | UCHAR )* "'" -[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\"'] -[28t] SPARQL_PREFIX ::= [Pp][Rr][Ee][Ff][Ii][Xx] -[29t] SPARQL_BASE ::= [Bb][Aa][Ss][Ee] -[161s] WS ::= #x20 | #x9 | #xD | #xA -[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-9A-Fa-f] -[172s] PN_LOCAL_ESC ::= '\' ( '_' | '~' | '.' | '-' | '!' | '$' | '&' | "'" | '(' | ')' | '*' | '+' | ',' | ';' | '=' - | '/' | '?' | '#' | '@' | '%' ) \ No newline at end of file +IRIREF ::= '<' ([^#x00-#x20<>"{}|^`\] | UCHAR)* '>' +PNAME_NS ::= PN_PREFIX? ':' +PNAME_LN ::= PNAME_NS PN_LOCAL +BLANK_NODE_LABEL ::= '_:' ( PN_CHARS_U | [0-9] ) ((PN_CHARS|'.')* PN_CHARS)? +LANGTAG ::= '@' [a-zA-Z]+ ( '-' [a-zA-Z0-9]+ )* +INTEGER ::= [+-]? [0-9]+ +DECIMAL ::= [+-]? ( ([0-9])* '.' ([0-9])+ ) +DOUBLE ::= [+-]? ( [0-9]+ '.' [0-9]* EXPONENT | '.' ([0-9])+ EXPONENT | ([0-9])+ EXPONENT ) +EXPONENT ::= [eE] [+-]? [0-9]+ +STRING_LITERAL_QUOTE ::= '"' ( [^#x22#x5C#xA#xD] | ECHAR | UCHAR )* '"' /* #x22=" #x5C=\ #xA=new line #xD=carriage return */ +STRING_LITERAL_SINGLE_QUOTE ::= "'" ( [^#x27#x5C#xA#xD] | ECHAR | UCHAR )* "'" /* #x27=' #x5C=\ #xA=new line #xD=carriage return */ +STRING_LITERAL_LONG_SINGLE_QUOTE ::= "'''" ( ( "'" | "''" )? ( [^'\] | ECHAR | UCHAR ) )* "'''" +STRING_LITERAL_LONG_QUOTE ::= '"""' ( ( '"' | '""' )? ( [^"\] | ECHAR | UCHAR ) )* '"""' +UCHAR ::= ( '\u' HEX HEX HEX HEX ) | ( '\U' HEX HEX HEX HEX HEX HEX HEX HEX ) +ECHAR ::= ('\' [tbnrf\"']) +NIL ::= '(' WS* ')' +WS ::= #x20 | #x9 | #xD | #xA /* #x20=space #x9=character tabulation #xD=carriage return #xA=new line */ +ANON ::= '[' WS* ']' +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]) +PN_CHARS_U ::= PN_CHARS_BASE | '_' +PN_CHARS ::= (PN_CHARS_U + | '-' + | [0-9] + | #x00B7 + | [#x0300-#x036F] + | [#x203F-#x2040]) +PN_PREFIX ::= PN_CHARS_BASE ( ( PN_CHARS | '.' )* PN_CHARS )? +PN_LOCAL ::= ( PN_CHARS_U | ':' | [0-9] | PLX ) ( ( PN_CHARS | '.' | ':' | PLX )* ( PN_CHARS | ':' | PLX ) ) ? +PLX ::= PERCENT | PN_LOCAL_ESC +PERCENT ::= '%' HEX HEX +HEX ::= ([0-9] | [A-F] | [a-f]) +PN_LOCAL_ESC ::= '\' ( '_' | '~' | '.' | '-' | '!' | '$' | '&' | "'" | '(' | ')' | '*' | '+' | ',' | ';' | '=' | '/' | '?' | '#' | '@' | '%' )