[1] ldpatch ::= prologue statement* [2] prologue ::= prefixID* [3] statement ::= bind | add | addNew | delete | deleteExisting | cut | updateList [4] bind ::= ( "Bind" | "B") VAR1 value path? "." [5] add ::= ( "Add" | "A") "{" graph "}" "." [6] addNew ::= ( "AddNew" | "AN") "{" graph "}" "." [7] delete ::= ( "Delete" | "D") "{" graph "}" "." [8] deleteExisting ::= ( "DeleteExisting" | "DE") "{" graph "}" "." [9] cut ::= ( "Cut" | "C") VAR1 "." [10] updateList ::= ( "UpdateList" | "UL") varOrIRI predicate slice collection "." [11] varOrIRI ::= iri | VAR1 [12] value ::= iri | literal | VAR1 [13] path ::= ("/" step | constraint)* [14] step ::= "^" iri | iri | INTEGER [15] constraint ::= "[" path ("=" value)? "]" | #x21 [16] slice ::= INTEGER? ".." INTEGER? [143s] VAR1 ::= "?" VARNAME [166s] VARNAME ::= ( PN_CHARS_U | [ 0-9] ) (PN_CHARS_U | [ 0-9] | #x00B7 | [ #x0300-#x036F] | [ #x203F-#x2040] )* [4t] prefixID ::= "@prefix" PNAME_NS IRIREF "." [18] graph ::= triples ("." triples? )* [6t] triples ::= subject predicateObjectList | blankNodePropertyList predicateObjectList? [7t] predicateObjectList ::= verb objectList (";" (verb objectList)? )* [8t] objectList ::= object ("," object)* [9t] verb ::= predicate | "a" [10t] subject ::= iri | BlankNode | collection | VAR1 [11t] predicate ::= iri [12t] object ::= iri | BlankNode | collection | blankNodePropertyList | literal | VAR1 [13t] literal ::= RDFLiteral | NumericLiteral | BooleanLiteral [14t] blankNodePropertyList ::= "[" predicateObjectList "]" [15t] collection ::= "(" object* ")" [16t] 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<>"{}|^`]#x20|#x20UCHAR)*#x20'>'#x20/*#x20#x00=NULL#x20#x2301-#x1F=control#x20codes#x20#x20=space#x20*/] [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 ::= "'''" ( ("'" | "''")? [ ^']#x20|#x20ECHAR#x20|#x20UCHAR#x20)#x20)*#x20"'''"] ) [25] STRING_LITERAL_LONG_QUOTE ::= '"""' ( ('"' | '""')? [ ^"]#x20|#x20ECHAR#x20|#x20UCHAR#x20)#x20)*#x20'"""'] ) [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 [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 ::= "\" ( "_" | "~" | "." | "-" | #x21 | "$" | "&" | "'" | "(" | ")" | "*" | "+" | "," | ";" | "=" | "/" | "?" | "#" | "@" | "%")