Différences entre les versions de « SPARQL Protocol and RDF Query Language/Requêtes d'écriture »

m
Relecture
m (Relecture)
{{ébauche informatique}}
{{Chapitre
| idfaculté = informatique
| titre_leçon = SPARQL
| numéro = 6
| niveau = 130
| précédent = [[../Requêtes de lecture/]]
| suivant = [[../Requêtes de découverte/]]
}}
 
Dans la première recommandation de SPARQL (1.0) en 2008, il n'était pas encore question de faire des requêtes en écriture. Cependant, dès 2008, des implémentations commencent à apparaître pour écrire des triplets à travers une requête comme une requête SQL et, dès lors, les développeurs qui désiraient faire des services Linked Open Data, ont trouvétrouvent enfin le moyen d'alimenter une base de données RDF en temps réel sans RDF/XML, ouvoire mêmesans définir une ontologie complexe.
 
Cependant, il faut garder à l'esprit que '''l’interopérabilité est l'objectif final de SPARQL pour faire avancer la roadmapfeuille de route du Web Sémantique'''. ainsiAinsi, l'utilisation de prédicats fantaisistes, c'est-à-dire d'ontologies fantaisistes, n'est pas conseillée à terme. Dans les prochains mois ou années, un système d'implication va apparaître pour vous aider à respecter ce critère d'interopérabilité. En attendant, dans ce chapitre, nous vous donnons les moyens de faire les chosestravailler comme vous le souhaitez avec vos propres prédicats, mais, si vous ne voulez pas tout refaire dans 2deux ans, gardez à l'esprit qu'un bon prédicat est un prédicat qui existe déjà dans une ontologie documentée (et, si possible, simple).
 
Nous allons décrire ici les requêtes qui fonctionnent dans le logiciel 4Store (utilisé dans les TPsTP) et qui sont aussi définies dans la recommandation SPARQL 1.1 (la personne qui coordonne la recommandation de SPARQL 1.1 etest aussi le principal développeur de 4Store).
 
== Un silo de données ==
Un silo de données, ou base de données RDF (etc.), est un conteneur de graphes nommés RDF géré par un seul service. Un silo contient un graphe (sans nom) par défaut et zéro ou plusieurs emplacements nommés tenant ») pour contenir des [[w:Graphe nommé|graphes nommés]]. Un silo a un service SPARQL (« endpoint SPARQL » en anglais) qui traite les requêtes. Grâce à SPARQL 1.1, on peut maintenant spécifier dans une requête le graphe auquel doit s'appliquer cette requête. Si une requête ne contient pas de graphe identifié, la requête s'applique au graphe par défaut.
 
Un silo de données ou base de données RDF (etc.) est un conteneur de graphes nommés RDF géré par un seul service. Un silo contient un graphe (sans nom) par défaut et zéro ou plusieurs emplacements nommés tenant pour contenir des [[w:Graphe nommé|graphes nommés]]. Un silo a un service SPARQL (endpoint SPARQL en anglais) qui traite les requêtes. Grâce à SPARQL 1.1, on peut maintenant spécifier dans une requête le graphe auquel doit s'appliquer cette requête. Si une requête ne contient pas de graphe identifié, la requête s'applique au graphe par défaut.
 
{{Remarque|contenu=
Un graphe par défaut est implémenté de manière différente dans chaque logiciel. Il existe encore des subtilités. Il vaut mieux toujours travailler dans des graphes nommés, cela vous évitera de très mauvaisemauvaises surprisesurprises.
}}
 
 
{{Remarque|contenu=
SPARQL 1.1 n'est pas encore intégralement implémenté. Les développeurs commencent par les fonctions les plus simples et n'ont souvent pas encore développé les requêtes d'administration de graphes. Ainsi, pour supprimer un graphe, il suffit juste de supprimer tous les triplets d'un graphe pour supprimer ce graphe ou; il suffit d'insérer au moins un triplet dans un graphe pour créer ce nouveau graphe.
}}
 
Les fonctions qui fonctionnentutilisables pour le moment sont :
* L'insertion de triplets
* La suppression de triplets
 
Il existe d'autres fonctions, mais elles sont différentes d'un logiciel à un autre. Nous étudierons ici que les requêtes "INSERT DATA" et "DELETE DATA". Dans les TP, vous pourrez voirdécouvrir d'autres fonctions et apprendre à les utiliser à travers leurs API disponibles en PHP.
 
== INSERT DATA ==
 
=== Syntaxe ===
Une requête d'insertion est composécomposée de 3 parties:
*les préfixes
*l'adresse du graphe de destination
 
=== Syntaxe ===
Une requête de suppression est encomposée de 3 parties :
*les préfixes
*l'adresse du graphe où se trouvetrouvent les triplets à supprimer
*les triplets à supprimer ou le masque des triplets à supprimer
<pre>
=== Exemples ===
==== Simple suppression de triplets ====
Ici, nous allons supprimer deux triplestriplets. Le graphe qui contient les prix des livres est toujours : http://example/bookStore
 
On appliquera ainsi la requête SPARQL :
 
==== Suppression de triplets en fonction d'un masque ====
Ici, comme exemple, nous allons retirer un livre de notre base de donnéedonnées. Le graphe qui contient des livres est toujours : http://example/bookStore
Nous savons que la référence du livre à retirer est <nowiki>http://example/book2</nowiki>.
 
<!--=== Exercice ===-->
 
== Et la mise- à- jour des données : UPDATE ? ==
 
La mise à jour d'une donnée est en réalité pour le moment une requête DELETE suivie d'une requête INSERT.
Nous allons mettre à jour un livre de notre base de données. C'est un simple formulaire Web qui va mettre à jour sa fiche.
 
Le graphe qui contient les des livres est toujours : http://example/bookStore
 
Nous n'avons que la référence du livre est <nowiki>http://example/book2</nowiki> et les données du formulaire.
 
On appliquera ainsi la requête SPARQL :
700

modifications