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
- Install RVM: http://rvm.beginrescueend.com/
- Install Jruby using rvm: rvm install jruby
- Switch ruby to JRuby: rvm use jruby
Getting Started
- install neo4jr-simple [http://gemcutter.org/gems/neo4jr-simple]
- 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 <path_to_neo_db>
Contributors
https://github.com/mdeiters
https://github.com/klobuczek
https://github.com/gregormelhorn
Copyright (c) 2009 Matthew Deiters. See LICENSE for details.