= neo4jr-simple A simple, ready to go JRuby wrapper for the Neo4j graph database engine which provides: * The Neo4j Core Java Library (required and ready to use) * Raw access to the Java API (using Neo4j::DB.instance ) * Extensions to the Java API to make node manipulation and traversal more rubyesque * Working specs * Loaded Neo4j sample database with IMDB data * Nothing more then Neo4j goodness == Prerequisites * Java * JRuby == Recommend way of installing JRuby 1. Install RVM: http://rvm.beginrescueend.com/ 2. Install Jruby using rvm: rvm install jruby 3. Switch ruby to JRuby: rvm use jruby == Getting Started * {gem install neo4jr-simple} [http://gemcutter.org/gems/neo4jr-simple] * {Neo4j API Docs} [http://api.neo4j.org/current/org/neo4j/api/core/package-summary.html] * functional_example_spec includes examples of basic operations in neo4j like creating, retrieving and updating nodes along with simple traversal examples. Basic Node creation: Neo4jr::DB.execute do |neo| node = neo.createNode node[:name] = 'Deiters, Matt' end Retrieve a Node: Neo4jr::DB.execute do |neo| node = neo.getNodeById(1234) end Find a Node by some value you control: Neo4jr::DB.execute do |neo| # If you add a property 'identifier' to a node, the value can be used to retrieve the node by # This can by an id or string but the value must be unique to this node # e.g. node[:identifier] = user.id node = neo.find_node_by_identifier(user.id) end Traverse Database from a node: Neo4jr::DB.execute do |neo| philip_seymour_hoffman = neo.getNodeById(1102) order = Neo4jr::Order::BREADTH_FIRST stop_when = Neo4jr::StopEvaluator::END_OF_GRAPH return_when = Neo4jr::ReturnableEvaluator::ALL relationships = Neo4jr::RelationshipType.outgoing(:acted_in) traverser = philip_seymour_hoffman.traverse(order, stop_when, return_when, relationships) traverser.each do |node| #... end end Use command line shell to query and modify the graph: neosh -path == Contributors ====Matthew Deiters * Twitter : http://twitter.com/mdeiters * GitHub : https://github.com/mdeiters * LinkedIn : http://www.linkedin.com/in/matthewdeiters * Blog : http://www.theagiledeveloper.com ====Heinrich Klobuczek * GitHub : https://github.com/klobuczek * LinkedIn : http://www.linkedin.com/pub/heinrich-klobuczek/0/a71/39b Copyright (c) 2009 Matthew Deiters. See LICENSE for details.