Wählen Sie Ihre Cookie-Einstellungen aus

Wir verwenden essentielle Cookies und ähnliche Tools, die für die Bereitstellung unserer Website und Services erforderlich sind. Wir verwenden Performance-Cookies, um anonyme Statistiken zu sammeln, damit wir verstehen können, wie Kunden unsere Website nutzen, und Verbesserungen vornehmen können. Essentielle Cookies können nicht deaktiviert werden, aber Sie können auf „Anpassen“ oder „Ablehnen“ klicken, um Performance-Cookies abzulehnen.

Wenn Sie damit einverstanden sind, verwenden AWS und zugelassene Drittanbieter auch Cookies, um nützliche Features der Website bereitzustellen, Ihre Präferenzen zu speichern und relevante Inhalte, einschließlich relevanter Werbung, anzuzeigen. Um alle nicht notwendigen Cookies zu akzeptieren oder abzulehnen, klicken Sie auf „Akzeptieren“ oder „Ablehnen“. Um detailliertere Entscheidungen zu treffen, klicken Sie auf „Anpassen“.

Einhaltung der OpenCypher-Spezifikationen in Amazon Neptune

Fokusmodus
Einhaltung der OpenCypher-Spezifikationen in Amazon Neptune - Amazon Neptune

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.

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.

Die Amazon Neptune-Version von openCypher unterstützt im Allgemeinen die Klauseln, Operatoren, Ausdrücke, Funktionen und Syntax, die in Cypher Query Language Reference Version 9 definiert sind, der aktuellen openCypher-Spezifikation. Im Folgenden werden die Einschränkungen und Unterschiede bei der Neptune-Unterstützung für openCypher beschrieben.

Amazon Neptune unterstützt auch mehrere Funktionen, die über den Rahmen der OpenCypher-Spezifikation hinausgehen. Weitere Einzelheiten finden Sie unter OpenCypher-Erweiterungen in Amazon Neptune.

Anmerkung

Die aktuelle Neo4j-Implementierung von Cypher enthält Funktionen, die nicht in der oben genannten openCypher-Spezifikation enthalten sind. Wenn Sie aktuellen Cypher-Code zu Neptune migrieren, finden Sie unter Neptune-Kompatibilität mit Neo4j und Umschreiben von Cypher-Abfragen für die Ausführung auf Neptune openCypher weitere Informationen.

Unterstützung für openCypher-Klauseln in Neptune

Neptune unterstützt die folgenden Klauseln, wenn nicht anders angegeben:

  • MATCH   –   Unterstützt, jedoch werden shortestPath() und allShortestPaths() zurzeit nicht unterstützt.

  • OPTIONAL MATCH

  • MANDATORY MATCH   –   Zurzeit nicht in Neptune unterstützt. Neptune unterstützt jedoch benutzerdefinierte ID-WerteMATCH in -Abfragen.

  • RETURN   –   Unterstützt, jedoch nicht in Verbindung mit nichtstatischen Werten für SKIP oder LIMIT. Beispielsweise funktioniert Folgendes zurzeit nicht:

    MATCH (n) RETURN n LIMIT toInteger(rand()) // Does NOT work!
  • WITH   –   Unterstützt, jedoch nicht in Verbindung mit nichtstatischen Werten für SKIP oder LIMIT. Beispielsweise funktioniert Folgendes zurzeit nicht:

    MATCH (n) WITH n SKIP toInteger(rand()) WITH count() AS count RETURN count > 0 AS nonEmpty // Does NOT work!
  • UNWIND

  • WHERE

  • ORDER BY

  • SKIP

  • LIMIT

  • CREATE   –   Sie können mit Neptune benutzerdefinierte ID-Werte in CREATE-Abfragen erstellen.

  • DELETE

  • SET

  • REMOVE

  • MERGE   –   Neptune unterstützt benutzerdefinierte ID-Werte in MERGE-Abfragen.

  • CALL[YIELD...]   –   Zurzeit nicht in Neptune unterstützt.

  • UNION, UNION ALL   –   Schreibgeschützte Abfragen werden unterstützt, Mutationsabfragen werden zurzeit jedoch nicht unterstützt.

  • USINGUSING wird ab Engine-Version 1.3.2.0 unterstützt. Weitere Informationen finden Sie unter Abfragehinweise.

Unterstützung für openCypher-Operatoren in Neptune

Neptune unterstützt die folgenden Operatoren, wenn nicht anders angegeben:

Allgemeine Operatoren
  • DISTINCT

  • . Operator für den Zugriff auf Eigenschaften einer verschachtelten Literalmap.

Mathematische Operatoren
  • + Additionsoperator.

  • - Subtraktionsoperator.

  • * Multiplikationsoperator.

  • / Teilungsoperator.

  • % Modulo-Teilungsoperator.

  • Der ^ Potenzierungsoperator. is NOT supported

