Format de données Gremlin - Amazon Neptune

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Format de données Gremlin

Pour charger Apache TinkerPop Données Gremlin utilisant le format CSV, vous devez spécifier les sommets et les arêtes dans des fichiers séparés.

Le chargeur peut effectuer le chargement depuis plusieurs fichiers de sommet et plusieurs fichiers d'arc en une seule tâche de chargement.

Pour chaque commande de chargement, l'ensemble de fichiers à charger doit se trouver dans le même dossier du compartiment Amazon S3, et vous devez spécifier le nom du dossier poursourceparamètre. Les noms de fichier et les extensions de nom de fichier ne sont pas importants.

Le format CSV Amazon Neptune est conforme à la spécification CSV RFC 4180. Pour plus d'informations, consultez Common Format and MIME Type for CSV Files sur le site web Internet Engineering Task Force (IETF).

Note

Tous les fichiers doivent être codés au format UTF-8.

Chaque fichier comporte une ligne d'en-têtes séparés par des virgules. La ligne d'en-tête se compose d'en-têtes de colonne système et d'en-têtes de colonne de propriété.

En-têtes de colonne système

Les en-têtes de colonne système obligatoires et autorisés sont différents pour les fichiers de sommet et les fichiers d'arc.

Chaque colonne système ne peut apparaître qu'une seule fois dans un en-tête.

Toutes les étiquettes sont sensibles à la casse.

En-têtes de sommet

  • ~id - Obligatoire

    Un ID pour le sommet.

  • ~label

    Une étiquette pour le sommet. Plusieurs valeurs d'étiquette sont autorisées, séparées par des points-virgules (;).

    Si~labeln'est pas présent, TinkerPop fournit une étiquette avec la valeurvertex, car chaque sommet doit avoir au moins une étiquette.

En-têtes d'arc

  • ~id - Obligatoire

    Un ID pour l'arc.

  • ~from - Obligatoire

    ID de sommet du sommet from.

  • ~to - Obligatoire

    ID de sommet du sommet to.

  • ~label

    Une étiquette pour l'arc. Les arcs ne peuvent avoir qu'une seule étiquette.

    Si~labeln'est pas présent, TinkerPop fournit une étiquette avec la valeuredge, car chaque arête doit avoir une étiquette.

En-têtes de colonne de propriété

Vous pouvez spécifier une colonne (:) pour une propriété en utilisant la syntaxe suivante. Les noms de type ne sont pas sensibles à la casse. Notez toutefois que si un deux-points apparaît dans le nom d'une propriété, il faut l'éviter en le faisant précéder d'une barre oblique inverse :\:.

propertyname:type
Note

Les espaces ne sont pas autorisés dans les en-têtes de colonne. Les noms de propriété ne peuvent donc pas contenir d'espaces.

Vous pouvez spécifier une colonne pour un type de tableau en ajoutant [] au type :

propertyname:type[]
Note

Les propriétés d'arc ne peuvent avoir qu'une seule valeur et provoquent une erreur si un type de tableau ou une seconde valeur est spécifié.

L'exemple suivant montre l'en-tête de colonne pour une propriété nommée age de type Int.

age:Int

Chaque ligne du fichier doit obligatoirement avoir un nombre entier dans cette position ou rester vide.

Les tableaux de chaînes sont autorisés, mais les chaînes d'un tableau ne peuvent pas inclure le point-virgule (;) à moins qu'il ne soit échappé à l'aide d'une barre oblique inverse (comme ceci :\;).

Spécification de la cardinalité d'une colonne

À partir de Version 1.0.1.0.200366.0 (2019-07-26), l'en-tête de colonne peut être utilisé pour spécifier la cardinalité pour la propriété identifiée par la colonne. Ceci permet au chargeur en bloc de respecter la cardinalité de manière similaire à la façon dont le font les requêtes Gremlin.

Vous spécifiez la cardinalité d'une colonne comme suit :

propertyname:type(cardinality)

La valeur de cardinalité peut être single ou set. La valeur par défaut est supposée être set, ce qui signifie que la colonne peut accepter plusieurs valeurs. Dans le cas des fichiers d'arête, la cardinalité est toujours unique (« single ») et si vous spécifiez une autre cardinalité, le chargeur déclenche une exception.

Si la cardinalité est single, le chargeur déclenche une erreur si une valeur précédente est déjà présente pendant le chargement d'une valeur ou si plusieurs valeurs sont chargées. Ce comportement peut être ignoré afin qu'une valeur existante soit remplacée lorsqu'une nouvelle valeur est chargée à l'aide de l'indicateur updateSingleCardinalityProperties. Consultez Commande Loader.

Il est possible d'utiliser un paramètre de cardinalité de type tableau, même si ce n'est généralement pas nécessaire. Voici les combinaisons possibles :

  • name:type— la cardinalité estset, et le contenu est à valeur unique.

  • name:type[]— la cardinalité estset, et le contenu comporte plusieurs valeurs.

  • name:type(single)— la cardinalité estsingle, et le contenu est à valeur unique.

  • name:type(set)— la cardinalité estset, qui est identique à la valeur par défaut, et le contenu est à valeur unique.

  • name:type(set)[]— la cardinalité estset, et le contenu comporte plusieurs valeurs.

  • name:type(single)[]— cela est contradictoire et entraîne la génération d'une erreur.

La section suivante répertorie tous les types de données Gremlin disponibles.

