User defined Functions can be used in any expression or predicate, just like built-in functions.

Procedures can be called stand-alone with CALL;

But you can also integrate them into your Cypher statements which makes them so much more powerful.

Load JSON example
WITH '' AS url

CALL apoc.load.json(url) YIELD value as person

MERGE (p:Person {})
   ON CREATE SET p.age = person.age, p.children = size(person.children)