« SPARQL Protocol and RDF Query Language/Requêtes d'écriture » : différence entre les versions

Contenu supprimé Contenu ajouté
Aucun résumé des modifications
Ligne 10 :
}}
 
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é enfin le moyen d'enalimenter faireune sansbase écrirede dudonnées RDF en temps réel sans RDF/XML ou même 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 roadmap du Web Sémantique''' ainsi 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, uneun couchesystème d'intégritéimplication va apparaître pour vous aider à respecter ce critère d'interopérabilité. En attendant dans ce courschapitre, nous vous donnons les moyens de faire les choses comme vous le souhaitez avec vos propres prédicats mais si vous ne voulez pas tout refaire dans 2 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 TP de cette leçonTPs) et qui sont aussi définies dans la recommandation SPARQL 1.1 (la personne qui coordonne la recommandation de SPARQL 1.1 et 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.
 
{{Remarque|contenu=
Ligne 30 :
}}
 
Les fonctions qui fonctionnent pour le moment sont les principales :
* L'insertion de triplets
* La suppression de triplets
 
Il existe d'autres fonctions mais différentes d'un logiciel à un autre. Nous étudierons ici que les requêtes "INSERT DATA" et "DELETE DATA". Dans les TP, vous pourrez voir d'autres fonctions et apprendre à les utiliser à travers leurs API PHP disponibles en PHP.
 
== INSERT DATA ==
 
=== Syntaxe ===
Une requête d'insertion est encomposé de 3 parties:
*les préfixes
*l'adresse du graphe de destination
Ligne 75 :
} }</pre>
 
Voici le graphe http://example/bookStore avant :d'appliquer la précédente requête
<pre># Graph: http://example/bookStore
@prefix dc: <http://purl.org/dc/elements/1.1/> .
Ligne 81 :
<http://example/book2> dc:title "SPARQL is cooler than SQL" .</pre>
 
DansVoilà cele graphe après l'insertion :
<pre># Graph: http://example/bookStore
@prefix dc: <http://purl.org/dc/elements/1.1/> .
Ligne 120 :
=== Exemples ===
==== Simple suppression de triplets ====
Ici nous allons supprimonssupprimer deux triples. Le graphe qui contient les prix des livres est toujours : http://example/bookStore
 
On appliquera ainsi la requête SPARQL :
Ligne 132 :
}}</pre>
 
Voici le graphe http://example/bookStore avant :la suppression
<pre># Graph: http://example/bookStore
@prefix dc: <http://purl.org/dc/elements/1.1/> .
Ligne 141 :
<http://example/book2> dc:creator "Edmund Wells" .</pre>
 
Voici ce graphe après la :suppression
<pre># Graph: http://example/bookStore
@prefix dc: <http://purl.org/dc/elements/1.1/> .
Ligne 149 :
 
==== Suppression de triplets en fonction d'un masque ====
Ici comme exemple, nous allons retirer un livre de notre base de donnée. Le graphe qui contient les des livres est toujours : http://example/bookStore
Nous savons que l'IRIla référence du livre à retirer est <nowiki>http://example/book2</nowiki>.
 
Nous allons utiliséutiliser des variables pour représenter tous les triplets que nous désirons supprimer.
 
On appliquera ainsi la requête SPARQL :
Ligne 163 :
}}</pre>
 
Voici le graphe http://example/bookStore avant la suppression :
<pre># Graph: http://example/bookStore
@prefix dc: <http://purl.org/dc/elements/1.1/> .
Ligne 177 :
<http://example/book3> dc:title "SPARQL 1.1 Tutorial" .</pre>
 
Voici ce graphe après la suppression :
<pre># Graph: http://example/bookStore
@prefix dc: <http://purl.org/dc/elements/1.1/> .
Ligne 195 :
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 savonsn'avons que l'IRIla référence du livre est <nowiki>http://example/book2</nowiki> et les données du formulaire.
 
On appliquera ainsi la requête SPARQL :