anchor.diff:  
   query
       : prologue (selectQuery | constructQuery | describeQuery | askQuery) bindingsClause EOF -> ^(QUERY prologue selectQuery* constructQuery* describeQuery* askQuery*) bindingsClause*
  -    | update (SEMICOLON update)* EOF -> ^(UPDATE update+)
  +    | update (SEMICOLON update?)* EOF -> ^(UPDATE update+)
       ;
   
   prologue
  
positive.code:     : var -> ^(VAR var) 
      | OPEN_BRACE expression AS var CLOSE_BRACE -> ^(AS expression var)
      ;
    
  constructQuery
      : CONSTRUCT constructTemplate datasetClause* whereClause solutionModifier -> ^(CONSTRUCT constructTemplate* datasetClause* whereClause* solutionModifier*)
      | CONSTRUCT datasetClause* WHERE OPEN_CURLY_BRACE triplesTemplate? CLOSE_CURLY_BRACE solutionModifier -> ^(CONSTRUCT datasetClause* ^(WHERE triplesTemplate*) solutionModifier*)
      ;
  
  describeQuery
  
negative.code: 
  STRENDS : ('S'|'s')('T'|'t')('R'|'r')('E'|'e')('N'|'n')('D'|'d')('S'|'s');
  
  STRBEFORE : ('S'|'s')('T'|'t')('R'|'r')('B'|'b')('E'|'e')('F'|'f')('O'|'o')('R'|'r')('E'|'e');
  
  STRAFTER : ('S'|'s')('T'|'t')('R'|'r')('A'|'a')('F'|'f')('T'|'t')('E'|'e')('R'|'r');
  
  REPLACE : ('R'|'r')('E'|'e')('P'|'p')('L'|'l')('A'|'a')('C'|'c')('E'|'e');
  
  YEAR : ('Y'|'y')('E'|'e')('A'|'a')('R'|'r');
  
  MONTH : ('M'|'m')('O'|'o')('N'|'n')('T'|'t')('H'|'h');
  