Databases Reference
In-Depth Information
Example: A test-driven social network data model
In this example we're going to demonstrate developing a very simple Cypher query for
a social network. Given the names of a couple of members of the network, our query
determines the distance between them.
First we create a small graph that is representative of our domain. Using Cypher, we
create a network comprising ten nodes and eight relationships:
public GraphDatabaseService createDatabase ()
{
// Create nodes
String cypher = "CREATE\n" +
"(ben {name:'Ben'}),\n" +
"(arnold {name:'Arnold'}),\n" +
"(charlie {name:'Charlie'}),\n" +
"(gordon {name:'Gordon'}),\n" +
"(lucy {name:'Lucy'}),\n" +
"(emily {name:'Emily'}),\n" +
"(sarah {name:'Sarah'}),\n" +
"(kate {name:'Kate'}),\n" +
"(mike {name:'Mike'}),\n" +
"(paula {name:'Paula'}),\n" +
"ben-[:FRIEND]->charlie,\n" +
"charlie-[:FRIEND]->lucy,\n" +
"lucy-[:FRIEND]->sarah,\n" +
"sarah-[:FRIEND]->mike,\n" +
"arnold-[:FRIEND]->gordon,\n" +
"gordon-[:FRIEND]->emily,\n" +
"emily-[:FRIEND]->kate,\n" +
"kate-[:FRIEND]->paula" ;
GraphDatabaseService db =
new TestGraphDatabaseFactory (). newImpermanentDatabase ();
ExecutionEngine engine = new ExecutionEngine ( db );
engine . execute ( cypher );
// Index all nodes in "user" index
Transaction tx = db . beginTx ();
try
{
Iterable < Node > allNodes =
GlobalGraphOperations . at ( db ). getAllNodes ();
for ( Node node : allNodes )
{
if ( node . hasProperty ( "name" ) )
{
db . index (). forNodes ( "user" )
. add ( node , "name" , node . getProperty ( "name" ) );
}
}
Search WWH ::




Custom Search