ngraph.shremlin

0.0.2 • Public • Published

ngraph.shremlin

Shremlin is a graph traversal library, written in pure javascript, and inspired by gremlin. Shremlin is compatible with both vivagraph.js and ngraph.graph graph structures.

build status

Start

The source code is heavily documented. You can read formatted documentation.

Here is a quick snippet from documentation:

var shremlin = require('ngraph.shremlin');
 
// Let's say we have this oriented, 3x3 grid graph:
// 0 → 1 → 2
// ↓   ↓   ↓
// 3 → 4 → 5
 
// create graph iterator:
var g = shremlin(graph);
// How to iterate all graph nodes?
g.V()
 .forEach(function(node) {
   console.log(node.id); // prints 0..5;
 });
 
// How to get node with id "1"?
g.V(1)
 .forEach(function(node) {
   console.log(node.id); // prints only 1;
 });
 
// Let's print all neighbors of node 1, reachable via outgoing edge:
g.V(1)
 .out() // get all outgoing neighbors.
 .forEach(function(node) {
   console.log(node.id); // prints 2, 4;
 });
 
// How about roots of incoming edges?
g.V(1)
 .in() // get all "incoming" neighbors
 .forEach(function(node) {
   console.log(node.id); // prints 0;
 });
 

Shremlin uses simple composable steps to achieve complex iterations. E.g. this is how you can get all "grandchildren" of our graph:

// Remember our graph?
// 0 → 1 → 2
// ↓   ↓   ↓
// 3 → 4 → 5
g.V(1)
 .out() // first level children of node 1. It is node 2 and node 4
 .out() // second level children of node 1. I.e. children of node 2 and node 4. It is node 5
 .forEach(function(node) {
   console.log(node.id); // prints 5 two times
 });
 
// You can also print path through which we got to last node:
g.V(1)
 .out()
 .out()
 .path()
 .forEach(function(path) {
   // each element of the path is actual node instance.
   for(var i = 0; i < path.length; ++i) { console.log(path[i].id); }
 }); // prints 1, 2, 5 and 1, 4, 5

Word of caution

This is all work in progress. Even at the current early stage this library is powerful enough to perform complex filtering during traversal. See graph of gods test for more info.

Readme

Keywords

Package Sidebar

Install

npm i ngraph.shremlin

Weekly Downloads

0

Version

0.0.2

License

BSD-3-Clause

Last publish

Collaborators

  • anvaka