Peter, The arbitrary Groovy is great, but if I understand correctly, there still isn't a straightforward way to do a best-first traversal *with* paging- is there? It seems like that would require being able to introduce some sort of server-side state through the GremlinPlugin (for pages). Maybe the solution would be to re-run the traversal each time, and then return different slices, but that's a pretty painful tradeoff.
-- Matt Luongo Co-Founder, Scholr.ly On Fri, Aug 26, 2011 at 1:12 PM, Matt Luongo <[email protected]> wrote: > 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

