SPARQL
Guide des données liées à CORDIS
Qu’est-ce que les données liées?
Les données liées (LOD pour «Linked Open Data») sont une combinaison de données liées et de données ouvertes. Les données liées font référence à des données lisibles par machine et partagées sur le web, tandis que les données ouvertes permettent d’utiliser et de distribuer librement les données.
Les données liées sont une méthode d’accès au web décentralisé de manière centralisée. Elles fournissent aux utilisateurs les moyens et les services nécessaires pour découvrir les informations les plus pertinentes et les plus exactes. En combinant les principes de conception des données liées avec des données structurées lisibles par machine, les LOD peuvent offrir des informations plus utiles, reliées à d’autres données pour une découverte plus approfondie.
Les principes FAIR (trouvable, accessible, interopérable, réutilisable) et le schéma de déploiement 5 étoiles pour les données ouvertes, tel que décrit par Tim Berners-Lee, garantissent que les données peuvent être librement partagées et distribuées sur le web.
Dans le cadre de Linked Open Data initiative, le format de description des ressources (FDR) est le principal langage et la principale technologie permettant d’exprimer et de publier des informations sur les données, ainsi que de les relier entre elles sur le web. Le FDR permet de structurer les données sous forme de triples sujet-prédicat-objet.
Graphe de connaissances de l’EURIO
Un graphe de connaissances représente des entités du monde réel (par exemple, des projets, des organisations, des résultats de projets tels que des délivrables) ainsi que leurs relations (par exemple, la participation d’une organisation à un projet) et leurs attributs (par exemple, la date de lancement d’un projet ou le numéro de TVA d’une organisation) sous la forme d’un réseau interconnecté composé de nœuds et d’arêtes.
Les graphes de connaissances fournissent une représentation structurée et lisible par une machine des données, favorisant l’intégration, la liaison et la réutilisation des connaissances. Le graphe de connaissances EURIO utilise le paradigme de représentation des graphes de connaissances pour transformer les données CORDIS en données interconnectées lisibles par une machine.
Les données sont publiées sous la forme de triples format de description des ressources (FDR), conformément aux principes des données liées. La signification des entités décrites est formellement définie par l’ontologie européenne de recherche d’information (EURIO). Le graphe de connaissances EURIO qui en résulte est un réseau de triples FDR interconnectés qui encodent les données CORDIS d’origine. Il peut être interrogé à l’aide de SPARQL, le langage standardisé pour l’extraction et la manipulation de données au format FDR.
L’ontologie EURIO
Afin d’améliorer la visibilité, la réutilisation et l’accessibilité du contenu de CORDIS et de renforcer son interopérabilité sémantique, l’Office des publications de la Commission européenne a développé l’ontologie européenne de recherche d’information (EURIO). EURIO est un modèle conceptuel de données qui s’appuie sur un réseau d’ontologies existantes (par exemple, schema.org, DINGO, etc.) et de données de référence (par exemple, la taxonomie EuroSciVoc, la liste des codes NUTS, etc.). Elle permet de décrire, entre autres, les informations administratives associées aux projets de recherche et à leurs subventions, telles que les dates de lancement et de fin, le coût total et le financement reçu, les informations sur les organisations et les personnes impliquées, ainsi que les résultats produits par le projet, tels que la liste des auteurs, le titre et les informations sur la revue d’une publication.
EURIO utilise le langage d’ontologies web OWL 2 pour définir formellement la signification des termes du domaine utilisés pour décrire les entités CORDIS (par exemple, les projets, les organisations, etc.), leurs attributs (par exemple, le titre, l’acronyme, le nom légal, etc.) et les interrelations (par exemple, la relation entre un projet et les organisations participantes, etc.).
L’ontologie EURIO et sa documentation sont accessibles sur le site web des Vocabulaires de l’UE.
Utilisation de SPARQL pour interroger le graphe de connaissances EURIO
SPARQL est un langage de requête standard permettant d’extraire et de manipuler des données stockées au format FDR. Son développement et son évolution sont supervisés par le groupe de travail SPARQL au sein du W3C et il est entièrement documenté et accessible au public.
Les requêtes SPARQL sont basées sur la correspondance de motifs de graphes, c’est-à-dire la correspondance d’ensembles de motifs triples formant des conditions conjonctives (AND) ou disjonctives (OR). Les motifs triples sont semblables aux triples FDR, à ceci près que le sujet, le prédicat et l’objet peuvent être des variables. Un modèle de graphe de requête SPARQL donné correspond à un sous-graphe des données FDR interrogées lorsque des termes FDR de ce sous-graphe peuvent être substitués aux variables.
Par exemple, la requête SPARQL pour trouver la date de lancement du projet H2020 «Knowledge-Based Information Agent with Social Competence and Human Interaction Capabilities» dans le graphe de connaissances EURIO serait la suivante:
PREFIX eurio:<http://data.europa.eu/s66#>
SELECT DISTINCT ?startDate
WHERE
{
?project a eurio:Project.
?project eurio:title "Knowledge-Based Information Agent with Social Competence and Human Interaction Capabilities" .
?project eurio:startDate ?startDate .
}
Comme indiqué, l’exécution de cette requête, en utilisant dans notre exemple l’interface SPARQL de Virtuoso, nous permet d’obtenir la date de lancement du projet en question, c’est-à-dire le 1er mars 2015.
Le mot-clé PREFIX désigne une étiquette préfixe (c’est-à-dire une abréviation) à un IRI qui dénote l’espace de noms des termes utilisés dans la requête; dans l’exemple en cours, nous avons utilisé les termes «Project», «title» et «startDate» qui sont tous définis dans l’ontologie EURIO dont l’IRI est http://data.europa.eu/s66#.
La requête se compose de deux parties:
- la clause SELECT qui identifie les variables devant apparaître dans les résultats de la requête et qui, dans notre exemple, est la variable (?startDate) qui représente la valeur de la date de lancement demandée.
- la clause WHERE qui fournit le modèle de graphe à comparer au graphe de connaissances EURIO et qui, dans notre exemple, consiste en trois modèles triples conjonctifs, c’est-à-dire trois modèles qui doivent tous être comparés, à savoir:
- un modèle triple avec la variable (?project) utilisée pour exprimer le projet référencé
- un motif triple qui indique les informations relatives au titre du projet référencé
- un motif triple avec la variable (?startDate) dans la position de l’objet.
Outre l’expression de motifs triples, SPARQL fournit plusieurs opérateurs et constructions qui permettent, entre autres, d’exprimer des motifs optionnels, de filtrer les motifs triples correspondants en fonction de certaines conditions et d’agréger ou d’ordonner les résultats récupérés.
Prenons une autre requête simple, où cette fois nous voulons obtenir tous les projets contenus dans le graphe de connaissances EURIO ainsi que leurs titres. Ainsi, à l’aide de la clause SELECT, nous exprimerons ceci de la manière suivante: «SELECT ?project ?title», et nous utiliserons la clause WHERE pour spécifier les conditions qui doivent être remplies, à savoir que la variable (?project) utilisée pour désigner les entités de projet demandées doit appartenir à la classe eurio:Project et que la variable (?title) doit désigner la valeur du titre de ces entités de projet. La requête qui en résulterait serait la suivante:
PREFIX eurio:<http://data.europa.eu/s66#>
SELECT ?project ?title
WHERE
{
?project a eurio:Project.
?project eurio:title ?title.
}
ORDER BY ?title
LIMIT 100
L’utilisation de la clause ORDER BY nous permet d’ordonner les résultats extraits en fonction de l’ordre alphabétique de leurs titres.
La séquence ascendante peut être indiquée à l’aide du modificateur ASC() ou sans modificateur, tandis que la séquence descendante peut être indiquée à l’aide du modificateur DESC().
L’exemple de requête illustre également l’utilisation de la clause LIMIT qui nous permet de fixer une limite supérieure au nombre de résultats renvoyés; dans ce cas, seules les 100 paires de projets et leurs titres respectifs seront affichés.
Pour illustrer l’utilisation d’un autre opérateur courant, à savoir FILTER, poursuivons l’exemple en supposant que nous souhaitons récupérer uniquement les projets dont la date de lancement se situe entre 2021 et 2022, ainsi que leurs titres respectifs. La clause SELECT reste la même que précédemment, puisque nous demandons toujours les mêmes informations, à savoir les projets et leurs titres, mais la clause WHERE doit être mise à jour avec d’autres motifs triples qui reflètent la condition relative à leur date de lancement. La requête élargie serait la suivante.
PREFIX eurio:<http://data.europa.eu/s66#>
PREFIX xsd:<http://www.w3.org/2001/XMLSchema#>
<br />
SELECT ?project ?title ?startDate
WHERE
{
?project a eurio:Project.
?project eurio:title ?title.
?project eurio:startDate ?startDate .
FILTER ((?startDate >= "2021-01-01"^^xsd:date) && (?startDate<="2023-12-31"^^xsd:date))
}
Comme illustré, en utilisant l’opérateur FILTER, nous pouvons exprimer la condition que la variable (?startDate) doit satisfaire, à savoir qu’elle doit être postérieure au «01-01-2021» et antérieure au «31-12-2023», avec les deux valeurs limites incluses.
Les requêtes SELECT décrites ci-dessus comprennent l’une des formes de requête définies par SPARQL et qui permettent de spécifier et d’utiliser les solutions issues de la recherche de motifs pour former des ensembles de résultats ou des graphes FDR. Il s’agit de:
- SELECT, qui, comme indiqué ci-dessus, renvoie toutes les variables ou un sous-ensemble de variables liées à un modèle de requête.
- CONSTRUCT, qui renvoie un graphe FDR construit en substituant des variables dans un ensemble de modèles triples.
- ASK, qui renvoie une valeur booléenne indiquant si un modèle de requête correspond ou non.
- DESCRIBE, qui renvoie un graphe FDR décrivant les ressources trouvées.
Pour de plus amples informations sur l’utilisation des différents formulaires de requête, ainsi que pour obtenir une description complète des caractéristiques générales du langage de requête SPARQL, consultez la documentation officielle sur le langage de requête SPARQL 1.1.
Comment déclencher des requêtes fédérées?
Dans tous les exemples présentés ci-dessus, les requêtes ont été exécutées sur les données contenues dans le graphe de connaissances EURIO.
Cependant, avec le nombre croissant de services d’interrogation SPARQL (points de terminaison SPARQL) proposés par divers fournisseurs de données via la publication de leurs données en tant que données liées, la possibilité d’interroger conjointement ces ensembles de données distribuées LOD apparaît.
Pour ce faire, SPARQL utilise l’extension SERVICE. Cette extension permet d’acheminer une partie d’une requête vers un point de terminaison SPARQL particulier et de combiner les résultats renvoyés avec les résultats du reste de la requête.
La requête suivante montre un exemple de la syntaxe de la requête fédérée SPARQL, où nous recherchons l’indice de développement humain (IDH) du pays dans lequel se trouve l’organisation «UNIVERSIDAD POMPEU FABRA», l’une des organisations participant aux projets financés par l’UE contenus dans le graphe de connaissances EURIO. Pour obtenir les informations sur l’IDH, nous devons interroger conjointement le graphe de connaissances EURIO qui contient des informations sur le pays dans lequel l’organisation donnée est située ainsi que le graphe de connaissances externe de DBpedia qui contient, entre autres, des informations sur l’IDH d’un pays.
PREFIX eurio:<http://data.europa.eu/s66#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbp: <http://dbpedia.org/property/>
<br />
SELECT ?country ?name ?hdi
WHERE {
?org a eurio:Organisation .
?org eurio:legalName "UNIVERSIDAD POMPEU FABRA" .
?org eurio:hasSite ?site .
?site eurio:hasGeographicalLocation ?location .
?location a eurio:Country .
?location eurio:name ?name .
SERVICE <http://dbpedia.org/sparql> {
?dbpedia_country a dbo:Country .
?dbpedia_country dbp:commonName ?dbname .
?dbpedia_country dbp:hdi ?hdi.
FILTER (lang(?dbname) = "en")
FILTER (STR(?name) = STR(?dbname))
}
}
Comme illustré, pour exécuter cette requête, nous devons insérer une clause SERVICE dans la clause WHERE de notre requête, suivie de l’IRI du point de terminaison externe (c’est-à-dire http://dbpedia.org/sparql), puis spécifier les modèles triples applicables, c’est-à-dire que nous recherchons un pays dans le graphe de connaissances DBpedia (la variable ?dbpedia_country) qui a le même nom que le pays de l’organisation «UNIVERSIDAD POMPEU FABRA» du graphe de connaissances EURIO (c’est-à-dire que les variables ?name et ?dbname ont la même valeur) et pour quel pays, nous demandons sa valeur IDH en utilisant la propriété DBpedia correspondante (à savoir, dbp:hdi).
Il convient de noter que les requêtes fédérées doivent être utilisées avec prudence afin d’éviter les requêtes excessives vers des points de terminaison SPARQL distants ainsi que les modèles de requête inefficaces, car ces deux éléments peuvent avoir un impact important sur le temps d’exécution de la requête, conduisant souvent à des interruptions de la requête et à l’impossibilité d’extraire un quelconque résultat. Compte tenu de cette situation et du fait qu’aucune garantie ne peut être fournie quant à la stabilité, la disponibilité et les performances des points de terminaison SPARQL externes, il est fortement recommandé d’opter pour des vidages de données locaux des graphes de connaissances (ou de leurs sous-graphes) d’intérêt et de s’appuyer sur des déploiements de requêtes fédérées basés localement.
Pour obtenir une vue d’ensemble des caractéristiques et des spécifications relatives à la prise en charge par SPARQL des requêtes fédérées, consultez la documentation Requête fédérée SPARQL 1.1.
Vidage de données
Le dernier vidage du graphe de connaissances EURIO peut être téléchargé à partir du portail européen de données, où vous pouvez également trouver des sous-graphes du graphe de connaissances EURIO. Ces sous-graphes donnent un aperçu des relations et des attributs les plus pertinents pour chacun des principaux types d’entités du graphe de connaissances EURIO et permettent un accès plus fin à son contenu. Les sous-graphes sont publiés en tant que graphes nommés distincts, c’est-à-dire en tant que sous-ensembles du graphe de connaissances EURIO, chacun ayant sa propre étiquette.