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
-
Java
-
JRuby
-
Install RVM: rvm.beginrescueend.com/
-
Install Jruby using rvm: rvm install jruby
-
Switch ruby to JRuby: rvm use jruby
-
{gem install neo4jr-simple} [gemcutter.org/gems/neo4jr-simple]
-
{Neo4j API Docs} [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 <path_to_neo_db>
https://github.com/mdeiters https://github.com/klobuczek https://github.com/gregormelhorn
Copyright © 2009 Matthew Deiters. See LICENSE for details.