

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

# Neptune の Gremlin ステートメント
<a name="gremlin-explain-background-statements"></a>

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

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

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

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

**Topics**
+ [頂点ラベルステートメント](#gremlin-explain-background-vertex-labels)
+ [エッジステートメント](#gremlin-explain-background-edge-statements)
+ [プロパティステートメント](#gremlin-explain-background-property-statements)

## Gremlin 頂点ラベルステートメント
<a name="gremlin-explain-background-vertex-labels"></a>

Neptune の頂点ラベルステートメントは、次の 2 つの目的を果たします。
+ 頂点のラベルを追跡します。
+ これらのステートメントが少なくとも 1 つ存在することは、グラフに特定の頂点が存在することを意味します。

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

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

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

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

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

## Gremlin エッジステートメント
<a name="gremlin-explain-background-edge-statements"></a>

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 プロパティステートメント
<a name="gremlin-explain-background-property-statements"></a>

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

次の頂点プロパティの例を考えてみましょう。

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

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

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

オブジェクトがプリミティブ値 (`string`、`date`、`byte`、`short`、`int`、`long`、`float`、または `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" <~>) .]
```

エッジプロパティは頂点プロパティと同様に処理されますが、 (S) 位置にエッジ識別子を使用します。たとえば、エッジにプロパティを追加するとします。

```
g.E("e1").property("weight", 0.8)
```

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

```
StatementEvent[Added(<e1> <weight> 0.8 <~>) .]
```