Verwenden des SPARQL 1.1-Graph-Store-Protokolls (GSP) über HTTP 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.

Verwenden des SPARQL 1.1-Graph-Store-Protokolls (GSP) über HTTP in Amazon Neptune

In der Empfehlung SPARQL 1.1 Graph Store HTTP Protocol hat das W3C ein HTTP-Protokoll für die Verwaltung von RDF-Diagrammen definiert. Es definiert Operationen für die Entfernung, Erstellung und Ersetzung von RDF-Diagramminhalten und die Hinzufügung von RDF-Anweisungen zu vorhandenem Inhalten.

Das Graph-Store-Protokoll (GSP) ermöglicht die Bearbeitung eines vollständigen Diagramms, ohne komplexe SPARQL-Abfragen schreiben zu müssen.

Ab Release: 1.0.5.0 (27.07.2021) unterstützt Neptune dieses Protokoll vollständig.

Der Endpunkt für das Graph-Store-Protokoll (GSP) ist:

https://your-neptune-cluster:port/sparql/gsp/

Um über GSP auf das Standarddiagramm zuzugreifen, verwenden Sie:

https://your-neptune-cluster:port/sparql/gsp/?default

Um über GSP auf ein benanntes Diagramm zuzugreifen, verwenden Sie:

https://your-neptune-cluster:port/sparql/gsp/?graph=named-graph-URI

Besondere Details der Neptune-GSP-Implementierung

Neptune setzt die W3C-Empfehlung mit der GSP-Definition vollständig um. Es gibt jedoch einige Situationen, die die Spezifikation nicht abdeckt.

Ein solcher Fall tritt ein, wenn eine PUT- oder POST-Anforderung ein oder mehrere benannte Diagramme im Anforderungstext spezifiziert, die sich vom in der Anforderungs-URL angegebenen Diagramm unterscheiden. Dies ist nur möglich, wenn das RDF-Format des Anforderungstexts benannte Graphen unterstützt, z. B. die Verwendung von Content-Type: application/n-quads oderContent-Type: application/trig.

In diesem Fall fügt Neptune alle im Text benannten Diagramme und das in der URL angegebene benannte Diagramm hinzu oder aktualisiert sie.

Angenommen, Sie beginnen mit einer leeren Datenbank und senden eine PUT-Anforderung, um ein Upsert für Stimmen in drei Diagramme auszuführen. Das Diagramm mit dem Namen urn:votes enthält alle Stimmen aus allen Wahljahren. Die beiden anderen Diagramme mit den Namen urn:votes:2005 und urn:votes:2019 enthalten Stimmen aus bestimmten Wahljahren. Die Anforderung und ihre Nutzlast sehen wie folgt aus:

PUT "http://your-Neptune-cluster:port/sparql/gsp/?graph=urn:votes" Host: example.com Content-Type: application/n-quads PAYLOAD: <urn:JohnDoe> <urn:votedFor> <urn:Labour> <urn:votes:2005> <urn:JohnDoe> <urn:votedFor> <urn:Conservative> <urn:votes:2019> <urn:JaneSmith> <urn:votedFor> <urn:LiberalDemocrats> <urn:votes:2005> <urn:JaneSmith> <urn:votedFor> <urn:Conservative> <urn:votes:2019>

Nach der Ausführung der Anforderung sehen die Daten in der Datenbank wie folgt aus:

<urn:JohnDoe> <urn:votedFor> <urn:Labour> <urn:votes:2005> <urn:JohnDoe> <urn:votedFor> <urn:Conservative> <urn:votes:2019> <urn:JaneSmith> <urn:votedFor> <urn:LiberalDemocrats> <urn:votes:2005> <urn:JaneSmith> <urn:votedFor> <urn:Conservative> <urn:votes:2019> <urn:JohnDoe> <urn:votedFor> <urn:Labour> <urn:votes> <urn:JohnDoe> <urn:votedFor> <urn:Conservative> <urn:votes> <urn:JaneSmith> <urn:votedFor> <urn:LiberalDemocrats> <urn:votes> <urn:JaneSmith> <urn:votedFor> <urn:Conservative> <urn:votes>

Eine weitere mehrdeutige Situation entsteht, wenn in der Anforderungs-URL (mit PUT, POST, GET oder DELETE) mehr als ein Diagramm angegeben ist. Zum Beispiel:

POST "http://your-Neptune-cluster:port/sparql/gsp/?graph=urn:votes:2005&graph=urn:votes:2019"

Oder:

GET "http://your-Neptune-cluster:port/sparql/gsp/?default&graph=urn:votes:2019"

In diesem Fall gibt Neptune HTTP 400 mit der Meldung zurück, dass in der Anforderungs-URL nur ein Diagramm angegeben werden darf.