# Community

The Apache TinkerPop Community encompasses many different programming language ecosystems and, as a result, provides for helpful libraries, tools and applications for numerous environments and use cases. In this way, developers can feel comfortable programming in their language of choice. While TinkerPop provides official support for certain languages and tools, many are third-party supported by the wider TinkerPop Community.

Any listing of third-party products is intended to help users identify TinkerPop-enabled graph systems and does not constitute an endorsement by Apache TinkerPop nor the Apache Software Foundation. Please see the listing policy for information on how to get a TinkerPop-enabled product shown here.

## Programming Languages

Official TinkerPop Support
Community support
Some tools and libraries
Many tools and libraries

##

Third-Party Libraries and Tools

- Ogre: Ogre is a Gremlin language variant for Clojure. It provides an API that enhances the expressivity of Gremlin within Clojure, it doesn't introduce any significant amount of performance overhead, and it can work with any TinkerPop-enabled graph database or analytic system.

##

Third-Party Libraries and Tools

- Gremlex: A Gremlin Server driver for Elixir.

##

Apache TinkerPop’s Gremlin-Go implements Gremlin for the Go programming language. It offers the features of the Gremlin language in a form familiar to Go developers.

    g := gremlingo.Traversal_().WithRemote(...)
    result, err := g.V().Out("knows").In("created").ToList()

Example

`go get github.com/apache/tinkerpop/gremlin-go/v3@v3.6.4`

Go Module

Learn More

Third-Party Libraries and Tools

- Grammes: A strongly typed Gremlin server driver for Go.
- Gremgo: A Gremlin Server driver for Go.
- Gremtune: A Gremlin Server driver for Go with Amazon Neptune Compatibility.

##

Apache TinkerPop’s Gremlin-Groovy implements Gremlin within the Apache Groovy language. As a JVM-based language variant, Gremlin-Groovy is backed by Gremlin-Java constructs. Moreover, given its scripting nature, Gremlin-Groovy serves as the language of Gremlin Console and Gremlin Server.

    def g = traversal().withRemote(...)
    def l = g.V().out('knows').in('created').toList()

Example

`implementation 'org.apache.tinkerpop:gremlin-groovy:3.6.4'`

Gradle

Learn More

##

Third-Party Libraries and Tools

- greskell: Haskell binding for Gremlin graph query language.

##

Apache TinkerPop’s Gremlin-Java implements Gremlin within the Java language. It is considered the canonical, reference implementation of Gremlin and serves as the foundation by which all other Gremlin language variants should emulate.

    GraphTraversalSource g = traversal().withRemote(...);
    List l = g.V().out('knows').in('created').toList();

Example

    <!-- gremlin-driver is a common dependency but
         there are others -->
    <dependency>
      <groupId>org.apache.tinkerpop</groupId>
      <artifactId>gremlin-driver</artifactId>
      <version>3.6.4</version>
    </dependency>

Maven

Learn More

Third-Party Libraries and Tools

- Eclipse JNoSQL: An Object Graph Mapper (OGM) for Apache TinkerPop.
- Ferma: An Object Graph Mapper (OGM) for Apache TinkerPop.
- gremlin-objects: An Object Graph Mapper (OGM) for Apache TinkerPop.
- Peapod: An Object Graph Mapper (OGM) for Apache TinkerPop.
- spring-data-gremlin: Spring Data support for TinkerPop-enabled graph systems.

##

Apache TinkerPop’s Gremlin-JavaScript implements Gremlin within the JavaScript language. It targets Node.js runtime.

    const g = traversal().withRemote(...);
    const l = await g.V().out('knows').in('created').toList();

Example

    npm install gremlin

npm

Learn More

Gremlint: A linter and formatter library for Gremlin.

Third-Party Libraries and Tools

- gremlin-orm: Gremlin ORM for Node.js.
- gremlin-template-string: A Gremlin language builder.
- ts-tinkerpop: A helper library for Typescript applications via node-java.

##

Third-Party Libraries and Tools

- kotlin-gremlin-ogm: An Object Graph Mapping Library for Kotlin and Gremlin.

##

Apache TinkerPop’s Gremlin.NET implements Gremlin within the C# language making it easy for .NET developers to use Gremlin in their environment.

    var g = Traversal().WithRemote(...);
    var l = await g.V().Out("knows").In("created").ToList();

Example

    dotnet add package Gremlin.Net --version 3.6.4

NuGet

Learn More

Third-Party Libraries and Tools

- Gremlinq: A strongly typed server driver.

##

Apache TinkerPop’s gremlin-python implements Gremlin within the Python language. It attempts to make Gremlin feel Pythonic while adhering to Gremlin feel as much as possible.

    g = traversal().withRemote(...);
    l = g.V().both()[1:3].toList()

Example

    pip install gremlinpython

PyPi

Learn More

Third-Party Libraries and Tools

