Tag Archives: SigmaJS

Manipulate Sigma.js graphs with the Gremlin API


Manipulate Sigma.js graphs in the browser using pure JavaScript Gremlin graph traversals. This library does not require any remote graph database such as Titan, Neo4j or OrientDB.

Gremlin-Sigma is currently being developed using Sigma.js v1.0.3.

Installation and dependencies

Gremlin-Sigma simply wraps a Sigma.js instance. Therefore, you’re required to add the Sigma.js dependency yourself to your project.

The other main dependency is gremlin-core-js, a 1:1 JavaScript port of TinkerPop3 Gremlin graph traversal engine. Issues regarding missing or bugged Gremlin steps should opened in the gremlin-core-js issues section.

The last dependency is Underscore.js, though this may be replaced with Lodash or Lazy.js.

Executing Gremlin traversals on a Sigma.js graph

Quick Gremlin traversal example, assuming you’re using Browserify:

var sigma = require('sigma');
var SigmaGraph = require('gremlin-sigma').SigmaGraph;

var g = SigmaGraph.open(sigma);

var alice = g.addVertex('id', 'n0', 'name', 'alice');
var bob = g.addVertex('id', 'n1', 'name', 'bob');
alice.addEdge('likes', bob, { id: 'e0' });
alice.addEdge('knows', alice, { id: 'e1' });

// Traversal example: for each vertices (nodes), iterate through all their
// respective out vertices linked with 'likes' label.
g.V().out('likes').forEach(function(vertex) {
    // vertex.name === 'bob'

For a list of currently supported steps, please have a look at tinkergraph-js, the reference in-memory JavaScript graph database that implements gremlin-core-js.

Running the examples

  • clone the repository
  • install dependencies with npm install
  • build gremlin-sigma with gulp build
  • start a local http server with npm start (listens on port 8080)
  • open a browser and go to http://localhost:8080/examples