anchor.diff:      ;
   
   notExistsFunction
  -    : NOT EXISTS groupGraphPattern -> ^(NOTEXISTS groupGraphPattern)
  +    : NOT EXISTS groupGraphPattern -> ^(NOT_EXISTS groupGraphPattern)
       ;
   
   aggregate
  
positive.code: PROLOGUE;
  MODIFY;
  SUBSELECT;
  SELECTCLAUSE;
  WHERE_CLAUSE;
  VAR;
  GROUPBY;
  ORDERBY;
  ORDERCONDITION;
  BINDINGVALUE;
  TRIPLESTEMPLATE;
  GROUPGRAPHPATTERN;
  ARGLIST;
  EXPRESSIONLIST;
  CONSTRUCTTRIPLES;
  PROPERTYLIST;
  COLLECTION;
  TRIPLE;
  SUBJECT;
  PREDICATE;
  OBJECT;
  NOTEXISTS;
  FUNCTION;
  PATH_NEGATED;
  }
  
negative.code:     ;
  
  triplesSameSubject
      : v=varOrTerm propertyListNotEmpty[(CommonTree) $varOrTerm.tree] -> ^(TRIPLE propertyListNotEmpty)
      | (t=triplesNode -> $t) (p=propertyListNotEmpty[(CommonTree) $t.tree]? -> ^(TRIPLE $triplesSameSubject $p?))
      ;
  
  propertyListNotEmpty[CommonTree subject]
  