From e04507ee28b7c8c9c00c1cd1320529ed5f6cb528 Mon Sep 17 00:00:00 2001 From: Natalia Ivakina <82437520+NataliaIvakina@users.noreply.github.com> Date: Thu, 30 Oct 2025 17:20:17 +0100 Subject: [PATCH 1/3] Update antora.yml (#312) --- antora.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/antora.yml b/antora.yml index 49ef866..9bb1a3b 100644 --- a/antora.yml +++ b/antora.yml @@ -1,14 +1,14 @@ name: java-reference title: Java Reference -version: '2025.10' +version: '2025.11' start_page: ROOT:index.adoc nav: - modules/ROOT/content-nav.adoc asciidoc: attributes: - neo4j-version: '2025.10' - neo4j-version-exact: '2025.10.1' - neo4j-buildnumber: '2025.10' + neo4j-version: '2025.11' + neo4j-version-exact: '2025.11.2' + neo4j-buildnumber: '2025.11' java-driver-version: '6.0.2' neo4j-documentation-branch: 'dev' page-origin-private: false From d1819b335ddb913f780bc51e91243919e3e562f8 Mon Sep 17 00:00:00 2001 From: JoelBergstrand Date: Tue, 9 Dec 2025 11:08:38 +0100 Subject: [PATCH 2/3] Clarified naming rules for user defined callables and added list for reserved and deprecated namespaces (#310) * Clarified naming rules for user defined callables and added list for reserved and deprecated namespaces * Apply suggestions from code review Co-authored-by: Richard Sill <156673635+rsill-neo4j@users.noreply.github.com> * Updated deprecating root for procedures * Update modules/ROOT/pages/extending-neo4j/procedures.adoc * Apply suggestions from code review --------- Co-authored-by: Richard Sill <156673635+rsill-neo4j@users.noreply.github.com> Co-authored-by: Natalia Ivakina <82437520+NataliaIvakina@users.noreply.github.com> --- .../aggregation-functions.adoc | 61 +++++++++++++++++++ .../ROOT/pages/extending-neo4j/functions.adoc | 59 ++++++++++++++++++ .../pages/extending-neo4j/procedures.adoc | 29 ++++++++- 3 files changed, 148 insertions(+), 1 deletion(-) diff --git a/modules/ROOT/pages/extending-neo4j/aggregation-functions.adoc b/modules/ROOT/pages/extending-neo4j/aggregation-functions.adoc index c431189..f016a8c 100644 --- a/modules/ROOT/pages/extending-neo4j/aggregation-functions.adoc +++ b/modules/ROOT/pages/extending-neo4j/aggregation-functions.adoc @@ -32,6 +32,13 @@ An aggregator class contains one method annotated with `@UserAggregationUpdate` The method annotated with `@UserAggregationUpdate` will be called multiple times and enables the class to aggregate data. When the aggregation is done, the method annotated with `@UserAggregationResult` will be called once and the result of the aggregation will be returned. +Particular things to note: + +* All functions are annotated with `@UserAggregationFunction`. +* The aggregation function name must be namespaced and is not allowed in reserved namespaces. +* If a user-defined aggregation function is registered with the same name as a built-in function in a deprecated namespace, the built-in function is shadowed. + + See xref:extending-neo4j/values-and-types.adoc[] for details on values and types. For more details, see the Neo4j Javadocs for link:{org-neo4j-procedure-UserAggregationFunction}[`org.neo4j.procedure.UserAggregationFunction`^]. @@ -132,3 +139,57 @@ public class LongestStringTest } ---- +[[reserved-and-deprecated-namespaces]] +== Reserved and deprecated function namespaces + +Note that deprecated function namespaces will be moved to reserved in the next major Cypher version. +For more information about Neo4j and Cypher versioning, see link:https://neo4j.com/docs/operations-manual/current/introduction/#_cypher_versions[Operations manual -> Introduction]. +[[reserved-and-deprecated-function-namespaces]] +.Overview of reserved and deprecated function namespaces and names +[options="header", cols="m,m"] +|=== +| Reserved | Deprecated in Cypher 25 since Neo4j 2025.11 +| * | abac.* +| date | aura.* +| date.realtime | builtin.* +| date.statement | cdc.* +| date.transaction | coll.* +| date.truncate | date.* +| datetime | datetime.* +| datetime.fromepoch | db.* +| datetime.fromepochmillis | dbms.* +| datetime.realtime | duration.* +| datetime.statement | graph.* +| datetime.transaction | internal.* +| datetime.truncate | localdatetime.* +| db.nameFromElementId | localtime.* +| duration | math.* +| duration.between | plugin.* +| duration.inDays | point.* +| duration.inMonths | stored.* +| duration.inSeconds | string.* +| graph.byElementId | time.* +| graph.byName | tx.* +| graph.names | unsupported.* +| graph.propertiesByName | vector.* +| localdatetime | +| localdatetime.realtime | +| localdatetime.statement | +| localdatetime.transaction | +| localdatetime.truncate | +| localtime | +| localtime.realtime | +| localtime.statement | +| localtime.transaction | +| localtime.truncate | +| point.distance | +| point.withinBBox | +| time | +| time.realtime | +| time.statement | +| time.transaction | +| time.truncate | +| vector.similarity.cosine | +| vector.similarity.euclidean | +|=== + diff --git a/modules/ROOT/pages/extending-neo4j/functions.adoc b/modules/ROOT/pages/extending-neo4j/functions.adoc index 147957f..b783674 100644 --- a/modules/ROOT/pages/extending-neo4j/functions.adoc +++ b/modules/ROOT/pages/extending-neo4j/functions.adoc @@ -30,6 +30,12 @@ RETURN org.neo4j.examples.join(collect(p.names)) User-defined functions are created similarly to how procedures are created. But unlike procedures, they are annotated with `@UserFunction` and return a single value instead of a stream of values. +Particular things to note: + +* All functions are annotated with `@UserFunction`. +* The function name must be namespaced and is not allowed in reserved namespaces. +* If a function is registered with the same name as a built-in function in a deprecated namespace, the built-in function is shadowed. + See xref:extending-neo4j/values-and-types.adoc[] for details on values and types. For more details, see the link:{org-neo4j-procedure-UserFunction}[Neo4j Javadocs for `org.neo4j.procedure.UserFunction`^]. @@ -120,3 +126,56 @@ public class JoinTest { } ---- +[[reserved-and-deprecated-namespaces]] +== Reserved and deprecated function namespaces + +Note that deprecated function namespaces will be moved to reserved in the next major Cypher version. +For more information about Neo4j and Cypher versioning, see link:https://neo4j.com/docs/operations-manual/current/introduction/#_cypher_versions[Operations manual -> Introduction]. +[[reserved-and-deprecated-function-namespaces]] +.Overview of reserved and deprecated function namespaces and names +[options="header", cols="m,m"] +|=== +| Reserved | Deprecated in Cypher 25 since Neo4j 2025.11 +| * | abac.* +| date | aura.* +| date.realtime | builtin.* +| date.statement | cdc.* +| date.transaction | coll.* +| date.truncate | date.* +| datetime | datetime.* +| datetime.fromepoch | db.* +| datetime.fromepochmillis | dbms.* +| datetime.realtime | duration.* +| datetime.statement | graph.* +| datetime.transaction | internal.* +| datetime.truncate | localdatetime.* +| db.nameFromElementId | localtime.* +| duration | math.* +| duration.between | plugin.* +| duration.inDays | point.* +| duration.inMonths | stored.* +| duration.inSeconds | string.* +| graph.byElementId | time.* +| graph.byName | tx.* +| graph.names | unsupported.* +| graph.propertiesByName | vector.* +| localdatetime | +| localdatetime.realtime | +| localdatetime.statement | +| localdatetime.transaction | +| localdatetime.truncate | +| localtime | +| localtime.realtime | +| localtime.statement | +| localtime.transaction | +| localtime.truncate | +| point.distance | +| point.withinBBox | +| time | +| time.realtime | +| time.statement | +| time.transaction | +| time.truncate | +| vector.similarity.cosine | +| vector.similarity.euclidean | +|=== \ No newline at end of file diff --git a/modules/ROOT/pages/extending-neo4j/procedures.adoc b/modules/ROOT/pages/extending-neo4j/procedures.adoc index 2d61214..75df9d0 100644 --- a/modules/ROOT/pages/extending-neo4j/procedures.adoc +++ b/modules/ROOT/pages/extending-neo4j/procedures.adoc @@ -143,6 +143,8 @@ Particular things to note: * The procedure annotation can take three optional arguments: `name`, `mode`, and `eager`. ** `name` is used to specify a different name for the procedure than the default generated, which is `class.path.nameOfMethod`. If `mode` is specified, `name` must be specified as well. +** `name` is not allowed in a reserved namespace, and having a `name` without a namespace is deprecated behavior. +** If a procedure is registered with the same name as a built-in procedure in a deprecated namespace, the built-in procedure is shadowed. ** `mode` is used to declare the types of interactions that the procedure performs. A procedure fails if it attempts to execute database operations that violate its mode. The default `mode` is `READ`. @@ -163,7 +165,7 @@ Particular things to note: MATCH (n) WHERE n.key = 'value' WITH n -CALL deleteNeighbours(n, 'FOLLOWS') +CALL example.deleteNeighbours(n, 'FOLLOWS') ---- This query can delete some of the nodes that are matched by the Cypher query, and the `n.key` lookup will fail. Marking this procedure as `eager` prevents this from causing an error in Cypher code. @@ -273,3 +275,28 @@ public class MyProcedures { } ---- + +[[reserved-and-deprecated-namespaces]] +== Reserved and deprecated procedure namespaces + +Note that deprecated procedure namespaces will be moved to reserved in the next major Cypher version. +For more information about Neo4j and Cypher versioning, see link:https://neo4j.com/docs/operations-manual/current/introduction/#_cypher_versions[Operations manual -> Introduction]. +[[reserved-and-deprecated-procedure-namespaces]] +.Overview of reserved and deprecated procedure namespaces +[options="header", cols="m,m"] +|=== +| Reserved | Deprecated in Cypher 25 since Neo4j 2025.11 +| cdc.* | * +| date.* | abac.* +| datetime.* | aura.* +| db.* | builtin.* +| dbms.* | coll.* +| duration.* | math.* +| graph.* | plugin.* +| internal.* | point.* +| localdatetime.* | stored.* +| localtime.* | string.* +| time.* | vector.* +| tx.* | +| unsupported.* | +|=== From b2d57a335897fdb992a3c6b0b1b94ded8cbcc085 Mon Sep 17 00:00:00 2001 From: Louise Berglund Date: Thu, 18 Dec 2025 15:45:10 +0100 Subject: [PATCH 3/3] We have reverted the deprecation of aura.* in product. (#321) --- .../aggregation-functions.adoc | 44 +++++++++---------- .../ROOT/pages/extending-neo4j/functions.adoc | 44 +++++++++---------- .../pages/extending-neo4j/procedures.adoc | 18 ++++---- 3 files changed, 53 insertions(+), 53 deletions(-) diff --git a/modules/ROOT/pages/extending-neo4j/aggregation-functions.adoc b/modules/ROOT/pages/extending-neo4j/aggregation-functions.adoc index f016a8c..4db23ed 100644 --- a/modules/ROOT/pages/extending-neo4j/aggregation-functions.adoc +++ b/modules/ROOT/pages/extending-neo4j/aggregation-functions.adoc @@ -150,28 +150,28 @@ For more information about Neo4j and Cypher versioning, see link:https://neo4j.c |=== | Reserved | Deprecated in Cypher 25 since Neo4j 2025.11 | * | abac.* -| date | aura.* -| date.realtime | builtin.* -| date.statement | cdc.* -| date.transaction | coll.* -| date.truncate | date.* -| datetime | datetime.* -| datetime.fromepoch | db.* -| datetime.fromepochmillis | dbms.* -| datetime.realtime | duration.* -| datetime.statement | graph.* -| datetime.transaction | internal.* -| datetime.truncate | localdatetime.* -| db.nameFromElementId | localtime.* -| duration | math.* -| duration.between | plugin.* -| duration.inDays | point.* -| duration.inMonths | stored.* -| duration.inSeconds | string.* -| graph.byElementId | time.* -| graph.byName | tx.* -| graph.names | unsupported.* -| graph.propertiesByName | vector.* +| date | builtin.* +| date.realtime | cdc.* +| date.statement | coll.* +| date.transaction | date.* +| date.truncate | datetime.* +| datetime | db.* +| datetime.fromepoch | dbms.* +| datetime.fromepochmillis | duration.* +| datetime.realtime | graph.* +| datetime.statement | internal.* +| datetime.transaction | localdatetime.* +| datetime.truncate | localtime.* +| db.nameFromElementId | math.* +| duration | plugin.* +| duration.between | point.* +| duration.inDays | stored.* +| duration.inMonths | string.* +| duration.inSeconds | time.* +| graph.byElementId | tx.* +| graph.byName | unsupported.* +| graph.names | vector.* +| graph.propertiesByName | | localdatetime | | localdatetime.realtime | | localdatetime.statement | diff --git a/modules/ROOT/pages/extending-neo4j/functions.adoc b/modules/ROOT/pages/extending-neo4j/functions.adoc index b783674..fcfb550 100644 --- a/modules/ROOT/pages/extending-neo4j/functions.adoc +++ b/modules/ROOT/pages/extending-neo4j/functions.adoc @@ -137,28 +137,28 @@ For more information about Neo4j and Cypher versioning, see link:https://neo4j.c |=== | Reserved | Deprecated in Cypher 25 since Neo4j 2025.11 | * | abac.* -| date | aura.* -| date.realtime | builtin.* -| date.statement | cdc.* -| date.transaction | coll.* -| date.truncate | date.* -| datetime | datetime.* -| datetime.fromepoch | db.* -| datetime.fromepochmillis | dbms.* -| datetime.realtime | duration.* -| datetime.statement | graph.* -| datetime.transaction | internal.* -| datetime.truncate | localdatetime.* -| db.nameFromElementId | localtime.* -| duration | math.* -| duration.between | plugin.* -| duration.inDays | point.* -| duration.inMonths | stored.* -| duration.inSeconds | string.* -| graph.byElementId | time.* -| graph.byName | tx.* -| graph.names | unsupported.* -| graph.propertiesByName | vector.* +| date | builtin.* +| date.realtime | cdc.* +| date.statement | coll.* +| date.transaction | date.* +| date.truncate | datetime.* +| datetime | db.* +| datetime.fromepoch | dbms.* +| datetime.fromepochmillis | duration.* +| datetime.realtime | graph.* +| datetime.statement | internal.* +| datetime.transaction | localdatetime.* +| datetime.truncate | localtime.* +| db.nameFromElementId | math.* +| duration | plugin.* +| duration.between | point.* +| duration.inDays | stored.* +| duration.inMonths | string.* +| duration.inSeconds | time.* +| graph.byElementId | tx.* +| graph.byName | unsupported.* +| graph.names | vector.* +| graph.propertiesByName | | localdatetime | | localdatetime.realtime | | localdatetime.statement | diff --git a/modules/ROOT/pages/extending-neo4j/procedures.adoc b/modules/ROOT/pages/extending-neo4j/procedures.adoc index 75df9d0..64d1bfb 100644 --- a/modules/ROOT/pages/extending-neo4j/procedures.adoc +++ b/modules/ROOT/pages/extending-neo4j/procedures.adoc @@ -288,15 +288,15 @@ For more information about Neo4j and Cypher versioning, see link:https://neo4j.c | Reserved | Deprecated in Cypher 25 since Neo4j 2025.11 | cdc.* | * | date.* | abac.* -| datetime.* | aura.* -| db.* | builtin.* -| dbms.* | coll.* -| duration.* | math.* -| graph.* | plugin.* -| internal.* | point.* -| localdatetime.* | stored.* -| localtime.* | string.* -| time.* | vector.* +| datetime.* | builtin.* +| db.* | coll.* +| dbms.* | math.* +| duration.* | plugin.* +| graph.* | point.* +| internal.* | stored.* +| localdatetime.* | string.* +| localtime.* | vector.* +| time.* | | tx.* | | unsupported.* | |===