A Scala wrapper for Apache TinkerPop 3 providing a type-safe DSL for graph traversals.
Gremlin-Scala is a Scala wrapper for Apache TinkerPop 3, a graph traversal library for the JVM. It provides a type-safe, idiomatic Scala DSL for interacting with graph databases, allowing developers to write graph queries with compile-time validation and minimal boilerplate.
Scala developers working with graph databases who want a type-safe, expressive API for graph traversals, especially those using Apache TinkerPop-compatible databases like JanusGraph, Neo4j, or Amazon Neptune.
Developers choose Gremlin-Scala for its compile-time safety, Scala-friendly syntax, and seamless integration with TinkerPop, reducing runtime errors and improving productivity when building graph-based applications.
[unmaintained] Scala wrapper for Apache TinkerPop 3 Graph DSL
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Compile-time validation prevents invalid graph traversals, such as catching 'g.V.outE.outE' errors at compile time instead of runtime.
Provides a Scala-friendly API with arrow syntax for edges (e.g., 'paris --- "Eurostar" --> london') and for-comprehensions, making graph operations intuitive.
Supports automatic mapping of vertices to and from Scala case classes using macros, allowing seamless integration with domain models.
Enables creating domain-specific languages on top of Gremlin-Scala to abstract graph complexity, as shown in the DSL examples with for-comprehensions.
Allocates additional instances only when necessary, ensuring performance close to raw Gremlin-Java operations.
GremlinScala does not fulfill all monad laws, which can confuse functional programmers expecting pure monadic behavior in for-comprehensions.
The README documents multiple breaking changes (e.g., in versions 3.4.7.2, 3.3.2.0), leading to potential migration efforts and instability.
Features like type-safe traversals with HLists and macros assume familiarity with advanced Scala concepts, increasing the learning curve.
Limited to Apache TinkerPop 3 and Scala ecosystems, making it unsuitable for projects using other graph frameworks or non-JVM languages.