

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menggunakan Gremlin untuk mengakses data grafik di Amazon Neptunus
<a name="get-started-graph-gremlin"></a>

Anda dapat menggunakan Konsol Gremlin untuk bereksperimen dengan TinkerPop grafik dan kueri di lingkungan REPL (read-eval-print loop). 

Tutorial berikut memandu Anda menggunakan konsol Gremlin untuk menambahkan simpul, tepi, properti, dan lainnya ke grafik Neptunus, menyoroti beberapa perbedaan dalam implementasi Gremlin. Neptune-specific 

**catatan**  
Contoh ini mengasumsikan bahwa Anda telah menyelesaikan hal berikut ini:  
Anda telah terhubung menggunakan SSH ke instans Amazon EC2.
Anda telah membuat sebuah klaster Neptune seperti yang dijelaskan di [Buat cluster Neptunus](get-started-create-cluster.md).
Anda telah menginstal konsol Gremlin seperti yang diterangkan dalam [Menginstal konsol Gremlin](access-graph-gremlin-console.md).

**Menggunakan Konsol Gremlin**

1. Ubah direktori ke dalam folder tempat file konsol Gremlin di-unzip.

   ```
   cd apache-tinkerpop-gremlin-console-3.7.2
   ```

1. Masukkan perintah berikut untuk menjalankan Konsol Gremlin.

   ```
   bin/gremlin.sh
   ```

   Anda akan melihat output berikut:

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

   Anda sekarang berada di prompt `gremlin>`. Anda memasukkan langkah-langkah yang tersisa pada prompt ini.

1. Di prompt `gremlin>`, masukkan hal berikut untuk menyambung ke instans DB Neptune.

   ```
   :remote connect tinkerpop.server conf/neptune-remote.yaml
   ```

1. Di prompt `gremlin>`, masukkan hal berikut ini untuk beralih ke mode jarak jauh. Ini mengirimkan semua kueri Gremlin ke koneksi remote.

   ```
   :remote console
   ```

1. **Tambahkan vertex dengan label dan properti.**

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

   Vertex ditugaskan ID `string` yang berisi GUID. Semua ID vertex adalah string di Neptune.

1. **Tambahkan simpul dengan id kustom.**

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

   Properti `id` tidak dikutip. Ini adalah kata kunci untuk ID vertex. ID vertex di sini adalah string dengan nomor `1` di dalamnya.

   Nama properti normal harus berada di dalam tanda kutip.

1. **Ubah properti atau tambahkan properti jika tidak ada.**

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

   Di sini Anda mengubah properti `name` untuk vertex dari langkah sebelumnya. Ini akan menghapus semua nilai yang ada dari properti `name`.

   Jika Anda tidak menentukan `single`, ia justru akan menambahkan nilainya ke properti `name` jika belum dilakukannya. 

1. **Tambahkan properti, tetapi tambahkan properti jika properti sudah memiliki nilai.**

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

   Neptune menggunakan set secara kardinal sebagai tindakan default.

   Perintah ini menambahkan properti `age` dengan nilai `29`, tetapi tidak menggantikan nilai yang ada. 

   Jika properti `age` sudah memiliki nilai, perintah ini menambahkan `29` ke properti. Sebagai contoh, jika properti `age` adalah `27`, nilai baru akan menjadi `[ 27, 29 ]`.

1. **Tambahkan beberapa simpul.**

   ```
   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)
   ```

   Anda dapat mengirim beberapa pernyataan pada saat yang sama ke Neptune.

   Pernyataan dapat dipisahkan dengan baris baru (`'\n'`), spasi (`' '`), titik koma (`'; '`), atau kosong (misalnya: `g.addV(‘person’).iterate()g.V()` berlaku). 
**catatan**  
Konsol Gremlin mengirimkan perintah terpisah di setiap baris baru (`'\n'`), sehingga masing-masing mereka menjadi transaksi terpisah dalam kasus itu. Contoh ini memiliki semua perintah pada baris terpisah untuk dibaca. Hapus baris baru karakter (`'\n'`) untuk mengirimkannya sebagai perintah tunggal melalui Konsol Gremlin.

   Semua pernyataan selain pernyataan terakhir harus diakhiri dengan langkah pengakhiran, seperti `.next()` atau `.iterate()`, atau mereka tidak akan berjalan. Konsol Gremlin tidak memerlukan langkah-langkah pengakhiran ini. Gunakan `.iterate` setiap kali Anda tidak memerlukan hasil yang akan diserialkan.

   Semua pernyataan yang dikirim bersama-sama disertakan dalam satu transaksi dan berhasil atau gagal bersama-sama.

1. **Tambahkan tepi.**

   ```
   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)
   ```

   Berikut adalah dua cara berbeda untuk menambahkan edge.

1. **Tambahkan sisa grafik 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)
   ```

1. **Hapus simpul.**

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

   Menghapus vertex dengan properti `name` sama dengan `justin`.
**penting**  
*Berhenti di sini, dan Anda memiliki grafik Apache TinkerPop Modern lengkap. Contoh di [bagian Traversal](https://tinkerpop.apache.org/docs/current/reference/#graph-traversal-steps) TinkerPop dokumentasi menggunakan grafik Modern.*

1. **Jalankan traversal.**

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

   Mengembalikan semua vertex `person`.

1. **Jalankan Traversal dengan nilai (valueMap ()).**

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

   Mengembalikan kunci, pasangan nilai untuk semua vertex yang “diketahui” `marko`.

1. **Tentukan beberapa label.**

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

   Neptune mendukung beberapa label untuk sebuah vertex. Ketika Anda membuat label, Anda dapat menentukan beberapa label dengan memisahkannya dengan `::`.

   Contoh ini menambahkan sebuah vertex dengan tiga label yang berbeda. 

   Langkah `hasLabel` cocok dengan vertex ini dengan salah satu dari tiga label tersebut: `hasLabel("Label1")`, `hasLabel("Label2")`, dan `hasLabel("Label3")`. 

   Pembatas `::` dicadangkan untuk penggunaan ini saja. 

   Anda tidak dapat menentukan beberapa label di langkah `hasLabel`. Misalnya, `hasLabel("Label1::Label2")` tidak cocok dengan apa pun. 

1. **Tentukan Time/date**.

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

   Neptune tidak mendukung Java Date. Gunakan `datetime()` fungsi sebagai gantinya. `datetime()`menerima ISO8061-compliant `datetime` string.

   Mendukung format berikut: `YYYY-MM-DD, YYYY-MM-DDTHH:mm`, `YYYY-MM-DDTHH:mm:SS`, dan `YYYY-MM-DDTHH:mm:SSZ`.

1. **Hapus simpul, properti, atau tepi.**

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

   Berikut adalah beberapa contoh drop.
**catatan**  
 Langkah `.next()` tidak bekerja dengan `.drop()`. Gunakan `.iterate()` sebagai gantinya.

1. Setelah selesai, masukkan yang berikut ini untuk keluar dari Gremlin Console.

   ```
   :exit
   ```

**catatan**  
Gunakan titik koma (`;`) atau karakter baris baru (`\n`) untuk memisahkan setiap pernyataan.   
Setiap traversal sebelum traversal akhir harus diakhiri dengan `iterate()` yang akan dieksekusi. Hanya data dari traversal akhir yang dikembalikan.