

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 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)
+ [顶点和边 IDs](#feature-gremlin-differences-vertex-edge-ids)
+ [用户提供 IDs](#feature-gremlin-differences-user-supplied-ids)
+ [顶点属性 IDs](#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 文档](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)。有关更多信息，请参阅[维基百科 IEEE 第 754 页](https://en.wikipedia.org/wiki/IEEE_754)）。

## 脚本中的变量和参数
<a name="feature-gremlin-differences-variables"></a>

就预绑定变量而言，遍历对象 `g` 在 Neptune 中是预先绑定的，并且不支持 `graph` 对象。

尽管 Neptune 在脚本中不支持 Gremlin 变量或参数化，但您可能经常在互联网上遇到包含变量声明的 Gremlin Server 示例脚本，例如：

```
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 ，而且它们在参数化的必要性方面听起来都很有说服力。

但是，变量声明功能和参数化功能（以及警告）仅适用于使用 TinkerPop的 Gremlin Server。`GremlinGroovyScriptEngine`当 Gremlin 服务器使用 Gremlin 的 `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, key, 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) | 
| global, 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) | 
| 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) | 
| all, 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, and, assign, div, max, min, minus, mult, or, 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, none | [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>

除了支持的 Gremlin 之外，Neptune 不支持调用由任意 Java 或 Java 库调用定义的方法。 APIs例如，不允许 `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)）。

## 顶点和边 IDs
<a name="feature-gremlin-differences-vertex-edge-ids"></a>

Neptune Gremlin Vertex 和 Edge IDs 必须是类型。`String`这些 ID 字符串支持 Unicode 字符，大小不能超过 55MB。

支持用户自备 IDs ，但在正常使用中它们是可选的。如果您在添加顶点或边缘时不提供 ID，Neptune 会生成一个 UUID 并将其转换为字符串，格式如下：`"48af8178-50ce-971a-fc41-8c9a954cea62"`。它们 UUIDs 不符合 RFC 标准，因此，如果您需要标准 UUIDs ，则应在外部生成它们，并在添加顶点或边时提供它们。

**注意**  
Neptune `Load` 命令需要你使用 Neptune CSV **格式的 \$1id** 字段提供 IDs。

## 用户提供 IDs
<a name="feature-gremlin-differences-user-supplied-ids"></a>

在 Neptune Gremlin 中允许用户提供， IDs 但须遵守以下规定。
+ 提供的 IDs 是可选的。
+ 仅支持顶点和边缘。
+ 仅支持 `String` 类型。

要使用自定义 ID 创建新顶点，请将 `property` 步骤与 `id` 关键字一起使用：`g.addV().property(id, 'customid')`。

**注意**  
 请勿为 `id` 关键字加上引号。它指的是 `T.id`。

所有顶点 IDs 必须是唯一的，所有边都 IDs 必须是唯一的。但是，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
```

## 顶点属性 IDs
<a name="feature-gremlin-differences-vertex-property-ids"></a>

Vertex 属性 IDs 是自动生成的，查询时可以显示为正数或负数。

## 顶点属性的基数
<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 中的 [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...-) 主题。 JavaDoc

## 更新顶点属性
<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 替代版本中的嵌入式类型会导致其使用变得复杂。
+  通常，`application/vnd.graphbinary-v1.0-stringd` 只有在与 [Gremlin 控制台](https://docs.amazonaws.cn//neptune/latest/userguide/access-graph-gremlin-console.html)结合使用时才有用，因为它可以将所有结果转换为字符串表示形式以便于显示。
+  由于遗留原因，其余格式仍然存在，但通常情况下，不应在没有明确理由的情况下将这些格式与驱动程序一起使用。

|  |  |  | 
| --- |--- |--- |
| MIME 类型 | 序列化 | 配置 | 
| `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（仅适用于 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或默认使用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` 对象。下表列出了 Gremlin 特征，并指明了 Neptune 是否支持这些特征。

### Neptune 对 `graph` 特征的支持
<a name="gremlin-api-graph-features"></a>

Neptune 图形特征（如果支持）与 `graph.features()` 命令返回的特征相同。


| 
| 
| 图形特征 | 是否启用？ | 
| --- |--- |
| Transactions |  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 | 