Formato de datos de carga de Gremlin - Amazon Neptune

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Formato de datos de carga de Gremlin

Para cargar datos de Apache TinkerPop Gremlin con este CSV formato, debe especificar los vértices y los bordes en archivos separados.

El cargador puede cargar desde varios archivos de vértice y varios archivos de borde en una única tarea de carga.

Para cada comando de carga, el conjunto de archivos que se va a cargar debe estar en la misma carpeta del bucket de Amazon S3 y se debe especificar el nombre de la carpeta para el parámetro source. Los nombres de archivo y las extensiones de estos no son importantes.

El CSV formato Amazon Neptune sigue la especificación RFC CSV 4180. Para obtener más información, consulte Formato y MIME tipo comunes de CSV archivos en el sitio web del Grupo de Trabajo de Ingeniería de Internet (IETF).

nota

Todos los archivos deben estar codificados en formato UTF -8.

Cada archivo tiene una fila de encabezado con elementos separados por comas. La fila de encabezado se compone tanto de encabezados de columnas del sistema como encabezados de columnas de propiedades.

Encabezados de columnas del sistema

Los encabezados de columnas del sistema necesarios y permitidos son distintos para los archivos de vértices y para los archivos de bordes.

Cada columna del sistema solo puede aparecer una vez en un encabezado.

Todas las etiquetas distinguen entre mayúsculas y minúsculas.

Encabezados de vértices

  • ~id: obligatorio

    ID del vértice.

  • ~label

    Etiqueta para el vértice. Se permiten varios valores de etiqueta, separados por punto y coma (;).

    Si no ~label está presente, TinkerPop proporciona una etiqueta con el valorvertex, ya que cada vértice debe tener al menos una etiqueta.

Encabezados de borde

  • ~id: obligatorio

    ID del borde.

  • ~from: obligatorio

    ID del vértice desde.

  • ~to: obligatorio

    ID del vértice hasta.

  • ~label

    Etiqueta para el borde. Los bordes solo pueden tener una etiqueta.

    Si no ~label está presente, TinkerPop proporciona una etiqueta con el valoredge, ya que cada borde debe tener una etiqueta.

Encabezados de columnas de propiedades

Para especificar una columna (:) para una propiedad, use la sintaxis siguiente. Los nombres de tipos no distinguen entre mayúsculas y minúsculas. Sin embargo, tenga en cuenta que si aparecen dos puntos dentro del nombre de una propiedad, deben ir precedidos de una barra invertida: \:.

propertyname:type
nota

En los encabezados de las columnas no se admiten espacios, comas, volantes ni líneas nuevas, por lo que los nombres de las propiedades no pueden incluir estos caracteres.

Para especificar una columna para un tipo de matriz, añada [] al tipo:

propertyname:type[]
nota

Las propiedades de borde solo pueden tener un único valor y provocarán un error si se especifica un tipo de matriz o si se especifica un segundo valor.

En el siguiente ejemplo, se muestra el encabezado de columna para una propiedad llamada age de tipo Int.

age:Int

Cada fila del archivo debe tener un entero en esa posición o bien dejarse en blanco.

Se permiten matrices de cadenas, pero las cadenas de una matriz no pueden incluir el carácter de punto y coma (;) a menos que se escapen mediante una barra invertida (como esta: \;).

Especificación de la cardinalidad de una columna

A partir de Versión 1.0.1.0.200366.0 (26/07/2019), el encabezado de columna se pueden utilizar para especificar la cardinalidad de la propiedad identificada por la columna. Esto permite que el programa de carga masivo respete la cardinalidad de manera similar a como lo hace con las consultas Gremlin.

Especifique la cardinalidad de una columna como se indica a continuación:

propertyname:type(cardinality)

La cardinality el valor puede ser o. single set El valor predeterminado se supone que es set, lo que significa que la columna puede aceptar varios valores. En el caso de los archivos de borde, la cardinalidad es siempre única y la especificación de otra cardinalidad provoca que el programa de carga genere una excepción.

Si la cardinalidad es single, el programa de carga genera un error si ya hay presente un valor anterior cuando se cargan uno o varios valores. Este comportamiento se puede anular, de forma que un valor existente se sustituye cuando un nuevo valor se carga mediante el uso del indicador updateSingleCardinalityProperties. Consulte Comando Loader.

Es posible utilizar una configuración de cardinalidad con un tipo de matriz, aunque esto, por lo general, no es es necesario. A continuación se muestran las posibles combinaciones:

  • name:type: la cardinalidad es set y el contenido es de un solo valor.

  • name:type[]: la cardinalidad es set y el contenido es de varios valores.

  • name:type(single): la cardinalidad es single y el contenido es de un solo valor.

  • name:type(set)— la cardinalidad es set, que es la misma que la predeterminada, y el contenido es de un solo valor.

  • name:type(set)[]: la cardinalidad es set y el contenido es de varios valores.

  • name:type(single)[]: esto es contradictorio y produce un error.

En la siguiente sección se enumeran todos los tipos de datos Gremlin disponibles.

Tipos de datos de Gremlin

Esta es una lista de los tipos de propiedades permitidos, con una descripción de cada tipo.

Bool (o Booleano)

Indica un campo booleano. Valores permitidos: false, true

nota

Cualquier valor distinto de true se tratará como falso.

Tipos de número entero

Los valores fuera de los intervalos definidos generarán un error.

