Formato dati di caricamento Gremlin - 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à.

Formato dati di caricamento Gremlin

Per caricare i dati di Apache TinkerPop Gremlin utilizzando il CSV formato, è necessario specificare i vertici e gli spigoli in file separati.

Lo strumento di caricamento è in grado di caricare da più file vertex e da più file edge in un singolo processo di caricamento.

Per ciascun comando di caricamento, il set di file da caricare deve trovarsi nella stessa cartella nel bucket Amazon S3 ed è necessario specificare il nome della cartella per il parametro source. I nomi file e le relative estensioni non sono importanti.

Il formato Amazon CSV Neptune segue RFC le specifiche 4180. CSV Per ulteriori informazioni, consulta Common Format and MIME Type for CSV Files sul sito Web di Internet Engineering Task Force ()IETF.

Nota

Tutti i file devono essere codificati in formato UTF -8.

Ogni file ha una riga di intestazione separata da virgola. La riga di intestazione è costituita da intestazioni di colonna di sistema e da intestazioni di colonna delle proprietà.

Intestazioni di colonna di sistema

Le intestazioni di colonna di sistema necessarie e consentite sono diverse per i file di vertice e i file di edge.

Ogni colonna di sistema può essere presente una sola volta in un'intestazione.

Per tutte le etichette viene fatta distinzione tra maiuscole e minuscole.

Intestazioni vertici

  • ~id - Campo obbligatorio

    Un ID per il vertice.

  • ~label

    Un'etichetta per il vertice. Sono consentiti più valori di etichetta, separati da punto e virgola (;).

    Se non ~label è presente, TinkerPop fornisce un'etichetta con il valorevertex, poiché ogni vertice deve avere almeno un'etichetta.

Intestazioni edge

  • ~id - Campo obbligatorio

    Un ID per l'edge.

  • ~from - Campo obbligatorio

    L'ID del vertice from.

  • ~to - Campo obbligatorio

    L'ID del vertice to.

  • ~label

    Un'etichetta per l'edge. Gli edge possono avere solo un'etichetta singola.

    Se non ~label è presente, TinkerPop fornisce un'etichetta con il valoreedge, perché ogni bordo deve avere un'etichetta.

Intestazioni di colonna delle proprietà

È possibile specificare una colonna (:) per una proprietà utilizzando la sintassi seguente. Per i nomi dei tipi non viene fatta distinzione tra maiuscole e minuscole. Tenere presente, tuttavia, che se all'interno del nome di una proprietà compaiono i due punti, è necessario che siano preceduti da una barra rovesciata: \:.

propertyname:type
Nota

Lo spazio, la virgola, il ritorno a destra e i caratteri di nuova riga non sono consentiti nelle intestazioni delle colonne, pertanto i nomi delle proprietà non possono includere questi caratteri.

È possibile specificare una colonna per un tipo di matrice aggiungendo [] al tipo:

propertyname:type[]
Nota

Le proprietà edge possono avere solo un singolo valore e verrà generato un errore se viene specificato un tipo di array o un secondo valore.

L'esempio seguente mostra l'intestazione di colonna per una proprietà denominata age del tipo Int.

age:Int

Ogni riga del file dovrà avere un valore intero in quella posizione o essere lasciata vuota.

Sono consentiti array di stringhe, ma le stringhe in un array non possono includere il carattere punto e virgola (;) a meno che non venga preceduto da una barra rovesciata (come in questo caso :\;).

Specifica la cardinalità di una colonna

A partire da Rilascio 1.0.1.0.200366.0 (26/07/2019), l'intestazione della colonna può essere utilizzata per specificare la cardinalità per la proprietà identificata dalla colonna. Ciò permette allo strumento di caricamento in blocco di rispettare la cardinalità allo stesso modo delle query Gremlin.

Per specificare la cardinalità di una colonna:

propertyname:type(cardinality)

Il cardinality il valore può essere o. single set L'impostazione predefinita presunta è set; ciò significa che la colonna può accettare valori multipli. Nel caso di file edge, la cardinalità è sempre singola e specificare qualsiasi altra cardinalità fa sì che lo strumento di caricamento generi un'eccezione.

Se la cardinalità è single, lo strumento di caricamento genera un errore se un valore precedente è già presente quando viene caricato un valore oppure se vengono caricati più valori. Questo comportamento può essere sovrascritto in modo che un valore esistente venga sostituito quando un nuovo valore viene caricato usando il flag updateSingleCardinalityProperties. Per informazioni, consulta Comando dello strumento di caricamento.

È possibile utilizzare una cardinalità impostando un tipo di matrice, anche se non è generalmente necessario. Di seguito sono elencate le combinazioni possibili:

  • name:type: la cardinalità è set e il contenuto è a valore singolo.

  • name:type[]: la cardinalità è set e il contenuto ha valori multipli.

  • name:type(single): la cardinalità è single e il contenuto è a valore singolo.

  • name:type(set): la cardinalità è set, corrispondente al valore predefinito; il contenuto è a valore singolo.

  • name:type(set)[]: la cardinalità è set e il contenuto ha valori multipli.

  • name:type(single)[]: questa combinazione è contraddittoria e provoca un errore.

Nella sezione seguente sono elencati tutti i tipi di dati Gremlin disponibili.

Tipi di dati Gremlin

Si tratta di un elenco dei tipi di proprietà consentiti, con una descrizione per ognuno di essi.

Bool (o Booleano)

Indica un campo Booleano. Valori consentiti: false, true

Nota

Qualsiasi valore diverso da true verrà trattato come false.

Tipi Numero intero

I valori al di fuori degli intervalli definiti determinano un errore.

Tipo Intervallo
Byte Da -128 a 127
Breve Da -32768 a 32767
Int Da -2^31 a 2^31-1
Lungo Da -2^63 a 2^63-1
Tipi Numero decimale

