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 ).