Neptune の Gremlin ステートメント - Amazon Neptune

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Neptune の Gremlin ステートメント

Amazon Neptune のプロパティグラフデータは、4 つの位置 (四角形) のステートメントで構成されます。これらの各ステートメントは、プロパティグラフデータの個々のアトミック単位を表します。詳細については、「Neptune のグラフデータモデル。」を参照してください。リソース記述フレームワーク (RDF) データモデルと同様に、これらの 4 つの位置は次のとおりです。

  • subject (S)

  • predicate (P)

  • object (O)

  • graph (G)

各ステートメントは、1 つ以上のリソースに関するアサーションです。たとえば、ステートメントでは、2 つのリソース間の関係の有無に対してアサーションを行ったり、いくつかのリソースにプロパティ (キーと値のペア) を付加したりすることができます。

述語は、関係の型またはプロパティの型を記述するステートメントの動詞と考えることができます。オブジェクトは、関係のターゲット、またはプロパティの値を表します。グラフの位置はオプションであり、さまざまな方法で使用できます。Neptune プロパティグラフ (PG) データの場合、未使用 (null グラフ) であるか、エッジ識別子を表すために使用されます。共有リソース識別子を持つ一連のステートメントはグラフを作成します。

Neptune プロパティグラフデータモデルには、次の 3 つのクラスのステートメントがあります。

Gremlin 頂点ラベルステートメント

Neptune の頂点ラベルステートメントは、次の 2 つの目的を果たします。

  • 頂点のラベルを追跡します。

  • これらのステートメントが少なくとも 1 つ存在することは、グラフに特定の頂点が存在することを意味します。

これらのステートメントのサブジェクトは頂点識別子、オブジェクトはラベルで、どちらもユーザーが指定します。これらのステートメントには、<~label> として表示される特別な固定述語と、<~> として表示されるデフォルトのグラフ識別子 (null グラフ) を使用します。

たとえば、次の addV トラバーサルを考えてみます。

g.addV("Person").property(id, "v1")

このトラバーサルにより、次のステートメントがグラフに追加されます。

StatementEvent[Added(<v1> <~label> <Person> <~>) .]

Gremlin エッジステートメント

Gremlin エッジステートメントは、Neptune のグラフの 2 つの頂点間にエッジが存在することを意味します。エッジステートメントのサブジェクト (S) はソースの from 頂点です。述語 (P) はユーザー指定のエッジラベルです。オブジェクト (O) はターゲットの to 頂点です。グラフ (G) は、ユーザーが指定したエッジ識別子です。

たとえば、次の addE トラバーサルを考えてみます。

g.addE("knows").from(V("v1")).to(V("v2")).property(id, "e1")

トラバーサルにより、次のステートメントがグラフに追加されます。

StatementEvent[Added(<v1> <knows> <v2> <e1>) .]

Gremlin プロパティステートメント

Neptune の Gremlin プロパティステートメントは、頂点またはエッジの個々のプロパティ値をアサートします。サブジェクトは、ユーザーが指定した頂点またはエッジの識別子です。述語はプロパティ名 (キー) で、オブジェクトは個々のプロパティ値です。グラフ (G) はここでもデフォルトのグラフ識別子 (null グラフ) で、<~> と表示されます。

次の例を考えます。

g.V("v1").property("name", "John")

このステートメントの結果は次のようになります。

StatementEvent[Added(<v1> <name> "John" <~>) .]

オブジェクトがプリミティブ値 (stringdatebyteshortintlongfloat、または double) のため、プロパティステートメントはお互いに異なります。そのオブジェクトは、別のアサーションのサブジェクトとして使用できるリソース識別子ではありません。

複数プロパティの場合、セット内の各プロパティ値は独自のステートメントを受け取ります。

g.V("v1").property(set, "phone", "956-424-2563").property(set, "phone", "956-354-3692 (tel:9563543692)")

この結果は以下のようになります。

StatementEvent[Added(<v1> <phone> "956-424-2563" <~>) .] StatementEvent[Added(<v1> <phone> "956-354-3692" <~>) .]