anchor.diff:      ;
   
   unaryExpression
  -    : op=NEGATION primaryExpression -> ^(UNARY_NOT[$op] /*NEGATION*/ primaryExpression)
  -    | op=PLUS primaryExpression -> ^(UNARY_PLUS[$op] /*PLUS*/ primaryExpression)
  -    | op=MINUS primaryExpression -> ^(UNARY_MINUS[$op] /*MINUS*/ primaryExpression)
  +    : op=NEGATION primaryExpression -> ^(UNARY_NOT[$op] primaryExpression)
  +    | op=PLUS primaryExpression -> ^(UNARY_PLUS[$op] primaryExpression)
  +    | op=MINUS primaryExpression -> ^(UNARY_MINUS[$op] primaryExpression)
       | primaryExpression -> ^(UNARY primaryExpression)
       ;
   
  
positive.code:     ;
    
  propertyListNotEmptyPath[CommonTree subject]
      : (p=verbPath  objectList[subject, (CommonTree) $p.tree]| v=verbSimple objectList[$subject, (CommonTree) $v.tree]) (SEMICOLON (p=verbPath objectList[$subject, (CommonTree) $p.tree]  | v=verbSimple  objectList[$subject, (CommonTree) $v.tree] )?)* -> objectList+
      ;
      
  verbPath
  
negative.code:     ;
      
  groupGraphPatternSub
      : triplesBlock? ( groupGraphPatternSubCache )* -> triplesBlock? groupGraphPatternSubCache*
      ;
  
  groupGraphPatternSubCache
  