anchor.diff:  
   triplesSameSubjectPath
       : varOrTerm propertyListNotEmptyPath -> ^(TRIPLES_SAME_SUBJECT ^(SUBJECT varOrTerm) propertyListNotEmptyPath)
  -    | triplesNode propertyListNotEmpty? -> ^(TRIPLES_SAME_SUBJECT  triplesNode (^(SUBJECT BLANK_NODE) propertyListNotEmpty)?)
  +    | triplesNode propertyListNotEmpty? -> ^(TRIPLES_SAME_SUBJECT  triplesNode propertyListNotEmpty?)
       ;
     
   propertyListNotEmptyPath
  -    : verbSimpleOrPath objectList (SEMICOLON (verbSimpleOrPath objectList)?)* -> (^(PREDICATE verbSimpleOrPath) objectList)+
  +    : propertyListNotEmptyDetails (SEMICOLON propertyListNotEmptyDetails?)* -> propertyListNotEmptyDetails+
  +    ;
  +  
  +propertyListNotEmptyDetails
  +    : verbSimpleOrPath objectList -> ^(PREDICATE  verbSimpleOrPath objectList)
       ;
     
   verbSimpleOrPath
  
positive.code:     ;
  
  constructQuery
      : CONSTRUCT constructTemplate datasetClause* whereClause solutionModifier -> ^(CONSTRUCT constructTemplate* datasetClause* whereClause* solutionModifier*)
      | CONSTRUCT datasetClause* WHERE groupGraphPattern solutionModifier -> ^(CONSTRUCT datasetClause* ^(WHERE groupGraphPattern*) solutionModifier*)
      ;
  
  describeQuery
  
negative.code:     ;
  
  unaryExpression
      : NEGATION primaryExpression -> ^(UNARY NEGATION primaryExpression)
      | PLUS primaryExpression -> ^(UNARY PLUS primaryExpression)
      | MINUS primaryExpression -> ^(UNARY MINUS primaryExpression)
      | primaryExpression -> ^(UNARY primaryExpression)
      ;
  
  