anchor.diff:    ;
   
   fragment IRIREF_INNER_CHAR_EXT
  -  :  (PN_CHARS | '.' | ':' | '/' | '\\' | '#' | '@' | '%' | '&' | '{' | '}' | UCHAR)
  +  :  (IRIREF_INNER_CHAR | '{' | '}')
     ;
   
   fragment VARIABLE_CHAR
  
positive.code:   ;
  
  fragment RIGHT_PART_FIRST_CHAR
    : (PN_CHARS_U | ':' | [0-9] | PLX)
    ;
  
  fragment RIGHT_PART_FIRST_CHAR_EXT
    : (PN_CHARS_U | ':' | [0-9] | '{' | PLX)
    ;
  
  fragment RIGHT_PART_CHAR
    : (PN_CHARS | '.' | ':' | '/' | PLX)
    ;
  
  fragment RIGHT_PART_CHAR_EXT
  
negative.code:    ;
  
  PREFIXED_NAME
     : PNAME_NS PN_LOCAL
    ;
  
  // extends PREFIXED_NAME to allow right-hand side curly brackets, and force one right-hand side opening curly bracket
  PREFIXED_NAME_EXT
    : PNAME_NS PN_LOCAL_EXT
    ;
  
  BLANK_NODE_LABEL
    : '_:' (PN_CHARS_U | [0-9]) ((PN_CHARS | '.')* PN_CHARS )?
  