anchor.diff:  ;; xsd:boolean rdfTerm NOT IN(expression, ...)
   ;;    Equivalent to (lhs != expression1) && (lhs != expression2) && ... and !(IN (expression1, expression2, ...))
   ;;
  -(define-sparql-form "not in" (:arguments (x &rest expressions) :returns xsd-boolean-value :hiddenp t)
  +(define-sparql-form "not in" (:arguments (x &rest expressions) :returns xsd-boolean-value :hiddenp nil)
     (let ((xvar (gensym "X")))
       `(let ((,xvar ,x))
          (and ,@(loop for expr in expressions collect `(not (sparql-call "=" ,xvar ,expr)))))))
  
positive.code: ;; -----------------
  ;; sameTerm	RDF term, RDF term -> xsd:boolean	 => term1 = term2
  ;;    Returns TRUE iff term1 and term2 are the same RDF term as defined in Resource Description Framework (RDF): Concepts and Abstract Syntax [CONCEPTS]
  (define-sparql-function "sameTerm" (:arguments ((t1 term-or-value) (t2 term-or-value)) :returns xsd-boolean :hiddenp t)
    (:method ((v1 xsd-value) (v2 xsd-value)) (sparql-call "=" v1 v2))
    (:method ((i1 rdf-iri) (i2 rdf-iri)) (rdf-iri= i1 i2))
    (:method ((b1 rdf-blank-node) (b2 rdf-blank-node)) (string= (uniquely-named-object-name b1) (uniquely-named-object-name b2)))
  
negative.code: ;; -----------
  ;; xsd:boolean rdfTerm IN(expression, ...)
  ;;    The IN operator is equivalent to the SPARQL expression: (lhs = expression1) || (lhs = expression2) || ...
  (define-sparql-form "in" (:arguments (x &rest expressions) :returns xsd-boolean-value :hiddenp nil)
    (let ((xvar (gensym "X")))
      `(let ((,xvar ,x))
         (or ,@(loop for expr in expressions collect `(sparql-call "=" ,xvar ,expr))))))
  