Gremlex

Elixir Client for Gremlin (Apache TinkerPop™)
Alternatives To Gremlex
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Tinkerpop1,772146722 days ago50July 21, 202127apache-2.0Java
Apache TinkerPop - a graph computing framework
Graph759
2 months ago85apache-2.0Ruby
Practical Gremlin - An Apache TinkerPop Tutorial
Graph Notebook552
3 days ago55June 11, 202222apache-2.0Jupyter Notebook
Library extending Jupyter notebooks to integrate with Apache TinkerPop, openCypher, and RDF SPARQL.
Rexster43668173 years ago6September 17, 201414otherJava
A Graph Server (no longer active - see Apache TinkerPop)
Pipes27862136 years ago8September 17, 20141otherJava
A Lazy Data Flow Framework (no longer active - see Apache TinkerPop)
Gremlin Javascript212565 years ago12November 04, 201528mitJavaScript
JavaScript tools for graph processing in Node.js and the browser inspired by the Apache TinkerPop API
Frames1364276 years ago9September 17, 201427otherJava
An Object to Graph Framework (no longer active - see Apache TinkerPop)
Ogre118
2 years ago18June 15, 20204Clojure
Clojure library for querying Apache TinkerPop graphs
Furnace95
6 years agootherJava
A Property Graph Algorithms Package (no longer active - see Apache TinkerPop)
Gremlex50
4 years ago4December 18, 20186mitElixir
Elixir Client for Gremlin (Apache TinkerPop™)
Alternatives To Gremlex
Select To Compare


Alternative Project Comparisons
Readme

Build Status License: MIT

Gremlex

An Elixir client for Apache TinkerPop™ aka Gremlin.

Gremlex does not support all functions (yet). It is pretty early on in it's development. But you can always use raw Gremlin queries by using Client.query("<Insert gremlin query>")

Installation

Install from Hex.pm:

def deps do
  [
    {:gremlex, "~> 0.1.1"}
  ]
end

Examples

Basic Usage

The two main modules that you'll want to use are Gremlex.Graph and Gremlex.Client.

Gremlex.Graph is the module that hosts all the functions needed to build a Gremlin query. The DSL is a simple set of functions that carries over a graph for every step. Once you've defined your query, you can simply call Gremlex.Client.query/1 to perform it.

iex(1)> alias Gremlex.Graph
Gremlex.Graph
iex(2)> alias Gremlex.Client
Gremlex.Client
iex(3)> Graph.g() |> Graph.v() |> Client.query
{:ok,
 [
   %Gremlex.Vertex{
     id: 1,
     label: "person",
     properties: %{age: [29], name: ["marko"]}
   }
 ]}

Gremlin Query to Gremlex

This gremlin query:

g.V().has("name","marko")
  .out("knows")
  .out("knows")
  .values("name")

Would translate in Gremlex to:

Graph.g()
|> Graph.v()
|> Graph.has("name", "marko")
|> Graph.out("knows")
|> Graph.out("knows")
|> Graph.values("name")
|> Client.query

Raw Queries

Client.query("""
  g.V().match(
    __.as("a").out("knows").as("b"),
    __.as("a").out("created").as("c"),
    __.as("b").out("created").as("c"),
    __.as("c").in("created").count().is(2)
  )
  .select("c").by("name")
""")

Configuration

You can configure Gremlex by adding the following to your config.exs:

config :gremlex,
  host: "127.0.0.1",
  port: 8182,
  path: "/gremlin",
  pool_size: 10,
  secure: false
  ping_delay: 60_000

Gremlex uses confex, so that you can easily define your configuration to use environment variables when it comes time to deploying. To do so, simply have the parameters that need to be dynamically read at run time set to {:SYSTEM, "ENV_VAR_NAME"}.

Parameters

  • host: Gremlin host to connect to (defaults to "127.0.0.1")
  • port: Port Gremlin is listening to on host (defaults to 8182)
  • path: Websocket path to Gremlin (defaults to "/gremlin")
  • pool_size: The number of connections to keep open in the pool (defaults to 10)
  • secure: Set to true to connect to a server with SSL enabled
  • ping_delay: Delay in milliseconds to send a pong frame to the server. If 0, then a pong frame won't be scheduled. (defaults to 0)

Contributing

$ git clone https://github.com/Revmaker/gremlex.git
$ cd gremlex
$ mix deps.get
$ mix test

Once you've made your additions and mix test passes, go ahead and open a PR! Note: Please make sure you run mix format on the touched files :)

Popular Tinkerpop Projects
Popular Apache Projects
Popular Data Storage Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Elixir
Apache
Gremlin
Tinkerpop