Vergleichsoperatoren
  • = Additionsoperator.

  • <> Ungleichheitsoperator.

  • Der < Kleiner-Als-Operator wird unterstützt, es sei denn, eines der Argumente ist Path, List oder Map.

  • Der > Größer-Als-Operator wird unterstützt, es sei denn, eines der Argumente ist Path, List oder Map.

  • Der Operator <= less-than-or-equal -to wird unterstützt, außer wenn eines der Argumente ein Path, List oder Map ist.

  • Der Operator >= greater-than-or-equal -to wird unterstützt, außer wenn eines der Argumente ein Path, List oder Map ist.

  • IS NULL

  • IS NOT NULL

  • STARTS WITH wird unterstützt, wenn es sich bei den gesuchten Daten um eine Zeichenfolge handelt.

  • ENDS WITH wird unterstützt, wenn es sich bei den gesuchten Daten um eine Zeichenfolge handelt.

  • CONTAINS wird unterstützt, wenn es sich bei den gesuchten Daten um eine Zeichenfolge handelt.

Boolesche Operatoren
  • AND

  • OR

  • XOR

  • NOT

Zeichenfolgenoperatoren
  • + Verkettungsoperator.

Listenoperatoren.
  • + Verkettungsoperator.

  • IN (überprüft auf Vorhandensein eines Elements in der Liste)

Unterstützung für openCypher-Ausdrücke in Neptune

Neptune unterstützt die folgenden Ausdrücke, wenn nicht anders angegeben:

  • CASE

  • Der []-Ausdruck wird zurzeit in Neptune nicht für den Zugriff auf dynamisch berechnete Eigenschaftsschlüssel innerhalb eines Knotens, einer Beziehung oder einer Map unterstützt. Beispielsweise funktioniert Folgendes nicht:

    MATCH (n) WITH [5, n, {key: 'value'}] AS list RETURN list[1].name

Unterstützung für openCypher-Funktionen in Neptune

Neptune unterstützt die folgenden Funktionen, wenn nicht anders angegeben:

Prädikatsfunktionen
  • exists()

Skalarfunktionen
  • coalesce()

  • endNode()

  • epochmillis()

  • head()

  • id()

  • last()

  • length()

  • randomUUID()

  • properties()

  • removeKeyFromMap

  • size()   –   Diese Methodenüberladung funktioniert zurzeit nur für Musterausdrücke, Listen und Zeichenfolgen.

  • startNode()

  • timestamp()

  • toBoolean()

  • toFloat()

  • toInteger()

  • type()

Aggregationsfunktionen
  • avg()

  • collect()

  • count()

  • max()

  • min()

  • percentileDisc()

  • stDev()

  • percentileCont()

  • stDevP()

  • sum()

Listenfunktionen
  • join() (verkettet Zeichenfolgen in einer Liste zu einer einzigen Zeichenfolge)

  • keys()

  • labels()

  • nodes()

  • range()

  • relationships()

  • reverse()

  • tail()

Mathematische Funktionen – numerisch
  • abs()

  • ceil()

  • floor()

  • rand()

  • round()

  • sign()

Mathematische Funktionen – logarithmisch
  • e()

  • exp()

  • log()

  • log10()

  • sqrt()

Mathematische Funktionen – trigonometrisch
  • acos()

  • asin()

  • atan()

  • atan2()

  • cos()

  • cot()

  • degrees()

  • pi()

  • radians()

  • sin()

  • tan()

Zeichenfolgenfunktionen
  • join() (verkettet Zeichenfolgen in einer Liste zu einer einzigen Zeichenfolge)

  • left()

  • lTrim()

  • replace()

  • reverse()

  • right()

  • rTrim()

  • split()

  • substring()

  • toLower()

  • toString()

  • toUpper()

  • trim()

Benutzerdefinierte Funktionen

User-defined functionswerden derzeit in Neptune nicht unterstützt.

Neptune-spezifische openCypher-Implementierungsdetails

Die folgenden Abschnitte beschreiben, wie sich die Neptune-Implementierung von openCypher von der openCypher-Spezifikation unterscheidet oder über diese hinausgeht.

Evaluierungen von Pfaden variabler Länge (VLP) in Neptune

Evaluierungen von Pfaden (VLP) variabler Länge entdecken Pfade zwischen Knoten im Diagramm. Die Pfadlänge in einer Abfrage kann uneingeschränkt sein. Um Zyklen zu verhindern, legt die openCypher-Spezifikation fest, dass jede Kante höchstens einmal pro Lösung traversiert werden darf.

Denn VLPs die Neptune-Implementierung weicht von der OpenCypher-Spezifikation insofern ab, als sie nur konstante Werte für Eigenschaftsgleichheitsfilter unterstützt. Führen Sie die folgende Abfrage aus:

