Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Tinkerpop | 1,772 | 146 | 72 | 2 days ago | 50 | July 21, 2021 | 27 | apache-2.0 | Java | |
Apache TinkerPop - a graph computing framework | ||||||||||
Graph | 759 | 2 months ago | 85 | apache-2.0 | Ruby | |||||
Practical Gremlin - An Apache TinkerPop Tutorial | ||||||||||
Graph Notebook | 552 | 3 days ago | 55 | June 11, 2022 | 22 | apache-2.0 | Jupyter Notebook | |||
Library extending Jupyter notebooks to integrate with Apache TinkerPop, openCypher, and RDF SPARQL. | ||||||||||
Rexster | 436 | 68 | 17 | 3 years ago | 6 | September 17, 2014 | 14 | other | Java | |
A Graph Server (no longer active - see Apache TinkerPop) | ||||||||||
Pipes | 278 | 62 | 13 | 6 years ago | 8 | September 17, 2014 | 1 | other | Java | |
A Lazy Data Flow Framework (no longer active - see Apache TinkerPop) | ||||||||||
Gremlin Javascript | 212 | 5 | 6 | 5 years ago | 12 | November 04, 2015 | 28 | mit | JavaScript | |
JavaScript tools for graph processing in Node.js and the browser inspired by the Apache TinkerPop API | ||||||||||
Frames | 136 | 42 | 7 | 6 years ago | 9 | September 17, 2014 | 27 | other | Java | |
An Object to Graph Framework (no longer active - see Apache TinkerPop) | ||||||||||
Ogre | 118 | 2 years ago | 18 | June 15, 2020 | 4 | Clojure | ||||
Clojure library for querying Apache TinkerPop graphs | ||||||||||
Furnace | 95 | 6 years ago | other | Java | ||||||
A Property Graph Algorithms Package (no longer active - see Apache TinkerPop) | ||||||||||
Gremlex | 50 | 4 years ago | 4 | December 18, 2018 | 6 | mit | Elixir | |||
Elixir Client for Gremlin (Apache TinkerPop™) |
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>")
Install from Hex.pm:
def deps do
[
{:gremlex, "~> 0.1.1"}
]
end
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"]}
}
]}
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
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")
""")
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"}
.
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 enabledping_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)$ 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 :)