Utiliser Gremlin pour accéder au graphique 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.

Utiliser Gremlin pour accéder au graphique dans Amazon Neptune

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

Le didacticiel suivant vous explique comment utiliser la console Gremlin pour ajouter des sommets, des arêtes, des propriétés et plus encore à un graphe Neptune. Il met en évidence certaines différences dans l'implémentation de 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.5.2
  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. Augremlin>invite, saisissez ce qui suit 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 identifiants de sommet sont des chaînes de caractères 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 set cardinality 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 relevés en même temps à 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. Utiliser.iteratechaque fois que vous n'avez pas besoin que les résultats soient sérialisés.

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

  10. Ajoutez des arcs.

    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 aurez l'Apache complet TinkerPop Graphique moderne Les exemples présentés dans leSection Traversalde la TinkerPop la documentation utilise 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 Java Date. 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 arcs.

    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.