Formato de dados de carga do Gremlin - Amazon Neptune

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Formato de dados de carga do Gremlin

Para carregar dados do Apache TinkerPop Gremlin usando o CSV formato, você deve especificar os vértices e as bordas em arquivos separados.

O carregador pode carregar vários arquivos de vértice e vários arquivos de ponto em um único trabalho de carga.

Para cada comando de carga, o conjunto de arquivos a serem carregados deve estar na mesma pasta no bucket do Amazon S3 e você deve especificar o nome da pasta para o parâmetro source. Os nomes dos arquivos e as extensões dos nomes dos arquivos não são importantes.

O formato Amazon CSV Neptune segue RFC a especificação 4180. CSV Para obter mais informações, consulte Formato e MIME tipo comuns para CSV arquivos no site da Internet Engineering Task Force (IETF).

nota

Todos os arquivos devem ser codificados no formato UTF -8.

Cada arquivo tem uma linha de cabeçalho separada por vírgula. A linha de cabeçalho consiste nos cabeçalhos da coluna do sistema e nos cabeçalhos da coluna de propriedade.

Cabeçalhos de colunas do sistema

Os cabeçalhos da coluna do sistema exigidos e permitidos são diferentes para arquivos de vértice e arquivos de ponto.

Cada coluna do sistema pode aparecer apenas uma vez em um cabeçalho.

Todos os rótulos diferenciam maiúsculas de minúsculas.

Cabeçalhos de vértice

  • ~id: obrigatório

    Um ID para o vértice.

  • ~label

    Um rótulo para o vértice. Vários valores de rótulo são permitidos, separados por ponto e vírgula (;).

    Se não ~label estiver presente, TinkerPop fornece um rótulo com o valorvertex, porque cada vértice deve ter pelo menos um rótulo.

Cabeçalhos de ponto

  • ~id: obrigatório

    Um ID para o ponto.

  • ~from: obrigatório

    O ID do vértice do vértice de.

  • ~to: obrigatório

    O ID do vértice do vértice para.

  • ~label

    Um rótulo para o ponto. Os pontos podem ter apenas um único rótulo.

    Se não ~label estiver presente, TinkerPop fornece uma etiqueta com o valoredge, pois cada borda deve ter uma etiqueta.

Cabeçalhos de coluna de propriedade

É possível especificar uma coluna (:) para uma propriedade usando a sintaxe a seguir. Os nomes dos tipos não diferenciam maiúsculas de minúsculas. No entanto, observe que, se houver o caractere de dois pontos no nome de uma propriedade, ele deverá ser precedido por uma barra invertida como caractere de escape: \:

propertyname:type
nota

Não são permitidos caracteres de espaço, vírgula, retorno de carro e nova linha nos cabeçalhos das colunas, portanto, os nomes das propriedades não podem incluir esses caracteres.

Você pode especificar uma coluna para um tipo de matriz adicionando [] para o tipo:

propertyname:type[]
nota

As propriedades de borda podem ter apenas um único valor e causarão um erro se um tipo de matriz é especificado ou um segundo valor é especificado.

O exemplo a seguir mostra o cabeçalho da coluna de uma propriedade denominada age do tipo Int.

age:Int

Cada linha no arquivo precisa ter um número inteiro nessa posição ou ser deixada em branco.

Matrizes de strings são permitidas, mas as strings em uma matriz não podem incluir o caractere ponto e vírgula (;), a menos que ele tenha uma barra invertida como caractere de escape (como este: \;).

Especificar a cardinalidade de uma coluna

A partir de Versão 1.0.1.0.200366.0 (26/07/2019), o cabeçalho da coluna pode ser usado para especificar a cardinalidade da propriedade identificada pela coluna. Isso permite que o carregador em massa use a cardinalidade de forma semelhante à forma como as consultas do Gremlin fazem.

Você especifica a cardinalidade de uma coluna da seguinte forma:

propertyname:type(cardinality)

A ferramenta cardinality o valor pode ser single ouset. O padrão é set, o que significa que a coluna pode aceitar vários valores. No caso de arquivos de ponto, a cardinalidade é sempre única e especificar qualquer outra cardinalidade faz com que o carregador gere uma exceção.

Se a cardinalidade for single, o carregador lançará um erro se um valor anterior já estiver presente quando um valor for carregado, ou se vários valores forem carregados. Esse comportamento pode ser substituído para que um valor existente seja substituído quando um novo valor é carregado usando o sinalizador updateSingleCardinalityProperties. Consulte Comando Loader.

É possível usar uma configuração de cardinalidade com um tipo de matriz, embora isso não seja geralmente necessário. Estas são as combinações possíveis:

  • name:type: a cardinalidade é set, e o conteúdo é um único valor.

  • name:type[]: a cardinalidade é set, e o conteúdo são vários valores.

  • name:type(single): a cardinalidade é single, e o conteúdo é um único valor.

  • name:type(set): a cardinalidade é set, equivalente ao padrão, e o conteúdo é um único valor.

  • name:type(set)[]: a cardinalidade é set, e o conteúdo são vários valores.

  • name:type(single)[]: isso é contraditório e gera um erro.

A seção a seguir lista todos os tipos de dados do Gremlin disponíveis.

Tipos de dados do Gremlin

Esta é uma lista dos tipos de propriedade permitidos, com uma descrição de cada tipo.

Bool (ou booliano)

Indica um campo booliano. Valores permitidos: false, true

nota

Qualquer valor diferente de true será tratado como falso.

