anchor.diff:      ;
       
   iriRefOrFunction
  -    : iriRef argList?
  +    : iriRef argList? -> ^(FUNCTION iriRef ^(ARGLIST argList)?)
       ;
   
   rdfLiteral
  
positive.code:     ;	
  
  constructTemplate
      : OPEN_CURLY_BRACE constructTriples? CLOSE_CURLY_BRACE -> constructTriples?
      ;
  
  constructTriples
      : triplesSameSubject ( DOT triplesSameSubject )* DOT? -> ^(CONSTRUCTTRIPLES triplesSameSubject+)
      ;
  
  triplesSameSubject
  
negative.code:     ;
  
  functionCall
      : iriRef argList -> ^(FUNCTION iriRef ^(ARGLIST argList))
      ;
  
  argList
      : ( nil | OPEN_BRACE DISTINCT? expression ( COMMA expression )* CLOSE_BRACE ) -> DISTINCT? nil* expression*
      ;
  
  expressionList
  