Cypher (langage)

langage utilisé pour la base de données Neo4j
Cypher Query Language
Graph Query Language, langage de programmation déclaratif
Plateformemachine virtuelle Java Modifier
Langage de programmationJava Modifier
Dépôt du code sourcehttps://github.com/neo4j/neo4j/tree/3.1/community/cypher Modifier
Décrit à l'URLhttps://neo4j.com/docs/cypher-manual/current/ Modifier
Licencelicence publique générale GNU version 3 Modifier
Statut des droits d'auteursous droit d'auteur Modifier
Tag Stack Exchangehttps://stackoverflow.com/tags/cypher Modifier

Cypher est un langage informatique de requête orienté graphe utilisé par Neo4j.

Le langage se veut simple et efficace dans la formulation des requêtes d'interrogation et de mise à jour des bases de données orientées graphe. Cypher est relativement simple dans sa construction syntaxique mais reste néanmoins un langage efficace. Les concepteurs ont voulu permettre aux utilisateurs de rester concentrés dans leur domaine d'expertise au lieu de se perdre dans les formulations de requêtes en bases de données[1].

Syntaxe modifier

Cypher définit un ensemble de fonctions. Parmi les plus courantes on trouve MATCH et WHERE. Ces fonctions sont quelque peu différentes des mêmes fonctions en SQL. MATCH est utilisé pour décrire le modèle de recherche. Il est principalement basé sur les relations. WHERE est utilisé pour l'ajout de contraintes aux modèles. Par exemple[2] :

    MATCH (charlie:Person { name:'Charlie Sheen' })-[:ACTED_IN]-(movie:Movie)
    RETURN movie

Cypher définit également des fonctions d'écriture, de mise à jour et de suppression des données. CREATE et DELETE sont utilisées pour créer et supprimer les nœuds et les relations. SET et REMOVE sont utilisées pour définir les valeurs des propriétés et affecter des labels aux nœuds. Les nœuds peuvent uniquement être supprimés lorsqu'ils n'ont plus de relations vers des nœuds maintenus. On ignore cependant la réelle utilité de MATCH, certains disent qu'il s'agit d'économiser des ressources d'ordinateur, mais si on a besoin d'appliquer un élément dans un graphe, notamment pour les nœuds, on fait appel à ça. On peut dire la même chose pour OPTIONAL, l'idée est d'en profiter pour éviter des problèmes technologiques en cas de deux MATCH dans le code. Par exemple[2] :

    MATCH (start:Content)-[:RELATED_CONTENT]->(content:Content)
    WHERE content.source = 'user'
    OPTIONAL MATCH (content)-[r]-()
    DELETE r, content

Voir aussi modifier

Article connexe modifier

  • SPARQL, un autre langage déclaratif pour les requêtes sur des données orientées graphe.
  • GraphQL, un langage déclaratif fortement typé pour effectuer des requêtes sur des graphes éventuellement distribués.

Lien externe modifier

  • OpenCypher, une initiative de Neo4j et d'autres contributeurs visant à étendre l'emploi de Cypher à d'autres base de données orientées graphe[3].

Références modifier

  1. « Cypher Introduction » (consulté le )
  2. a et b « 10.1. Match - - The Neo4j Manual v2.1.2 » (consulté le )
  3. (en) « Meet openCypher : The SQL for Graphs - Neo4j Graph Database Platform », sur Neo4j Graph Database Platform, (consulté le ).