Usar o Gremlin para acessar o grafo no Amazon Neptune - Amazon Neptune

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Usar o Gremlin para acessar o grafo no Amazon Neptune

Você pode usar o Gremlin Console para experimentar TinkerPop gráficos e consultas em um ambiente REPL (loop). read-eval-print

O tutorial a seguir descreve o uso do console do Gremlin para adicionar propriedades, vértices, bordas e muito mais a um grafo do Neptune e destaca algumas diferenças na implementação do Gremlin específica do Neptune.

nota

Este exemplo pressupõe que você tenha concluído o seguinte:

Usar o Gremlin Console
  1. Altere os diretórios para a pasta na qual os arquivos do Gremlin Console são descompactados.

    cd apache-tinkerpop-gremlin-console-3.6.5
  2. Digite o comando a seguir para executar o Gremlin Console.

    bin/gremlin.sh

    A seguinte saída deverá ser mostrada:

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

    Agora você está no prompt do gremlin>. Você insere as etapas restantes nesse prompt.

  3. No prompt gremlin>, insira o seguinte para conectar-se a instâncias de banco de dados do Neptune.

    :remote connect tinkerpop.server conf/neptune-remote.yaml
  4. No prompt gremlin>, insira o seguinte para alternar para modo remoto. Isso envia todas as consultas do Gremlin para a conexão remota.

    :remote console
  5. Adicionar vértice com rótulo e propriedade.

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

    É atribuído um ID de string ao vértice que contém um GUID. Todos os IDs de vértice são strings no Neptune.

  6. Adicionar um vértice com id personalizado.

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

    A propriedade id não é mencionada. Ela é uma palavra-chave para o ID do vértice. O ID do vértice aqui é uma string com o número 1 nela.

    Os nomes de propriedade normais devem estar entre aspas.

  7. Alterar ou adicionar propriedade caso não exista.

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

    Aqui você está alterando a propriedade name para o vértice da etapa anterior. Isso remove todos os valores existentes da propriedade name.

    Se você não especificar single, em vez disso, ele acrescenta o valor à propriedade name caso ainda não tenha feito.

  8. Adicionar propriedade, mas incluir propriedade caso já possua um valor.

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

    O Neptune usa cardinalidade set como a ação padrão.

    Esse comando adiciona a propriedade age com o valor 29, mas não substitui qualquer valor existente.

    Se a propriedade age já tinha um valor, esse comando anexa 29 à propriedade. Por exemplo, se a propriedade age era 27, o novo valor será [ 27, 29 ].

  9. Adicionar vários 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)

    Você pode enviar várias declarações ao mesmo tempo ao Neptune.

    As instruções podem ser separadas por novas linhas ('\n'), espaços (' '), ponto e vírgula ('; ') ou nada (por exemplo: g.addV(‘person’).iterate()g.V() é válido).

    nota

    O Gremlin Console envia um comando separado a cada nova linha ('\n'), de modo que cada um será uma transação separada nesse caso. Esse exemplo tem todos os comandos em linhas separadas para legibilidade. Remova os caracteres de nova linha ('\n') para enviá-lo como um único comando por meio do Gremlin Console.

    Todas as instruções diferentes da última instrução devem terminar em uma etapa de encerramento, como .next() ou .iterate(), ou não serão executadas. O Gremlin Console não requer essas etapas de encerramento. Use .iterate sempre que não precisar que os resultados sejam serializados.

    Todas as instruções enviadas em conjunto são incluídas em uma única transação e são bem-sucedidas ou falham em conjunto.

  10. Adicionar bordas.

    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)

    Veja aqui duas maneiras diferentes para adicionar uma borda.

  11. Adicionar o restante do 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. Excluir um vértice.

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

    Remove o vértice com a propriedade name igual a justin.

    Importante

    Pare aqui e você terá o gráfico completo do Apache TinkerPop Modern. Os exemplos na seção Traversal da TinkerPop documentação usam o gráfico moderno.

  13. Executar um percurso.

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

    Retorna todos os vértices person.

  14. Executar um percurso com valores (valueMap()).

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

    Retorna pares de chave-valor para todos os vértices que marko "conhece".

  15. Especificar vários rótulos.

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

    O Neptune é compatível com vários rótulos para um vértice. Quando cria um rótulo, você pode especificar vários rótulos separados com ::.

    Esse exemplo adiciona um vértice com três diferentes rótulos.

    A etapa hasLabel corresponde esse vértice com qualquer um destes três rótulos: hasLabel("Label1"), hasLabel("Label2") e hasLabel("Label3").

    O delimitador :: é reservado somente para esse uso.

    Você não pode especificar vários rótulos na etapa hasLabel. Por exemplo, hasLabel("Label1::Label2") não corresponde a nada.

  16. Especifique hora/data.

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

    O Neptune não é compatível com Java Date. Use a função datetime(). O datetime() aceita uma string datetime compatível com ISO8061.

    Compatível com os formatos: YYYY-MM-DD, YYYY-MM-DDTHH:mm, YYYY-MM-DDTHH:mm:SS e YYYY-MM-DDTHH:mm:SSZ.

  17. Excluir vértices, propriedades ou bordas.

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

    Aqui estão alguns exemplos de remoção.

    nota

    A etapa .next() não funciona com .drop(). Use .iterate() em vez disso.

  18. Ao terminar, insira o seguinte para sair do Gremlin Console.

    :exit
nota

Use um ponto e vírgula (;) ou um caractere de nova linha (\n) para separar cada instrução.

Cada travessia anterior à travessia final deve terminar em iterate() a ser executada. Somente os dados da travessia final são retornados.