« SPARQL Protocol and RDF Query Language/Le protocole SPARQL » : différence entre les versions

Contenu supprimé Contenu ajouté
Aucun résumé des modifications
m Robot : Remplacement de texte automatisé (-\n(==={0,3})(?: *)([^\n=]+)(?: *)\1(?: *)\n +\n\1 \2 \1\n)
Ligne 10 :
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 ==
L'[[w:HyperText Transfer Protocol|HyperText Transfer Protocol]] — littéralement « protocole de transfert [[w:hypertexte|hypertexte]] » —, plus connu sous l’[[w:abréviation|abréviation]] '''HTTP''', est un [[w:protocole de communication|protocole de communication]] [[w:client-serveur|client-serveur]] développé pour le [[w:World Wide Web|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 [[w:Protocole de communication|protocoles]] [[w:Transport Layer Security|SSL]] ou [[w:Transport Layer Security|TLS]].
 
Ligne 21 :
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.
 
=== Requêtes ===
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.
 
==== Ressources ====
Jusqu'à présent, une ressource est identifiée par une [[w:Uniform Resource Locator|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) =====
{{Définition|titre=Localisateur uniforme de ressource (URL)|contenu=
Une URL (Uniform Resource Locator) est une chaîne de caractères '''ASCII''' qui spécifie où une ressource connue est disponible sur Internet et indique le mécanisme pour l'atteindre.
Ligne 36 :
:git://github.com/BorderCloud/4store-php.git est une URL pour atteindre les sources de 4store-php via le protocole git}}
 
===== Identificateur de ressource internationalisé (IRI) =====
{{Définition|titre=Identificateur de ressource internationalisé (IRI)|contenu=
Un IRI (Internationalized Resource Identifier) est une chaîne de caractères (ASCII ou non) qui spécifie où une ressource connue est disponible sur Internet et indique le mécanisme pour l'atteindre.
Ligne 49 :
L'architecture HTTP ne supporte pas encore les IRI, mais l'implémentation est en cours. Cependant, les nouveaux logiciels comme les serveurs SPARQL ne travaillent qu'avec des IRI (et, donc, supportent les URL).}}
 
==== Commandes ====
Liste des principales '''commandes''' HTTP :
;<code>GET</code>: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.
Ligne 58 :
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 ===
La réponse du serveur à une commande contient le code de [[w:Liste des codes HTTP|statut HTTP]] (Status code)
 
Ligne 96 :
|}
 
=== Exemple de session HTTP ===
Voici un exemple de conversation entre un client HTTP et un serveur HTTP [[w:example.com|www.example.com]] via le port 80.
 
==== Requête ====
<pre>
GET /index.html HTTP/1.1
Ligne 107 :
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'''.
 
==== Réponse ====
Voici la réponse que l’on obtient si tout se passe bien entre notre client et le serveur.
<pre>
Ligne 142 :
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 ==
=== Protocole de lecture ===
 
==== Requête ====
===== Adresse type d'un service SPARQL =====
{{Définition|titre=Adresse type d'un service SPARQL|contenu=
Ligne 158 :
Les services SPARQL qui utilisent de vieux logiciels, ont comme chemin : /sparql et non /sparql/
}}
===== Paramètres d'une requête de lecture =====
{{Définition|titre=Paramètres d'une requête de lecture|contenu=
;query : paramètre obligatoire, passe la requête SPARQL au service
Ligne 167 :
Nous étudierons dans les leçons suivantes à quoi servent ces paramètres.
}}
===== Commandes HTTP pour envoyer une requête de lecture =====
{{Définition|titre=Commandes HTTP pour faire une requête de lecture|contenu=
'''On peut faire une requête de lecture avec la commande GET ou POST.'''
Ligne 198 :
}}
 
==== Réponse ====
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.
 
Ligne 214 :
}}
 
===== Format SPARQL result XML =====
{{Exemple|titre=Exemple de session avec une requête SELECT|contenu=
Voici un exemple de requête SELECT :
Ligne 299 :
}}
 
===== Format SPARQL result JSON =====
{{Exemple|titre=Exemple de session avec une requête SELECT et en sortie du JSON|contenu=
Voici un exemple de requête SELECT :
Ligne 356 :
}}
 
===== Format graphe RDF XML =====
{{Exemple|titre=Exemple de session avec une requête DESCRIBE|contenu=
Voici un exemple de requête '''DESCRIBE''' :
Ligne 397 :
}}
 
===== Format graphe RDF Turtle =====
{{Exemple|titre=Exemple de session avec une requête CONSTRUCT avec en sortie du Turtle|contenu=
Voici un exemple de requête '''CONSTRUCT''' :
Ligne 442 :
}}
 
=== Protocole d'écriture ===
==== Requête ====
===== Adresse type d'un service SPARQL Update =====
{{Définition|titre=Adresse type d'un service SPARQL|contenu=
'''<nowiki>http://IP_ou_NOM_DE_DOMAINE/update/</nowiki>'''
Ligne 453 :
}}
 
===== Paramètres d'une requête d'écriture =====
{{Définition|titre=Paramètres d'une requête d'écriture|contenu=
;update : paramètre obligatoire, passe la requête SPARQL au service
Ligne 460 :
}}
 
===== Commandes HTTP pour faire une requête d'écriture =====
{{Définition|titre=Commandes HTTP pour faire une requête d'écriture|contenu=
'''On utilise la commande POST pour écrire des données.'''
Ligne 477 :
}}
 
==== Réponse ====
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.
 
== Références ==
* [http://www.w3.org/TR/sparql11-protocol/ SPARQL 1.1 Protocol for RDF (W3C)]
* [http://www.w3.org/TR/rdf-sparql-XMLres/ SPARQL Query Results XML Format (W3C)]
* [http://www.w3.org/TR/rdf-sparql-json-res/ Serializing SPARQL Query Results in JSON (W3C)]
 
== Voir aussi ==
* [https://jena.apache.org/tutorials/sparql_query1.html "Hello world"] en SPARQL