All Projects → clojurewerkz → Ogre

clojurewerkz / Ogre

Clojure library for querying Apache TinkerPop graphs

Programming Languages

clojure
4091 projects

Projects that are alternatives of or similar to Ogre

Unipop
Data Integration Graph
Stars: ✭ 184 (+55.93%)
Mutual labels:  graph, gremlin, tinkerpop
Exram.gremlinq
A .NET object-graph-mapper for Apache TinkerPop™ Gremlin enabled databases.
Stars: ✭ 84 (-28.81%)
Mutual labels:  graph, gremlin, tinkerpop
Tinkerpop
Apache TinkerPop - a graph computing framework
Stars: ✭ 1,309 (+1009.32%)
Mutual labels:  graph, gremlin, tinkerpop
Janusgraph
JanusGraph: an open-source, distributed graph database
Stars: ✭ 4,277 (+3524.58%)
Mutual labels:  graph, gremlin, tinkerpop
Cypher For Gremlin
Cypher for Gremlin adds Cypher support to any Gremlin graph database.
Stars: ✭ 267 (+126.27%)
Mutual labels:  graph, gremlin, tinkerpop
Competitive coding
This repository contains some useful codes, techniques, algorithms and problem solutions helpful in Competitive Coding.
Stars: ✭ 393 (+233.05%)
Mutual labels:  graph, graph-algorithms
C Sharp Algorithms
📚 📈 Plug-and-play class-library project of standard Data Structures and Algorithms in C#
Stars: ✭ 4,684 (+3869.49%)
Mutual labels:  graph, graph-algorithms
Gremlin Scala
Scala wrapper for Apache TinkerPop 3 Graph DSL
Stars: ✭ 462 (+291.53%)
Mutual labels:  graph, gremlin
Lightgraphs.jl
An optimized graphs package for the Julia programming language
Stars: ✭ 611 (+417.8%)
Mutual labels:  graph, graph-algorithms
Rgl
RGL is a framework for graph data structures and algorithms in Ruby.
Stars: ✭ 279 (+136.44%)
Mutual labels:  graph, graph-algorithms
Littleballoffur
Little Ball of Fur - A graph sampling extension library for NetworKit and NetworkX (CIKM 2020)
Stars: ✭ 505 (+327.97%)
Mutual labels:  graph, graph-algorithms
Fxgraphalgorithmsimulator
Visualizes specific Graph Algorithms like BFS, DFS, MST etc. on interactive user input graphs.
Stars: ✭ 22 (-81.36%)
Mutual labels:  graph, graph-algorithms
Communities
Library of community detection algorithms and visualization tools
Stars: ✭ 348 (+194.92%)
Mutual labels:  graph, graph-algorithms
Vivagraphjs
Graph drawing library for JavaScript
Stars: ✭ 3,442 (+2816.95%)
Mutual labels:  graph, graph-algorithms
Ngraph.graph
Graph data structure in JavaScript
Stars: ✭ 295 (+150%)
Mutual labels:  graph, graph-algorithms
Swiftgraph
A Graph Data Structure in Pure Swift
Stars: ✭ 588 (+398.31%)
Mutual labels:  graph, graph-algorithms
Cracking The Coding Interview
Solutions for Cracking the Coding Interview - 6th Edition
Stars: ✭ 35 (-70.34%)
Mutual labels:  graph, graph-algorithms
Deepwalk C
DeepWalk implementation in C++
Stars: ✭ 88 (-25.42%)
Mutual labels:  graph, graph-algorithms
Janusgraph.cn
分布式图数据库 JanusGraph 中文社区,关于 JanusGraph 的一切
Stars: ✭ 273 (+131.36%)
Mutual labels:  graph, gremlin
Leaderboardx
A tool for building graphs quickly
Stars: ✭ 13 (-88.98%)
Mutual labels:  graph, graph-algorithms

Ogre

