Uso de Gremlin para acceder al gráfico de Amazon Neptune - Amazon Neptune

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Uso de Gremlin para acceder al gráfico de Amazon Neptune

Puede utilizar la consola Gremlin para experimentar con TinkerPop gráficos y consultas en un entorno REPL (read-eval-print en bucle).

En el siguiente tutorial, se describe el uso de la consola de Gremlin para añadir vértices, bordes, propiedades y mucho más a un gráfico de Neptune, y se destacan algunas diferencias en la implementación de Gremlin específica de Neptune.

nota

Este ejemplo asume que ha completado lo siguiente:

Uso de la consola de Gremlin
  1. Cambie los directorios en la carpeta donde se descomprimen los archivos de la consola de Gremlin.

    cd apache-tinkerpop-gremlin-console-3.6.5
  2. Escriba el comando siguiente para ejecutar la consola de Gremlin.

    bin/gremlin.sh

    Debería ver los siguientes datos de salida:

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

    Ahora se encuentra en gremlin>. Introduzca los pasos restantes en este punto.

  3. En el símbolo del sistema gremlin>, escriba lo siguiente para conectarse a la instancia de base de datos de Neptune.

    :remote connect tinkerpop.server conf/neptune-remote.yaml
  4. En la entrada gremlin>, escriba lo siguiente para cambiar al modo remoto. Esto envía todas las consultas de Gremlin a la conexión remota.

    :remote console
  5. Añada un vértice con una etiqueta y una propiedad.

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

    Al vértice se le asigna un string ID que contiene unGUID. Todos los vértices IDs son cadenas en Neptune.

  6. Añada un vértice con ID personalizado.

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

    La propiedad id no se indica entre comillas. Se trata de una palabra clave para el ID del vértice. El ID del vértice indicado es una cadena con el número 1.

    Los nombres de propiedades normales deben incluirse entre comillas.

  7. Cambie la propiedad o añada una si no existe.

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

    En este ejemplo, se cambia la propiedad name para el vértice del paso anterior. Esto elimina todos los valores existentes de la propiedad name.

    Si no especificó single, en su lugar añade el valor a la propiedad name si aún no lo ha hecho.

  8. Añada la propiedad, pero anéxela si ya tiene un valor.

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

    Neptune utiliza la cardinalidad en conjuntos como acción predeterminada.

    Este comando añade la propiedad age con el valor 29, pero no reemplaza los valores existentes.

    Si la propiedad age ya tenía un valor, este comando anexa 29 a la propiedad. Por ejemplo, si la propiedad age era 27, el nuevo valor será [ 27, 29 ].

  9. Añada varios vértices.

    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)

    Puede enviar varias instrucciones a Neptune al mismo tiempo.

    Las instrucciones se pueden separar mediante una nueva línea ('\n'), espacios (' '), punto y coma ('; ') o nada (por ejemplo: g.addV(‘person’).iterate()g.V() es válido).

    nota

    La consola de Gremlin envía un comando independiente en cada nueva línea ('\n'), por lo que cada uno es una transacción independiente en ese caso. Este ejemplo tiene todos los comandos en líneas separadas para facilitar su lectura. Elimine los caracteres de nueva línea ('\n') para enviarlo como un único comando a través de la consola de Gremlin.

    Todas las instrucciones a excepción de la última deben finalizar en un paso de terminación, como .next() o .iterate(), o no se ejecutarán. La consola de Gremlin no requiere estos pasos de terminación. Use .iterate siempre que no necesite que los resultados se serialicen.

    Todas las instrucciones que se envían juntas se incluyen en una única transacción y se realizan correctamente o producen un error de forma conjunta.

  10. Añada bordes.

    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)

    A continuación, se muestran dos formas distintas de añadir un borde.

  11. Añada el resto del gráfico moderno.

    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. Elimine un vértice.

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

    Elimina el vértice con el valor de la propiedad name igual a justin.

    importante

    Pare aquí y tendrá el gráfico completo de Apache TinkerPop Modern. Los ejemplos de la sección transversal de la TinkerPop documentación utilizan el gráfico moderno.

  13. Ejecute un recorrido.

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

    Devuelve todos los vértices person.

  14. Ejecute un recorrido transversal con valores (valueMap()).

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

    Devuelve pares clave-valor para todos los vértices que marko "conoce".

  15. Especifique varias etiquetas.

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

    Neptune admite varias etiquetas para un vértice. Al crear una etiqueta, puede especificar varias si las separa mediante ::.

    Este ejemplo añade un vértice con tres etiquetas distintas.

    El paso hasLabel busca coincidencias de este vértice con cualquiera de esas tres etiquetas: hasLabel("Label1") hasLabel("Label2") y hasLabel("Label3").

    El delimitador :: está reservado solo para este uso.

    No se pueden especificar varias etiquetas en el paso hasLabel. Por ejemplo, hasLabel("Label1::Label2") no tiene ninguna coincidencia.

  16. Especifique la hora o la fecha.

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

    Neptune no admite la clase Date de Java. Utilice la datetime() función en su lugar. datetime()acepta una cadena ISO8 compatible con 061. datetime

    Admite los siguientes formatos: YYYY-MM-DD, YYYY-MM-DDTHH:mm, YYYY-MM-DDTHH:mm:SS y YYYY-MM-DDTHH:mm:SSZ.

  17. Elimine vértices, propiedades o bordes.

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

    Estos son algunos ejemplos.

    nota

    El paso .next() no funciona con .drop(). En su lugar, use .iterate().

  18. Cuando haya terminado, escriba lo siguiente para salir de la consola de Gremlin.

    :exit
nota

Utilice punto y coma (;) o un carácter de nueva línea (\n) para separar las instrucciones.

Cada recorrido anterior al final debe terminar en iterate() para ejecutarse. Solo se devuelven los datos del recorrido final.