Utilisation du protocole HTTP SPARQL 1.1 Graph Store (GSP) dans Amazon Neptune - Amazon Neptune

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation du protocole HTTP SPARQL 1.1 Graph Store (GSP) dans Amazon Neptune

Dans la recommandation du protocole HTTP SPARQL 1.1 Graph Store, le W3C a défini un protocole HTTP pour gérer les graphes RDF. Il définit les opérations permettant de supprimer, de créer et de remplacer le contenu d'un graphe RDF ainsi que d'ajouter des instructions RDF au contenu existant.

Le protocole Graph Store (GSP) fournit un moyen pratique de manipuler l'intégralité du graphe sans avoir à écrire de requêtes SPARQL complexes.

À partir de la Sortie : 1.0.5.0 (27/07/2021), Neptune prend pleinement en charge ce protocole.

Le point de terminaison du protocole Graph Store (GSP) est le suivant :

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

Pour accéder au graphe par défaut avec le protocole GPS, utilisez :

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

Pour accéder à un graphe nommé avec le protocole GPS, utilisez :

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

Détails particuliers de la mise en œuvre Neptune du protocole GSP

Neptune met pleinement en œuvre la recommandation du W3C qui définit le protocole GPS. Cependant, il existe quelques situations que cette spécification ne couvre pas.

L'un d'entre elles est le cas où une demande PUT ou POST spécifie dans le corps de la demande un ou plusieurs graphes nommés qui diffèrent du graphe spécifié par l'URL de la demande. Cela ne peut se produire que lorsque le format RDF du corps de la requête prend en charge les graphes nommés, par exemple en utilisant Content-Type: application/n-quads ou Content-Type: application/trig.

Dans ce cas, Neptune ajoute ou met à jour tous les graphes nommés présents dans le corps, ainsi que le graphe nommé spécifié dans l'URL.

Supposons, par exemple, qu'en partant d'une base de données vide, vous envoyiez une demande PUT pour effectuer l'upsert de votes dans trois graphes. L'un, nomméurn:votes, contient tous les votes pour toutes les années électorales. Les deux autres, nommés urn:votes:2005 eturn:votes:2019, contiennent les votes relatifs à des années électorales spécifiques. La demande et sa charge utile sont comme suit :

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>

Une fois la demande exécutée, les données de la base de données se présentent comme suit :

<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>

Une autre situation ambiguë est celle où plusieurs graphes sont spécifiés dans l'URL de la demande elle-même, en utilisant PUT, POST, GET ou DELETE. Par exemple :

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

Ou:

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

Dans ce cas, Neptune renvoie un code HTTP 400 avec un message indiquant qu'un seul graphe peut être spécifié dans l'URL de la demande.