diff --git a/antora.yml b/antora.yml index f1f8ffab7..c0f178920 100644 --- a/antora.yml +++ b/antora.yml @@ -6,4 +6,4 @@ nav: - modules/ROOT/content-nav.adoc asciidoc: attributes: - neo4j-version: '2025.04' + neo4j-version: '2025.06' diff --git a/modules/ROOT/pages/appendix/gql-conformance/index.adoc b/modules/ROOT/pages/appendix/gql-conformance/index.adoc index c3147046e..f6c6d653b 100644 --- a/modules/ROOT/pages/appendix/gql-conformance/index.adoc +++ b/modules/ROOT/pages/appendix/gql-conformance/index.adoc @@ -2,7 +2,7 @@ = GQL conformance *Last updated*: 4 March 2025 + -*Neo4j version*: 2025.04 +*Neo4j version*: 2025.06 GQL is the new link:https://www.iso.org/home.html[ISO] International Standard query language for graph databases. diff --git a/modules/ROOT/pages/clauses/filter.adoc b/modules/ROOT/pages/clauses/filter.adoc index c59dd10a6..6d16432f8 100644 --- a/modules/ROOT/pages/clauses/filter.adoc +++ b/modules/ROOT/pages/clauses/filter.adoc @@ -1,7 +1,7 @@ = FILTER :description: Information about Cypher's `FILTER` clause. :table-caption!: -:page-role: new-2025.04 +:page-role: new-2025.06 `FILTER` is used to add filters to queries, similar to Cypher's xref:clauses/where.adoc[`WHERE`]. Unlike `WHERE`, `FILTER` is not a subclause, which means it can be used independently of the xref:clauses/match.adoc[`MATCH`], xref:clauses/optional-match.adoc[`OPTIONAL MATCH`], and xref:clauses/with.adoc[`WITH`] clauses, but not within them. diff --git a/modules/ROOT/pages/clauses/index.adoc b/modules/ROOT/pages/clauses/index.adoc index 86a78ad39..a7cdfb28b 100644 --- a/modules/ROOT/pages/clauses/index.adoc +++ b/modules/ROOT/pages/clauses/index.adoc @@ -20,7 +20,7 @@ This set is refined and augmented by subsequent parts of the query. m| xref::clauses/filter.adoc[FILTER] | Adds filters to queries. -label:new[Introduced in Neo4j 2025.04] +label:new[Introduced in Neo4j 2025.06] m| xref::clauses/match.adoc[MATCH] | Specify the patterns to search for in the database. @@ -45,7 +45,7 @@ m| xref::clauses/finish.adoc[FINISH] m| xref::clauses/let.adoc[LET] | Binds values to variables. -label:new[Introduced in Neo4j 2025.04] +label:new[Introduced in Neo4j 2025.06] m| xref::clauses/return.adoc[RETURN ... [AS]] | Defines what to include in the query result set. diff --git a/modules/ROOT/pages/clauses/let.adoc b/modules/ROOT/pages/clauses/let.adoc index 1eaae9815..2d3f98b55 100644 --- a/modules/ROOT/pages/clauses/let.adoc +++ b/modules/ROOT/pages/clauses/let.adoc @@ -1,7 +1,7 @@ = LET :description: Information about Cypher's `LET` clause. :table-caption!: -:page-role: new-2025.04 +:page-role: new-2025.06 `LET` binds expressions to variables. For queries involving several chained expressions, it can be a more succinct and readable alternative to xref:clauses/with.adoc[`WITH`]. diff --git a/modules/ROOT/pages/clauses/load-csv.adoc b/modules/ROOT/pages/clauses/load-csv.adoc index 2e587e08a..ea72acd8c 100644 --- a/modules/ROOT/pages/clauses/load-csv.adoc +++ b/modules/ROOT/pages/clauses/load-csv.adoc @@ -552,7 +552,7 @@ In the file `companies.csv`, some rows do not specify values for some columns. The examples show several options of how to handle `null` values. [NOTE] -The queries in this example use xref:clauses/filter.adoc#filter-with-where[`FILTER`] (introduced in Neo4j 2025.04) as a replacement for `WITH * WHERE `. +The queries in this example use xref:clauses/filter.adoc#filter-with-where[`FILTER`] (introduced in Neo4j 2025.06) as a replacement for `WITH * WHERE `. .companies.csv [source, csv, filename="companies.csv"] diff --git a/modules/ROOT/pages/clauses/return.adoc b/modules/ROOT/pages/clauses/return.adoc index cc062f72c..be9c233f9 100644 --- a/modules/ROOT/pages/clauses/return.adoc +++ b/modules/ROOT/pages/clauses/return.adoc @@ -236,7 +236,7 @@ The `Movie` node `'Man of Tai Chi'` is returned by the query, but only once (wit d|Rows: 1 |=== -[role=label--new-2025.05] +[role=label--new-2025.06] [[return-all-results]] == RETURN ALL diff --git a/modules/ROOT/pages/clauses/with.adoc b/modules/ROOT/pages/clauses/with.adoc index 053a282ce..c8f655940 100644 --- a/modules/ROOT/pages/clauses/with.adoc +++ b/modules/ROOT/pages/clauses/with.adoc @@ -321,7 +321,7 @@ ORDER BY discountRates 1+d|Rows: 5 |=== -[role=label--new-2025.05] +[role=label--new-2025.06] [[with-all-results]] == Explicitly project values diff --git a/modules/ROOT/pages/deprecations-additions-removals-compatibility.adoc b/modules/ROOT/pages/deprecations-additions-removals-compatibility.adoc index 04fb8e5d5..bb2ded5ff 100644 --- a/modules/ROOT/pages/deprecations-additions-removals-compatibility.adoc +++ b/modules/ROOT/pages/deprecations-additions-removals-compatibility.adoc @@ -12,14 +12,19 @@ Cypher is a language that is constantly evolving. New features are added to the language continuously, and occasionally, some features become deprecated and are subsequently removed. +All changes to Cypher are introduced in Neo4j versions. -This section lists all of the features that have been removed, deprecated, added, or extended in different Cypher versions. +This section lists all of the features that have been removed, deprecated, added, or extended in different versions of Neo4j. Replacement syntax for deprecated and removed features are also indicated. -[[cypher-deprecations-additions-removals-2025.04]] -== Neo4j 2025.04 +[IMPORTANT] +Cypher 25 was introduced in Neo4j 2025.06 and can only be used on Neo4j 2025.06+ databases. +Features removed in Cypher 25 are still available on Neo4j 2025.06+ databases either by prepending a query with `CYPHER 5` or by having Cypher 5 as the default language for the database. -=== Removed features +[[cypher-deprecations-additions-removals-2025.06]] +== Neo4j 2025.06 + +=== Removed in Cypher 25 [cols="2", options="header"] |=== | Feature @@ -97,7 +102,7 @@ Errors have replaced notifications for impossible link:{neo4j-docs-base-uri}/ope |=== -=== Updated features +=== Updated in Cypher 25 [cols="2", options="header"] |=== @@ -198,7 +203,7 @@ RETURN count(p) AS count |=== -=== New features +=== New in Cypher 25 [cols="2", options="header"] |=== diff --git a/modules/ROOT/pages/functions/index.adoc b/modules/ROOT/pages/functions/index.adoc index 151ad484f..3aea424da 100644 --- a/modules/ROOT/pages/functions/index.adoc +++ b/modules/ROOT/pages/functions/index.adoc @@ -313,7 +313,7 @@ All trigonometric functions operate on radians, unless otherwise specified. 1.1+| xref::functions/mathematical-trigonometric.adoc#functions-cosh[`cosh()`] | `cosh(input :: FLOAT) :: FLOAT` | Returns the hyperbolic cosine of a `FLOAT`. -label:new[Introduced in 2025.04] +label:new[Introduced in 2025.06] 1.1+| xref::functions/mathematical-trigonometric.adoc#functions-cot[`cot()`] | `cot(input :: FLOAT) :: FLOAT` @@ -322,7 +322,7 @@ label:new[Introduced in 2025.04] 1.1+| xref::functions/mathematical-trigonometric.adoc#functions-coth[`coth()`] | `coth(input :: FLOAT) :: FLOAT` | Returns the hyperbolic cotangent of a `FLOAT`. -label:new[Introduced in 2025.04] +label:new[Introduced in 2025.06] 1.1+| xref::functions/mathematical-trigonometric.adoc#functions-degrees[`degrees()`] | `degrees(input :: FLOAT) :: FLOAT` @@ -347,7 +347,7 @@ label:new[Introduced in 2025.04] 1.1+| xref::functions/mathematical-trigonometric.adoc#functions-sinh[`sinh()`] | `sinh(input :: FLOAT) :: FLOAT` | Returns the hyperbolic sine of a `FLOAT`. - label:new[Introduced in 2025.04] + label:new[Introduced in 2025.06] 1.1+| xref::functions/mathematical-trigonometric.adoc#functions-tan[`tan()`] | `tan(input :: FLOAT) :: FLOAT` @@ -356,7 +356,7 @@ label:new[Introduced in 2025.04] 1.1+| xref::functions/mathematical-trigonometric.adoc#functions-tanh[`tanh()`] | `tanh(input :: FLOAT) :: FLOAT` | Returns the hyperbolic tangent of a `FLOAT`. -label:new[Introduced in 2025.04] +label:new[Introduced in 2025.06] |=== diff --git a/modules/ROOT/pages/functions/mathematical-trigonometric.adoc b/modules/ROOT/pages/functions/mathematical-trigonometric.adoc index 48582e7dd..fad2cd576 100644 --- a/modules/ROOT/pages/functions/mathematical-trigonometric.adoc +++ b/modules/ROOT/pages/functions/mathematical-trigonometric.adoc @@ -234,7 +234,7 @@ The cosine of `0.5` is returned. ====== -[role=label--new-2025.04] +[role=label--new-2025.06] [[functions-cosh]] == cosh() @@ -327,7 +327,7 @@ The cotangent of `0.5` is returned. ====== -[role=label--new-2025.04] +[role=label--new-2025.06] [[functions-coth]] == coth() @@ -629,7 +629,7 @@ The sine of `0.5` is returned. ====== -[role=label--new-2025.04] +[role=label--new-2025.06] [[functions-sinh]] == sinh() @@ -723,7 +723,7 @@ The tangent of `0.5` is returned. -[role=label--new-2025.04] +[role=label--new-2025.06] [[functions-tanh]] == tanh() diff --git a/modules/ROOT/pages/patterns/shortest-paths.adoc b/modules/ROOT/pages/patterns/shortest-paths.adoc index 965cb4040..7e28790d8 100644 --- a/modules/ROOT/pages/patterns/shortest-paths.adoc +++ b/modules/ROOT/pages/patterns/shortest-paths.adoc @@ -64,7 +64,7 @@ CREATE (asc)-[:LINK {distance: 7.25}]->(cnm), (wof)-[:LINK {distance: 0.65}]->(wos) ---- -The paths matched by a xref:patterns/fixed-length-patterns.adoc#path-patterns[path pattern] can be restricted to only the shortest (by number of hops) by including the keyword `SHORTEST k`, where `k` is the number of paths to match, and can be either an `INTEGER` literal or, as of Neo4j 2025.04, a parameter which resolves to an `INTEGER`. +The paths matched by a xref:patterns/fixed-length-patterns.adoc#path-patterns[path pattern] can be restricted to only the shortest (by number of hops) by including the keyword `SHORTEST k`, where `k` is the number of paths to match, and can be either an `INTEGER` literal or, as of Neo4j 2025.06, a parameter which resolves to an `INTEGER`. For example, the following example uses `SHORTEST 1` to return the length of the shortest path between `Worcester Shrub Hill` and `Bromsgrove`: .Query diff --git a/modules/ROOT/pages/queries/composed-queries/combined-queries.adoc b/modules/ROOT/pages/queries/composed-queries/combined-queries.adoc index 863a6664b..6a54e224f 100644 --- a/modules/ROOT/pages/queries/composed-queries/combined-queries.adoc +++ b/modules/ROOT/pages/queries/composed-queries/combined-queries.adoc @@ -157,7 +157,7 @@ ORDER BY count For more information, see xref:subqueries/call-subquery.adoc#call-post-union[`CALL` subqueries -> Post-union processing]. -[role=label--new-2025.04] +[role=label--new-2025.06] [[combining-union-and-union-all]] == Combining UNION and UNION ALL diff --git a/modules/ROOT/pages/queries/composed-queries/conditional-queries.adoc b/modules/ROOT/pages/queries/composed-queries/conditional-queries.adoc index ece02b774..4ac963cbd 100644 --- a/modules/ROOT/pages/queries/composed-queries/conditional-queries.adoc +++ b/modules/ROOT/pages/queries/composed-queries/conditional-queries.adoc @@ -1,6 +1,6 @@ = Conditional queries (`WHEN`) :description: Information about how to use `WHEN` to construct conditional queries in Cypher. -:page-role: new-2025.04 +:page-role: new-2025.06 `WHEN`, together with `THEN` and `ELSE`, enables different branches of a query to execute based on certain conditions. In this way, it performs similar a control-flow mechanism to the `IF` statement in other programming languages. diff --git a/modules/ROOT/pages/queries/composed-queries/index.adoc b/modules/ROOT/pages/queries/composed-queries/index.adoc index a8746bac2..297a2a78c 100644 --- a/modules/ROOT/pages/queries/composed-queries/index.adoc +++ b/modules/ROOT/pages/queries/composed-queries/index.adoc @@ -8,4 +8,4 @@ As such, `UNION` and `WHEN` manage in different ways the execution flow and logi For more information, see: * xref:queries/composed-queries/combined-queries.adoc[] -* xref:queries/composed-queries/conditional-queries.adoc[] label:new[Introduced in Neo4j 2025.04] +* xref:queries/composed-queries/conditional-queries.adoc[] label:new[Introduced in Neo4j 2025.06] diff --git a/modules/ROOT/pages/queries/index.adoc b/modules/ROOT/pages/queries/index.adoc index bf420bc73..9e630f317 100644 --- a/modules/ROOT/pages/queries/index.adoc +++ b/modules/ROOT/pages/queries/index.adoc @@ -8,5 +8,5 @@ It also discusses how to compose combined queries using `UNION` and conditional * xref:queries/basic.adoc[] * xref:queries/composed-queries/index.adoc[] ** xref:queries/composed-queries/combined-queries.adoc[] -** xref:queries/composed-queries/conditional-queries.adoc[] label:new[Introduced in Neo4j 2025.04] +** xref:queries/composed-queries/conditional-queries.adoc[] label:new[Introduced in Neo4j 2025.06] diff --git a/modules/ROOT/pages/subqueries/call-subquery.adoc b/modules/ROOT/pages/subqueries/call-subquery.adoc index 3e388dff8..b16c1f9de 100644 --- a/modules/ROOT/pages/subqueries/call-subquery.adoc +++ b/modules/ROOT/pages/subqueries/call-subquery.adoc @@ -484,7 +484,7 @@ Now all `Player` nodes, regardless of whether they have any `PLAYS_FOR` relation ==== -[role=label--new-2025.04] +[role=label--new-2025.06] [[conditional-call]] == Conditional `CALL` subqueries diff --git a/modules/ROOT/pages/subqueries/collect.adoc b/modules/ROOT/pages/subqueries/collect.adoc index 170f18b15..714ec9298 100644 --- a/modules/ROOT/pages/subqueries/collect.adoc +++ b/modules/ROOT/pages/subqueries/collect.adoc @@ -74,7 +74,7 @@ RETURN person.name as name, COLLECT { 2+d|Rows: 3 |=== -[role=label--new-2025.04] +[role=label--new-2025.06] [[conditional-collect]] == Conditional `COLLECT` subquery diff --git a/modules/ROOT/pages/subqueries/count.adoc b/modules/ROOT/pages/subqueries/count.adoc index bbd37ffbe..2b6ec4d05 100644 --- a/modules/ROOT/pages/subqueries/count.adoc +++ b/modules/ROOT/pages/subqueries/count.adoc @@ -71,7 +71,7 @@ RETURN person.name AS name 1+d|Rows: 1 |=== -[role=label--new-2025.04] +[role=label--new-2025.06] [[conditional-count]] == Conditional `COUNT` subquery diff --git a/modules/ROOT/pages/subqueries/existential.adoc b/modules/ROOT/pages/subqueries/existential.adoc index 07c1a7363..e0132177e 100644 --- a/modules/ROOT/pages/subqueries/existential.adoc +++ b/modules/ROOT/pages/subqueries/existential.adoc @@ -73,7 +73,7 @@ RETURN person.name AS name 1+d|Rows: 1 |=== -[role=label--new-2025.04] +[role=label--new-2025.06] [[conditional-exists]] == Conditional `EXISTS` subqueries