Aller au contenu

SPARQL Protocol and RDF Query Language/Le protocole SPARQL

Leçons de niveau 15
Une page de Wikiversité, la communauté pédagogique libre.
Début de la boite de navigation du chapitre
Le protocole SPARQL
Icône de la faculté
Chapitre no 4
Leçon : SPARQL Protocol and RDF Query Language
Chap. préc. :Modèle de données RDF
Chap. suiv. :Requêtes de lecture
fin de la boite de navigation du chapitre
En raison de limitations techniques, la typographie souhaitable du titre, « SPARQL : Le protocole SPARQL
SPARQL Protocol and RDF Query Language/Le protocole SPARQL
 », n'a pu être restituée correctement ci-dessus.

Dans ce chapitre, nous allons apprendre à envoyer des requêtes à une base de données qui répond à la recommandation SPARQL. Ainsi, dans les chapitres suivants, nous pourrons tester nos requêtes SPARQL immédiatement.

Protocole HTTP

[modifier | modifier le wikicode]

L'HyperText Transfer Protocol — littéralement « protocole de transfert hypertexte » —, plus connu sous l’abréviation HTTP, est un protocole de communication client-serveur développé pour le World Wide Web (ou W3C pour World Wide Web Consortium). HTTPS (avec S pour "secured", soit « sécurisé ») est la variante du HTTP "sécurisée" par l'usage des protocoles SSL ou TLS.

HTTP est un protocole de la couche application. Il peut fonctionner sur n’importe quelle connexion fiable. En pratique, on utilise le protocole TCP comme couche de transport. Un serveur HTTP utilise alors par défaut le port 80 (443 pour HTTPS).

Les clients HTTP les plus connus sont les navigateurs Web permettant à un utilisateur d'accéder à un serveur contenant les données. Il existe aussi des systèmes pour récupérer automatiquement le contenu d'un site, tels que les aspirateurs de site Web ou les robots d'indexation.

Ces clients se connectent à des serveurs HTTP tels qu'Apache HTTP Server, que nous installerons durant un TP.

La liaison entre le client et le serveur n’est pas toujours directe, mais, du point de vue du client HTTP, ces intermédiaires sont invisibles, à moins qu'une erreur ait lieu.

Dans le protocole HTTP, une méthode est une commande spécifiant un type de requête, c'est-à-dire qu'elle demande au serveur d'effectuer une action. En général, l'action concerne une ressource identifiée. Nous allons étudier ce que l’on nomme une ressource et lister les principales commandes.

Jusqu'à présent, une ressource est identifiée par une URL, qui suit le nom de la méthode HTTP. La notion d'URL a rapidement atteint ses limites et un nouveau standard est en train de le remplacer : IRI (Internationalized Resource Identifier).

Localisateur uniforme de ressource (URL)
[modifier | modifier le wikicode]


Début de l'exemple
Fin de l'exemple


Identificateur de ressource internationalisé (IRI)
[modifier | modifier le wikicode]


Début de l'exemple
Fin de l'exemple



Liste des principales commandes HTTP :

GET
C'est la méthode la plus courante pour demander une ressource. Une requête GET est sans effet sur la ressource, il doit être possible de répéter la requête sans effet.
POST
Cette méthode doit être utilisée pour soumettre des données, en vue d'un traitement, à une ressource (typiquement depuis un formulaire HTML) ; elle est souvent utilisée aussi pour la création et la mise à jour de ressources.
PUT
Cette méthode permet de remplacer ou d'ajouter une ressource sur le serveur. L'URL fournie est celle de la ressource en question.
DELETE
Cette méthode permet de supprimer une ressource du serveur.

Ces commandes sont souvent détournées de leur mission initiale. Par exemple, un développeur peut utiliser la méthode GET pour envoyer des informations à un serveur et pourra implémenter un traitement de mise à jour des données du serveur en cas de réception de cette commande GET.

Codes de statut HTTP

[modifier | modifier le wikicode]

La réponse du serveur à une commande contient le code de statut HTTP (Status code)

Voici la liste des plus courants :

Code Message Signification
2xx

Succès

200 OK Requête traitée avec succès
3xx

Redirection

301 Moved Permanently Document déplacé de façon permanente
302 Found Document déplacé de façon temporaire
303 See Other La réponse à cette requête est ailleurs
4xx

