anchor.diff:      ;
   
   triplesSameSubjectPath
  -    : ^(TRIPLE objectList)
  -    | ^(TRIPLE triplesSameSubjectPath)
  -    ;
  -      
  +    : ^(TRIPLE propertyListNotEmpty)
  +    | ^(TRIPLE triplesNode (propertyListNotEmpty)?)
  +    ;
  +    
   path
  -    : PATH pathSequence ( PIPE pathSequence )*
  +    : ^(PATH pathSequence+)
       ; 
   
   pathSequence
  -    : pathEltOrInverse ( DIVIDE pathEltOrInverse )*
  +    : ^(PATH_SEQUENCE pathEltOrInverse+)
  +    ;
  +    
  +pathEltOrInverse
  +    : INVERSE? pathElt
       ;
       	  	
   pathElt
       : pathPrimary pathMod?
  -    ;
  -    
  -pathEltOrInverse
  -    : pathElt | INVERSE pathElt
       ;
       
   pathMod
  
positive.code: 	
  triplesNode
      : ^(COLLECTION graphNode+)
      | ^(TRIPLE objectList)
      ;
  
  graphNode
  
negative.code:     ;
  
  triplesSameSubject
      : ^(TRIPLE propertyListNotEmpty)
      | ^(TRIPLE triplesNode (propertyListNotEmpty)?)
      ;
      
  propertyListNotEmpty
      : (^(SUBJECT varOrTerm) ^(PREDICATE verb) objectList)+
      ;
  
  objectList
      : (^(OBJECT graphNode))+
      ;
  
  verb
  