

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 bieten 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)
+ [TinkerPop Aufzählungen](#feature-gremlin-differences-tinkerpop)
+ [Java-Code](#feature-gremlin-differences-java)
+ [Eigenschaften von Elementen](#feature-gremlin-differences-properties-on-elements)
+ [Skriptausführung](#feature-gremlin-differences-script)
+ [Sitzungen](#feature-gremlin-differences-sessions)
+ [Transaktionen](#feature-gremlin-differences-transactions)
+ [Scheitelpunkt und Kante IDs](#feature-gremlin-differences-vertex-edge-ids)
+ [Vom Benutzer bereitgestellt IDs](#feature-gremlin-differences-user-supplied-ids)
+ [Eigenschaft „Scheitelpunkt“ 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)
+ [Groovy-Einschränkungen](#feature-gremlin-differences-groovy)
+ [Serialisierung](#feature-gremlin-differences-serialization)
+ [Lambda-Schritte](#feature-gremlin-differences-lambda)
+ [Nicht unterstützte Gremlin-Methoden](#feature-gremlin-differences-unsupported-methods)
+ [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 eher durch die [ TinkerPop Apache-Dokumentation und die TinkerPop Apache-Implementierung](http://tinkerpop.apache.org/docs/current/reference/) von Gremlin als durch eine formale Spezifikation definiert.
+ Für numerische Formate folgt Gremlin dem Standard IEEE 754 ([IEEE 754-2019 – IEE Standard for Floating-Point Arithmetic](https://standards.ieee.org/content/ieee-standards/en/standard/754-2019.html); siehe auch die [Wikipedia-Seite für IEEE 754](https://en.wikipedia.org/wiki/IEEE_754)).

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

Wenn es sich um bereits gebundene Variablen handelt, ist das Traversierungs-Objekt `g` in Neptune bereits gebunden und das `graph`-Objekt wird nicht unterstützt.

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 eine Menge solcher Beispiele, denen Sie vielleicht begegnen werden TinkerPop , und sie klingen alle ziemlich überzeugend, was die Notwendigkeit der Parametrisierung angeht.

Sowohl die Funktion zur Deklaration von Variablen als auch die Parametrisierungsfunktion (zusammen mit den Warnungen) gelten jedoch nur für den Gremlin-Server, TinkerPop wenn dieser 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 eine neuere Komponente handelt TinkerPop, spiegeln ältere Inhalte, denen Sie im Internet möglicherweise begegnen, diesen Unterschied im Allgemeinen nicht wider.

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();
```

## TinkerPop Aufzählungen
<a name="feature-gremlin-differences-tinkerpop"></a>

Neptune unterstützt keine vollständig qualifizierten Klassennamen für Aufzählungswerte. In Ihrer Groovy-Anforderung müssen Sie beispielsweise `single` anstelle von `org.apache.tinkerpop.gremlin.structure.VertexProperty.Cardinality.single` verwenden.

Der Aufzählungstyp wird durch den Parametertyp bestimmt.

Die folgende Tabelle zeigt die zulässigen Aufzählungswerte und den zugehörigen TinkerPop vollqualifizierten Namen.

| 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. Kardinalität](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. Barriere](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. Wählen](https://tinkerpop.apache.org/javadocs/current/full/org/apache/tinkerpop/gremlin/process/traversal/Pick.html) | 

## Java-Code
<a name="feature-gremlin-differences-java"></a>

Neptune unterstützt keine Aufrufe von Methoden, die durch beliebige Java- oder Java-Bibliotheksaufrufe definiert wurden, mit Ausnahme von unterstütztem Gremlin. APIs Beispiel: `java.lang.*`, `Date()` und `g.V().tryNext().orElseGet()` sind nicht zulässig.

## 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 zur Rückgabe von Eigenschaften von Elementen nicht. Infolgedessen gibt Neptune immer noch nur Scheitelpunkte oder Kanten als Referenzen mit nur ihrem UND zurück. `id` `label`

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

Alle Abfragen müssen mit `g`, dem Traversal-Objekt, beginnen. 

Bei der Übermittlung von Zeichenfolgenabfragen können mehrere Traversierungen ausgegeben werden, durch Semikolon (`;`) oder ein Zeichen für eine neue Zeile (`\n`) getrennt. Alle Anweisungen außer der letzten Anweisung müssen mit einem `.iterate()`-Schritt beendet werden, um ausgeführt zu werden. Es werden nur die Daten der letzten Traversierung zurückgegeben. Beachten Sie, dass dies nicht für ByteCode GLV-Abfragen gilt.

## 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 [TinkerPopSitzungsreferenz](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)).

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

Neptune Gremlin Vertex und Edge IDs müssen vom Typ sein. `String` Diese ID-Zeichenfolgen unterstützen Unicode-Zeichen und dürfen eine Größe von 55 MB nicht überschreiten.

Vom Benutzer bereitgestellte Dateien 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"` Sie entsprechen UUIDs nicht dem RFC-Standard. Wenn Sie also einen Standard benötigen, sollten UUIDs Sie sie extern generieren und beim Hinzufügen von Scheitelpunkten oder Kanten angeben.

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

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

Vom Benutzer bereitgestellte IDs Dateien sind in Neptune Gremlin mit den folgenden Bestimmungen erlaubt.
+  IDs Die mitgelieferten Produkte 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`.

Jeder Scheitelpunkt IDs muss einzigartig sein, und alle Kanten IDs müssen einzigartig 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
```

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

Die Eckpunkteigenschaften IDs werden automatisch generiert und können bei der Abfrage als positive oder negative Zahlen angezeigt werden.

## 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 Kardinalität von Eigenschaften finden Sie im Thema [Scheitelpunkt](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...-) im Gremlin. 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.

## Groovy-Einschränkungen
<a name="feature-gremlin-differences-groovy"></a>

Neptune unterstützt keine Groovy-Befehle, die nicht mit `g` beginnen. Dies umfasst mathematische Zeichen (z. B.: `1+1`), Systemaufrufe (z. B: `System.nanoTime()`) und Variablendefinitionen (z. B: `1+1`).

**Wichtig**  
Neptune unterstützt keine vollständig qualifizierten Klassennamen. In Ihrer Groovy-Anforderung müssen Sie beispielsweise `single` anstelle von `org.apache.tinkerpop.gremlin.structure.VertexProperty.Cardinality.single` verwenden.

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

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

 Neptune stellt alle Serialisierer zur Verfügung, die dies tun, und TinkerPop unterstützt die verschiedenen Versionen und Konfigurationen von GraphSON und. GraphBinary 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 der Treiberinitialisierung angeben. Im Allgemeinen ist die Standardeinstellung, die von den Treibern verwendet wird. `application/vnd.graphbinary-v1.0` 
+  Wenn Sie über HTTP eine Verbindung zu Neptune herstellen, sollten Sie der Verwendung von Priorität einräumen, `application/vnd.gremlin-v3.0+json;types=false` da die eingebetteten Typen in der alternativen Version von GraphSon 3 die Arbeit erschweren. 
+  Das `application/vnd.graphbinary-v1.0-stringd` ist im Allgemeinen nur nützlich, wenn es in Verbindung mit der [Gremlin Console](https://docs.aws.amazon.com//neptune/latest/userguide/access-graph-gremlin-console.html) verwendet wird, da es alle Ergebnisse zur einfachen Anzeige in eine Zeichenkettendarstellung konvertiert. 
+  Die übrigen Formate bleiben aus veralteten Gründen weiterhin vorhanden und sollten normalerweise nicht ohne eindeutigen Grund zusammen mit Treibern verwendet werden. 

|  |  |  | 
| --- |--- |--- |
| MIME-Typ | Serialisierung | Konfiguration | 
| `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(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 Unterstützung der Gryo-Serialisierung 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-Methoden
<a name="feature-gremlin-differences-unsupported-methods"></a>

Die folgenden Gremlin-Methoden werden von Neptune nicht unterstützt:
+ `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)`

Die folgende Traversierung ist beispielsweise nicht zulässig: `g.V().addE('something').from(__.V().next()).to(__.V().next())`.

**Wichtig**  
Dies gilt ***nur*** für Methoden, bei denen die Gremlin-Abfrage als ***Textzeichenfolge*** gesendet wird.

## 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. Er kann in einem Lesekontext verwendet werden, wie in `g.io((url)).read()`, jedoch nicht zum Schreiben.

## 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 `graph`-Features
<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 | 