anchor.diff:      : 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*)
  +    | CONSTRUCT datasetClause* WHERE groupGraphPattern solutionModifier -> ^(CONSTRUCT datasetClause* ^(WHERE groupGraphPattern*) solutionModifier*)
       ;
   
   describeQuery
  
positive.code:     ;
  
  triplesSameSubject
      : varOrTerm propertyListNotEmpty -> ^(TRIPLES_SAME_SUBJECT ^(SUBJECT varOrTerm) propertyListNotEmpty)
      | triplesNode propertyListNotEmpty? -> ^(TRIPLES_SAME_SUBJECT triplesNode (^(SUBJECT BLANK_NODE) propertyListNotEmpty)?) 
      ;
  
  
negative.code:     | BOUND OPEN_BRACE var CLOSE_BRACE -> ^(BOUND var)
      | IRI OPEN_BRACE expression CLOSE_BRACE -> ^(IRI expression)
      | URI OPEN_BRACE expression CLOSE_BRACE -> ^(URI expression)
      | BNODE (OPEN_BRACE expression CLOSE_BRACE) -> ^(BNODE expression)
      | BNODE nil -> BNODE
      | RAND nil -> RAND
      | ABS OPEN_BRACE expression CLOSE_BRACE -> ^(ABS expression)
      | CEIL OPEN_BRACE expression CLOSE_BRACE -> ^(CEIL expression)
  