HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
tinkerpop
gremlin
Java2010–2015
tinkerpop / gremlin

gremlin

A Graph Traversal Language (no longer active - see Apache TinkerPop)

6Distinct people
26Mentions
0Explicit recommenders
2KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

A Graph Traversal Language (no longer active - see Apache TinkerPop)

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year26 dated mentions

Observed mentions: 2010-01-08 20:05:41 UTC to 2015-12-05 18:10:06 UTC.

02468102010-01-01 00:00:00 UTC to 2011-01-01 00:00:00 UTC (exclusive): 2 mentions; 1 submissions, 1 comments20102011-01-01 00:00:00 UTC to 2012-01-01 00:00:00 UTC (exclusive): 9 mentions; 1 submissions, 8 comments2012-01-01 00:00:00 UTC to 2013-01-01 00:00:00 UTC (exclusive): 8 mentions; 0 submissions, 8 comments20122013-01-01 00:00:00 UTC to 2014-01-01 00:00:00 UTC (exclusive): 4 mentions; 0 submissions, 4 comments2014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2015

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20102010-01-01 00:00:00 UTC2011-01-01 00:00:00 UTC211
20112011-01-01 00:00:00 UTC2012-01-01 00:00:00 UTC918
20122012-01-01 00:00:00 UTC2013-01-01 00:00:00 UTC808
20132013-01-01 00:00:00 UTC2014-01-01 00:00:00 UTC404
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC202
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC101

What Hacker News says

