Utilizzo di Gremlin per accedere ai dati dei grafici in Amazon Neptune - Amazon Neptune

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzo di Gremlin per accedere ai dati dei grafici in Amazon Neptune

Puoi usare la Gremlin Console per sperimentare grafici e interrogazioni in un ambiente (loop). TinkerPop REPL read-eval-print

I seguenti tutorial descrivono come utilizzare la console di Gremlin per aggiungere vertici, edge, proprietà e altro a un grafo Neptune, oltre a evidenziare alcune differenze nell'implementazione di Gremlin specifica per Neptune.

Nota

Questo esempio presuppone che siano state completate le seguenti operazioni:

Utilizzi la console di Gremlin
  1. Cambia directory nelle cartelle in cui vengono decompressi i file della console di Gremlin.

    cd apache-tinkerpop-gremlin-console-3.6.5
  2. Digita il comando seguente per eseguire la console di Gremlin.

    bin/gremlin.sh

    Verrà visualizzato l'output seguente:

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

    Ora ti trovi al prompt gremlin>. Immetti i restanti passaggi in questo prompt.

  3. Al prompt gremlin>, immetti quanto segue per connetterti all'istanza database Neptune.

    :remote connect tinkerpop.server conf/neptune-remote.yaml
  4. Al prompt gremlin>, immetti quanto segue per passare alla modalità remota. In questo modo tutte le query Gremlin vengono inviate alla connessione remota.

    :remote console
  5. Aggiungi un vertice con etichetta e proprietà.

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

    Al vertice viene assegnato un string ID contenente unGUID. Tutti i vertici IDs sono stringhe in Neptune.

  6. Aggiungi un vertice con ID personalizzato.

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

    La proprietà id non è indicata. Si tratta di una parola chiave per l'ID del vertice. L'ID del vertice qui indicato è una stringa contenente il numero 1.

    I nomi di proprietà standard devono essere racchiusi tra virgolette.

  7. Cambia la proprietà o aggiungila se non è già stata creata.

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

    Qui è possibile modificare la proprietà name per il vertice della fase precedente. Questo consente di rimuovere tutti i valori esistenti della proprietà name.

    Se non hai specificato single, il valore viene aggiunto alla proprietà name (se ancora non è stato fatto).

  8. Aggiungi la proprietà, ma aggiungila in coda se dispone già di un valore.

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

    Neptune impiega la cardinalità di un insieme come azione predefinita.

    Questo comando aggiunge la proprietà age con il valore 29, ma non sostituisce i valori esistenti.

    Se la proprietà age disponeva già di un valore, questo comando aggiunge 29 in coda alla proprietà. Ad esempio, se la proprietà age era 27, il nuovo valore è [ 27, 29 ].

  9. Aggiungi più vertici.

    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)

    È possibile inviare più istruzioni contemporaneamente a Neptune.

    Le istruzioni possono essere separate da nuove righe ('\n'), spazi (' '), punto e virgola ('; ') o non essere separate da alcun carattere (ad esempio, l'istruzione g.addV(‘person’).iterate()g.V() è valida).

    Nota

    La console di Gremlin invia un comando separato a ogni nuova riga ('\n'), di modo che risulteranno essere transazioni distinte. Questo esempio mostra tutti i comandi su righe separate per motivi di leggibilità. Rimuovi i caratteri della nuova riga ('\n') per inviarli in un unico comando tramite la console Gremlin.

    Tutte le istruzioni diverse dall'ultima devono avere una fase di chiusura, ad esempio .next() o .iterate(); in caso contrario non saranno eseguite. La console di Gremlin non richiede queste fasi finali. Usa .iterate quando non è necessario che i risultati vengano serializzati.

    Tutte le istruzioni che vengono inviate insieme sono incluse in una singola transazione e insieme hanno esito positivo o negativo.

  10. Aggiungi edge.

    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)

    Di seguito sono indicati due diversi modi per aggiungere un edge.

  11. Aggiungi il resto del grafo 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. Elimina un vertice.

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

    Rimuove il vertice con la proprietà name uguale a justin.

    Importante

    Fermatevi qui e avrete il grafico completo di Apache Modern. TinkerPop Gli esempi nella sezione Traversal della TinkerPop documentazione utilizzano il grafico Modern.

  13. Esegui un attraversamento.

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

    Restituisce tutti i vertici person.

  14. Esegui un Traversal con valori (())valueMap.

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

    Restituisce coppie di chiavi e di valori per tutti i vertici riconosciuti da marko.

  15. Specifica più etichette.

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

    Neptune supporta più etichette per un vertice. Quando crei un'etichetta, puoi specificare più etichette separandole con ::.

    In questo esempio viene aggiunto un vertice con tre etichette diverse.

    La fase hasLabel corrisponde a questo vertice con una qualsiasi delle tre etichette: hasLabel("Label1") , hasLabel("Label2") e hasLabel("Label3").

    Il delimitatore :: è riservato solo a quest'uso.

    Non è possibile specificare più etichette nella fase hasLabel. Ad esempio, hasLabel("Label1::Label2") non corrisponde a nulla.

  16. Specifica Ora/data.

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

    Neptune non supporta la data Java. Utilizzate invece la datetime() funzione. datetime()accetta una stringa ISO8 conforme a 061datetime.

    Supporta i seguenti formati: YYYY-MM-DD, YYYY-MM-DDTHH:mm, YYYY-MM-DDTHH:mm:SS e YYYY-MM-DDTHH:mm:SSZ.

  17. Elimina vertici, proprietà o edge.

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

    Di seguito sono riportati vari esempi.

    Nota

    La fase .next() non funziona con .drop(). Usare invece .iterate().

  18. Al termine, immetti quanto segue per uscire dalla console di Gremlin.

    :exit
Nota

Utilizzare un punto e virgola (;) o un carattere nuova riga (\n) per separare ogni istruzione.

Ogni attraversamento che precede l'attraversamento finale deve terminare in iterate() per essere eseguito. Vengono restituiti solo i dati dell'ultimo attraversamento.