Supporta la notazione sia decimale sia scientifica. Inoltre, consente simboli come (+/-) Infinity o NaN. INF non è supportato.

Tipo Range
Float IEEE754 a virgola mobile a 32 bit
Doppio 754 a virgola mobile a 64 bit IEEE

I valori float e doppi che sono troppo lunghi vengono caricati e arrotondati al valore più vicino per 24 bit (float) e 53 bit (doppi). Un valore medio viene arrotondato a 0 per le ultime cifre rimanenti a livello di bit.

Stringa

Le virgolette sono facoltative. Per virgole, nuova riga e ritorno a capo viene automaticamente inserito un carattere di escape, se sono inclusi in una stringa racchiusa tra virgolette doppie ("). Esempio: "Hello, World"

Per includere le virgolette in una stringa tra virgolette, è possibile inserire il carattere di escape per le virgolette utilizzandone due consecutivi: Esempio: "Hello ""World"""

Sono consentiti array di stringhe, ma le stringhe in un array non possono includere il carattere punto e virgola (;) a meno che non venga preceduto da una barra rovesciata (come in questo caso :\;).

Se desideri racchiudere le stringhe in una matrice con le virgolette, devi racchiudere l'intera matrice con una serie di virgolette. Esempio: "String one; String 2; String 3"

Data

Data Java in formato ISO -8601. Supporta i seguenti formati: yyyy-MM-dd, yyyy-MM-ddTHH:mm, yyyy-MM-ddTHH:mm:ss, yyyy-MM-ddTHH:mm:ssZ

Formato di riga Gremlin

Delimitatori

I campi in una riga sono separati da una virgola. I record sono separati da una nuova riga o da una nuova riga seguita da un ritorno a capo.

Campi vuoti

I campi vuoti sono consentiti per le colonne non obbligatorie (ad esempio le proprietà definite dall'utente). Un campo vuoto richiede comunque un separatore virgola. I campi vuoti nelle colonne obbligatorie genereranno un errore di analisi. I valori di stringa vuoti vengono interpretati come valori di stringa vuoti per il campo e non come campi vuoti. L'esempio nella sezione successiva presenta un campo vuoto in ciascun vertice.

Vertice IDs

I valori ~id devono essere univoci per tutti i vertici in ogni file di vertici. A un singolo vertice nel grafo vengono applicate più righe di vertice con valori ~id identici. La stringa vuota ("") è un id valido e il vertice viene creato con una stringa vuota come id.

Bordo IDs

I valori ~id devono essere univoci anche per tutti gli edge in ogni file di edge. All'unico edge nel grafo vengono applicate più righe di edge con valori ~id identici. La stringa vuota ("") è un ID valido e il bordo viene creato con una stringa vuota come id.

Etichette

Le etichette distinguono tra maiuscole e minuscole e non possono essere vuote. Un valore di "" genererà un errore.

Valori delle stringhe

Le virgolette sono facoltative. Per virgole, nuova riga e ritorno a capo viene automaticamente inserito un carattere di escape, se sono inclusi in una stringa racchiusa tra virgolette doppie ("). I valori di stringa vuoti ("") vengono interpretati come un valore di stringa vuoto per il campo e non come un campo vuoto.

CSVSpecificazione del formato

Il formato CSV Neptune segue le specifiche CSV 4180, inclusi RFC i seguenti requisiti.

  • Sono supportate le terminazioni di riga di entrambi gli stili, Unix e Windows (\ n o\r\n).

  • Qualsiasi campo può essere racchiuso tra virgolette (doppie).

  • I campi contenenti un'interruzione di riga, virgolette doppie o virgole devono essere racchiusi tra virgolette (in caso contrario, il caricamento viene interrotto immediatamente).

  • Un carattere virgolette doppie (") in un campo deve essere rappresentato da due (doppi) caratteri. Ad esempio, una stringa Hello "World" deve essere presente nei dati come "Hello ""World""".

  • Gli spazi circostanti tra i delimitatori vengono ignorati. Se una riga è presente comevalue1, value2, viene memorizzata come e. "value1" "value2"

  • Tutti gli altri caratteri di escape vengono archiviati integralmente. Ad esempio, "data1\tdata2" viene archiviato come "data1\tdata2". Se i caratteri sono racchiusi tra virgolette, non sono necessari ulteriori caratteri di escape.

  • Sono consentiti campi vuoti. Un campo vuoto viene considerato come un valore vuoto.

  • Per separare più valori per un campo viene utilizzato il punto e virgola (;).

Per ulteriori informazioni, vedete Formato e MIME tipo comuni per CSV i file sul sito Web di Internet Engineering Task Force (IETF).

Esempio Gremlin

Il diagramma seguente mostra un esempio di due vertici e uno spigolo presi dal TinkerPop Modern Graph.

Diagramma che mostra due vertici e un edge, contiene marko age 29 e lop software con lang: java.

Di seguito è riportato il grafico nel formato di caricamento di CSV Neptune.

File del vertice:

~id,name:String,age:Int,lang:String,interests:String[],~label v1,"marko",29,,"sailing;graphs",person v2,"lop",,"java",,software

Vista tabulare del file del vertice:

~id name:String age:Int lang:String Interessi: string [] ~label
v1 "marko" 29 ["navigazione», «grafici"] person
v2 "lop" "java" software

File di edge:

~id,~from,~to,~label,weight:Double e1,v1,v2,created,0.4

Vista tabulare del file di edge:

~id ~from ~to ~label weight:Double
e1 v1 v2 creato 0.4
Fasi successive

Ora che hai una maggiore conoscenza dei formati di caricamento, vedi Esempio: caricamento di dati in un'istanza database Neptune.