neo4j-procedure-template
neo4j-procedure-template copied to clipboard
Example code for building User Defined Procedures and Functions for Neo4j
= Neo4j Procedure Template :branch: 5.x :root: https://github.com/neo4j-examples/neo4j-procedure-template/blob/{branch}/src
This project is an example you can use to build user defined procedures, functions and aggregation functions in Neo4j. It contains two procedures, for reading and updating a full-text index.
To try this out, simply clone this repository and have a look at the source and test code (including Test-Server-Setup).
[Note] This project requires a Neo4j {branch}.x dependency.
== User Defined Procedure
The user defined procedure allows you to get the incoming and outgoing relationships for a given node.
See link:{root}/main/java/example/GetRelationshipTypes.java[GetRelationshipTypes.java] and the link:{root}/test/java/example/GetRelationshipTypesTests.java[GetRelationshipTypesTests.java].
[source,cypher]
MATCH (n:Person) CALL example.getRelationshipTypes(n) YIELD outgoing, incoming RETURN outgoing, incoming;
== User Defined Function
The user defined function is a simple join function that joins a list of strings using a delimiter.
See link:{root}/main/java/example/Join.java[Join.java] and the link:{root}/test/java/example/JoinTest.java[JoinTest.java].
[source,cypher]
RETURN example.join(['A','quick','brown','fox'],' ') as sentence
== User Defined Aggregation Function
The aggregation function example.last returns the last row of an aggregation.
[source,cypher]
MATCH (n:Person) WITH n ORDER BY n.born WITH example.last(n) as last RETURN last
See link:{root}/main/java/example/Last.java[Last.java] and the link:{root}/test/java/example/LastTest.java[LastTest.java].
== Building
This project uses maven, to build a jar-file with the procedure in this project, simply package the project with maven:
mvn clean package
This will produce a jar-file,target/procedure-template-1.0.0-SNAPSHOT.jar,
that can be deployed in the plugin directory of your Neo4j instance.
== License
Apache License V2, see LICENSE