You can run the script through the Python neo4jrestclient by using the
extension support.
Try
import neo4jrestclient.client as client
gdb = client.GraphDatabase('http://localhost:7474/db/data')
gdb.extensions.GremlinPlugin.execute_script(script="...")
I think Javier is working on adding a "returns=<type>" style parameter in
the most recent source so that
the client can figure out what type to cast the data into-
import neo4jrestclient.constants as constants
gdb.extensions.GremlinPlugin.execute_script(script="...",
returns=constants.NODE)
But I haven't gotten this working quite yet.
--
Matt Luongo
Co-Founder, Scholr.ly
On Fri, Aug 26, 2011 at 12:11 PM, Boris Kizelshteyn <[email protected]>wrote:
> 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
>
_______________________________________________
Neo4j mailing list
[email protected]
https://lists.neo4j.org/mailman/listinfo/user