Yes, I agree. Basically, with Cypher for declarative and optimizable queries, and Gremlin/Groovy for the power user or fine-tuned traversals, the REST API could possibly be very minimalistic. Just my 2c.
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 brew install neo4j && neo4j start heroku addons:add neo4j On Fri, Dec 9, 2011 at 11:03 AM, James Thornton <james.thorn...@gmail.com> wrote: > > > > > > On Thursday, December 8, 2011 2:48:59 AM UTC-6, Dmytrii Nagirniak wrote: >> >> >> Unfortunately I couldn't see a lot of value in the REST API either. >> The core operations that are taken for granted with native bindings >> (traversals using poor Ruby constructs) would require to execute HTTP >> request (that's what SELECT N+1 in SQL world is). >> Or otherwise I would have to wrap all the logic in the traversal queries. >> It would significantly overcomplicate the system with HTTP handling logic. > > > Hi Dmytrii - > > Neo4j Server has a built-in Gremlin scripting engine that enables REST > clients execute transactions in a single HTTP request. > > Gremlin is a domain-specific language for graphs written in Groovy. If you > were using a relational database, you would use its domain-specific > languages, which is SQL. Same idea. > > For the last few weeks, I have been working on Bulbs 0.3, which is a Python > REST client for Neo4j Server, and I has a library of Gremlin templates in a > YAML file. The Python methods do named variable substitution on the Gremlin > templates and then execute them via the Neo4j Server Gremlin extension. > > Here's an example: > > gremlin.yaml > https://gist.github.com/1450859 > > element.py > https://gist.github.com/1450871 > > You can see the create_indexed_vertex Gremlin script has JSON args. Python > lists and dicts are converted to JSON, and then on the server side, the > Gremlin script converts them into Groovy maps and lists. > > Marko is working on adding the JSONSlurper library import to Gremlin so you > won't have to do the import each time > (https://github.com/tinkerpop/gremlin/issues/259). > > >> So I decided to write another REST library >> (http:://github.com/dnagir/morpheus), >> but then gave up realising that you just cannot have a proper abstraction >> over HTTP. >> (I'll probably kill off that repo). > > Groovy is pretty simple. Consider reviving Morpheus and using Gremlin for > scripting -- you'll get all the power of native Ruby and Neo4j without the > Java. > > When Bulbs 0.3 is released, I'll post the full gremlin.yaml, and you should > be able to use it in Ruby without any mods since it's just YAML. > > - James > > > > > > > >> >> Also there are no decent HTTP restful clients. The only one is neography - >> that works pretty well, but doesn't give me any abstraction similar to >> neo4j.rb. >> There is also neology. I declare it dead, I couldn't even run tests >> because a dependent gem was removed from the author's own github repository. >> So I even had no way to fix any issues there. >> >> Last one - architect4r - good idea behind. But the abstractions are leaky. >> You can't make system more or less performant without resorting to HTTP. >> I also did minor contribution to it (accepted PR). But since then the >> author never replied to my tweets, neither he replied to emails. >> Maybe he's just sick or something else, but that's what we have. >> And there were failing specs all over the place. >> >> So I decided to write another REST library >> (http:://github.com/dnagir/morpheus), but then gave up realising that you >> just cannot have a proper abstraction over HTTP. >> (I'll probably kill off that repo). >> >> >> So all in all, to summarise: I am giving up on neo4j because it forces me >> into Java world to leverage its full power. >> I could have agreed on that if I would be a Java dev. But there is nothing >> in this world that can convince me to choose Java instead of Ruby (maybe >> other langs in the future). >> >> But what DO have to mention is the dedication of people around neo4j. >> Everybody tried their best to help. >> And that feels like everybody within Neo Technologies has common vision >> and is really passionate and keen to help. >> I can't remember any other company that would be so dedicated. >> >> I would really love to use neo4j, but unfortunately I can't do that until >> it will be available as native binding for C Ruby. >> >> And as a lost note, I want to say THANKS to the neo4j community for the >> great and amazing support you all guys give. >> >> Cheers, >> Dmytrii >> http://www.ApproachE.com >> >> >> _______________________________________________ >> NOTICE: THIS MAILING LIST IS BEING SWITCHED TO GOOGLE GROUPS, please >> register and consider posting at >> https://groups.google.com/forum/#!forum/neo4j >> >> Neo4j mailing list >> us...@lists.neo4j.org >> https://lists.neo4j.org/mailman/listinfo/user _______________________________________________ NOTICE: THIS MAILING LIST IS BEING SWITCHED TO GOOGLE GROUPS, please register and consider posting at https://groups.google.com/forum/#!forum/neo4j Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user