Cypher (langage)
Cypher est un langage informatique de requĂȘte orientĂ© graphe utilisĂ© par Neo4j.
| Plateforme | machine virtuelle Java |
|---|---|
| Langage de programmation | Java |
| DépÎt du code source | https://github.com/neo4j/neo4j/tree/3.1/community/cypher |
| Décrit à l'URL | https://neo4j.com/docs/cypher-manual/current/ |
| Licence | licence publique générale GNU version 3 |
| Statut des droits d'auteur | sous copyright |
| Tag Stack Exchange | https://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
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
- « Cypher Introduction » (consulté le )
- « 10.1. Match - - The Neo4j Manual v2.1.2 » (consulté le )
- (en) « Meet openCypher : The SQL for Graphs - Neo4j Graph Database Platform », sur Neo4j Graph Database Platform, (consulté le ).