

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

# Amazon Neptune 中的 Gremlin 標準合規
<a name="access-graph-gremlin-differences"></a>

以下各節提供 Gremlin 的 Neptune 實作概觀，以及其與 Apache TinkerPop 實作的差異。

Neptune 會在其引擎中以原生方式實作一些 Gremlin 步驟，並使用 Apache TinkerPop Gremlin 實作來處理其他步驟 (請參閱 [Amazon Neptune 的原生 Gremlin 步驟支援](gremlin-step-support.md))。

**注意**  
如需 Gremlin 主控台和 Amazon Neptune 中所顯示實作差異的一些具體範例，請參閱快速入門的 [使用 Gremlin 存取 Amazon Neptune 中的圖形資料](get-started-graph-gremlin.md) 一節。

**Topics**
+ [Gremlin 的適用標準](#feature-gremlin-applicable-standards)
+ [指令碼中的變數和參數](#feature-gremlin-differences-variables)
+ [TinkerPop 列舉](#feature-gremlin-differences-tinkerpop)
+ [Java 程式碼](#feature-gremlin-differences-java)
+ [元素上的屬性](#feature-gremlin-differences-properties-on-elements)
+ [指令碼執行](#feature-gremlin-differences-script)
+ [工作階段](#feature-gremlin-differences-sessions)
+ [交易](#feature-gremlin-differences-transactions)
+ [頂點和邊緣 ID](#feature-gremlin-differences-vertex-edge-ids)
+ [使用者提供的 ID](#feature-gremlin-differences-user-supplied-ids)
+ [頂點屬性 ID](#feature-gremlin-differences-vertex-property-ids)
+ [頂點屬性的基數](#feature-gremlin-differences-vertex-property-cardinality)
+ [更新頂點屬性](#feature-gremlin-differences-vertex-property-update)
+ [標籤](#feature-gremlin-differences-labels)
+ [逸出字元](#feature-gremlin-differences-escapes)
+ [Groovy 限制](#feature-gremlin-differences-groovy)
+ [序列化](#feature-gremlin-differences-serialization)
+ [Lambda 步驟](#feature-gremlin-differences-lambda)
+ [不支援的 Gremlin 方法](#feature-gremlin-differences-unsupported-methods)
+ [不支援的 Gremlin 步驟](#feature-gremlin-differences-unsupported-steps)
+ [Neptune 中的 Gremlin 圖形功能](#gremlin-api-reference-features)

## Gremlin 的適用標準
<a name="feature-gremlin-applicable-standards"></a>
+ Gremlin 語言是由 [Apache TinkerPop Documentation](http://tinkerpop.apache.org/docs/current/reference/) 和 Gremlin 的 Apache TinkerPop 實作定義，而不是由型式規格定義。
+ 對於數值格式，Gremlin 遵循 IEEE 754 標準 ([IEEE 754-2019 - 浮點數運算的 IEEE 標準](https://standards.ieee.org/content/ieee-standards/en/standard/754-2019.html)。如需詳細資訊，另請參閱 [Wikipedia IEEE 754 頁面](https://en.wikipedia.org/wiki/IEEE_754))。

## 指令碼中的變數和參數
<a name="feature-gremlin-differences-variables"></a>

如果與預先繫結的變數有關，則周遊物件 `g` 在 Neptune 中是預先繫結的，而且不支援 `graph` 物件。

雖然 Neptune 不支援指令碼中的 Gremlin 變數或參數化，但是您可能經常會在網際網路上遇到 Gemlin 伺服器的範例指令碼，其中包含變數宣告，例如：

```
String query = "x = 1; g.V(x)";
List<Result> results = client.submit(query).all().get();
```

在提交查詢時，還有許多使用[參數化](https://tinkerpop.apache.org/docs/current/reference/#parameterized-scripts) (或繫結) 的範例，例如：

```
Map<String,Object> params = new HashMap<>();
params.put("x",1);
String query = "g.V(x)";
List<Result> results = client.submit(query).all().get();
```

參數範例通常與警告相關聯，這些警告關於盡可能不參數化所產生的效能損失。對於 TinkerPop，您可能會遇到很多這樣的範例，而且關於需要參數化，它們聽起來都非常有說服力。

不過，變數宣告功能和參數化功能 (以及警告) 只在使用 `GremlinGroovyScriptEngine` 時才適用於 TinkerPop 的 Grimlin 伺服器。當 Gremlin 伺服器使用 Gramlin 的 `gremlin-language` ANTLR 文法來解析查詢時，它們不適用。ANTLR 語法不支援變數宣告或參數化，因此在使用 ANTLR 時，您不必擔心無法參數化。因為 ANTLR 文法是 TinkerPop 的較新元件，因此您在網際網路上可能遇到的較舊內容通常不會反映這種差異。

Neptune 會在其查詢處理引擎中使用 ANTLR 文法，而不是 `GremlinGroovyScriptEngine`，因此它不支援變數或參數化或 `bindings` 屬性。因此，與無法參數化有關的問題不適用於 Neptune。使用 Neptune，只需在通常參數化的位置按原狀提交查詢就非常安全。因此，前面的範例可以簡化，而不會造成任何效能損失，如下所示：

```
String query = "g.V(1)";
List<Result> results = client.submit(query).all().get();
```

## TinkerPop 列舉
<a name="feature-gremlin-differences-tinkerpop"></a>

Neptune 不支援列舉值的完全合格類別名稱。例如，您必須在 Groovy 請求中使用 `single`，而不是 `org.apache.tinkerpop.gremlin.structure.VertexProperty.Cardinality.single`。

列舉類型由參數類型決定。

下表顯示允許的列舉值和相關的 TinkerPop 完全合格名稱。

| 允許值 | 類別 | 
| --- |--- |
| id, 金鑰, label, value | [org.apache.tinkerpop.gremlin.structure.T](https://tinkerpop.apache.org/javadocs/current/core/org/apache/tinkerpop/gremlin/structure/T.html) | 
| T.id, T.key, T.label, T.value | [org.apache.tinkerpop.gremlin.structure.T](https://tinkerpop.apache.org/javadocs/current/core/org/apache/tinkerpop/gremlin/structure/T.html) | 
| set, single | [org.apache.tinkerpop.gremlin.structure.VertexProperty.Cardinality](https://tinkerpop.apache.org/javadocs/current/core/org/apache/tinkerpop/gremlin/structure/VertexProperty.Cardinality.html) | 
| asc, desc, shuffle | [org.apache.tinkerpop.gremlin.process.traversal.Order](https://tinkerpop.apache.org/javadocs/3.7.2/full/org/apache/tinkerpop/gremlin/process/traversal/Order.html) | 
| Order.asc, Order.desc, Order.shuffle | [org.apache.tinkerpop.gremlin.process.traversal.Order](https://tinkerpop.apache.org/javadocs/3.7.2/full/org/apache/tinkerpop/gremlin/process/traversal/Order.html) | 
| 全域, 本機 | [org.apache.tinkerpop.gremlin.process.traversal.Scope](https://tinkerpop.apache.org/javadocs/3.7.2/core/org/apache/tinkerpop/gremlin/process/traversal/Scope.html) | 
| Scope.global, Scope.local | [org.apache.tinkerpop.gremlin.process.traversal.Scope](https://tinkerpop.apache.org/javadocs/3.7.2/core/org/apache/tinkerpop/gremlin/process/traversal/Scope.html) | 
| 全部, first, last, mixed | [org.apache.tinkerpop.gremlin.process.traversal.Pop](https://tinkerpop.apache.org/javadocs/3.7.2/core/org/apache/tinkerpop/gremlin/process/traversal/Pop.html) | 
| normSack | [org.apache.tinkerpop.gremlin.process.traversal.SackFunctions.Barrier](https://tinkerpop.apache.org/javadocs/3.7.2/core/org/apache/tinkerpop/gremlin/process/traversal/SackFunctions.Barrier.html) | 
| addAll, 及, assign, div, max, min, minus, mult, 或, sum, sumLong | [org.apache.tinkerpop.gremlin.process.traversal.Operator](https://tinkerpop.apache.org/javadocs/3.7.2/core/org/apache/tinkerpop/gremlin/process/traversal/Operator.html) | 
| keys, values | [org.apache.tinkerpop.gremlin.structure.Column](https://tinkerpop.apache.org/javadocs/3.7.2/core/org/apache/tinkerpop/gremlin/structure/Column.html) | 
| BOTH, IN, OUT | [org.apache.tinkerpop.gremlin.structure.Direction](https://tinkerpop.apache.org/javadocs/3.7.2/core/org/apache/tinkerpop/gremlin/structure/Direction.html) | 
| any, 無 | [org.apache.tinkerpop.gremlin.process.traversal.step.TraversalOptionParent.Pick](https://tinkerpop.apache.org/javadocs/current/full/org/apache/tinkerpop/gremlin/process/traversal/Pick.html) | 

## Java 程式碼
<a name="feature-gremlin-differences-java"></a>

Neptune 不支援任意 Java 所定義以外的呼叫方法或除了支援的 Gremlin API 以外的 Java 程式庫呼叫。例如，不允許 `java.lang.*`、`Date()` 和 `g.V().tryNext().orElseGet()`。

## 元素上的屬性
<a name="feature-gremlin-differences-properties-on-elements"></a>

 Neptune 不支援在 TinkerPop 3.7.0 中引入的`materializeProperties`旗標，以傳回元素上的屬性。因此，Neptune 仍然只會傳回頂點或邊緣做為參考，只有其 `id`和 `label`。

## 指令碼執行
<a name="feature-gremlin-differences-script"></a>

所有查詢開頭必須為周遊物件 `g`。

在字串查詢提交中，您可以發出多重周遊，並以分號 (`;`) 或換行符號字元 (`\n`) 分隔。若要執行，除了最後一個以外的每個陳述式結尾必須是 `.iterate()` 步驟。只有最後的周遊資料會傳回。請注意，這不適用於 GLV ByteCode 查詢提交。

## 工作階段
<a name="feature-gremlin-differences-sessions"></a>

Neptune 中的工作階段僅限持續 10 分鐘。如需更多資訊，請參閱 [Gremlin 指令碼型工作階段](access-graph-gremlin-sessions.md)和 [TinkerPop 工作階段參考](https://tinkerpop.apache.org/docs/current/reference/#console-sessions)。

## 交易
<a name="feature-gremlin-differences-transactions"></a>

Neptune 會在每個 Gremlin 周遊開始時開啟新交易，並在周遊成功完成時關閉交易。發生錯誤時交易將還原。

 以分號 (`;`) 或換行符號字元 (`\n`) 分隔的多重陳述式包含在單一交易內。除了最後一個以外的每個陳述式結尾必須為要執行的 `next()` 步驟。只有最後的周遊資料會傳回。

使用 `tx.commit()` 和 `tx.rollback()` 的手動交易邏輯不受支援。

**重要**  
這「只」******適用於以「文字字串」******傳送 Gremlin 查詢的方法 (請參閱 [Gremlin 交易](access-graph-gremlin-transactions.md))。

## 頂點和邊緣 ID
<a name="feature-gremlin-differences-vertex-edge-ids"></a>

Neptune Gremlin 頂點和邊緣 ID 必須為 `String` 類型。這些 ID 字串支援 Unicode 字元，且大小不能超過 55 MB。

使用者提供的 ID 受到支援，但它們在正常使用狀況下為選用。如果您在新增頂點或邊緣時未提供 ID，Neptune 會產生 UUID 並將其轉換為字串，格式如下：`"48af8178-50ce-971a-fc41-8c9a954cea62"`。這些 UUID 不符合 RFC 標準，因此，如果您需要標準 UUID，則應在外部產生它們，並在您新增頂點或邊緣時提供它們。

**注意**  
不過，Neptune `Load` 命令要求您使用 Neptune CSV 格式的 **\~id** 欄位提供 ID。

## 使用者提供的 ID
<a name="feature-gremlin-differences-user-supplied-ids"></a>

使用者提供的 ID 允許使用在 Neptune Gremlin，條文如下。
+ 提供的 ID 是選用的。
+ 僅支援頂點和邊緣。
+ 僅支援 `String` 類型。

若要建立使用自訂 ID 的新頂點，請使用 `property` 步驟搭配 `id` 關鍵字：`g.addV().property(id, 'customid')`。

**注意**  
 不要將引號放在 `id` 關鍵字旁邊。它指的是 `T.id`。

所有的頂點 ID 必須各不相同，且所有的邊緣 ID 必須各不相同。不過，Neptune 確實允許頂點和邊緣具有相同的 ID。

如果您嘗試使用 `g.addV()` 建立新頂點，而使用該 ID 的頂點已存在，則操作會失敗。例外狀況為，如果您為頂點指定新的標籤，操作即會成功，但會將新標籤及指定的任何其他屬性新增至現有的頂點。不會覆寫任何項目。此舉不會建立新的頂點。頂點 ID 將維持不變，仍保有其唯一性。

例如，以下的 Gremlin 主控台命令會成功：

```
gremlin> g.addV('label1').property(id, 'customid')
gremlin> g.addV('label2').property(id, 'customid')
gremlin> g.V('customid').label()
==>label1::label2
```

## 頂點屬性 ID
<a name="feature-gremlin-differences-vertex-property-ids"></a>

Vertex 屬性 ID 將自動產生，且查詢時可顯示為正數或負數。

## 頂點屬性的基數
<a name="feature-gremlin-differences-vertex-property-cardinality"></a>

Neptune 支援成組基數和單一基數。如未指定，則選取設定基數。這表示，如果您設定屬性值，它將新增新的值至屬性，但前提是其不能出現在值組內。此為 [Set](https://tinkerpop.apache.org/javadocs/3.7.2/core/org/apache/tinkerpop/gremlin/structure/VertexProperty.Cardinality.html) 的 Gremlin 列舉值。

不支援 `List`。如需屬性基數的詳細資訊，請參閱 Gremlin JavaDoc 中的 [Vertex](https://tinkerpop.apache.org/javadocs/3.7.2/core/org/apache/tinkerpop/gremlin/structure/Vertex.html#property-org.apache.tinkerpop.gremlin.structure.VertexProperty.Cardinality-java.lang.String-V-java.lang.Object...-) 主題。

## 更新頂點屬性
<a name="feature-gremlin-differences-vertex-property-update"></a>

若要更新屬性值，而不新增額外的值給值組，請在 `property` 步驟中指定 `single` 基數。

```
g.V('exampleid01').property(single, 'age', 25)
```

這會移除屬性所有現有的值。

## 標籤
<a name="feature-gremlin-differences-labels"></a>

Neptune 支援頂點的多個標籤。當您建立標籤時，您可以指定多重標籤並用 `::` 分隔。例如，`g.addV("Label1::Label2::Label3")` 將新增有三種不同標籤的頂點。`hasLabel` 步驟將比對此頂點和這三個標籤：`hasLabel("Label1")`、`hasLabel("Label2")` 和 `hasLabel("Label3")`。

**重要**  
`::` 分隔符號僅針對本用途保留。您不能在 `hasLabel` 步驟中指定多重標籤。例如，`hasLabel("Label1::Label2")` 不符合任何內容。

## 逸出字元
<a name="feature-gremlin-differences-escapes"></a>

Neptune 會解析所有逸出字元，如 Apache Groovy 語言文件的[逸出特殊字元]( http://groovy-lang.org/syntax.html#_escaping_special_characters)一節所述。

## Groovy 限制
<a name="feature-gremlin-differences-groovy"></a>

Neptune 不支援開頭不是 `g` 的 Groovy 命令。這包括數學 (例如 `1+1`)、系統呼叫 (例如 `System.nanoTime()`) 和變數定義 (例如 `1+1`)。

**重要**  
Neptune 不支援完整的類別名稱。例如，您必須在 Groovy 請求中使用 `single`，而不是 `org.apache.tinkerpop.gremlin.structure.VertexProperty.Cardinality.single`。

## 序列化
<a name="feature-gremlin-differences-serialization"></a>

Neptune 根據請求的 MIME 類型支援下列序列化。

 Neptune 會公開 TinkerPop 執行的所有序列化程式，並支援 GraphSON 和 GraphBinary 的各種版本和組態。雖然存在許多選項，但使用 的指引非常簡單：
+  如果您使用的是 Apache TinkerPop 驅動程式，則偏好驅動程式的預設值，而不明確指定一個驅動程式。除非您有非常具體的原因，否則您可能不需要在驅動程式初始化中指定序列化程式。一般而言，驅動程式使用的預設值為 `application/vnd.graphbinary-v1.0`。
+  如果您是透過 HTTP 連線至 Neptune，請優先使用 `application/vnd.gremlin-v3.0+json;types=false`做為替代 GraphSON 3 版本中的內嵌類型，讓使用 變得複雜。
+  通常只有在與 [Gremlin 主控台](https://docs.aws.amazon.com//neptune/latest/userguide/access-graph-gremlin-console.html)搭配使用時`application/vnd.graphbinary-v1.0-stringd`才有用，因為它會將所有結果轉換為字串表示法以進行簡單顯示。
+  由於傳統原因，其餘格式仍然存在，通常不應在沒有明確原因的情況下與驅動程式搭配使用。

|  |  |  | 
| --- |--- |--- |
| MIME type | Serialization | Configuration | 
| `application/vnd.gremlin-v1.0+json` | GraphSONMessageSerializerV1 | ioRegistries：【org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV1】 | 
| `application/vnd.gremlin-v1.0+json;types=false` | GraphSONUntypedMessageSerializerV1 | ioRegistries：【org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV1】 | 
| `application/vnd.gremlin-v2.0+json` | GraphSONMessageSerializerV2 | ioRegistries：【org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV2】 | 
| `application/vnd.gremlin-v2.0+json;types=false` | GraphSONUntypedMessageSerializerV2 | ioRegistries：【org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV2】 | 
| `application/vnd.gremlin-v3.0+json` | GraphSONMessageSerializerV3 | ioRegistries：【org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV3】 | 
| `application/vnd.gremlin-v3.0+json;types=false` | GraphSONUntypedMessageSerializerV3 | ioRegistries：【org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV3】 | 
| `application/json` | GraphSONUntypedMessageSerializerV3 | ioRegistries：【org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV1】 | 
| `application/vnd.graphbinary-v1.0` | GraphBinaryMessageSerializerV1 |  | 
| `application/vnd.graphbinary-v1.0-stringd` | GraphBinaryMessageSerializerV1 | serializeResultToString: true | 
| `application/vnd.gremlin-v1.0+json` | GraphSONMessageSerializerGremlinV1 | ioRegistries：【org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV1】 | 
| `application/vnd.gremlin-v2.0+json` | GraphSONMessageSerializerV2   (only works with WebSockets) | ioRegistries：【org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV2】 | 
| `application/vnd.gremlin-v3.0+json` | `GraphSONMessageSerializerV3` |  | 
| `application/json` | GraphSONMessageSerializerV3 | ioRegistries：【org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV3】 | 
| `application/vnd.graphbinary-v1.0` | GraphBinaryMessageSerializerV1 |  | 

**注意**  
 此處顯示的序列化程式資料表是指截至 TinkerPop 3.7.0 的命名。如果您想要進一步了解此變更，請參閱 [TinkerPop 升級文件](https://tinkerpop.apache.org/docs/current/upgrade/#_serializer_renaming)。Gryo 序列化支援已在 3.4.3 中棄用，並在 3.6.0 中正式移除。如果您明確使用 Gryo 或預設使用它的驅動程式版本，則應切換到 GraphBinary 或升級驅動程式。

## Lambda 步驟
<a name="feature-gremlin-differences-lambda"></a>

Neptune 不支援 Lambda 步驟。

## 不支援的 Gremlin 方法
<a name="feature-gremlin-differences-unsupported-methods"></a>

Neptune 不支援以下 Gremlin 方法：
+ `org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal.program(org.apache.tinkerpop.gremlin.process.computer.VertexProgram)`
+ `org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal.sideEffect(java.util.function.Consumer)`
+ `org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal.from(org.apache.tinkerpop.gremlin.structure.Vertex)`
+ `org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal.to(org.apache.tinkerpop.gremlin.structure.Vertex)`

例如，不允許以下周遊：`g.V().addE('something').from(__.V().next()).to(__.V().next())`。

**重要**  
這「只」******適用於以「文字字串」******傳送 Gremlin 查詢的方法。

## 不支援的 Gremlin 步驟
<a name="feature-gremlin-differences-unsupported-steps"></a>

Neptune 不支援以下 Gremlin 步驟：
+ Neptune 中僅部分支援 Gremlin [io( ) 步驟](http://tinkerpop.apache.org/docs/3.7.2/reference/#io-step)。它可以在讀取內容中使用，如 `g.io({{(url)}}).read()` 中所示，但不能寫入。

## Neptune 中的 Gremlin 圖形功能
<a name="gremlin-api-reference-features"></a>

Gremlin 的 Neptune 實作不會公開 `graph` 物件。下表列出 Grimlin 功能，並指出 Neptune 是否支持它們。

### Neptune 對 `graph` 功能的支援
<a name="gremlin-api-graph-features"></a>

Neptune 圖形功能 (如果支援) 與 `graph.features()` 命令將傳回的功能相同。


| 
| 
| 圖形功能 | 已啟用？ | 
| --- |--- |
| 交易 |  true | 
| ThreadedTransactions |  false | 
| Computer |  false | 
| Persistence |  true | 
| ConcurrentAccess |  true | 

### Neptune 對變數功能的支援
<a name="gremlin-api-variable-features"></a>


| 
| 
| 變數功能 | 已啟用？ | 
| --- |--- |
| Variables |  false | 
| SerializableValues |  false | 
| UniformListValues |  false | 
| BooleanArrayValues |  false | 
| DoubleArrayValues |  false | 
| IntegerArrayValues |  false | 
| StringArrayValues |  false | 
| BooleanValues |  false | 
| ByteValues |  false | 
| DoubleValues |  false | 
| FloatValues |  false | 
| IntegerValues |  false | 
| LongValues |  false | 
| MapValues |  false | 
| MixedListValues |  false | 
| StringValues |  false | 
| ByteArrayValues |  false | 
| FloatArrayValues |  false | 
| LongArrayValues |  false | 

### Neptune 對頂點功能的支援
<a name="gremlin-api-vertex-features"></a>


| 
| 
| 頂點功能 | 已啟用？ | 
| --- |--- |
| MetaProperties |  false | 
| DuplicateMultiProperties |  false | 
| AddVertices |  true | 
| RemoveVertices |  true | 
| MultiProperties |  true | 
| UserSuppliedIds |  true | 
| AddProperty |  true | 
| RemoveProperty |  true | 
| NumericIds |  false | 
| StringIds |  true | 
| UuidIds |  false | 
| CustomIds |  false | 
| AnyIds |  false | 

### Neptune 對頂點屬性功能的支援
<a name="gremlin-api-vertex-property-features"></a>


| 
| 
| 頂點屬性功能 | 已啟用？ | 
| --- |--- |
| UserSuppliedIds |  false | 
| AddProperty |  true | 
| RemoveProperty |  true | 
| NumericIds |  true | 
| StringIds |  true | 
| UuidIds |  false | 
| CustomIds |  false | 
| AnyIds |  false | 
| Properties |  true | 
| SerializableValues |  false | 
|  UniformListValues |  false | 
| BooleanArrayValues |  false | 
| DoubleArrayValues |  false | 
| IntegerArrayValues |  false | 
| StringArrayValues |  false | 
| BooleanValues |  true | 
| ByteValues |  true | 
| DoubleValues |  true | 
| FloatValues |  true | 
| IntegerValues |  true | 
| LongValues |  true | 
| MapValues |  false | 
| MixedListValues |  false | 
| StringValues |  true | 
| ByteArrayValues |  false | 
| FloatArrayValues |  false | 
| LongArrayValues |  false | 

### Neptune 對邊緣功能的支援
<a name="gremlin-api-edge-features"></a>


| 
| 
| 邊緣功能 | 已啟用？ | 
| --- |--- |
| AddEdges |  true | 
| RemoveEdges |  true | 
| UserSuppliedIds |  true | 
| AddProperty |  true | 
| RemoveProperty |  true | 
| NumericIds |  false | 
| StringIds |  true | 
| UuidIds |  false | 
| CustomIds |  false | 
| AnyIds |  false | 

### Neptune 對邊緣屬性功能的支援
<a name="gremlin-api-edge-property-features"></a>


| 
| 
| 邊緣屬性功能 | 已啟用？ | 
| --- |--- |
| Properties |  true | 
| SerializableValues |  false | 
| UniformListValues |  false | 
| BooleanArrayValues |  false | 
| DoubleArrayValues |  false | 
| IntegerArrayValues |  false | 
| StringArrayValues |  false | 
| BooleanValues |  true | 
| ByteValues |  true | 
| DoubleValues |  true | 
| FloatValues |  true | 
| IntegerValues |  true | 
| LongValues |  true | 
| MapValues |  false | 
| MixedListValues |  false | 
| StringValues |  true | 
| ByteArrayValues |  false | 
| FloatArrayValues |  false | 
| LongArrayValues |  false | 