Skip to content

Instantly share code, notes, and snippets.

@espeed
espeed / gremlin.yaml
Created November 20, 2011 21:19
Bulbs 0.3 gremlin.yaml
#
# Copyright 2011 James Thornton (http://jamesthornton.com)
# BSD License (see LICENSE for details)
#
# Gremlin scripts in Gremlin-Groovy v1.3
#
# Each script is a string literal of a Python string template.
#
# See the Gremlin and Blueprints docs for the full Gremlin/Blueprints API.
#
@espeed
espeed / gremlin.py
Created November 20, 2011 21:18
Bulbs 0.3 gremlin.py
# -*- coding: utf-8 -*-
#
# Copyright 2011 James Thornton (http://jamesthornton.com)
# BSD License (see LICENSE for details)
#
"""
An interface for executing Gremlin scripts on the resource.
"""
import os
@espeed
espeed / index.groovy
Created November 23, 2011 05:50
Gremlin Overloaded Index Put Method to Accept Map and JSON
import java.util.Map.Entry;
import groovy.json.JsonSlurper;
com.tinkerpop.blueprints.pgm.impls.tg.TinkerIndex.metaClass.put = {
final Map<String, Object> properties, final Element element ->
for (final Entry<String, Object> entry: properties.entrySet()) {
put(entry.getKey(), entry.getValue(), element);
}
}
@espeed
espeed / gremlin.yaml
Created November 24, 2011 00:50
Gremlin: Create Automatic Index & Create Indexed Vertex
create_automatic_index: |
import groovy.json.JsonSlurper
def slurper = new JsonSlurper()
keys = $keys
if (keys != null)
keys = slurper.parseText(keys)
public abstract class $domain_class implements Vertex {}
index = g.createAutomaticIndex('ideas',Idea.class,keys)
create_indexed_vertex: |
@espeed
espeed / create_automatic_indexed_vertex.groovy
Created December 6, 2011 23:46
Gremlin: Create Automatic Indexed Vertex
import groovy.json.JsonSlurper
def slurper = new JsonSlurper()
data = slurper.parseText('{"age":34,"name":"James"}')
elementIndex = g.idx('people')
verticesIndex = g.idx('vertices')
g.setMaxBufferSize(0)
g.startTransaction()
vertex = g.addVertex(data)
AutomaticIndexHelper.addElement(elementIndex,vertex)
AutomaticIndexHelper.addElement(verticesIndex,vertex)
@espeed
espeed / create_automatic_vertex_index.groovy
Created December 6, 2011 23:52
Create Automatic Vertex Index
import groovy.json.JsonSlurper
def slurper = new JsonSlurper()
keys = null
if (keys != null)
keys = slurper.parseText(keys)
public abstract class People implements Vertex {}
index = g.createAutomaticIndex('people',People.class,keys)
@espeed
espeed / gremlin-neo4j.yaml
Created December 9, 2011 09:22
Gremlin YAML Transaction Example
outE: |
g.v($_id).outE($label)
inE: |
g.v($_id).inE($label)
bothE: |
g.v($_id).bothE($label)
outV: |
@espeed
espeed / element.py
Created December 9, 2011 09:26
Bulbs Vertex Class
class Vertex(Element):
"""A container for Vertex elements returned by the resource."""
def outE(self,label=None):
"""Return the outgoing edges of the vertex."""
params = dict(_id=self._id,label=label)
script = self._resource.scripts.get('outE',params)
return self.gremlin(script)
def inE(self,label=None):
@espeed
espeed / update_indexed_vertex.groovy
Created December 9, 2011 19:34
Gremlin YAML String Replacement
import groovy.json.JsonSlurper
def slurper = new JsonSlurper()
keys = data = null
if ('null' != 'null')
keys = slurper.parseText('null')
if ('{"age":35,"name":"James Thornton"}' != 'null')
data = slurper.parseText('{"age":35,"name":"James Thornton"}')
vertex = g.getRawGraph().getNodeById(9)
manager = g.getRawGraph().index()
index = manager.forNodes('test_idxV')
@espeed
espeed / gremlin-request.bash
Created December 10, 2011 00:21
Gremlin Script Engine Request
POST url: http://localhost:7474/db/data/ext/GremlinPlugin/graphdb/execute_script
POST body: {"params":{"keys":["name"],"index_name":"test_idxV","data":{"age":34,"name":"James Thornton"}},"script":"manager = g.getRawGraph().index()\nindex = manager.forNodes(index_name)\ng.setMaxBufferSize(0)\ng.startTransaction()\nvertex = g.getRawGraph().createNode()\nfor (entry in data.entrySet()) {\n if (entry.value == null) continue;\n vertex.setProperty(entry.key,entry.value)\n if (keys == null || keys.contains(entry.key))\n index.add(vertex,entry.key,entry.value)\n}\ng.stopTransaction(TransactionalGraph.Conclusion.SUCCESS)\nreturn vertex\n"}