anchor.diff:      ;
   
   groupClause
  -    : GROUP BY groupCondition+ -> ^(GROUPBY groupCondition+)
  +    : GROUP BY groupCondition+ -> ^(GROUP_BY groupCondition+)
       ;
       		 
   groupCondition
  
positive.code: 
  triplesSameSubjectPath
      : varOrTerm propertyListNotEmptyPath[(CommonTree) $varOrTerm.tree] -> ^(TRIPLE propertyListNotEmptyPath)
      | (t=triplesNode -> $t) (p=propertyListNotEmpty[(CommonTree) $triplesNode.tree]? -> ^(TRIPLE $triplesSameSubjectPath $p?))
      ;
    
  propertyListNotEmptyPath[CommonTree subject]
  
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]
  