MATCH (x)-[:route*1..2 {dist:33, code:x.name}]->(y) return x,y

Da der Wert des x.name-Eigenschaftsgleichheitsfilters keine Konstante ist, führt diese Abfrage zu einer UnsupportedOperationException mit der folgenden Meldung: Property predicate over variable-length relationships with non-constant expression is not supported in this release.

Temporale Unterstützung in der Neptune OpenCypher-Implementierung (Neptune-Datenbank 1.3.1.0 und niedriger)

Neptune stellt zurzeit eine eingeschränkte Unterstützung für temporale Funktionen in openCypher bereit. Die Lösung unterstützt den Datentyp DateTime für temporale Typen.

Die Funktion datetime() kann verwendet werden, um die aktuellen Werte für UTC-Datum und -Uhrzeit wie folgt abzurufen:

RETURN datetime() as res

Datums- und Uhrzeitwerte können aus Zeichenfolgen im Format "dateTtime" analysiert werden, wobei date und time in einem der folgenden unterstützten Formate ausgedrückt werden:

Unterstützte Datumsformate
  • yyyy-MM-dd

  • yyyyMMdd

  • yyyy-MM

  • yyyy-DDD

  • yyyyDDD

  • yyyy

Unterstützte Uhrzeitformate
  • HH:mm:ssZ

  • HHmmssZ

  • HH:mm:ssZ

  • HH:mmZ

  • HHmmZ

  • HHZ

  • HHmmss

  • HH:mm:ss

  • HH:mm

  • HHmm

  • HH

Zum Beispiel:

RETURN datetime('2022-01-01T00:01') // or another example: RETURN datetime('2022T0001')

Beachten Sie, dass alle Datums-/Uhrzeitwerte in Neptune openCypher als UTC-Werte gespeichert und abgerufen werden.

Neptune openCypher verwendet eine statement-Uhr. Das bedeutet, dass über die Dauer einer Abfrage derselbe Zeitpunkt verwendet wird. Eine andere Abfrage innerhalb derselben Transaktion verwendet möglicherweise einen anderen Zeitpunkt.

Neptune unterstützt keine Verwendung von Funktionen innerhalb von Aufrufen von datetime(). Beispielsweise funktioniert Folgendes nicht:

CREATE (:n {date:datetime(tostring(2021))}) // ---> NOT ALLOWED!

Neptune unterstützt die Funktion epochmillis(), die einen datetime-Wert in epochmillis konvertiert. Zum Beispiel:

MATCH (n) RETURN epochMillis(n.someDateTime) 1698972364782

Neptune unterstützt zurzeit keine anderen Funktionen und Operationen für DateTime-Objekte, z. B. Addition und Subtraktion.

Temporale Unterstützung in der Neptune OpenCypher-Implementierung (Neptune Analytics und Neptune Database 1.3.2.0 und höher)

Die folgende Datetime-Funktionalität für OpenCypher gilt für Neptune Analytics. Alternativ können Sie den Labmode-Parameter DatetimeMillisecond=enabled verwenden, um die folgenden Datetime-Funktionen auf Neptune Engine-Release-Version 1.3.2.0 und höher zu aktivieren. Weitere Informationen zur Verwendung dieser Funktionalität im Labmode finden Sie unter. Erweiterte Datetime-Unterstützung

  • Support für Millisekunden. Das Datetime-Literal wird immer mit Millisekunden zurückgegeben, auch wenn Millisekunden 0 ist. (Bisheriges Verhalten bestand darin, Millisekunden zu kürzen.)

    CREATE (:event {time: datetime('2024-04-01T23:59:59Z')}) # Returning the date returns with 000 suffixed representing milliseconds MATCH(n:event) RETURN n.time as datetime { "results" : [ { "n" : { "~id" : "0fe88f7f-a9d9-470a-bbf2-fd6dd5bf1a7d", "~entityType" : "node", "~labels" : [ "event" ], "~properties" : { "time" : "2024-04-01T23:59:59.000Z" } } } ] }
  • Support für den Aufruf der Funktion datetime () über gespeicherte Eigenschaften oder Zwischenergebnisse. Beispielsweise waren die folgenden Abfragen vor dieser Funktion nicht möglich.

    Datetime () über Eigenschaften:

    // Create node with property 'time' stored as string CREATE (:event {time: '2024-04-01T23:59:59Z'}) // Match and return this property as datetime MATCH(n:event) RETURN datetime(n.time) as datetime

    Datetime () im Vergleich zu Zwischenergebnissen:

    // Parse datetime from parameter UNWIND $list as myDate RETURN datetime(myDate) as d
  • Es ist jetzt auch möglich, Datetime-Eigenschaften zu speichern, die in den oben genannten Fällen erstellt wurden.

    Speichern von Datetime aus der String-Eigenschaft einer Eigenschaft in eine andere:

    // Create node with property 'time' stored as string CREATE (:event {time: '2024-04-01T23:59:59Z', name: 'crash'}) // Match and update the same property to datetime type MATCH(n:event {name: 'crash'}) SET n.time = datetime(n.time) // Match and update another node's property MATCH(e:event {name: 'crash'}) MATCH(n:server {name: e.servername}) SET n.time = datetime(e.time)

    Batch-Erstellung von Knoten aus einem Parameter mit einer Datetime-Eigenschaft:

    // Batch create from parameter UNWIND $list as events CREATE (n:crash) {time: datetime(events.time)} // Parameter value { "x":[ {"time":"2024-01-01T23:59:29", "name":"crash1"}, {"time":"2023-01-01T00:00:00Z", "name":"crash2"} ] }
  • Support für eine größere Teilmenge von ISO86 01 Datetime-Formaten. Weitere Informationen finden Sie unter weiter unten in diesem Dokument.