- Goblin: Goblin OGM for the TinkerPop 3 Gremlin Server.
- gremlinclient: An asynchronous Python 2/3 client for Gremlin Server that allows for flexible coroutine syntax.
- gremlin-py: Write pure Python Gremlin that can be sent to Gremlin Server.
- ipython-gremlin: Gremlin in IPython and Jupyter.
- gremlinrestclient: Python 2/3 library that uses HTTP to communicate with the Gremlin Server over REST.
- python-gremlin-rest: A REST-based client for Gremlin Server.

##

Third-Party Libraries and Tools

- gremlin-php: A Gremlin Server driver for PHP.

##

Third-Party Libraries and Tools

- gremlin_client: A Gremlin Server driver for Ruby.
- grumlin: A Gremlin Server driver and language variant for Ruby.

##

Third-Party Libraries and Tools

- gremlin-rs: A Gremlin Server driver and language variant for Rust.

##

Third-Party Libraries and Tools

- gremlin-scala: Gremlin-Scala is a Gremlin language variant that uses standard Scala functions, provides a convenient DSL to create vertices and edges, ensures type safe traversals, and incurrs minimal runtime overhead by only allocating instances if absolutely necessary.
- gremlinclient: An Akka HTTP Websocket Connector.
- scalajs-gremlin-client: A Gremlin-Server client with ad-hoc extensible, reactive, typeclass based API.

## Docker

##

TinkerPop offers convenient Docker images for Gremlin Server and Gremlin Console to help make it easy to quickly get started with those applications.

`docker pull tinkerpop/gremlin-server`
Gremlin Server
`docker pull tinkerpop/gremlin-console`
Gremlin Console

## Compilers and Transpilers

##

There are many languages built to query data. SQL is typically used to query relational data. There is SPARQL for RDF data. Cypher is used to do pattern matching in graph data. The list could go on. Compilers convert languages like these to Gremlin so that it becomes possible to use them in any context that Gremlin is used. In other words, a Gremlin Compiler enables a particular query language to work on any TinkerPop-enabled graph system.

- cypher-for-gremlin: A Cypher-to-Gremlin traversal transpiler.
- sparql-gremlin: A SPARQL to Gremlin traversal compiler.
- sql-gremlin: A SQL to Gremlin traversal compiler.

## Powered By

##

There are many applications that build upon TinkerPop interfaces and protocols. These applications offer graph visualization functionality, different environments for using Gremlin itself and support for various end-user use cases.

- exakat.io: Static analysis engine for PHP, powered by Gremlin.
- G.V(): G.V() is an all-in-one Gremlin IDE and graph visualization software for Windows, macOS and Linux. It offers powerful Gremlin Query completion features based on your graph structure and intuitive results visualization options. It is compatible with Apache TinkerPop-enabled graph databases over Gremlin Server protocol.
- graph.build: graph.build is a graph data production platform and it works with any database that supports Gremlin.
- Graphexp: Interactive visualization of the Gremlin graph database with D3.js.
- Graph Notebook: Library extending Jupyter notebooks to integrate with Apache TinkerPop, openCypher, and RDF SPARQL.
- gremlin-ide: An IDE for Apache TinkerPop-enabled databases using React and Electron.
- Gremlator: A helpful tool that translates Gremlin written in one programming language to the format of another.
- gremlify: A Gremlin workspace for queries and visualization.
- gremlint: A Gremlin linter and formatter.
- Gremlin-Visualizer: A visualization tool for the results of gremlin traversals.
- JUGRI: A Jupyter Gremlin interface.
- KeyLines™: KeyLines™ is an Apache TinkerPop and Gremlin compatible JavaScript SDK for quickly and easily building powerful, custom and scalable graph visualization applications. The KeyLines SDK offers a rich library of functionality to help you visualize and explore the data in your graph database, including graph layouts, social network analysis measures, filtering, temporal graph visualization and geospatial graph analysis. It allows the visualization of complex graph data at scale.
- Linkurious™: Linkurious™ is a browser-based graph visualization software to search, explore and visualize connected data. It is compatible with Apache TinkerPop and thus, any TinkerPop-enabled graph system. Linkurious provides enterprise-ready security (authentication, access rights, audit) and flexibility (API, linkurious.js JS graph visualization library) to help software architects successfully deploy graph capabilities within their organizations.
- StackState: Monitoring and AIOps allowing users to utilize Gremlin for analytical functions.
- Tom Sawyer Perspectives™: Tom Sawyer Perspectives™ is advanced graphics-based software for building enterprise-class data relationship visualization and analysis applications. It is a complete Software Development Kit (SDK) with a graphics-based design and preview environment. Tom Sawyer Perspectives combines visualization, layout, and analysis technology with an elegant platform architecture. Tom Sawyer Perspectives enables interaction with graph database systems via Apache TinkerPop.

## Join Us

Join us on our Discord Server