Neo4j : Exploitation de graphe

Utilisation de l'API java Neo4j

Neo4j intègre une API en java qui permet de faire tout ce qu'il est possible de faire avec Cypher depuis sa propre application.

Ce graphe a été créé grâce au code suivant :

1
// déclaration d'une fonction raccourcie !
2
private Node createAndConnectNode(String name, Node otherNode,
3
    RelationshipType relationshipType) {
4
    Node node = graphdb.createNode();
5
    node.setProperty("name", name);
6
    node.createRelationshipTo(otherNode, relationshipType);
7
    index.index(node, "name", name);
8
    return node;
9
}
10
11
//Création du graphe
12
graphdb = new EmbeddedGraphDatabase("target/neo4j");
13
index = new LuceneIndexService(graphdb);
14
15
//début de la transaction
16
Transaction tx = graphdb.beginTx();
17
try {
18
    Node root = graphdb.getReferenceNode();
19
    // we connect Neo with the root node, to gain an entry point to the graph
20
    // not neccessary but practical.
21
    neo = createAndConnectNode("Neo", root, MATRIX);
22
    Node morpheus = createAndConnectNode("Morpheus", neo, KNOWS);
23
    Node cypher = createAndConnectNode("Cypher", morpheus, KNOWS);
24
    Node trinity = createAndConnectNode("Trinity", morpheus, KNOWS);
25
    Node agentSmith = createAndConnectNode("Agent Smith", cypher, KNOWS);
26
    architect = createAndConnectNode("The Architect", agentSmith, HAS_CODED);
27
    // Trinity loves Neo. But he doesn't know.
28
    trinity.createRelationshipTo(neo, LOVES);
29
    tx.success();
30
} catch (Exception e) {
31
    tx.failure();
32
} finally {
33
    tx.finish();
34
}

Toute opération modifiant le graphe ou nécessitant des degrés d'isolation pour les données est encapsulée dans une transaction, et ainsi la récupération et le rollback sont prêts à l'emploi.

On peut ainsi facilement faire des requêtes au graphe de la manière suivante :

1
for (Relationship rel : neo.getRelationships(KNOWS)) {
2
    Node friend = rel.getOtherNode(neo);
3
    System.out.println(friend.getProperty("name"));
4
}
PrécédentPrécédentSuivantSuivant
AccueilAccueilImprimerImprimer Clément Henry, 2015 (Contributions : Stéphane Crozat, les étudiants de l'UTC) Paternité - Partage des Conditions Initiales à l'IdentiqueRéalisé avec Scenari (nouvelle fenêtre)