Unterstützte Formate

Das Format eines Datetime-Werts ist [Date] T [Time] [Timezone], wobei T das Trennzeichen ist. Wenn keine explizite Zeitzone angegeben wird, wird UTC (Z) als Standard angenommen.

Zeitzone

Folgende Zeitzonenformate werden unterstützt:

  • +/-hh:mm

  • +/-HHmm

  • +/-HH

Das Vorhandensein einer Zeitzone in einer Datetime-Zeichenfolge ist optional. Falls der Zeitzonen-Offset 0 ist, kann Z anstelle des obigen Zeitzonen-Postfixes verwendet werden, um die UTC-Zeit anzugeben. Der unterstützte Bereich einer Zeitzone liegt zwischen -14:00 und + 14:00 Uhr.

Datum

Wenn keine Zeitzone vorhanden ist oder die Zeitzone UTC (Z) ist, lauten die unterstützten Datumsformate wie folgt:

Anmerkung

DDD bezieht sich auf ein Ordinaldatum, das für einen Tag des Jahres von 001 bis 365 steht (366 in Schaltjahren). 2024-002 steht beispielsweise für den 2. Januar 2024.

  • yyyy-MM-dd

  • yyyyMMdd

  • yyyy-MM

  • yyyyMM

  • yyyy-DDD

  • yyyyDDD

  • yyyy

Wenn eine andere Zeitzone als Z ausgewählt wird, sind die unterstützten Datumsformate auf die folgenden beschränkt:

  • yyyy-MM-dd

  • yyyy-DDD

  • yyyyDDD

Der unterstützte Datumsbereich reicht von 1400-01-01 bis 9999-12-31.

Zeit

Wenn keine Zeitzone vorhanden ist oder die Zeitzone UTC (Z) ist, werden folgende Zeitformate unterstützt:

  • HH:mm:ss.SSS

  • HH:mm:ss

  • HHmmss.SSS

  • HHmmss

  • HH:mm

  • HHmm

  • HH

Wenn eine andere Zeitzone als Z ausgewählt wird, sind die unterstützten Zeitformate auf die folgenden beschränkt:

  • HH:mm:ss

  • HH:mm:ss.SSS

Unterschiede bei der Semantik der Neptune-openCypher-Sprache

Neptune repräsentiert Knoten und Beziehung IDs als Zeichenketten und nicht als Ganzzahlen. Die ID entspricht der ID, die über den Datenloader bereitgestellt wird. Wenn es einen Namespace für die Spalte gibt, entspricht sie dem Namespace und der ID. Daher gibt die Funktion id eine Zeichenfolge statt einer Ganzzahl zurück.

Der Datentyp INTEGER ist auf 64 Bit begrenzt. Wenn Sie mittels der Funktion TOINTEGER größere Fließkomma- oder Zeichenfolgenwerte in eine Ganzzahl konvertieren, werden negative Werte zu LLONG_MIN und positive Werte zu LLONG_MAX verkürzt.

Zum Beispiel:

RETURN TOINTEGER(2^100) > 9223372036854775807 RETURN TOINTEGER(-1 * 2^100) > -9223372036854775808

Mehrwertige Eigenschaften

Obwohl OpenCypher CREATE keine mehrwertigen Eigenschaften erstellt, können sie in Daten vorkommen, die mit Gremlin (Neptune Database) erstellt wurden, oder beim Laden von Daten (Neptune Database und Neptune Analytics). Wenn Neptune openCypher eine Eigenschaft mit mehreren Werten findet, wird ein Wert zufällig ausgewählt, was zu einem nicht deterministischen Ergebnis führt.

DatenschutzNutzungsbedingungen für die WebsiteCookie-Einstellungen
© 2025, Amazon Web Services, Inc. oder Tochtergesellschaften. Alle Rechte vorbehalten.