01
📖 Qu'est-ce que SPARQL ?
SPARQL (prononcé "sparkle") est le langage de requête standard du W3C pour interroger des graphes RDF. C'est l'équivalent du SQL pour les bases de données relationnelles, mais spécialisé pour les graphes de connaissances.
💡 À retenir : SPARQL permet d'extraire des informations d'un graphe RDF en utilisant des motifs de triplets. C'est le langage universel pour interroger le web sémantique.
Avec SPARQL, vous pouvez :
- ✅ Extraire des données avec SELECT
- ✅ Construire de nouveaux graphes avec CONSTRUCT
- ✅ Tester l'existence de motifs avec ASK
- ✅ Décrire des ressources avec DESCRIBE
- ✅ Appliquer des filtres, des agrégations et des tris
02
🔍 Les 4 types de requêtes SPARQL
SELECT
CONSTRUCT
ASK
DESCRIBE
| Type | Résultat | Cas d'usage |
| SELECT |
Tableau de valeurs (comme SQL) |
Extraire des données spécifiques |
| CONSTRUCT |
Nouveau graphe RDF |
Transformer ou extraire des triplets |
| ASK |
Booléen (true/false) |
Vérifier l'existence de données |
| DESCRIBE |
Graphe RDF |
Obtenir la description d'une ressource |
03
📊 SELECT - Extraire des données
La requête SELECT est la plus utilisée. Elle retourne un tableau de résultats, similaire à SQL.
Syntaxe de base
SELECT ?variable1 ?variable2
WHERE {
?sujet ?predicat ?objet .
# Motifs de triplets
}
Exemple : Tous les orateurs
PREFIX schema:
PREFIX foaf:
SELECT ?nom ?dateNaissance
WHERE {
?orateur a foaf:Person ;
foaf:name ?nom ;
schema:birthDate ?dateNaissance .
}
ORDER BY ?dateNaissance
📝 Résultat :
| nom | dateNaissance |
| "Charles de Gaulle" | "1890-11-22" |
| "Victor Hugo" | "1802-02-26" |
04
🏗️ CONSTRUCT - Créer des graphes
CONSTRUCT permet de générer un nouveau graphe RDF à partir des motifs trouvés.
PREFIX schema:
CONSTRUCT {
?orateur schema:name ?nom .
}
WHERE {
?orateur a schema:Person ;
schema:name ?nom .
}
💡 Astuce : CONSTRUCT est idéal pour transformer un graphe, extraire un sous-graphe ou préparer des données pour l'export.
05
❓ ASK et DESCRIBE
ASK - Tester l'existence
Retourne true si le motif existe, false sinon.
ASK {
?orateur foaf:name "Victor Hugo" .
}
DESCRIBE - Décrire une ressource
Retourne un graphe contenant les informations sur une ressource.
06
🎯 Filtres et conditions avancées
FILTER - Filtrer les résultats
SELECT ?nom ?date
WHERE {
?orateur foaf:name ?nom ;
schema:birthDate ?date .
FILTER(?date > "1850-01-01"^^xsd:date)
}
OPTIONAL - Données optionnelles
SELECT ?nom ?discours
WHERE {
?orateur foaf:name ?nom .
OPTIONAL { ?orateur ex:aPrononce ?discours }
}
Aggrégations (GROUP BY, COUNT, SUM)
SELECT ?orateur COUNT(?discours) AS ?nbDiscours
WHERE {
?orateur ex:aPrononce ?discours .
}
GROUP BY ?orateur
ORDER BY DESC(?nbDiscours)
⚠️ Attention : Les filtres sur des dates ou nombres nécessitent de spécifier le type de données (xsd:date, xsd:integer).
07
🎯 Exemples concrets de requêtes SPARQL
1. Trouver les discours d'un orateur
PREFIX schema:
SELECT ?titre ?date
WHERE {
schema:author ?discours .
?discours schema:title ?titre ;
schema:date ?date .
}
ORDER BY ?date
2. Discours contenant un mot-clé
SELECT ?titre ?contenu
WHERE {
?discours schema:title ?titre ;
schema:content ?contenu .
FILTER(CONTAINS(?contenu, "résistance"))
}
3. Graphe de connaissances : relation à 2 sauts
SELECT ?orateur1 ?orateur2 ?discoursCommun
WHERE {
?orateur1 ex:aPrononce ?discoursCommun .
?orateur2 ex:aPrononce ?discoursCommun .
FILTER(?orateur1 != ?orateur2)
}
🚀 Chez Le Monde Sémantique
Nous utilisons SPARQL pour interroger notre graphe de connaissances et alimenter notre API sémantique.
Découvrir notre API →