anchor.diff:  
   triplesSameSubjectPath
       : varOrTerm propertyListNotEmptyPath[(CommonTree) $varOrTerm.tree] -> ^(TRIPLE propertyListNotEmptyPath)
  -    | triplesNode propertyListNotEmpty[(CommonTree) $triplesNode.tree]? -> ^(TRIPLE triplesNode* propertyListNotEmpty*)
  +    | triplesNode propertyListNotEmpty[(CommonTree) $triplesNode.tree]? -> ^(TRIPLE triplesNode propertyListNotEmpty?)
       ;
     
   propertyListNotEmptyPath[CommonTree subject]
  
positive.code:     ;
      
  havingClause
      : HAVING (c=constraint)+ -> ^(HAVING $c+)	
      ;
      
  orderClause
      : ORDER BY (o+=orderCondition)+ -> ^(ORDERBY $o+)
      ;
  
  orderCondition
      : ( ( ASC | DESC ) brackettedExpression ) -> ^(ORDERCONDITION ASC* DESC* brackettedExpression)
      | ( constraint | var ) -> ^(ORDERCONDITION constraint* var*)
      ;
  	    
  limitOffsetClauses
  
negative.code:     ;
  
  triplesSameSubject
      : varOrTerm propertyListNotEmpty[(CommonTree) $varOrTerm.tree] -> propertyListNotEmpty
      | triplesNode propertyListNotEmpty[(CommonTree) $triplesNode.tree]? -> triplesNode propertyListNotEmpty?
      ;
  
  propertyListNotEmpty[CommonTree subject]
  