Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/neo4j/cypher-dsl
A Java DSL (Builder) for the Cypher Query Language
https://github.com/neo4j/cypher-dsl
builder cypher cypher-builder cypher-query-language dsl java java-dsl neo4j
Last synced: 6 days ago
JSON representation
A Java DSL (Builder) for the Cypher Query Language
- Host: GitHub
- URL: https://github.com/neo4j/cypher-dsl
- Owner: neo4j
- License: apache-2.0
- Created: 2011-10-04T07:15:27.000Z (over 13 years ago)
- Default Branch: main
- Last Pushed: 2024-12-30T04:12:11.000Z (13 days ago)
- Last Synced: 2024-12-31T08:58:03.247Z (12 days ago)
- Topics: builder, cypher, cypher-builder, cypher-query-language, dsl, java, java-dsl, neo4j
- Language: Java
- Homepage: http://neo4j.github.io/cypher-dsl
- Size: 121 MB
- Stars: 204
- Watchers: 27
- Forks: 65
- Open Issues: 15
-
Metadata Files:
- Readme: README.adoc
- Contributing: CONTRIBUTING.adoc
- License: LICENSE.txt
- Code of conduct: CODE_OF_CONDUCT.md
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
- awesome-neo4j - cypher-dsl - A Java DSL for the Cypher Query Language and an optional Query DSL mode. (REST API / Other)
README
= The Neo4j Cypher-DSL
:sectanchors:// tag::properties[]
:groupId: org.neo4j
:artifactId: neo4j-cypher-dsl// This will be next version and also the one that will be put into the manual for the main branch
:neo4j-cypher-dsl-version: 2024.4.1-SNAPSHOT
// This is the latest released version, used only in the readme
:neo4j-cypher-dsl-version-latest: 2024.4.0// end::properties[]
image:https://github.com/neo4j-contrib/cypher-dsl/workflows/build/badge.svg[link=https://github.com/neo4j-contrib/cypher-dsl/actions]
image:https://sonarcloud.io/api/project_badges/measure?project=org.neo4j%3Aneo4j-cypher-dsl-parent&metric=coverage[link=https://sonarcloud.io/summary/new_code?id=org.neo4j%3Aneo4j-cypher-dsl-parent]
image:https://sonarcloud.io/api/project_badges/measure?project=org.neo4j%3Aneo4j-cypher-dsl-parent&metric=alert_status[link=https://sonarcloud.io/dashboard?id=org.neo4j%3Aneo4j-cypher-dsl-parent]
image:https://maven-badges.herokuapp.com/maven-central/org.neo4j/neo4j-cypher-dsl/badge.svg[Maven Central,link=http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22org.neo4j%22%20AND%20a%3A%22neo4j-cypher-dsl%22][abstract]
--
The Neo4j Cypher-DSL in its current form is a spin-off from Spring Data Neo4j 6+ (né Spring Data Neo4j⚡️RX), where it is used to generate all Cypher queries.
We thank all contributors to all branches prior to 2020.0 for their effort in creating the previous versions.
--The primary goal of this project is to have a type safe way of creating Cypher queries targeted at https://neo4j.com[Neo4j 4.0+].
Most of the constructs used here are modelled after https://www.opencypher.org[openCypher], but we include several constructs specific to Neo4j.The core module of the Neo4j Cypher-DSL has no required runtime dependencies.
== Versioning
This rebooted version of the Neo4j Cypher-DSL uses https://calver.org[CalVer] in the same way Spring does
since early 2020 (see https://spring.io/blog/2020/04/30/updates-to-spring-versions[Updates to Spring Versions]),
starting at _2020.0.0_.The year digit is treated in a semver fashion for the core module.
That means that you won't experience any breaking changes when staying in a release line.
However, the first or the latest release in a given year does not necessarily reflect the current calendar year.
It's kind of a trade-off, but one that we think is valuable, otherwise we would need to postpone the first release in a year until we need todo some breaking changes.== Manual
For a gentle introduction and some getting started guides, please use our
https://neo4j.github.io/cypher-dsl[Manual].== Getting Started
=== Adding the necessary dependencies
First, include the dependency to the Neo4j Cypher-DSL under the following coordinates: `{groupId}:{artifactId}`:
==== Maven configuration
[source,xml,subs="verbatim,attributes"]
.Inclusion of the Neo4j Cypher-DSL in a Maven project
----{groupId}
{artifactId}
{neo4j-cypher-dsl-version-latest}----
==== Gradle configuration
[source,groovy,subs="verbatim,attributes"]
.Inclusion of the Neo4j Cypher-DSL in a Gradle project
----
dependencies {
compile '{groupId}:{artifactId}:{neo4j-cypher-dsl-version-latest}'
}
----=== A simple example
With the Cypher-DSL, you can build your queries starting with the static methods provided through `org.neo4j.cypherdsl.core.Cypher`.
Static imports for those packages should be allowed:[source,java,tabsize=4]
----
import static org.neo4j.cypherdsl.core.Cypher.*;import org.neo4j.cypherdsl.core.Cypher;
class SimpleExample {
public static void main(String... a) {
var m = node("Movie").named("m");
var statement = Cypher.match(m)
.returning(m)
.build();System.out.println(statement.getCypher());
// Prints MATCH (m:`Movie`) RETURN m
}
}
----=== Required Java Version
From version 2023.0.0 onwards, the minimal required Java version to use and build the Cypher-DSL is *Java 17*. If you need a version that is compatible with Java 8, please use 2022.9.x.
== Licensing
The Cypher-DSL itself is licenced under the https://www.apache.org/licenses/LICENSE-2.0[Apache License 2.0].