Utilisation de Gremlin pour accéder au graphe dans Amazon Neptune - 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.

Utilisation de Gremlin pour accéder au graphe dans Amazon Neptune

Vous pouvez utiliser la console Gkremlin pour expérimenter avec TinkerPop des graphes et des requêtes dans un environnement REPL (read-eval-print boucle).

Le didacticiel suivant vous explique comment utiliser la console Gremlin pour ajouter des sommets, des arêtes, des propriétés et autres dans un graphe Neptune. Il met en évidence certaines des différences de l'implémentation Gremlin spécifique à Neptune.

Note

Cet exemple suppose que vous respectez les prérequis suivants :

Utilisation de la console Gremlin
  1. Modifiez les répertoires dans le dossier où les fichiers de la console Gremlin sont décompressés.

    cd apache-tinkerpop-gremlin-console-3.6.5
  2. Saisissez la commande suivante pour exécuter la console Gremlin.

    bin/gremlin.sh

    Vous devriez voir la sortie suivante :

    \,,,/ (o o) -----oOOo-(3)-oOOo----- plugin activated: tinkerpop.server plugin activated: tinkerpop.utilities plugin activated: tinkerpop.tinkergraph gremlin>

    Vous êtes maintenant à l'invite gremlin>. Vous entrez les étapes restantes à cette invite.

  3. À l'invite de commande gremlin>, saisissez le texte suivant pour vous connecter à l'instance de base de données Neptune.

    :remote connect tinkerpop.server conf/neptune-remote.yaml
  4. À l'invite gremlin>, entrez ce qui suit pour passer en mode distant. Toutes les requêtes Gremlin sont alors envoyées à la connexion distante.

    :remote console
  5. Ajoutez un sommet avec une étiquette et une propriété.

    g.addV('person').property('name', 'justin')

    Un ID string contenant un GUID est affecté au sommet. Tous les ID de sommet sont des chaînes dans Neptune.

  6. Ajoutez un sommet avec ID personnalisé.

    g.addV('person').property(id, '1').property('name', 'martin')

    La propriété id n'est pas indiquée entre guillemets. Il s'agit d'un mot-clé pour l'ID du sommet. Ici, l'ID du sommet est une chaîne contenant le nombre 1.

    Les noms de propriété normaux doivent être indiqués entre guillemets.

  7. Modifiez une propriété ou ajoutez une propriété si elle n'existe pas.

    g.V('1').property(single, 'name', 'marko')

    Ici, vous modifiez la propriété name du sommet de l'étape précédente. Cela supprime toutes les valeurs existantes de la propriété name.

    Si vous n'aviez pas spécifié single, la commande ajouterait plutôt la valeur à la propriété name si elle ne la possédait pas déjà.

  8. Ajouter une propriété, mais ajouter la valeur de cette propriété si elle possède déjà une valeur

    g.V('1').property('age', 29)

    Neptune utilise la cardinalité définie comme action par défaut.

    Cette commande ajoute la propriété age avec la valeur 29, mais ne remplace aucune des valeurs existantes.

    Si la propriété age avait déjà une valeur, cette commande ajouterait 29 à la propriété. Par exemple, si la propriété age était 27, la nouvelle valeur serait [ 27, 29 ].

  9. Ajoutez plusieurs sommets.

    g.addV('person').property(id, '2').property('name', 'vadas').property('age', 27).iterate() g.addV('software').property(id, '3').property('name', 'lop').property('lang', 'java').iterate() g.addV('person').property(id, '4').property('name', 'josh').property('age', 32).iterate() g.addV('software').property(id, '5').property('name', 'ripple').property('lang', 'java').iterate() g.addV('person').property(id, '6').property('name', 'peter').property('age', 35)

    Vous pouvez envoyer plusieurs instructions simultanément à Neptune.

    Les instructions peuvent être séparés par un caractère de saut de ligne ('\n'), un espace (' '), un point-virgule ('; ') ou rien (par exemple, g.addV(‘person’).iterate()g.V() est valide).

    Note

    La console Gremlin envoie une commande distincte à chaque caractère de saut de ligne ('\n'). Par conséquent, il s'agira d'opérations distinctes dans ce cas. Dans cet exemple, toutes les commandes sont sur des lignes distinctes pour faciliter la lecture. Supprimez les caractères de saut de ligne ('\n') pour l'envoyer comme une commande unique via la console Gremlin.

    Toutes les instructions autres que la dernière doivent se terminer par une étape de fin, comme .next() ou .iterate(), sinon, elles ne s'exécuteront pas. La console Gremlin ne nécessite pas ces étapes de fin. Utilisez .iterate chaque fois que vous n'avez pas besoin de sérialiser les résultats.

    Toutes les instructions qui sont envoyées ensemble sont incluses dans une unique transaction, et aboutissent ou échouent ensemble.

  10. Ajoutez des arêtes.

    g.V('1').addE('knows').to(__.V('2')).property('weight', 0.5).iterate() g.addE('knows').from(__.V('1')).to(__.V('4')).property('weight', 1.0)

    Il existe deux manières différentes d'ajouter un arc.

  11. Ajoutez le reste du graphe Modern.

    g.V('1').addE('created').to(__.V('3')).property('weight', 0.4).iterate() g.V('4').addE('created').to(__.V('5')).property('weight', 1.0).iterate() g.V('4').addE('knows').to(__.V('3')).property('weight', 0.4).iterate() g.V('6').addE('created').to(__.V('3')).property('weight', 0.2)
  12. Supprimez un sommet.

    g.V().has('name', 'justin').drop()

    Supprime le sommet dont la propriété name a la valeur justin.

    Important

    Arrêtez-vous ici, et vous avez le graphe complet d'Apache TinkerPop Modern. Les exemples présentés dans la section Traversal de la TinkerPop documentation utilisent le graphe moderne.

  13. Exécutez un parcours.

    g.V().hasLabel('person')

    Renvoie tous les sommets person.

  14. Exécutez un parcours avec des valeurs (valueMap()).

    g.V().has('name', 'marko').out('knows').valueMap()

    Renvoie les paires clé-valeur de tous les sommets que marko « connaît ».

  15. Spécifiez plusieurs étiquettes.

    g.addV("Label1::Label2::Label3")

    Neptune prend en charge plusieurs étiquettes pour un sommet. Lorsque vous créez une étiquette, vous pouvez spécifier plusieurs étiquettes en les séparant par ::.

    Cet exemple ajoute un sommet avec trois étiquettes différentes.

    L'étape hasLabel associe ce sommet à l'une de ces trois étiquettes : hasLabel("Label1") hasLabel("Label2") et hasLabel("Label3").

    Le délimiteur :: est réservé à cet usage uniquement.

    Vous ne pouvez pas spécifier plusieurs étiquettes dans l'étape hasLabel. Par exemple, hasLabel("Label1::Label2") ne correspond à rien.

  16. Specify Time/date (Spécifier l’heure/la date).

    g.V().property(single, 'lastUpdate', datetime('2018-01-01T00:00:00'))

    Neptune ne prend pas en charge la date Java. Utilisez plutôt la fonction datetime(). datetime() accepte une chaîne datetime à compatibilité ISO8061.

    Elle prend en charge les formats suivants : YYYY-MM-DD, YYYY-MM-DDTHH:mm, YYYY-MM-DDTHH:mm:SS et YYYY-MM-DDTHH:mm:SSZ.

  17. Supprimez des sommets, des propriétés ou des arêtes.

    g.V().hasLabel('person').properties('age').drop().iterate() g.V('1').drop().iterate() g.V().outE().hasLabel('created').drop()

    Voici quelques exemples de suppression.

    Note

    L'étape .next() ne fonctionne pas avec .drop(). Utilisez .iterate() à la place.

  18. Lorsque vous avez terminé, saisissez la commande suivante pour quitter la console Gremlin.

    :exit
Note

Utilisez un point-virgule (;) ou un caractère de saut de ligne (\n) pour séparer chaque instruction.

Chaque traversée précédant la traversée finale doit se terminer par l'exécution de iterate(). Seules les données de la traversée finale sont renvoyées.