Gremlin ロードデータ形式 - Amazon Neptune

英語の翻訳が提供されている場合で、内容が矛盾する場合には、英語版がオリジナルとして取り扱われます。翻訳は機械翻訳により提供されています。

Gremlin ロードデータ形式

Apache を読み込むには TinkerPop CSV形式を使用してグレムリンデータの場合、頂点とエッジを別々のファイルで指定する必要があります。

ローダーは、単一のロードジョブで複数の頂点ファイルおよび複数のエッジファイルからロードできます。

各 load コマンドは、ロードされる一連のファイルと同じ Amazon S3 バケットのフォルダにある必要があり、source パラメータにフォルダ名を指定します。このファイル名とファイル名拡張子は重要ではありません。

Amazon Neptune CSV 形式は RFC 4180 の CSV の仕様に従います。詳細については、Internet Engineering Task Force (IETF) ウェブサイトの、CSV ファイルの一般形式と MIME タイプを参照してください。

注記

すべてのファイルは、UTF-8 形式でエンコードする必要があります。

各ファイルには、カンマ区切りのヘッダー行があります。ヘッダー行は、システム列ヘッダーとプロパティ列ヘッダーの両方で構成されます。

システム列ヘッダー

頂点ファイルとエッジファイルでは、必須および許可されたシステム列ヘッダーが異なります。

各システム列は、ヘッダーに 1 回のみ表示できます。

すべてのラベルで大文字と小文字が区別されます。

頂点ヘッダー

  • ~id - 必須

    頂点の ID。

  • ~label

    頂点のラベル。複数のラベル値を使用できます。値をセミコロン (;) 文字で区切ります。

エッジヘッダー

  • ~id - 必須

    エッジの ID。

  • ~from - 必須

    from 頂点の頂点 ID。

  • ~to - 必須

    to 頂点の頂点 ID。

  • ~label

    エッジのラベル。エッジには 1 つのラベルのみを含めることができます。

プロパティ列ヘッダー

次の構文を使用して、プロパティ列を指定できます。タイプ名では大文字と小文字が区別されません。

propertyname:type
注記

列ヘッダーにスペースは使用できないため、プロパティ名にはスペースを使用できません。

タイプに [] を追加することで、配列型の列を指定できます。

propertyname:type[]
注記

エッジのプロパティに指定できるのは 1 つの値のみです。配列型が指定された場合や 2 つ目の値が指定された場合はエラーが発生します。

次の例は、Int 型の age という名前のプロパティの列ヘッダーを示しています。

age:Int

ファイルのすべての行は、その位置に整数があるか、空のままにする必要があります。

文字列の配列は許可されますが、配列内の文字列にはセミコロン (;) 文字を含めることはできません。

列の濃度を指定する

Neptune リリース: 1.0.1.0.200366.0 (2019-07-26) では、列ヘッダーを使用して、列で識別されたプロパティの濃度を指定できます。これにより、バルクローダーで Gremlin クエリと同様に濃度を重視できます。

列の濃度は、次のように指定します。

propertyname:type(cardinality)

- cardinality 値は次のいずれかになります。 single 又は set. デフォルトは、 setつまり、列は複数の値を受け入れることができます。エッジファイルの場合、濃度は常に単一であり、他の濃度を指定すると、ローダーは例外をスローします。

濃度が single のとき、値がロードされたときに前の値がすでに存在する場合、または複数の値がロードされた場合、ローダーによりエラーがスローされます。updateSingleCardinalityProperties フラグを使用して新しい値がロードされたとき、既存の値が置き換えられるように、 この動作をオーバーライドできます。「ローダーコマンド」を参照してください。

通常、その必要はありませんが、配列型で濃度設定を使用できます。可能な組み合わせは次のとおりです。

  • name:type – 濃度は set で、コンテンツは単一の値です。

  • name:type[] – 濃度は set で、コンテンツは複数の値です。

  • name:type(single) – 濃度は single で、コンテンツは単一の値です。

  • name:type(set) – 濃度は、デフォルトと同じ set で、コンテンツは単一の値です。

  • name:type(set)[] – 濃度は set で、コンテンツは複数の値です。

  • name:type(single)[] – これは矛盾しており、エラーがスローされます。

次のセクションでは、使用可能なすべての Gremlin データ型を示します。

Gremlin データ型

これは許可されたプロパティタイプの一覧で、各タイプの説明を含みます。

Bool (または Boolean)

ブールフィールドであることを示しています。許可された値: falsetrue

