I didn't have luck running it through neo4jrest, but the following function
does the trick for me:
script = "g.v(0)"
def RunGremlinScript(script):
content=[]
jout=[]
out={}
try:
h = Http()
response, content = h.request(GRAPHSERVER +
"ext/GremlinPlugin/graphdb/execute_script",\
"POST",\
json.dumps(dict(script=script)), \
headers={'Accept':'application/json',
'Content-type': 'application/json'})
jcontent = json.loads(content)
for x in jcontent:
if isinstance(x, dict):
for arr in x['data']:
for e in range(len(arr)):
out[str(x['columns'][e])] = arr[e]
jout.append(dict(out))
else:
return jcontent
except:
print "Unexpected error running gremlin: ", sys.exc_info()[0]
print str(traceback.print_exc())
print jcontent
return [{}]
return jout
On Fri, Aug 26, 2011 at 12:01 PM, Jacopo Farina <[email protected]>wrote:
> Nice!
> is there a way to run it easily from python with neo4jrestclient, avoiding
> creating an http request manually ? In general, I wasn't able to understand
> how to run a Gremlin script, or just a query, in python through the
> restclient library.
> Probably is a very simple business, but I started using it in Python just
> yesterday.
>
> Cheers,
> Jacopo
>
> 2011/8/25 Peter Neubauer <[email protected]>
>
> > Guys,
> > with the custom sorting in Lucene and this thread coming up all the time,
> I
> > took the time to document the execution of arbitrary Groovy and thus,
> Java
> > calls through REST. In the example below, there are calls to Neo4j APIs,
> > Gremlin stuff and custom sorting using Lucene classes, and return of a
> > Neo4j
> > search hit object.
> >
> > You can do all this in a Neo4j Server plugin, but if you need to, this is
> > an
> > example on how to do it with only REST.
> >
> >
> >
> http://docs.neo4j.org/chunked/snapshot/gremlin-plugin.html#rest-api-send-an-arbitrary-groovy-script---lucene-sorting
> >
> > Hope that helps for future reference!
> >
> > Cheers,
> >
> > /peter neubauer
> >
> > GTalk: neubauer.peter
> > Skype peter.neubauer
> > Phone +46 704 106975
> > LinkedIn http://www.linkedin.com/in/neubauer
> > Twitter http://twitter.com/peterneubauer
> >
> > http://www.neo4j.org - Your high performance graph
> database.
> > http://startupbootcamp.org/ - Ă–resund - Innovation happens HERE.
> > http://www.thoughtmade.com - Scandinavia's coolest Bring-a-Thing party.
> >
> >
> > On Thu, Aug 25, 2011 at 1:00 AM, Matt Luongo <[email protected]> wrote:
> >
> > > +1, we could really use that. Client-side sorting sucks.
> > >
> > > --
> > > Matt Luongo
> > > Co-Founder, Scholr.ly
> > >
> > >
> > >
> > > On Wed, Aug 24, 2011 at 4:43 PM, Aseem Kishore <
> [email protected]
> > > >wrote:
> > >
> > > > I've just spent a bunch of time reading into how one can control the
> > > > ordering of a traverse beyond simple "breadth first" or "depth
> first".
> > > More
> > > > precisely, even when breadth first, how one can control *which*
> > neighbors
> > > > are traversed first.
> > > >
> > > > (It matters less in which order they're traversed vs. which order
> > they're
> > > > returned if you're returning all results, since you can just sort on
> > the
> > > > client. But it matters a lot if you want to use the paged traverser,
> > > since
> > > > you're then only returning the first results.)
> > > >
> > > > I've learned that this is doable from Java by writing your own
> > > > BranchSelector implementation:
> > > >
> > > > http://components.neo4j.org/neo4j/1.4.1/apidocs/
> > > >
> > > > I've found the built-in implementations, e.g. the pre-order
> > breadth-first
> > > > and depth-first:
> > > >
> > > >
> > > >
> > >
> >
> https://github.com/neo4j/community/blob/master/kernel/src/main/java/org/neo4j/kernel/PreorderBreadthFirstSelector.java
> > > >
> > > >
> > > >
> > >
> >
> https://github.com/neo4j/community/blob/master/kernel/src/main/java/org/neo4j/kernel/PreorderDepthFirstSelector.java
> > > >
> > > > To achieve a custom "best first", Igor Dovgiy for example shared that
> > he
> > > > modeled his implementation of the breadth-first selector, except just
> > > using
> > > > a PriorityQueue instead of a regular Queue.
> > > >
> > > > My question is: is there any way to specify this sort of thing over
> the
> > > > REST
> > > > API instead of having to write a plugin? If not, does that sound like
> a
> > > > reasonable feature request?
> > > >
> > > > I really just want something simple: nodes ordered by some
> "timestamp"
> > > > property. It's killing us that we can't do this today. We might just
> > have
> > > > to
> > > > look into writing this as a plugin...
> > > >
> > > > Thanks!
> > > >
> > > > Aseem
> > > > _______________________________________________
> > > > Neo4j mailing list
> > > > [email protected]
> > > > https://lists.neo4j.org/mailman/listinfo/user
> > > >
> > > _______________________________________________
> > > Neo4j mailing list
> > > [email protected]
> > > https://lists.neo4j.org/mailman/listinfo/user
> > >
> > _______________________________________________
> > Neo4j mailing list
> > [email protected]
> > https://lists.neo4j.org/mailman/listinfo/user
> >
> _______________________________________________
> Neo4j mailing list
> [email protected]
> https://lists.neo4j.org/mailman/listinfo/user
>
_______________________________________________
Neo4j mailing list
[email protected]
https://lists.neo4j.org/mailman/listinfo/user