Cypher (langage)

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

Pour les articles homonymes, voir Cipher.

Cypher Query Language
graph query language, langage de programmation déclaratif
Plateformemachine virtuelle Java 
Langage de programmationJava 
Dépôt du code sourcehttps://github.com/neo4j/neo4j/tree/3.1/community/cypher 
Décrit à l'URLhttps://neo4j.com/docs/cypher-manual/current/ 
Licencelicence publique générale GNU version 3 
Statut des droits d'auteursous copyright 
Tag Stack Exchangehttps://stackoverflow.com/tags/cypher 

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

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

Article connexe

  • 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

  • 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

  1. « Cypher Introduction » (consulté le )
  2. « 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 ).
  • Portail de l’informatique
  • Portail des bases de données
Cet article est issu de Wikipedia. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.