注記

true 以外の値は false として扱われます。

整数型

定義された範囲外の値の場合、エラーが発生します。

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

10 進数型

指数表記または 10 進表記の両方をサポートしています。また、(+/-) Infinity や NaN. INF はサポートされていません。

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

長すぎる浮動小数点数や倍精度浮動小数点数の値は、24 ビット (浮動小数点数) および 53 ビット (倍精度浮動小数点数) の精度で最も近い値にロードされ、丸められます。中間の値は、ビットレベルの最後の残りの桁で 0 に丸められます。

String

引用符はオプションです。カンマ、改行、およびキャリッジリターン文字は、二重引用符 (") で囲まれた文字列に含まれると自動的にエスケープされます。例: "Hello, World"

引用符を引用符文字列に含めるには、次の2つの引用符を続けて使用することによって、引用符をエスケープできます。例: "Hello ""World"""

文字列の配列は許可されますが、配列内の文字列にはセミコロン (;) 文字を含めることはできません。

配列内の文字列を引用符で囲む場合は、配列全体を 1 組の引用符で囲む必要があります。例: "String one; String 2; String 3"

Date

ISO-8601 形式の Java の日付。次の形式をサポートします。YYYY-MM-DDYYYY-MM-DDTHH:mmYYYY-MM-DDTHH:mm:SSYYYY-MM-DDTHH:mm:SSZ

Gremlin 行形式

Delimiters

行内のフィールドはカンマで区切られます。レコードは、改行またはキャリッジリターンとそれに続く改行で区切られます。

空のフィールド

空のフィールドは、必須ではない列 (ユーザー定義のプロパティなど) に許可されています。空のフィールドにもカンマ区切り記号が必要です。次のセクションの例では、各頂点の例に空白のフィールドがあります。

頂点 IDs

~id 値はすべての頂点ファイル内のすべての頂点に対して一意である必要があります。~id 値が同一の複数の頂点行はグラフの単一の頂点に適用されます。

エッジ IDs

また、~id 値はすべてのエッジファイル内のすべてのエッジに対して一意である必要があります。~id 値が同一の複数のエッジ行はグラフの単一のエッジに適用されます。

Labels

ラベルでは、大文字と小文字が区別されます。

文字列値

引用符はオプションです。カンマ、改行、およびキャリッジリターン文字は、二重引用符 (") で囲まれた文字列に含まれると自動的にエスケープされます。

CSV 形式の仕様

Neptune CSV 形式は RFC 4180 の CSV の仕様に従い、次の要件を含みます。

  • Unix と Windows の両方のスタイルの行末処理がサポートされています (\n または \r\n)。

  • フィールドはすべて引用符で囲むことができます (二重引用符を使用)。

  • 改行、二重引用符、またはカンマを含むフィールドは、引用符で囲む必要があります。(そうでない場合、ロードは即座に中止されます)。

  • フィールド内の二重引用符文字 (") は、2 つの二重引用符文字で示す必要があります。たとえば、データ内で、文字列 Hello "World" は、"Hello ""World""" であることが必要です。

  • 区切り記号間のスペースは無視されます。行が value1value2 の場合、"value1""value2" として保存されます。

  • その他のエスケープ文字はすべてそのまま保存されます。たとえば、 "data1\tdata2" は として保存されます "data1\tdata2". これらの文字が引用符で囲まれている限り、それ以上のエスケープは必要ありません。

  • 空のフィールドは許可されます。空白のフィールドは空の値と見なされます。

  • フィールドの複数の値は、値と値の間にセミコロン (;) を使用して指定します。

詳細については、Internet Engineering Task Force (IETF) ウェブサイトの、CSV ファイルの一般形式と MIME タイプを参照してください。

Gremlin の例

次の図に、2 つの頂点と、 TinkerPop モダンなグラフ。

 2 つの頂点と 1 つのエッジを描いた図には、marko 29 歳と、lop ソフトウェア Java 言語が含まれています。

以下に示しているのは、Neptune CSV ロード形式のグラフです。

頂点ファイル:

~id, name:String, age:Int, lang:String, ~label v1, "marko", 29, , person v2, "lop", , "java", software

頂点ファイルの表形式のビュー:

~id name:String age:Int lang:String ~label
v1 "marko" 29 person
v2 "lop" "java" software

エッジファイル:

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

エッジファイルの表形式のビュー:

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

次のステップ

次に、ロード形式の詳細については、例: Neptune DB インスタンスにデータをロードする を参照してください。