SPARQL

Le langage de requête standard pour interroger des graphes RDF et le web sémantique

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
TypeRésultatCas 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.

DESCRIBE 
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 →