Tipo Range
Byte De -128 a 127
Short De -32768 a 32767
Int -2^31 a 2^31-1
Long -2^63 a 2^63-1
Tipos de número decimal

Admite la notación decimal y la notación científica. También permite símbolos, como (+/-), Infinity o NaN. INF no se admite.

Tipo Rango
Flotante Punto flotante IEEE 754 de 32 bits
Doble Punto flotante IEEE 754 de 64 bits

Los valores float y double que son demasiado largos, se cargan y se redondean al valor más cercano con una precisión de 24 bits (float) y de 53 bits (double). Un valor intermedio se redondea a 0 hasta el último dígito restante en el nivel de bit.

Cadena

El uso de las comillas es opcional. A los caracteres de coma, nueva línea y retorno de carro se les aplica escape automáticamente si están incluidos en una cadena entre comillas dobles ("). Ejemplo: "Hello, World"

Para incluir comillas en una cadena con comillas, use dos entradas de comillas en una fila para aplicar escape: Ejemplo: "Hello ""World"""

Se permiten matrices de cadenas, pero las cadenas de una matriz no pueden incluir el carácter de punto y coma (;) a menos que se escapen mediante una barra invertida (como esta: \;).

Si desea rodear las cadenas de una matriz con comillas, debe rodear toda la matriz con un conjunto de comillas. Ejemplo: "String one; String 2; String 3"

Date

Fecha de Java en formato ISO -8601. Admite los siguientes formatos: yyyy-MM-dd, yyyy-MM-ddTHH:mm, yyyy-MM-ddTHH:mm:ss, yyyy-MM-ddTHH:mm:ssZ

Formato de fila de Gremlin

Delimitadores

Los campos de una fila se separan por una coma. Los registros se separan por una nueva línea o por una nueva línea seguida de un retorno de carro.

Campos en blanco

Se permiten los campos en blanco para las columnas que no son obligatorias (por ejemplo, las propiedades que define el usuario). Un campo en blanco también requiere el separador de coma. Los campos en blanco en las columnas obligatorias provocarán un error de análisis. Los valores de cadena vacíos se interpretan como un valor de cadena vacío para el campo, no como un campo en blanco. El ejemplo de la siguiente sección tiene un campo en blanco en cada vértice de ejemplo.

Vértice IDs

Los valores ~id deben ser únicos para todos los vértices en cada archivo de vértices. Varias filas de vértice que tengan valores ~id idénticos se aplican a un mismo vértice del gráfico. La cadena vacía ("") es un identificador válido y el vértice se crea con una cadena vacía como identificador.

Borde IDs

Los valores ~id también deben ser únicos para todos los bordes en cada archivo de bordes. Varias filas de borde que tengan valores ~id idénticos se aplican a un mismo borde del gráfico. La cadena vacía ("") es un identificador válido y el borde se crea con una cadena vacía como identificador.

Etiquetas

Las etiquetas distinguen mayúsculas de minúsculas y no pueden estar vacías. Un valor de "" provocará un error.

Valores de cadena

El uso de las comillas es opcional. A los caracteres de coma, nueva línea y retorno de carro se les aplica escape automáticamente si están incluidos en una cadena entre comillas dobles ("). Los valores de cadena vacíos ("") se interpretan como un valor de cadena vacío para el campo, no como un campo en blanco.

CSVEspecificación de formato

El CSV formato Neptune sigue la CSV especificación RFC 4180, que incluye los siguientes requisitos.

  • Se admiten finales de línea tanto de estilo Unix como Windows (\n o \r\n).

  • Cualquier campo se puede incluir entre comillas (usando comillas dobles).

  • Los campos que contienen un salto de línea, comillas dobles o comas deben incluirse entre comillas. (De lo contrario, la carga se anula inmediatamente).

  • Un carácter de comillas dobles (") en un campo debe representarse con dos caracteres de comillas (dobles). Por ejemplo, una cadena Hello "World" debe aparecer como "Hello ""World""" en los datos.

  • Los espacios que hay entre los delimitadores se omiten. Si una fila está presente comovalue1, value2, se almacena como "value1" y. "value2"

  • Cualquier otro carácter de escape se almacena literalmente. Por ejemplo, "data1\tdata2" se almacena como "data1\tdata2". No es necesario seguir aplicando el escape, siempre que estos caracteres estén encerrados entre comillas.

  • Se permiten campos en blanco. Un campo en blanco se considera un valor vacío.

  • Si un campo tiene varios valores, estos se separan por punto y coma (;).

Para obtener más información, consulte Formato y MIME tipo comunes de CSV archivos en el sitio web del Grupo de Trabajo de Ingeniería de Internet (IETF).

Ejemplo de Gremlin

El siguiente diagrama muestra un ejemplo de dos vértices y una arista tomados del gráfico TinkerPop moderno.

Diagrama que muestra dos vértices y un borde, cuyos elementos son marko, de 29 años, y software LOP con lenguaje java.

El siguiente es el gráfico en formato de CSV carga de Neptune.

Archivo de vértice:

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

Vista tabular del archivo de vértice:

~id name:String age:Int lang:String Intereses: string [] ~label
v1 "marko" 29 ["navegación», «gráficos"] person
v2 "lop" "java" software

Archivo de borde:

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

Vista tabular del archivo de borde:

~id ~from ~a ~label weight:Double
e1 v1 v2 created 0.4
Siguientes pasos

Ahora que conoce mejor los formatos de carga, consulte Ejemplo: carga de datos en una instancia de base de datos de Neptune.