26 sources
I have started to converge on this space from a different perspective -- thinking about how to design a graph database in terms of discrete topology, which has led me to thinking in terms of the holographic principle: "the description of a volume of space can be thought of as encoded on a boundary to the region". Specifically, I have been exploring how to use shape to succinctly and uniquely define an object/relation in terms of the composition of its constituent parts in a way that enables fast decomposition back into its constituent parts. For example, picture a spatial structure resulting from a the prime decomposition (https://en.wikipedia.org/wiki/Integer_factorization#Prime_de...) of all the positive 64 bit integers [0 to 2^63-1]. In this space, the prime numbers are the base of this discrete topology. Picture the trees resulting f
Read the rest
rom all the decompositions, with the roots jutting up into space like peaks in a mountain range. This gives the numbers shape and provides a foundation to anchor more abstract objects representations. To further illustrate the point, we could define a discrete topology with each unicode character (https://en.wikipedia.org/wiki/Unicode#Code_point_planes_and_...) as a base element. Now define an algorithm to decompose strings into its constituent parts. Similarly, we could do the same thing with dates and time, decomposing them into trees, and likewise with geo coordinates in space. Or, we could map all of these structures onto a tree of its binary representation. Now with these discrete elements as anchor points existing in multiple dimensions, define relations betweens them, and use the elements and relations to compose higher-level objects. For example, in a property graph (https://github.com/tinkerpop/gremlin/wiki/Defining-a-Propert...), each vertex can contain key/value attributes, and traditionally when adding a new vertex, a vertex ID is assigned using a sequence generator. Edges are composed of two vertices, a label, optional key/value properties, and an edge ID is commonly assigned using a sequence generator. Each vertex and edge is traditionally stored as a row in the database, and traversing the graph is a process that begins with looking up the "start vertex", looking up its outgoing edges, traversing the outgoing edges to the incoming vertices, and continuing this process while using constraints to direct the traversal and filter out vertices and paths. For large graphs distributed across multiple machines, finding optimal ways to partition the graph across multiple machines is a challenge. What if instead of identifying each vertex and edge by a meaningless integer, we uniquely define each vertex and edge by a compact representation of its constituent parts, like the cells of a body compose to form a person? For example, consider the key/value properties in a vertex, such as: {type: "person", handle: "espeed", location: "Dallas, TX", age: 38, updated: 20151205112207} ...using our discrete topology, each key/value pair is uniquely represented as a point in space, and the set of points are grouped together in a cell. Multiple cells compose together to form a cell complex (https://en.wikipedia.org/wiki/CW_complex). When the set points are in general position, there exists a unique Delaunay triangulation (https://en.wikipedia.org/wiki/Delaunay_triangulation). Use Delaunay triangulation to encode a unique ID for each vertex, and then use the resulting vertex IDs, label, orientation, and optional key/value properties to compose edges. Edges then compose together to form a graph. Here's the question I'm exploring: Can we encode a graph in such a way that traversing the graph is reduced to a geometric algorithm?
In Unexplored Areas in Data Compression
+1 for using Gremlin! Do you know of any python implementations of it? Note that Marko is the creator of Gremlin :) There are Gremlin implementations in various stages of development for almost every major JVM language: Gremlin-Java (base implementation) - https://github.com/tinkerpop/gremlin/wiki/Using-Gremlin-thro... Gremlin-Groovy (original) - https://github.com/tinkerpop/gremlin/wiki/Using-Gremlin-thro... Gremlin-JavaScript - https://github.com/entrendipity/gremlin-js Gremlin-Clojure - https://github.com/zmaril/ogre Gremlin-Scala - https://github.com/mpollmeier/gremlin-scala Within the next year (before the TinkerPop book comes out), it would be cool to have all the languages covered, including Gremlin-Jython and Gremlin-JRuby. Gremlin-Java and Gremlin-Groovy are maintained by TinkerPop. Gremlin-JavaScript, Gremlin-Clojure, and Greml
Read the rest
in-Scala are being developed/maintained by community members. To create a Gremlin implementation, you essentially wrap Gremlin-Java in the target language's idiomatic style. If you are interested in helping develop Gremlin-Jython or Gremlin-JRuby (or any other implementation currently in development), please post to the Gremlin Users Group (https://groups.google.com/forum/?fromgroups=#!forum/gremlin-...). Right now most people use Gremlin-Groovy (it's the original) regardless of what language they're developing in (think of Gremlin as a domain-specific language like SQL you use in conjunction with your primary language). For example, Bulbs (http://bulbflow.com) is a Python library I wrote that supports Rexster, Neo4jServer, and Titan. In Bulbs, you edit Gremlin scripts in Groovy text files, and when you create a Python Graph object, Bulbs sources your Groovy files and caches the Gremlin scripts in a library so they are readily available for when you want to execute them on the server. See http://bulbflow.com/docs/api/bulbs/rexster/gremlin/
In Titan 0.3.0 Released: Geo, full-text, edge indexing on billion edge graphs
Titan is used in production, and it's one piece of the Aurelius Graph Cluster (http://thinkaurelius.com/subscription/), which is some of the most impressive tech to hit the open-source scene in the last few years. Matthias Broecheler (https://twitter.com/MBroecheler) is the original creator of Titan, and he is incredibly bright. When he finished his PhD, he linked up with Marko Rodriquez (https://twitter.com/twarko), the creator of Gremlin (https://github.com/tinkerpop/gremlin/wiki), and they formed Aurelius to focus on building the big-data graph ecosystem (like Cloudera for graphs -- in fact, the Aurelius Cluster integrates with Hadoop and Cloudera). There are other distributed graph databases, but most of these are batch processing engines like Pregel. However, Titan is a real-time, transactional graph database backed by either Cassan
Read the rest
dra or HBase, and it provides fast, horizontally scalable write performance (10,000+ tps) that hasn't been available in an open-source graph database. See http://thinkaurelius.com/2012/08/06/titan-provides-real-time... Combining this with Faunus for batch processing and the Aurelius Graph Cluster's integration with the Hadoop ecosystem makes for an incredibly powerful platform for building applications such as social startups. See Matthias' C* 2012 presentation: Titan - Big Graph Data With Cassandra: http://www.youtube.com/watch?v=ZkAYA4Kd8JE The Titan user group is here: https://groups.google.com/forum/?fromgroups#!forum/aureliusg... The Gremlin user group is here: https://groups.google.com/forum/?fromgroups#!forum/gremlin-u...
In Titanium – a Clojure graph library built on top of Titan
Titan is distributed and has much higher write performance (5000 transactions/sec). In the words of Matthias Broecheler, the creator of Titan, you would use Titan to implement a social network (https://twitter.com/MBroecheler/statuses/213350753031569409). Titan has pluggable storage options: Cassandra, HBase, Berkeley DB, and some have been working on adapters for DynamoDB and App Engine Datastore. However, it's not clear how well App Engine and DynamoDB will work with the upcoming Titan changes which will move the traversal engine into the cluster's JVM. Both Neo4j and Titan support Blueprints, and you can run Gremlin (https://github.com/tinkerpop/gremlin/wiki) on both. Marko Rodriguez (http://markorodriguez.com/), the creator of Gremlin, is one of the principals behind Titan. See "The Benefits of Titan": https://github.com/thinkaurelius
Read the rest
In The Distributed Graph Database Titan Provides Real-Time Big Graph Data
Davy implemented Datomic as a TinkerPop Blueprints graph (https://github.com/tinkerpop/blueprints/wiki/) so you can query it with Gremlin (https://github.com/tinkerpop/gremlin/wiki) too... "The use of Datoms and Datalog allows you to express simple, yet powerful queries. This article introduces only a fraction of the features offered by Datomic. To get myself better acquainted with the various Datomic gotchas, I implemented the Tinkerpop Blueprints API on top of Datomic. By doing so, you basically get a distributed, temporal graph database, which is, as far as I know, unique within the Graph database ecosystem. The source code of this Blueprints implementation can currently be found on the Datablend public GitHub repository and will soon be merged within the Tinkerpop project."
In Back To The Future with Datomic
These are the base elements: * Nodes/Vertices: Person, Topic, Entry * Relationships/Edges: Tagged, Authored person -- authored --> entry entry -- tagged --> topic Here's the base model: https://github.com/espeed/lightbulb/blob/master/lightbulb/mo... The comment system is a separate, generic component. Marko, the guy who created Gremlin (https://github.com/tinkerpop/gremlin/wiki), just released a Gremlin Tree step (https://github.com/tinkerpop/gremlin/wiki/Tree-Pattern), which makes it really easy to build a threaded comment tree in one quick shot. If you have a large blog or content system, you can use likes and views to make content recommendations using a basic Gremlin collaborative filtering query: // calculate basic collaborative filtering for vertex with user_id def rank_items(user_id) { m = [:] g.v(user_id
Read the rest
).out('likes').in('likes').out('likes').groupCount(m) m.sort{a,b -> a.value <=> b.value} return m.values() } If you use Facebook, Twitter, or GitHub to authenticate users you can easily incorporate friends and followers into the recommendations.
In Simple - An Obtvse clone written in Python

Showing the 15 most recent of 26 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.