

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Neptune 中的 Gremlin 陳述式
<a name="gremlin-explain-background-statements"></a>

Amazon Neptune 中的屬性圖資料由四個位置 (四元組) 陳述式組成。其中每個陳述式都代表屬性圖表資料的個別原子單位。如需詳細資訊，請參閱[Neptune 圖形資料模型。](feature-overview-data-model.md)。與資源描述架構 (RDF) 資料模型類似，這四個位置如下：
+ `subject (S)`
+ `predicate (P)`
+ `object (O)`
+ `graph (G)`

每個陳述式都是有關一或多個資源的宣告。例如，陳述式可以宣告兩個資源之間的關係，或者將屬性 (鍵/值組) 連接到一些資源。

您可以將述詞視為陳述式的動詞，描述關係或屬性的類型。物件是關係的目標，或是屬性的值。圖形位置是選用的，可用於多種不同的方法。對於 Neptune 屬性圖 (PG) 資料，它是未使用的 (Null 圖)，或用來代表邊緣的識別符。具有共用資源識別符的一組陳述式可建立圖形。

Neptune 屬性圖資料模型中有三種類別的陳述式：

**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 中的頂點標籤陳述式有兩個用途：
+ 它們會追蹤頂點的標籤。
+ 其中至少有一個陳述式暗示圖形中存在特定頂點。

這些陳述式的主題是頂點識別符，而物件是標籤，兩者都由使用者指定。您可以針對這些陳述式使用特殊的固定述詞 (顯示為 `<~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 圖形中兩個頂點之間存在邊緣。邊緣陳述式的主旨 (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 <~>) .]
```