[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 | "$" | "&" | "'" | "(" | ")" | "*" | "+" | "," | ";" | "=" | "/" | "?" | "#" | "@" | "%")