Ogre is a Clojure Gremlin Language Variant of the Gremlin graph traversal language from Apache Tinkerpop. Like Gremlin, it can be used to query any graphs that are TinkerPop-enabled.

Project Goals

  • Provide an API that enhances the expressivity of Gremlin when working in Clojure.
  • Expose the features of TinkerPop as it makes sense in Clojure.
  • Don't introduce any significant amount of performance overhead.

Community

Questions related to Ogre can be asked on the clojure-titanium mailing list.

To subscribe for announcements of releases, important changes and so on, please follow @ClojureWerkz on Twitter.

Project Maturity

Despite being first released in 2014, Orge is a relatively young project that regained active development in 2016. Most of Ogre's features are driven by changes to Apache TinkerPop (specifically the Traversal API) which has largely stabilized itself in over the course of the 3.2.x line of code. As a result, Ogre tends to be fairly stable with its implementation of that API. Ogre also implements the TinkerPop Process Test Suite, which helps validate that Ogre is compliant with Gremlin.

Ogre currently targets TinkerPop 3.4.x.

Artifacts

Orge artifacts are released to Clojars. Maven users should add the following repository definition to your pom.xml:

<repository>
  <id>clojars.org</id>
  <url>http://clojars.org/repo</url>
</repository>

The Most Recent Release

With Leiningen:

[clojurewerkz/ogre "3.4.7.0"]

With Maven:

<dependency>
  <groupId>clojurewerkz</groupId>
  <artifactId>ogre</artifactId>
  <version>3.4.7.0</version>
</dependency>

Documentation & Examples

You'll need to choose a TinkerPop-enabled graph database and add that to your project's dependencies. Here we use the in-memory graph database implementation provided by org.apache.tinkerpop/tinkergraph-gremlin, e.g.:

With Leiningen:

[org.apache.tinkerpop/tinkergraph-gremlin "3.4.7"]

With Maven:

<dependency>
  <groupId>org.apache.tinkerpop</groupId>
  <artifactId>tinkergraph-gremlin</artifactId>
  <version>3.4.7</version>
</dependency>

REPL examples:

user=> (load "clojurewerkz/ogre/core")
nil
user=> (in-ns 'clojurewerkz.ogre.core)
#object[clojure.lang.Namespace 0x2bcfe59c "clojurewerkz.ogre.core"]
clojurewerkz.ogre.core=> (def graph (open-graph {(Graph/GRAPH) (.getName org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph)}))
#'clojurewerkz.ogre.core/graph
clojurewerkz.ogre.core=> (def g (traversal graph))
#'clojurewerkz.ogre.core/g
clojurewerkz.ogre.core=> (org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerFactory/generateModern graph)
nil
clojurewerkz.ogre.core=> (traverse g V (match
                    #_=>   (__ (as :a) (out :created) (as :b))
                    #_=>   (__ (as :b) (has :name "lop"))
                    #_=>   (__ (as :b) (in :created) (as :c))
                    #_=>   (__ (as :c) (has :age 29)))
                    #_=>   (select :a :c) (by :name)
                    #_=>   (into-seq!))
({"a" "marko", "c" "marko"} {"a" "josh", "c" "marko"} {"a" "peter", "c" "marko"})

Ogre has more complete documentation here.

Supported Clojure Versions

Orge requires Clojure 1.8+. The most recent stable release is always recommended.

Continuous Integration

Build Status

Development

Orge uses Leiningen 2. Once installed and run tests using:

lein test

License

Copyright (C) 2014-2017 Zack Maril, and the ClojureWerkz team. Copyright (C) 2017 Stephen Mallette, Zack Maril, and the ClojureWerkz team.

Licensed under the Eclipse Public License (the same as Clojure).

Acknowledgements

Joe Lee illustrated the "Gremlin Ogre" image based on the original Clojurewerkz Ogre logo and Apache TinkerPop's Gremlin character developed Ketrina Yim.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].