Erreur du client

400 Bad Request La syntaxe de la requête est erronée
401 Unauthorized Une authentification est nécessaire pour accéder à la ressource
403 Forbidden L’authentification est refusée. Contrairement à l’erreur 401, aucune demande d’authentification ne sera faite
404 Not Found Document non trouvé
5xx

Erreur du Serveur

500 Internal Server Error Erreur interne du serveur

Exemple de session HTTP

[modifier | modifier le wikicode]

Voici un exemple de conversation entre un client HTTP et un serveur HTTP www.example.com via le port 80.

 GET /index.html HTTP/1.1
 Host: www.example.com

Une requête respecte un certain nombre de retours à la ligne et contient la version du protocole, ici HTTP/1.1, la commande, ici GET, la destination, ici www.example.com, et le paramètre de la commande, ici index.html.

Voici la réponse que l’on obtient si tout se passe bien entre notre client et le serveur.

 HTTP/1.1 200 OK
 Date: Mon, 23 May 2005 22:38:34 GMT
 Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)
 Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
 ETag: "3f80f-1b6-3e1cb03b"
 Accept-Ranges: bytes
 Content-Length: 438
 Connection: close
 Content-Type: text/html; charset=UTF-8

 <HTML>
 <HEAD>
 <TITLE>Example</TITLE>
  ...

La réponse se compose d'un entête et du message.

L'entête se compose :

La première ligne donne le code de statut HTTP
200 dans ce cas, c'est-à-dire que le serveur comprend la requête et vous transmet le résultat.
Date
Moment auquel le message est généré.
Server
Indique quel modèle de serveur HTTP répond à la requête.
Last-Modified
Indique la date de dernière modification de la ressource.
ETag (entity tag)
Numéro de version de la page dans le cache du serveur ; permet aux navigateurs Web de gérer leur mémoire cache.
Accept-Ranges
Méthode pour récupérer la ressource.
Content-Length
Indique la taille en octets de la ressource.
Content-Type
Indique le type MIME de la ressource.

Le message contient ensuite une page HTML, mais cela dépend de la requête envoyée.

Nous allons étudier, dans la partie suivante, les différentes commandes HTTP utilisables pour un serveur SPARQL 1.0 et ses réponses.

Protocole SPARQL

[modifier | modifier le wikicode]

Protocole de lecture

[modifier | modifier le wikicode]
Adresse type d'un service SPARQL
[modifier | modifier le wikicode]


Paramètres d'une requête de lecture
[modifier | modifier le wikicode]
Commandes HTTP pour envoyer une requête de lecture
[modifier | modifier le wikicode]


Début de l'exemple
Fin de l'exemple


Début de l'exemple
Fin de l'exemple


La réponse d'une requête prend la forme d'un "SPARQL result" (tableau de résultat) ou le format d'un graphe RDF.

  • La forme "SPARQL result" peut prendre le format XML ou JSON (ou texte avec tabulation, en fonction des logiciels)
  • La forme graphe RDF peut prendre le format XML ou Turtle.

SPARQL adapte le format de sortie en fonction du type de requêtes de lecture.


Format SPARQL result XML
[modifier | modifier le wikicode]
Début de l'exemple
Fin de l'exemple


Début de l'exemple
Fin de l'exemple


Format SPARQL result JSON
[modifier | modifier le wikicode]
Début de l'exemple
Fin de l'exemple



Format graphe RDF XML
[modifier | modifier le wikicode]
Début de l'exemple
Fin de l'exemple


Format graphe RDF Turtle
[modifier | modifier le wikicode]
Début de l'exemple
Fin de l'exemple


Protocole d'écriture

[modifier | modifier le wikicode]
Adresse type d'un service SPARQL Update
[modifier | modifier le wikicode]


Paramètres d'une requête d'écriture
[modifier | modifier le wikicode]


Commandes HTTP pour faire une requête d'écriture
[modifier | modifier le wikicode]


Début de l'exemple
Fin de l'exemple


Pour savoir, si une requête c’est bien déroulée, on lit le code de statut HTTP, qui doit être égal à 200.

En fonction des implémentations, des messages d'erreurs peuvent être envoyés par le serveur.