anchor.diff:      ;
       
   triplesTemplate
  -    : triplesSameSubject ( DOT triplesSameSubject )* DOT? -> triplesSameSubject ^(TRIPLESTEMPLATE triplesSameSubject*)?
  +    : triplesSameSubject ( DOT triplesSameSubject )* DOT? -> triplesSameSubject ^(TRIPLES_TEMPLATE triplesSameSubject*)?
       ;
       	
   groupGraphPattern
  -    : OPEN_CURLY_BRACE ( subSelect | groupGraphPatternSub ) CLOSE_CURLY_BRACE -> ^(GROUPGRAPHPATTERN subSelect* groupGraphPatternSub*)
  +    : OPEN_CURLY_BRACE ( subSelect | groupGraphPatternSub ) CLOSE_CURLY_BRACE -> ^(GROUP_GRAPH_PATTERN subSelect* groupGraphPatternSub*)
       ;
       
   groupGraphPatternSub
  
positive.code:     ;
      	
  selectClause
      : SELECT ( DISTINCT | REDUCED )? ASTERISK -> ^(SELECTCLAUSE DISTINCT* REDUCED* ASTERISK)
      | SELECT ( DISTINCT | REDUCED )? (v+=selectVariables)+ -> ^(SELECTCLAUSE DISTINCT* REDUCED* $v*)
      ;
  
  selectVariables
  
negative.code: PROLOGUE;
  MODIFY;
  SUBSELECT;
  SELECT_CLAUSE;
  WHERE_CLAUSE;
  VAR;
  GROUP_BY;
  ORDER_BY;
  ORDER_CONDITION;
  BINDING_VALUE;
  TRIPLES_TEMPLATE;
  GROUP_GRAPH_PATTERN;
  ARG_LIST;
  EXPRESSION_LIST;
  CONSTRUCT_TRIPLES;
  PROPERTY_LIST;
  COLLECTION;
  TRIPLE;
  SUBJECT;
  PREDICATE;
  OBJECT;
  NOT_EXISTS;
  FUNCTION;
  PATH_NEGATED;
  }
  