Tipos de número inteiro

Os valores fora dos intervalos definidos resultam em um erro.

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

Compatíveis com a notação decimal ou com a notação científica. Também permite símbolos, como (+/-) Infinity ou NaN. Não há suporte ao INF.

Tipo Intervalo
Float Ponto flutuante IEEE 754 de 32 bits
Double Ponto flutuante IEEE 754 de 64 bits

Valores flutuantes e duplos que são muito longos são carregados e arredondados para a precisão do valor mais próximo de 24 bits (flutuante) e 53 bits (duplo). Um valor intermediário é arredondado para zero para os últimos dígitos restantes no nível de bits.

String

Aspas são opcionais. Os caracteres de vírgulas, nova linha e retorno de carro serão escapados automaticamente se forem incluídos em uma sequência entre aspas duplas ("). Exemplo: "Hello, World"

Para incluir aspas em uma string entre aspas, você pode efetuar o escape as aspas usando duas em seguida: Exemplo: "Hello ""World"""

Matrizes de strings são permitidas, mas as strings em uma matriz não podem incluir o caractere ponto e vírgula (;), a menos que ele tenha uma barra invertida como caractere de escape (como este: \;).

Se desejar usar sequências entre aspas em uma matriz, você deverá colocar a matriz inteira entre um conjunto de aspas. Exemplo: "String one; String 2; String 3"

Data

Data Java no formato ISO -8601. Compatível com os formatos: yyyy-MM-dd, yyyy-MM-ddTHH:mm, yyyy-MM-ddTHH:mm:ss, yyyy-MM-ddTHH:mm:ssZ

Formato de linhas do Gremlin

Delimitadores

Os campos em uma linha são separados por uma vírgula. Os registros são separados por uma nova linha ou por uma nova linha seguida por um retorno de carro.

Campos em branco

Os campos em branco são permitidos para colunas não necessárias (como as propriedades definidas pelo usuário). Um campo em branco ainda exige uma vírgula separadora. Campos em branco nas colunas obrigatórias resultarão em um erro de análise. Valores de string vazios são interpretados como valores de string vazios para o campo; não como um campo em branco. O exemplo na próxima seção tem um campo em branco em cada vértice de exemplo.

Vértice IDs

Os valores de ~id devem ser exclusivos para todos os vértices em cada arquivo de vértice. Várias linhas de vértices com valores idênticos de ~id são aplicadas a um único vértice no gráfico. A string vazia ("") é um id válido e o vértice é criado com uma string vazia como id.

Borda IDs

Além disso, os valores de ~id devem ser exclusivos para todos os pontos em cada arquivo de ponto. Várias linhas de pontos com valores idênticos de ~id são aplicadas ao único ponto no gráfico. A string vazia ("") é uma identificação válida e a borda é criada com uma string vazia como a identificação.

Rótulos

As etiquetas diferenciam maiúsculas e minúsculas e não podem estar vazias. Um valor de "" resultará em um erro.

Valores de sequências

Aspas são opcionais. Os caracteres de vírgulas, nova linha e retorno de carro serão escapados automaticamente se forem incluídos em uma sequência entre aspas duplas ("). Valores de string vazios ("") são interpretados como um valor de string vazio para o campo; não como um campo em branco.

CSVEspecificação de formato

O formato CSV Neptune segue a especificação CSV 4180, incluindo RFC os seguintes requisitos.

  • Os finais de linha no estilo do Unix e do Windows são compatíveis (\n ou \r\n).

  • Qualquer campo pode ser colocado entre aspas (usando aspas duplas).

  • Campos que contêm uma quebra de linha, aspas duplas ou vírgulas devem ser colocados entre aspas. (Se não estiverem, o carregamento será abortado imediatamente.)

  • Um caractere de aspas duplas (") em um campo deve ser representado por dois caracteres de aspas duplas. Por exemplo, uma sequência Hello "World" deve estar presente como "Hello ""World""" nos dados.

  • Espaços circundantes entre delimitadores são ignorados. Se uma linha estiver presente comovalue1, value2, ela será armazenada como "value1" "value2" e.

  • Todos os outros caracteres de escape são armazenados textualmente. Por exemplo, "data1\tdata2" é armazenado como "data1\tdata2". Nenhum outro escape é necessário, desde que esses caracteres sejam incluídos entre aspas.

  • Campos em branco são permitidos. Um campo em branco é considerado um valor vazio.

  • Vários valores para um campo são especificados com um ponto e vírgula (;) entre os valores.

Para obter mais informações, consulte Formato e MIME tipo comuns para CSV arquivos no site da Internet Engineering Task Force (IETF).

Exemplo do Gremlin

O diagrama a seguir mostra um exemplo de dois vértices e uma aresta retirados do gráfico TinkerPop moderno.

Diagrama que descreve dois vértices e um ponto, contém marko com 29 anos e o software lop com a linguagem: java.

A seguir está o gráfico no formato de carregamento CSV Neptune.

Arquivo de vértice:

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

Visualização tabular do arquivo de vértice:

~id name:String age:Int lang:String Interesses: string [] ~label
v1 "marko" 29 ["navegação”, “gráficos"] pessoa
v2 "lop" "java" software

Arquivo de ponto

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

Visualização tabular do arquivo de ponto:

~id ~from ~to ~label weight:Double
e1 v1 v2 created 0.4
Próximos Passos

Agora que você sabe mais sobre os formatos de carregamento, consulte Exemplo: carregamento de dados em uma instância de banco de dados do Neptune.