Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Format data muat Gremlin
Untuk memuat data Apache TinkerPop Gremlin menggunakan CSV format, Anda harus menentukan simpul dan tepi dalam file terpisah.
Loader dapat memuat dari beberapa file vertex dan beberapa file edge dalam pekerjaan pemuatan tunggal.
Untuk setiap perintah pemuatan, rangkaian file yang akan dimuat harus dalam folder yang sama di bucket Amazon S3, dan Anda menentukan nama folder untuk parameter source
. Nama file dan ekstensi nama file tidak penting.
Format Amazon CSV Neptunus mengikuti RFC spesifikasi 4180. CSV Untuk informasi selengkapnya, lihat Format Umum dan MIME Jenis CSV File
catatan
Semua file harus dikodekan dalam format UTF -8.
Setiap file memiliki baris header yang dipisahkan koma. Baris header terdiri dari kedua header kolom sistem dan header kolom properti.
Header Kolom Sistem
Header kolom sistem yang diperlukan dan diizinkan berbeda untuk file vertex dan file edge.
Setiap kolom sistem hanya dapat muncul satu kali di header.
Semua label peka terhadap besar kecilnya huruf.
Header Vertex
-
~id
- DiperlukanID untuk vertex.
-
~label
Label untuk vertex. Beberapa nilai label diperbolehkan, dipisahkan dengan titik koma (
;
).Jika tidak
~label
ada, TinkerPop berikan label dengan nilaivertex
, karena setiap simpul harus memiliki setidaknya satu label.
Header tepi
-
~id
- DiperlukanID untuk edge.
-
~from
- DiperlukanID vertex dari vertex from.
-
~to
- DiperlukanID vertex dari vertex to.
-
~label
Label untuk edge. Edge hanya dapat memiliki satu label.
Jika tidak
~label
ada, TinkerPop berikan label dengan nilainyaedge
, karena setiap tepi harus memiliki label.
Header Kolom Properti
Anda dapat menentukan kolom (:
) untuk properti dengan menggunakan sintaks berikut. Nama jenis tidak peka dengan huruf besar/kecil. Perhatikan, bagaimanapun, bahwa jika titik dua muncul dalam nama properti, itu harus diloloskan dengan mendahuluinya dengan garis miring terbalik:. \:
propertyname
:type
catatan
Spasi, koma, carriage return, dan karakter baris baru tidak diperbolehkan di header kolom, sehingga nama properti tidak dapat menyertakan karakter ini.
Anda dapat menentukan kolom untuk jenis array dengan menambahkan []
ke jenisnya:
propertyname
:type
[]
catatan
Properti edge hanya dapat memiliki satu nilai dan akan menyebabkan kesalahan jika jenis array yang ditentukan atau nilai kedua ditentukan.
Contoh berikut menunjukkan header kolom untuk properti bernama age
dengan tipe Int
.
age:Int
Setiap baris dalam file akan perlu memiliki integer dalam posisi itu atau dibiarkan kosong.
Array dari string diperbolehkan, tetapi string dalam array tidak dapat mencakup titik koma (;
) kecuali ia di-escape menggunakan garis miring terbalik (seperti ini: \;
).
Menentukan Kardinalitas Kolom
Dimulai di Rilis 1.0.1.0.200366.0 (2019-07-26), header kolom dapat digunakan untuk menentukan kardinalitas untuk properti yang diidentifikasi oleh kolom. Hal ini memungkinkan loader massal untuk menghormati kardinalitas yang sama dengan cara yang kueri Gremlin lakukan.
Anda menentukan kardinalitas kolom seperti ini:
propertyname
:type
(cardinality
)
Bagian cardinality
nilainya bisa berupa single
atauset
. Default-nya diasumsikan sebagai set
, yang berarti bahwa kolom dapat menerima beberapa nilai. Dalam kasus file edge, kardinalitas selalu tunggal dan menentukan kardinalitas lainnya menyebabkan loader melempar pengecualian.
Jika kardinalitas single
, loader melempar kesalahan jika nilai sebelumnya sudah ada ketika nilai dimuat, atau jika beberapa nilai dimuat. Perilaku ini dapat di-override sehingga nilai yang ada diganti ketika nilai baru dimuat dengan menggunakan bendera updateSingleCardinalityProperties
. Lihat Perintah Loader.
Hal ini dimungkinkan untuk menggunakan pengaturan kardinalitas dengan tipe array, meskipun hal ini umumnya tidak diperlukan. Berikut adalah kombinasi yang mungkin:
name:type
— kardinalitasnya adalahset
, dan kontennya bernilai tunggal.name:type[]
— kardinalitasnya adalahset
, dan kontennya multi-nilai.name:type(single)
— kardinalitasnya adalahsingle
, dan kontennya bernilai tunggal.name:type(set)
— kardinalitasnya adalahset
, yang sama dengan default, dan kontennya bernilai tunggal.name:type(set)[]
— kardinalitasnya adalahset
, dan kontennya multi-nilai.name:type(single)[]
— ini bertentangan dan menyebabkan kesalahan dilempar.
Bagian berikut mencantumkan semua jenis data Gremlin yang tersedia.
Jenis Data Gremlin
Ini adalah daftar jenis properti yang diizinkan, dengan deskripsi masing-masing jenis.
Bool (atau Boolean)
Menunjukkan bidang Boolean. Nilai yang diizinkan: false
, true
catatan
Nilai apa pun selain true
akan diperlakukan sebagai false.
Jenis Angka Utuh
Nilai-nilai di luar rentang yang didefinisikan menghasilkan kesalahan.
Tipe | Kisaran |
---|---|
Byte | -128 hingga 127 |
Pendek | -32768 ke 32767 |
Int | -2^31 hingga 2 ^ 31-1 |
Long | -2 ^ 63 hingga 2 ^ 63-1 |
Jenis Angka Desimal
Mendukung notasi desimal atau notasi ilmiah. Juga memungkinkan simbol seperti (+/-) Infinity atau NaN. INF tidak didukung.
Tipe | Kisaran |
---|---|
Desimal | Titik mengambang 32-bit IEEE 754 |
Ganda | Titik mengambang 64-bit IEEE 754 |
Nilai float dan double yang terlalu panjang dimuat dan dibulatkan ke nilai terdekat untuk presisi 24-bit (float) dan 53-bit (double). Sebuah nilai tengah dibulatkan ke 0 untuk digit terakhir yang tersisa di tingkat bit.
String
Tanda kutip adalah opsional. Koma, baris baru, dan karakter carriage return secara otomatis di-escape jika mereka termasuk dalam string yang diapit oleh tanda kutip ganda ("
). Contoh: "Hello,
World"
Untuk memasukkan tanda kutip dalam string bertanda kutip, Anda dapat meng-escape tanda kutip dengan menggunakan dua berturut-turut: Contoh: "Hello
""World"""
Array dari string diperbolehkan, tetapi string dalam array tidak dapat mencakup titik koma (;
) kecuali ia di-escape menggunakan garis miring terbalik (seperti ini: \;
).
Jika Anda ingin mengapit string dalam array dengan tanda kutip, Anda harus mengapit keseluruhan array dengan satu set tanda kutip. Contoh: "String one; String 2; String 3"
Tanggal
Tanggal Java dalam format ISO -8601. Mendukung format berikut: yyyy-MM-dd
, yyyy-MM-ddTHH:mm
, yyyy-MM-ddTHH:mm:ss
, yyyy-MM-ddTHH:mm:ssZ
Format Baris Gremlin
Pembatas
Bidang dalam baris dipisahkan dengan koma. Catatan dipisahkan oleh baris baru atau baris baru yang diikuti dengan carriage return.
Bidang Kosong
Bidang kosong diperbolehkan untuk kolom yang tidak diperlukan (seperti properti yang ditetapkan pengguna). Bidang kosong masih memerlukan pemisah koma. Bidang kosong pada kolom yang diperlukan akan menghasilkan kesalahan penguraian. Nilai string kosong ditafsirkan sebagai nilai string kosong untuk bidang; bukan sebagai bidang kosong. Contoh pada bagian berikutnya memiliki bidang kosong di setiap vertex contoh.
Vertex IDs
Nilai ~id
harus unik untuk semua vertex di setiap file vertex. Beberapa baris vertex dengan nilai-nilai ~id
identik diterapkan ke satu vertex dalam grafik. String kosong (""
) adalah id yang valid, dan simpul dibuat dengan string kosong sebagai id.
Tepi IDs
Selain itu, nilai ~id
harus unik untuk semua edge di setiap file edge. Beberapa baris edge dengan nilai-nilai ~id
identik diterapkan ke satu edge dalam grafik. String kosong (""
) adalah id yang valid, dan tepi dibuat dengan string kosong sebagai id.
Label
Label peka huruf besar/kecil dan tidak boleh kosong. Nilai ""
akan menghasilkan kesalahan.
Nilai String
Tanda kutip adalah opsional. Koma, baris baru, dan karakter carriage return secara otomatis di-escape jika mereka termasuk dalam string yang diapit oleh tanda kutip ganda ("
). Nilai string kosong ("")
ditafsirkan sebagai nilai string kosong untuk bidang; bukan sebagai bidang kosong.
CSVSpesifikasi Format
Format CSV Neptunus mengikuti spesifikasi CSV 4180RFC, termasuk persyaratan berikut.
Akhir baris gaya Unix dan Windows didukung (\n atau \r n).
Setiap bidang dapat dikutip (menggunakan tanda kutip ganda).
Bidang yang berisi line-break, double-quote, atau koma harus dikutip. (Jika tidak, pemuatan dibatalkan segera.)
Sebuah karakter tanda kutip ganda (
"
) dalam bidang harus diwakili oleh dua (dua) karakter tanda kutip. Misalnya, stringHello "World"
harus ada sebagai"Hello ""World"""
dalam data.Ruang sekitar antara delimiter diabaikan. Jika baris hadir sebagai
value1, value2
, mereka disimpan sebagai"value1"
dan"value2"
.Setiap karakter lainnya yang di-escape disimpan verbatim. Misalnya,
"data1\tdata2"
disimpan sebagai"data1\tdata2"
. Tidak ada proses escape lebih lanjut yang diperlukan selama karakter ini diapit dalam tanda kutip.Bidang kosong diperbolehkan. Bidang kosong dianggap sebagai nilai kosong.
Beberapa nilai untuk satu bidang ditentukan dengan titik koma (
;
) antara nilai-nilai.
Untuk informasi selengkapnya, lihat Format Umum dan MIME Jenis CSV File
Contoh Gremlin
Diagram berikut menunjukkan contoh dua simpul dan tepi yang diambil dari Grafik TinkerPop Modern.
Berikut ini adalah grafik dalam format beban CSV Neptunus.
File vertex:
~id,name:String,age:Int,lang:String,interests:String[],~label v1,"marko",29,,"sailing;graphs",person v2,"lop",,"java",,software
Tampilan tabular dari file vertex:
~id | Nama:string | Umur: int | lang:string | Minat:string [] | ~label |
v1 | “marko” | 29 | ["berlayar”, “grafik"] | pribadi | |
v2 | “lop” | “jawa” | software |
File edge:
~id,~from,~to,~label,weight:Double e1,v1,v2,created,0.4
Tampilan tabular dari file edge:
~id | ~dari | ~untuk | ~label | Berat: ganda |
e1 | v1 | v2 | dibuat | 0,4 |
Langkah Berikutnya
Sekarang setelah Anda tahu lebih banyak tentang format pemuatan, lihat Contoh: Memuat Data ke Instans DB Neptune.