Types de données Gremlin

Il s'agit d'une liste des types de propriété autorisés, avec une description de chaque type.

Bool (ou booléen)

Indique un champ booléen. Valeurs autorisées : false, true

Note

Toute valeur autre que true sera traitée comme false.

Types de nombres entiers

Les valeurs en dehors des plages définies entraînent une erreur.

Type Range
Byte -128 to 127
Short -32768 to 32767
Int -2^31 to 2^31-1
Long -2^63 to 2^63-1

Types de nombre décimal

Prend en charge la notation décimale ou la notation scientifique. Autorise également des symboles tels que (+/-) Infinity ou NaN. La clause INF n'est pas prise en charge.

Type Range
Float 32-bit IEEE 754 floating point
Double 64-bit IEEE 754 floating point

Les valeurs à virgule flottante et doubles qui sont trop longues sont chargées et arrondie à la valeur la plus proche pour la précision 24 bits (virgule flottante) et 53 bits (double). Une valeur du milieu est arrondie à 0 pour le dernier chiffre restant au niveau du bit.

Chaîne

Les guillemets sont facultatifs. Les virgules, et les caractères de saut de ligne et de retour à la ligne font automatiquement l'objet d'un échappement s'ils sont inclus dans une chaîne entourée de guillemets ("). Exemple : "Hello, World"

Pour inclure des guillemets dans une chaîne entre guillemets, vous pouvez éviter les guillemets en utilisant deux guillemets d'affilée : Exemple : "Hello ""World"""

Les tableaux de chaînes sont autorisés, mais les chaînes d'un tableau ne peuvent pas inclure le point-virgule (;) à moins qu'il ne soit échappé à l'aide d'une barre oblique inverse (comme ceci :\;).

Si vous souhaitez placer des chaînes d'un tableau entre guillemets, vous devez entourer la totalité du tableau par un ensemble de guillemets. Exemple : "String one; String 2; String 3"

Date

Date Java au format ISO 8601. Prend en charge les formats suivants : yyyy-MM-dd, yyyy-MM-ddTHH:mm, yyyy-MM-ddTHH:mm:ss, yyyy-MM-ddTHH:mm:ssZ

Format de ligne Gremlin

Délimiteurs

Les champs dans une ligne sont séparés par une virgule. Les enregistrements sont séparés par un saut de ligne ou par un saut de ligne suivi d'un retour chariot.

Champs vides

Des champs vides sont autorisés pour les colonnes non obligatoires (comme des propriétés définies par l'utilisateur). Un champ vide a quand même besoin d'une virgule comme séparateur. L'exemple de la section suivante comporte un champ vide dans chaque exemple de sommet.

ID de sommet

Les valeurs ~id doivent être uniques pour tous les sommets dans chaque fichier de sommets. Plusieurs lignes de sommet avec des valeurs ~id identiques sont appliquées à un seul sommet dans le graphique.

ID d'arête

En outre, les valeurs ~id doivent être uniques pour toutes les arêtes dans chaque fichier d'arête. Plusieurs lignes d'arête avec des valeurs ~id identiques sont appliquées à la seule arête du graphe.

Etiquettes

Les étiquettes sont sensibles à la casse.

Valeurs de chaîne

Les guillemets sont facultatifs. Les virgules, et les caractères de saut de ligne et de retour à la ligne font automatiquement l'objet d'un échappement s'ils sont inclus dans une chaîne entourée de guillemets (").

Spécification du format CSV

Le format CSV Neptune est conforme à la spécification CSV RFC 4180, y compris les exigences suivantes.

  • Les fins de ligne de style Unix et Windows sont prises en charge (\n ou \r\n).

  • Tout champ peut être placé entre guillemets.

  • Les champs contenant un saut de ligne, des guillemets ou des virgules doivent être placés entre guillemets. (Si ce n'est pas le cas, le chargement s'interrompt immédiatement.)

  • Les guillemets (") dans un champ doit être représentés par des guillemets doubles. Par exemple, une chaîne Hello "World" doit figurer sous la forme "Hello ""World""" dans les données.

  • Les espaces entre les délimiteurs sont ignorés. Si une ligne est présente sous la forme value1, value2, les valeurs sont stockées comme suit : "value1" et "value2".

  • Tous les autres caractères d'échappement sont stockés tels quels. Par exemple, "data1\tdata2" est stocké comme suit : "data1\tdata2". Aucun autre échappement n'est nécessaire dans la mesure où ces caractères sont placés entre guillemets.

  • Les champs vides sont autorisés. Un champ vide est considéré comme une valeur vide.

  • Plusieurs valeurs pour un champ sont spécifiées séparées par un point-virgule (;).

Pour plus d'informations, consultez Common Format and MIME Type for CSV Files sur le site web Internet Engineering Task Force (IETF).

Exemple Gremlin

Le diagramme suivant illustre un exemple de deux sommets et d'une arête extraits du TinkerPop Graphique moderne

Schéma décrivant deux sommets et une arête, contenant marko age 29 et le logiciel lop avec lang:java.

Le graphique suivant est le graphique au format de chargement Neptune CSV.

Fichier de sommets :

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

Vue tabulaire du fichier de sommets :

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

Fichier d'arête :

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

Vue tabulaire du fichier d'arête :

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

Étapes suivantes

Maintenant que vous en savez plus sur les formats de chargement, consultez Exemple : Chargement de données dans une instance de base de données Neptune.