Accès au graphe Neptune avec OpenCypher - Amazon Neptune

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Accès au graphe Neptune avec OpenCypher

Neptune permet de créer des applications graphiques à l'aide d'OpenCypher, actuellement l'un des langages de requêtes les plus populaires pour les développeurs travaillant avec des bases de données graphiques. Les développeurs, les analystes commerciaux et les data scientists apprécient la syntaxe d'OpenCypher inspirée du langage SQL, car elle fournit une structure familière permettant de composer des requêtes pour des applications graphiques.

OpenEncrypherest un langage de requête déclaratif pour les graphes de propriétés qui a été initialement développé par Neo4j, puis open source en 2015, et qui a contribué auOpenEncrypherprojet sous licence open source Apache 2. Sa syntaxe est documentée dansRéférence du langage de requête Cypher, version 9.

À partir de la version 1.1.1.0 du moteur, OpenCypher est disponible pour une utilisation en production dans Neptune.

Gremlin contre OpenCypher : similitudes et différences

Gremlin et OpenCrypher sont tous deux des langages de requêtes de graphes de propriétés, et ils sont complémentaires à bien des égards.

Gremlin a été conçu pour plaire aux programmeurs et s'intégrer parfaitement au code. Par conséquent, Gremlin est impératif de par sa conception, alors que la syntaxe déclarative d'OpenCypher peut sembler plus familière aux personnes ayant de l'expérience SQL ou SPARQL. Gremlin peut sembler plus naturel à un data scientist utilisant Python dans un bloc-notes Jupyter, alors qu'OpenCypher peut sembler plus intuitif à un utilisateur professionnel ayant une certaine expérience du SQL.

Ce qui est bien, c'est quevous ne devez pas choisirentre Gremlin et OpenCypher dans Neptune. Les requêtes dans l'une ou l'autre langue peuvent fonctionner sur le même graphique, quelle que soit la langue utilisée pour saisir ces données. Vous trouverez peut-être plus pratique d'utiliser Gremlin pour certaines choses et OpenCypher pour d'autres, selon ce que vous faites.

Gremlin utilise une syntaxe impérative qui vous permet de contrôler la façon dont vous vous déplacez dans votre graphique en une série d'étapes, chacune recevant un flux de données, effectuant une action sur celui-ci (à l'aide d'un filtre, d'une carte, etc.), puis transmet les résultats à l'étape suivante. Une requête Gremlin prend généralement la formeg.V(), suivi d'étapes supplémentaires.

Dans OpenCrypher, vous utilisez une syntaxe déclarative, inspirée du langage SQL, qui spécifie un modèle de nœuds et de relations à rechercher dans votre graphe à l'aide d'une syntaxe de motif (comme()-[]->()). Une requête OpenCypher commence souvent parMATCHclause, suivie d'autres clauses telles queWHERE,WITH, etRETURN.

Mise en route avec OpenCypher

Vous pouvez interroger les données du graphe de propriétés dans Neptune à l'aide d'OpenCypher, quelle que soit la manière dont elles ont été chargées, mais vous ne pouvez pas utiliser OpenCypher pour interroger des données chargées au format RDF.

Dans laChargeur en vrac Neptuneaccepte les données du graphe de propriétés dans unFormat CSV pour Gremlin, et dans unFormat CSV pour OpenCode. Bien entendu, vous pouvez également ajouter des données de propriétés à votre graphe à l'aide de requêtes Gremlin et/ou OpenCypher.

De nombreux didacticiels en ligne sont disponibles pour apprendre le langage de requête Cypher. Voici quelques exemples rapides de requêtes OpenCypher qui peuvent vous aider à vous faire une idée du langage, mais la meilleure et la plus simple façon de commencer à utiliser OpenCypher pour interroger votre graphe Neptune est d'utiliser les blocs-notes OpenCypher duÉtabli Neptune. Le workbench est open source et est hébergé sur GitHub àhttps://github.com/aws-samples/amazon-neptune-samples.

Vous trouverez les carnets de notes OpenCrypher dans GitHub Référentiel de blocs-notes Neptune. En particulier, consultez leVisualisation des itinéraires aériens, etÉquipes anglaises de Premiercarnets pour OpenCypher.

Les données traitées par OpenCypher prennent la forme d'une série non ordonnée de cartes clé/valeur. Le principal moyen d'affiner, de manipuler et d'augmenter ces cartes consiste à utiliser des clauses qui effectuent des tâches telles que la mise en correspondance de modèles, l'insertion, la mise à jour et la suppression sur les paires clé/valeur.

Il existe plusieurs clauses dans OpenCypher pour trouver des modèles de données dans le graphe, notammentMATCHest le plus courant.MATCHvous permet de spécifier le modèle de nœuds, de relations et de filtres que vous souhaitez rechercher dans votre graphique. Par exemple :

  • Obtenir tous les nœuds

    MATCH (n) RETURN n
  • Trouver des nœuds connectés

    MATCH (n)-[r]->(d) RETURN n, r, d
  • Recherchez un chemin

    MATCH p=(n)-[r]->(d) RETURN p
  • Obtenir tous les nœuds avec une étiquette

    MATCH (n:airport) RETURN n

Notez que la première requête ci-dessus renvoie tous les nœuds de votre graphe, et les deux suivantes renvoient tous les nœuds ayant une relation, ce qui n'est généralement pas recommandé ! Dans la plupart des cas, vous souhaitez limiter les données renvoyées, ce que vous pouvez faire en spécifiant des étiquettes et des propriétés de nœud ou de relation, comme dans le quatrième exemple.

Vous pouvez trouver un aide-mémoire pratique pour la syntaxe d'OpenCypher dans Neptuneexemple de référentiel github.