A powerful, flexible, lightning-fast graph query DSL
- Support popular graph query language (e.g. Cypher, nGQL, etc)
- Out-of-the-box dsl interfaces for operate graph database.
- Powerful and flexible predicate/selection/traversal/mutation conditional wrapper.
- Lambda-style API Lambda
Inclusion of the Cypher-DSL in a Maven project
<dependency>
<groupId>io.github.maple-dsl</groupId>
<artifactId>maple-dsl-cypher</artifactId>
<version>1.0.3</version>
</dependency>
Inclusion of the Nebula-DSL in a Maven project
<dependency>
<groupId>io.github.maple-dsl</groupId>
<artifactId>maple-dsl-nebula</artifactId>
<version>1.0.3</version>
</dependency>
@Label("actor")
class Actor extends Model.V<String> {
private String name;
}
@Label("movie")
class Movie extends Model.V<String> {
@Property("movie_name")
private String name;
@Property("movie_released")
private Integer released;
}
@Label("acted_in")
class ActedIn extends Model.E<String,String> {
}
var match = G.vertex(Actor.class).eq(Actor::getName, "Tom Hanks");
var statement = G.traverse(match)
.outE(ActedIn.class)
.outV("tomHanksMovies", Movie.class, it -> it
.gte(Movie::getReleased, 1990)
.lt(Movie::getReleased, 2000)
.select(Movie::getReleased)
.selectAs(Movie::getName, "movie_name"))
.render();
statement = G.traverse(match)
.outE(ActedIn.class)
.outV("tomHanksMovies", Movie.class, it -> it
.gte(Movie::getReleased, 1990)
.lt(Movie::getReleased, 2000)
.select(Movie::getReleased)
.selectAs(Movie::getName, "movie_name"))
.inE(ActedIn.class)
.outV("otherActors", Actor.class, TraversalStep.Step::selectAll)
.render();