

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Einhaltung der Gremlin-Standards in Amazon Neptune
<a name="access-graph-gremlin-differences"></a>

Die folgenden Abschnitte geben einen Überblick über die Neptune-Implementierung von Gremlin und wie sie sich von der Apache-Implementierung unterscheidet. TinkerPop 

Neptune implementiert einige Gremlin-Schritte nativ in seiner Engine und verwendet die Apache TinkerPop Gremlin-Implementierung, um andere zu verarbeiten (siehe). [Native Unterstützung für Gremlin-Schritte in Amazon Neptune](gremlin-step-support.md)

**Anmerkung**  
Einige Beispiele für diese Implementierungsunterschiede zwischen der Gremlin-Konsole und Amazon Neptune finden Sie im Abschnitt [Verwenden von Gremlin für den Zugriff auf Grafikdaten in Amazon Neptune](get-started-graph-gremlin.md) im Schnellstart.

**Topics**
+ [Geltende Standards für Gremlin](#feature-gremlin-applicable-standards)
+ [Variablen und Parameter in Skripts](#feature-gremlin-differences-variables)
+ [Skriptausführung](#feature-gremlin-differences-script)
+ [Eigenschaften von Elementen](#feature-gremlin-differences-properties-on-elements)
+ [Sitzungen](#feature-gremlin-differences-sessions)
+ [Transaktionen](#feature-gremlin-differences-transactions)
+ [Eckpunkt- und Kanten-IDs](#feature-gremlin-differences-vertex-edge-ids)
+ [User-supplied IDs](#feature-gremlin-differences-user-supplied-ids)
+ [Eckpunkt-Eigenschaft-IDs](#feature-gremlin-differences-vertex-property-ids)
+ [Kardinalität von Eckpunkteigenschaften](#feature-gremlin-differences-vertex-property-cardinality)
+ [Aktualisieren einer Eckpunkteigenschaft](#feature-gremlin-differences-vertex-property-update)
+ [Labels](#feature-gremlin-differences-labels)
+ [Escape-Zeichen](#feature-gremlin-differences-escapes)
+ [Serialisierung](#feature-gremlin-differences-serialization)
+ [Lambda-Schritte](#feature-gremlin-differences-lambda)
+ [Nicht unterstützte Gremlin-Schritte](#feature-gremlin-differences-unsupported-steps)
+ [Features von Gremlin-Diagrammen in Neptune](#gremlin-api-reference-features)

## Geltende Standards für Gremlin
<a name="feature-gremlin-applicable-standards"></a>
+ Die Gremlin-Sprache wird durch die [ TinkerPop Apache-Dokumentation ](http://tinkerpop.apache.org/docs/current/reference/) und die TinkerPop Apache-Implementierung von Gremlin und nicht durch eine formale Spezifikation definiert.
+ Für numerische Formate folgt Gremlin dem IEEE 754-Standard (IEEE 754-2019 — IEEE-Standard für Arithmetik)[. Floating-Point ](https://standards.ieee.org/content/ieee-standards/en/standard/754-2019.html) Weitere Informationen finden Sie auch auf der Wikipedia-Seite IEEE 754). [https://en.wikipedia.org/wiki/IEEE_754](https://en.wikipedia.org/wiki/IEEE_754)

## Variablen und Parameter in Skripts
<a name="feature-gremlin-differences-variables"></a>

Bei vorgebundenen Variablen befindet sich das Traversal-Objekt Pre-bound in Neptune, und das Objekt `g` wird nicht unterstützt. `graph`

Obwohl Neptune weder Gremlin-Variablen noch Parametrisierung in Skripts unterstützt, finden Sie im Internet häufig Beispielskripts für Gremlin Server, die Variablendeklarationen enthalten, zum Beispiel:

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

Es gibt auch viele Beispiele, die beim Absenden von Abfragen [Parametrisierung](https://tinkerpop.apache.org/docs/current/reference/#parameterized-scripts) (oder Bindungen) verwenden, zum Beispiel:

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

Die Parameterbeispiele sind in der Regel mit Warnungen vor einer Beeinträchtigung der Leistung verbunden, wenn keine Parametrisierung erfolgt, wenn dies möglich ist. Es gibt sehr viele solcher Beispiele, auf TinkerPop die Sie vielleicht stoßen, und alle klingen ziemlich überzeugend, was die Notwendigkeit einer Parametrisierung anbelangt.

Sowohl die Funktion zur Variablendeklaration als auch die Parametrisierungsfunktion (zusammen mit den Warnungen) gelten jedoch nur für den Gremlin Server, wenn TinkerPop er den verwendet. `GremlinGroovyScriptEngine` Sie gelten nicht, wenn Gremlin Server die `gremlin-language`-ANTLR-Grammatik von Gremlin verwendet, um Abfragen zu analysieren. Die ANTLR-Grammatik unterstützt weder Variablendeklarationen noch Parametrisierung. Wenn Sie ANTLR verwenden, müssen Sie sich daher keine Sorgen über eine fehlende Parametrisierung machen. Da es sich bei der ANTLR-Grammatik um einen neueren Bestandteil handelt TinkerPop, wird dieser Unterschied in älteren Inhalten, auf die Sie im Internet stoßen, im Allgemeinen nicht berücksichtigt.

Neptune verwendet in der Abfrageverarbeitungs-Engine die ANTLR-Grammatik und nicht `GremlinGroovyScriptEngine`. Daher werden Variablen, Parametrisierung oder die Eigenschaft `bindings` nicht unterstützt. Daher sind die Probleme im Zusammenhang mit einer fehlenden Parametrisierung nicht auf Neptune anwendbar. Mit Neptune können Abfragen einfach so gesendet werden, wie sie sind, ohne sie zu parametrisieren. Daher kann das vorherige Beispiel wie folgt vereinfacht werden, ohne dass die Leistung beeinträchtigt wird:

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

## Skriptausführung
<a name="feature-gremlin-differences-script"></a>

Die Gremlin-Engine von Neptune analysiert Abfragen mithilfe der ANTLR-Grammatik. TinkerPop `gremlin-language` *Sie läuft * nicht `GremlinGroovyScriptEngine` (wie es bei einigen TinkerPop-based Gremlin Server-Bereitstellungen der Fall ist), daher dürfen an Neptune übermittelte Skripte nur die Gremlin-Sprache enthalten — keinen beliebigen Groovy- oder Java-Code.

Skripte können auf verschiedene Arten an Neptune gesendet werden, z. B. über den Gremlin-REST-Endpunkt[, die ](https://docs.aws.amazon.com/neptune/latest/userguide/access-graph-gremlin-rest.html) Gremlin-Konsole oder über Sprachtreiber (zum Beispiel den [ Skript-Client des ](https://docs.aws.amazon.com/neptune/latest/userguide/access-graph-gremlin-console.html) Java-Treibers). TinkerPop [https://tinkerpop.apache.org/docs/current/reference/#gremlin-java-scripts](https://tinkerpop.apache.org/docs/current/reference/#gremlin-java-scripts) Die in diesem Abschnitt beschriebenen Einschränkungen gelten für jeden dieser Übermittlungspfade für Textzeichenfolgen.

Es ist wichtig, die Gremlin-Sprache selbst nicht mit den syntaktischen Zucker- oder Allzweckfunktionen der Programmiersprache zu verwechseln, die Sie vielleicht an anderer Stelle beim Umschließen von Gremlin-Beispielen gesehen haben. Wenn solcher Code in TinkerPop Tutorials oder Online-Beispielen auftaucht, hängt das von einer Groovy- oder Java-Runtime ab, die Neptune nicht bereitstellt.

**Wichtig**  
Alles in diesem Abschnitt bezieht sich auf Gremlin-Eingaben mit Textzeichenfolgen. GLV-Bytecode-Übermittlungen (Gremlin Language Variant), die in einer Hostsprache wie Java, Python oder .NET erstellt wurden, unterliegen diesen Einschränkungen nicht, da der Host-Language Traversal Builder Bytecode erzeugt, den die Engine von Neptune direkt verbraucht.

### Was ein Skript enthalten kann
<a name="feature-gremlin-differences-script-contents"></a>
+ Alle Abfragen müssen mit `g`, dem Traversal-Objekt, beginnen.
+ In einer einzigen Einreichung können mehrere Durchläufe vorgenommen werden, getrennt durch ein Semikolon (`;`) oder ein Zeilenumbruchzeichen (). `\n` Jede Anweisung außer der letzten muss mit einem auszuführenden `.iterate()` Schritt enden; nur die Daten des letzten Durchlaufs werden zurückgegeben.

### Referenzierung TinkerPop von Enumerationswerten
<a name="feature-gremlin-differences-script-enumerations"></a>

Wenn ein TinkerPop Aufzählungswert als Schrittargument erwartet wird (z. B. eine Kardinalität an `property()` oder eine Reihenfolge an`by()`), verwenden Sie die von der ANTLR-Grammatik erkannten Kurzformwerte. Neptune löst in dieser Position keine vollqualifizierten Java-Klassennamen auf — wird beispielsweise nicht akzeptiert; verwenden Sie stattdessen. `org.apache.tinkerpop.gremlin.structure.VertexProperty.Cardinality.single` `single`

In der folgenden Tabelle sind die zulässigen Kurzformwerte und die zugrundeliegende TinkerPop Klasse aufgeführt, zu der jeder einzelne gehört.

| Zulässige Werte | Klasse | 
| --- |--- |
| 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) | 

### Was ein Script nicht enthalten darf
<a name="feature-gremlin-differences-script-not-contents"></a>

Folgendes ** wird in Gremlin-Abfragen an Neptune mit Textzeichenfolgen ** nicht unterstützt, da sie auf Groovy- oder Java-Laufzeitunterstützung angewiesen sind, die Neptune nicht bietet:
+ **Groovige Anweisungen, die nicht mit beginnen. `g` ** Dies umfasst:
  + Arithmetische Ausdrücke wie `1 + 1`
  + Systemrufe wie `System.nanoTime()`
  + Variablendeklarationen wie `x = 1; g.V(x)`
+ **Andere Java-Methoden- oder -Bibliotheksaufrufe als unterstützte Gremlin-APIs. ** Beispiel: `java.lang.*`, `Date()` und `g.V().tryNext().orElseGet(...)` sind nicht zulässig.
+ **Gremlin-Methoden, die einen Java-Typ als Argument verwenden. ** Diese sind nur von einem JVM-language Host aus erreichbar, nicht von einer Textzeichenfolge aus. Beispiele:
  + `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)`

  Beispielsweise kann der folgende Traversal nicht als Textzeichenfolge übermittelt werden:. `g.V().addE('something').from(__.V().next()).to(__.V().next())`

## Eigenschaften von Elementen
<a name="feature-gremlin-differences-properties-on-elements"></a>

 Neptune unterstützt das in TinkerPop 3.7.0 eingeführte `materializeProperties` Flag nicht, um Eigenschaften von Elementen zurückzugeben. Daher gibt Neptune weiterhin nur Scheitelpunkte oder Kanten als Referenzen zurück, die nur ihr Und enthalten. `id` `label`

## Sitzungen
<a name="feature-gremlin-differences-sessions"></a>

Sitzungen in Neptune sind auf 10 Minuten Dauer beschränkt. Weitere Informationen finden Sie unter [Skriptbasierte Gremlin-Sitzungen](access-graph-gremlin-sessions.md) und in der [ TinkerPop Sitzungsreferenz. ](https://tinkerpop.apache.org/docs/current/reference/#console-sessions)

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

Neptune öffnet zu Beginn jeder Gremlin-Traversierung eine neue Transaktion und schließt sie nach dem erfolgreichen Abschluss der Traversierung. Wenn ein Fehler auftritt, wird ein Rollback für die Transaktion durchgeführt. 

 In einer einzelnen Transaktion sind mehrere Anweisungen, die durch Semikolon (`;`) oder Zeilenumbruchzeichen (`\n`) getrennt sind, enthalten. Jede Anweisung, die nicht die letzte Anweisung ist, muss mit einem auszuführenden `next()`-Schritt enden. Es werden nur die Daten der letzten Traversierung zurückgegeben.

Eine manuelle Transaktionslogik mit `tx.commit()` und `tx.rollback()` wird nicht unterstützt.

**Wichtig**  
Dies gilt ***nur*** für Methoden, bei denen Sie die Gremlin-Abfrage als ***Textzeichenfolge*** senden (siehe [Gremline-Transaktionen](access-graph-gremlin-transactions.md)).

## Eckpunkt- und Kanten-IDs
<a name="feature-gremlin-differences-vertex-edge-ids"></a>

Neptune-Gremlin-Eckpunkt– und -Kanten-IDs müssen den Typ `String` haben. Diese ID-Zeichenfolgen unterstützen Unicode-Zeichen und dürfen eine Größe von 55 MB nicht überschreiten.

User-supplied IDs werden unterstützt, sind aber bei normalem Gebrauch optional. Wenn Sie beim Hinzufügen eines Eckpunkts oder einer Kante keine ID angeben, generiert Neptune eine UUID und konvertiert sie in eine Zeichenfolge mit dem folgenden Format: `"48af8178-50ce-971a-fc41-8c9a954cea62"` Diese UUIDs entsprechen nicht dem RFC-Standard. Wenn Sie Standard-UUIDs benötigen, sollten Sie diese extern generieren und angeben, wenn Sie Eckpunkte oder Kanten hinzufügen.

**Anmerkung**  
Der Neptune-Befehl `Load` erfordert, dass Sie im Feld **\~id** IDs im Neptune-CSV-Format angeben.

## User-supplied IDs
<a name="feature-gremlin-differences-user-supplied-ids"></a>

User-supplied Ausweise sind in Neptune Gremlin mit den folgenden Bestimmungen erlaubt.
+ Bereitgestellte IDs sind optional.
+ Es werden nur Eckpunkte und Kanten unterstützt.
+ Es wird nur der `String`-Typ unterstützt.

Zum Erstellen eines neuen Vertex mit benutzerdefinierter ID verwenden Sie den `property`-Schritt mit dem `id`-Schlüsselwort `g.addV().property(id, 'customid')`.

**Anmerkung**  
 Schließen Sie das `id`-Schlüsselwort nicht in Anführungszeichen ein. Dies bezieht sich auf `T.id`.

Alle Eckpunkt-IDs und alle Kanten-IDs müssen eindeutig sein. Neptune lässt jedoch zu, dass ein Eckpunkt und eine Kante dieselbe ID haben.

Wenn Sie versuchen, einen neuen Vertex mit `g.addV()` zu erstellen und es ist bereits ein Vertex mit dieser ID vorhanden, schlägt die Operation fehl. Dabei gilt die folgende Ausnahme: Wenn Sie eine neue Bezeichnung für den Vertex angeben, ist die Operation erfolgreich, fügt die neue Bezeichnung und alle zusätzlichen angegebenen Eigenschaften aber zum vorhandenen Vertex hinzu. Es wird nichts überschrieben. Es wird kein neuer Vertex erstellt. Die Vertex-ID ändert sich nicht und bleibt eindeutig.

Die folgende Gremlin-Konsolenbefehl können beispielsweise erfolgreich ausgeführt werden:

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

## Eckpunkt-Eigenschaft-IDs
<a name="feature-gremlin-differences-vertex-property-ids"></a>

Eigenschaften-IDs von Knoten werden automatisch generiert und können bei Abfrage als positive oder negative Zahlen erscheinen.

## Kardinalität von Eckpunkteigenschaften
<a name="feature-gremlin-differences-vertex-property-cardinality"></a>

Neptune unterstützt Set-Kardinalität und Single-Kardinalität. Wenn die Kardinalität nicht angegeben ist, wird die Set-Kardinalität ausgewählt. Das bedeutet, dass, wenn ein Eigenschaftswert festgelegt wird, ein neuer Wert zur Eigenschaft hinzugefügt wird, sofern dieser nicht bereits im Wertesatz enthalten ist. Dies ist der Gremlin-Aufzählungswert von [Set](https://tinkerpop.apache.org/javadocs/3.7.2/core/org/apache/tinkerpop/gremlin/structure/VertexProperty.Cardinality.html). 

`List` wird nicht unterstützt. Weitere Informationen zur Eigenschaftskardinalität finden Sie im Thema Vertex im Gremlin. [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...-](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

## Aktualisieren einer Eckpunkteigenschaft
<a name="feature-gremlin-differences-vertex-property-update"></a>

Zum Aktualisieren eines Eigenschaftswerts ohne Hinzufügung eines zusätzlichen Werts zum Wertesatz geben Sie die `single`-Kardinalität im `property`-Schritt an.

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

Dadurch werden alle vorhandenen Werte für die Eigenschaft entfernt.

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

Neptune unterstützt mehrere Bezeichnungen für einen Eckpunkt. Sie können mehrere Bezeichnungen angeben, indem Sie diese durch `::` trennen. Beispielsweise fügt `g.addV("Label1::Label2::Label3")` einen Knoten mit drei verschiedenen Bezeichnungen hinzu. Der `hasLabel`-Schritt entspricht dem Knoten mit allen drei Bezeichnungen: `hasLabel("Label1")`, `hasLabel("Label2")` und `hasLabel("Label3")`. 

**Wichtig**  
Das `::`-Trennzeichen ist dieser Verwendung vorbehalten. Sie können im `hasLabel`-Schritt nicht mehrere Bezeichnungen angeben. Beispiel: Für `hasLabel("Label1::Label2")` gibt es keine Übereinstimmung.

## Escape-Zeichen
<a name="feature-gremlin-differences-escapes"></a>

Neptune löst alle Escape-Zeichen wie im Abschnitt [Escaping Special Characters]( http://groovy-lang.org/syntax.html#_escaping_special_characters) der Apache-Groovy-Dokumentation beschrieben auf.

## Serialisierung
<a name="feature-gremlin-differences-serialization"></a>

Neptune unterstützt die folgenden Serialisierungen basierend auf dem angeforderten MIME-Typ.

 Mit Neptune können Sie viele der angebotenen Serializer verwenden, mit Unterstützung für die verschiedenen Versionen und TinkerPop Konfigurationen von GraphsOn und. GraphBinary In der folgenden Tabelle finden Sie die derzeit unterstützten Serializer. Obwohl es viele Optionen gibt, ist die Anleitung zur Verwendung einfach: 
+  Wenn Sie TinkerPop Apache-Treiber verwenden, bevorzugen Sie die Standardeinstellung für den Treiber, ohne einen explizit anzugeben. Sofern Sie keinen ganz bestimmten Grund dafür haben, müssen Sie den Serializer wahrscheinlich nicht bei Ihrer Treiberinitialisierung angeben. Im Allgemeinen ist die von den Treibern verwendete Standardeinstellung. `application/vnd.graphbinary-v1.0` 
+  Wenn Sie über HTTP eine Verbindung zu Neptune herstellen, sollten Sie die Verwendung von priorisieren, `application/vnd.gremlin-v3.0+json;types=false` da die eingebetteten Typen in der alternativen Version von GraphsOn 3 die Arbeit erschweren. 
+  Der `application/vnd.graphbinary-v1.0-stringd` ist im Allgemeinen nur nützlich, wenn er in Verbindung mit der [ Gremlin Console verwendet wird, ](https://docs.aws.amazon.com/neptune/latest/userguide/access-graph-gremlin-console.html) da er alle Ergebnisse zur einfachen Anzeige in eine Zeichenfolgendarstellung umwandelt. 
+  Die übrigen Formate sind aus veralteten Gründen weiterhin vorhanden und sollten in der Regel nicht ohne triftigen Grund mit Treibern verwendet werden. 

|  |  |  | 
| --- |--- |--- |
| MIME-Typ | Serialisierung | Konfiguration | 
| `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(funktioniert nur mit 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 |  | 

**Anmerkung**  
 Die hier gezeigte Serializer-Tabelle bezieht sich auf die Benennung ab 3.7.0. TinkerPop Wenn Sie mehr über diese Änderung erfahren möchten, lesen Sie bitte die [ TinkerPop Upgrade-Dokumentation. ](https://tinkerpop.apache.org/docs/current/upgrade/#_serializer_renaming) Die Gryo-Serialisierungsunterstützung war in 3.4.3 veraltet und wurde in 3.6.0 offiziell entfernt. Wenn Sie Gryo explizit verwenden oder eine Treiberversion verwenden, die Gryo standardmäßig verwendet, sollten Sie zu Ihrem Treiber wechseln oder ihn aktualisieren. GraphBinary 

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

Lambda-Schritte werden von Neptune nicht unterstützt.

## Nicht unterstützte Gremlin-Schritte
<a name="feature-gremlin-differences-unsupported-steps"></a>

Die folgenden Gremlin-Schritte werden von Neptune nicht unterstützt:
+ Der Gremlin-Schritt [io( )](http://tinkerpop.apache.org/docs/3.7.2/reference/#io-step) wird von Neptune nur teilweise unterstützt. Sie können es in einem Lesekontext verwenden, wie in`g.io("https://example.com/data/my-graph.graphml").read()`, aber Sie können es nicht zum Schreiben verwenden. Um eine Datei zu lesen, die Sie als Amazon S3-Objekt speichern, generieren Sie zunächst eine vorsignierte URL. Übergeben Sie dann diese HTTPS-URL an`g.io()`. Weitere Informationen zu vorsignierten URLs finden [ Sie unter Herunterladen und Hochladen von Objekten mit vorsignierten URLs ](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-presigned-url.html) im * Amazon S3-Benutzerhandbuch. *

## Features von Gremlin-Diagrammen in Neptune
<a name="gremlin-api-reference-features"></a>

Die Neptune-Implementierung von Gremlin legt das `graph`-Objekt nicht offen. Die folgenden Tabellen listen Gremlin-Features auf und geben an, ob Neptune sie unterstützt oder nicht.

### Neptune-Unterstützung für Grafikfunktionen ``
<a name="gremlin-api-graph-features"></a>

Die Neptune-Diagramm-Features (wenn vorhanden) sind mit den Features identisch, die vom Befehl `graph.features()` zurückgegeben würden.


| 
| 
| Diagramm-Feature | Aktiviert? | 
| --- |--- |
| Transactions |  true | 
| ThreadedTransactions |  false | 
| Computer |  false | 
| Persistence |  true | 
| ConcurrentAccess |  true | 

### Neptune-Unterstützung für Variablen-Features
<a name="gremlin-api-variable-features"></a>


| 
| 
| Variablen-Feature | Aktiviert? | 
| --- |--- |
| 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-Unterstützung für Eckpunkt-Features
<a name="gremlin-api-vertex-features"></a>


| 
| 
| Eckpunkt-Feature | Aktiviert? | 
| --- |--- |
| 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-Unterstützung für Eckpunkt-Eigenschafts-Features
<a name="gremlin-api-vertex-property-features"></a>


| 
| 
| Eckpunkt-Eigenschafts-Feature | Aktiviert? | 
| --- |--- |
| 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-Unterstützung für Kanten-Features
<a name="gremlin-api-edge-features"></a>


| 
| 
| Kanten-Feature | Aktiviert? | 
| --- |--- |
| AddEdges |  true | 
| RemoveEdges |  true | 
| UserSuppliedIds |  true | 
| AddProperty |  true | 
| RemoveProperty |  true | 
| NumericIds |  false | 
| StringIds |  true | 
| UuidIds |  false | 
| CustomIds |  false | 
| AnyIds |  false | 

### Neptune-Unterstützung für Kanten-Eigenschafts-Features
<a name="gremlin-api-edge-property-features"></a>


| 
| 
| Kanten-Eigenschafts-Feature | Aktiviert? | 
| --- |--- |
| 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 | 