Sparql et Wikidata. Partie 1 : Les personnes

Le langage Sparql (SPARQL Protocol and RDF Query Language) dédié à l’interrogation des bases de connaissance rencontre le succès. Le mot anglais “sparkle” signifie “éclat”, “étincelle”, “scintillement” et Sparql ne manque pas d’attirer l’attention d’un vaste public intéressé par l’accès aux données ouvertes en tous genres. Ce langage est considéré depuis 2007 par le W3C comme l’une des technologies clés du web sémantique. Le groupe de travail “RDF Data Access Working Group” (DAWG) en élabore les spécifications. La version 1.0 publiée en 2008 est suivie de la version 1.1 en 2013, puis le groupe cesse ses activités et aucune évolution de Sparql n’est pour l’instant prévue.

Ce langage permet d’interroger des données structurées en RDF (Resource Description Framework), un format dédié au stockage sur le web de données factuelles liées. De multiples bibliothèques logicielles (Jupyter Notebook, Yasgui) associées à différents langages informatiques (PHP, javascript, R, Python) intègrent des fonctionnalités de Sparql et servent à réaliser des interfaces d’interrogation et de présentation des résultats sous forme de tableaux, de graphes, de cartes et de graphiques.

Tout fichier RDF peut être fonctionnellement décomposé en séries de triplets qui correspondent à des unités sémantiques atomiques de la forme (“sujet“, “prédicat“, “objet“). Des exemples de triplets sont 1/ (“Bob“, “est âgé de“, “29 ans“), 2/ (“Bob“, “connaît“, “Alice“), 3/ (“Alice“, “est auteur de“, “Grâce et Dénuement“) – le titre d’un roman d’Alice Ferney publié en 1997. Des entités comme (“Bob“, “Alice”, “Grâce et dénuement“) peuvent alternativement jouer les rôles de sujet ou d’objet. “Alice” par exemple se trouve objet dans le second triplet et sujet dans le troisième. On appelle dans Wikidata Élément les entités du type sujet ou possiblement objet d’un triplet sématique. Les sujets, prédicats et objets se trouvent identifiés sur le web par leur IRI (Internationalized Resource Identifier), une sorte d’URL particulière. Des applications du genre triplestore se montrent optimisées pour stocker un grand nombre de triplets et permettre la recherche de ceux-ci à l’aide de Sparql.

Petite précision de vocabulaire : le “prédicat” est souvent nommé “propriété” et “objet” a pour synonyme “valeur” si bien que la dénomination SPV (“sujet“, “propriété“, “valeur“) est employée dans Wikidata pour désigner chacun des composants d’un triplet sémantique. C’est en 2012 que Wikipedia Deutschland initie le projet Wikidata de base de connaissance multilingue. Des renseignements factuels en provenance des articles de Wikipédia et notamment des boîtes d’informations s’y trouvent collectés. Les données de Wikidata peuvent être éditées librement et se trouvent disponibles sous licence CC0, une licence proche du domaine public. Cette politique d’ouverture des données, les liens puissants entretenus avec Wikipédia, l’aspect multilingue, le sérieux dans l’organisation des projets se trouvent à l’origine du succès.

Des projets récents intègrent nativement Wikidata dans leur stratégie de communication et de partage des connaissances. IdRef de même que data.bnf.fr se montrent interopérables avec Wikidata. Ce tutoriel montre quelques unes des possibilités du langage Sparql dédié à l’interrogation, à la récupération des données et à leur visualisation dans l’interface web de Wikidata.

Disposer de quelques notions de Sparql se montre intéressant pour explorer d’autres bases de connaissances. Plus de 130 se trouvent actuellement référencées. Parmi celles-ci data.bnf.fr (BnF), data.idref.fr (ABES), Science+ (ABES), sparql.HAL (CNRS, INRIA, Université de Lyon, INRAE), data.persee.fr (ENS Lyon), data.istex.fr (INIST), Isidore.sqe (Huma-Num), LARHRA (Université de Lyon), henriponcare.fr (LHSP-AHP), Dictionnaire des francophones (Francophonie) en France, et au niveau international : bnb.data.bl.uk (British Library), OpenCitations (Université de Bologne, Oxford), Europeana (Europe), MeSH (NIH) OSM Sophox (Fondation OpenStreetMap), etc.

Les caractéristiques principales de Wikidata sont présentées dans ce tutoriel. Des requêtes Sparql simples relatives aux personnes et à leurs principales caractéristiques sont ensuite posées et commentées. Les exemples choisis pour leur intérêt général peuvent être adaptés à d’autres problématiques moyennant quelques petites modifications.

  1. A propos de Wikidata
  2. Structure des données
    • 2.1 Le sujet
    • 2.2 La propriété
    • 2.3 La valeur
  3. Éléments de syntaxe Sparql
    • 3.1 Wikidata Query Service
    • 3.2 Structure d’une requête
    • 3.3 Une première requête
    • 3.4 Une deuxième question
  4. Requêtes sur les personnes
    • 4.1 Propriétés relatives aux personnes
    • 4.2 Personnes simples
    • 4.3 Personnes liées à une personne simple
    • 4.4 Listes de personnes

1. À propos de Wikidata

Les noms de Denny Vrandečić et de Markus Krötzsch, fondateurs en 2005 de Semantic Mediawiki restent liés au lancement de Wikidata en 2012. Wikimedia Allemagne leurs confie alors la direction d’un groupe de développeurs parmi lesquels Lydia Pintscher, John Erling Blad, Abraham Taherivand, Jens Ohlig. Leur mission est de créer une base de connaissance dérivée des contenus de Wikipédia conforme aux standards du web sémantique. Le financement initial d’un montant total de 1,3 million d’euros provient des dons de l’Allen Institute for Artificial Intelligence, de la Gordon and Betty Moore Foundation, des moteurs de recherche Google et Yandex.

L’équipe Wikidata en 2012 : John Erling Blad, Abraham Taherivand, Tobias Gritschacher, Jeroen De Dauw, Henning Snater, Lydia Pintscher, Daniel Kinzler, Markus Krötzsch, Silke Meyer, Denny Vrandečić, Katie Filbert, Daniel Werner, Jens Ohlig : Lien

Une dimension industrielle est visée car le fonctionnement de services commerciaux est attendu en aval. Les développements débutent en Allemagne et la maintenance est assurée par la Wikimedia Foundation, une organisation à but non lucratif localisée à San Francisco. En matière de législation et d’éthique, Wikipédia obéit à un ensemble de règles et de législations. Dans le but d’augmenter la fiabilité, des références bibliographiques croisées soutiennent fréquemment les faits mentionnés. Les aspects éthiques, juridiques et scientifiques se trouvent documentés sur les wikis de Wikipédia et Wikidata. Ils se montrent importants pour des données possiblement sensibles et largement partagées.

  • Denny Vrandečić : Lien
  • Markus Krötzsch : Lien
  • Wikidata: a free collaborative knowledgebase, 2014, Communications of the ACM, Denny Vrandečić , Markus Krötzsch : Lien
  • Semantic MediaWiki : Lien
  • Wikidata donne des ailes au savoir libre, Lydia Pintscher, 2019, moz://a : Lien
  • Wikipédia, Citez vos sources : Lien
  • Wikipédia, Aide:Infobox Wikidata : page d’aide sur le fonctionnement des infobox : Lien
  • Wikidata Personnes vivantes : Lien
  • Wikidata Help:Copyrights : Lien

Au niveau technique, Wikidata repose sur des logiciels libres pour la plupart. Le moteur de wiki MediaWiki se trouve augmenté par l’extension Wikibase dédiée à la création de bases de connaissances à partir de wikis. La société suédoise Addshore d’Adam Shorland gère de nos jours les développements et documente les aspects informatiques (Figure 1). L’interface web Yasgui (Yet Another Sparql GUI) développée par la société néerlandaise Triply est adoptée pour l’interrogation. Elle fournit une assistance à la formulation des requêtes Sparql. Les résultats visualisés sous forme de tableau peuvent être exportés en différents formats. Les données lorsqu’elles se trouvent correctement formalisées peuvent être vues sous forme de graphe, de cartes ou de frises chronologiques au choix de l’utilisateur.

Figure 1 : Architecture informatique de Wikidata : Lien

Wikidata est l’instance la plus connue de Wikibase. Un autre projet basé sur Wikibase et Mediawiki “Lingua Libre” mené par Wikimédia France concerne la linguistique et l’enregistrement audiovisuel de locuteurs en différentes langues. FactGrid conduit par le Centre de Recherche de Gotha à l’Université d’Erfurt documente des faits historiques. Le projet de donnée épigraphique Europeana EAGLE de l’Istituto Italiano per la Storia Antica référence des inscriptions latines et grecques européennes. Open Street Map, le projet collaboratif de cartographie en ligne tire également parti de Wikibase.

En ce qui concerne l’organisation des contributeurs à Wikidata, des communautés s’associent en projets thématiques dont les activités se trouvent documentées dans des wikis. Les objectifs sont d’uniformiser les pratiques en matière d’usage des classes et propriétés et d’identifier des objectifs d’enrichissement des données. Le nombre des participants aux différents projets dépend grandement des thématiques; les discussions s’y trouvent en anglais et parfois en français et dans d’autres langues.

On trouve dans un projet Wikidata une liste des participants dont certains décrivent leurs activités personnelles ou professionnelles, leurs centres d’intérêts ou leurs contributions. Des liens vers des listes de sous-projets ou vers des projets voisins peuvent être présents, de même qu’un tableau des propriétés emblématiques d’un domaine. Des requêtes Sparql, des statistiques de réalisations ou bien le partage d’objectifs éditoriaux complètent ces informations. Wikidata en construction se veut participatif et ouvert.

  • Wikidata Architecture Overview (diagrams), Addshore, 2018 : Lien
  • Wikidata Outils/Pour les programmeurs : Lien
  • Wikidata:PAWS, un déploiement de “Jupyter notebook” hébergé par Wikimedia. : Lien
  • Wikibase : Lien
  • Yasgui, Triply : Lien
  • Lingua Libre, Wikimédia France : Lien
  • FactGrid, a database for historians : Lien, Blog
  • Europeana EAGLE project : Lien
  • Wikidata:OpenStreetMap : Lien
  • Wikidata:MOOC/Course outline : Lien

Quelques un des portails thématiques Wikidata :

  • Wikidata:Portail communautaire, fr : Lien
  • Wikidata:WikiProject Ontology : Lien
  • Wikidata:WikiProjet métadonnées des références, fr : Lien
  • Wikidata:WikiProject Biographical Identifiers : Lien
  • Wikidata:WikiProjet Libre accès : Lien
  • Wikidata:WikiProject Biodiversity : Lien
  • Wikidata:WikiProjet Taxinomie, fr : Lien
  • Wikidata:WikiProject Philosophy : Lien
  • Wikidata:WikiProject Medicine : Lien
  • Wikidata:WikiProject COVID-19 : Lien
  • Wikidata:WikiProjet Physique, fr : Lien
  • Wikidata:WikiProject Mathematics : Lien
  • Wikidata:WikiProject Informatics : Lien
  • Wikidata:WikiProject Maps : Lien
  • Wikidata:WikiProject Maps/Historical map properties : Lien
  • Wikidata:WikiProject Historical Place : Lien
  • Wikidata:WikiProject Women : Lien
  • Wikidata:WikiProject Archival Description : Lien
  • Wikidata:WikiProjet Livres, fr : Lien
  • Wikidata:WikiProject Periodicals : Lien
  • Wikidata:WikiProject Museum : Lien
  • Wikidata:WikiProject Education : Lien
  • Wikidata:WikiProject Higher education : Lien
  • Wikidata:WikiProject Occupations and professions : Lien
  • Wikidata:WikiProject Citizen Science : Lien
  • Wikidata:WikiProject Sustainable Development : Lien
  • Wikidata:WikiProjet Entreprises, fr : Lien
  • Wikidata:WikiProject Economics : Lien
  • Wikidata:WikiProject Open Government Data : Lien
  • Wikidata:WikiProject Law : Lien
  • Wikidata:WikiProject France : Lien
  • Wikidata:WikiProject France/Politicians : Lien
Wikidata loves Gallery, Library, Archives and Museum, par Jason Evans, 2017 : Lien

2. Structure des données dans Wikidata

Tout concept décrit dans Wikipédia dispose de son entrée dans Wikidata nommée Élément en français, Item en anglais, identifiée par la lettre Q suivie d’un numéro. L’IRI (Internationalized Resource Identifier) d’un élément prend la forme “<https://www.wikidata.org/wiki/Q#>” où # est le numéro du concept. L’identifiant peut être retrouvé en cherchant une entrée dans Wikipédia et en cliquant dans la barre latérale gauche sur “Outils” / “Élément Wikidata“, ou bien à l’aide du moteur de recherche de Wikidata. Des éléments notables sont Q1 “univers” Q2 “Terre“,  Q3 “vie“,  Q4 “mort“, Q5 “être humain“, Q8 “bonheur“. Les éléments Q8261roman” et Q3118322Grâce et dénuement” vont ici servir d’exemple.

Les notices des éléments contiennent un ensemble de renseignements. Les valeurs en anglais s’affichent en haut de page à côté du numéro et apportent une aide à la verbalisation de l’élément. Suivent ensuite des ensembles de propriétés spécifiques de différentes langues : le libellé préférentiel (Label), une brève description (Description) et des libellés alternatifs (Also known as). Puis dans Statements traduit en français par Déclarations la liste des propriétés et des valeurs. La notice se termine par des liens vers les pages Wikipédia en différentes langues. Grâce et Dénuement ne se trouve décrit qu’en français : Tableau 1.

Tableau 1 : Notice Wikidata du roman Q3118322Grâce et Dénuement” d’Alice Ferney. La classe de l’objet est identifiée par la valeur de P31instance of” / “nature de l’élément“. Celle-ci prend la valeur Q47461344written work” / “œuvre écrite” : Lien

La propriété P31instance of / nature de l’élément” définit la classe de l’élément décrit. Une classe est un élément Q# de nature particulière susceptible de décrire ce que partagent des instanciations de la classe. Ainsi le livre “Grâce et Dénuement” est de la classe Q47461344œuvre écrite“. Des classes comme Q128207planète tellurique du système solaire“, Q60539479émotion positive“, Q223393genre littéraire” ont pour instanciation les éléments Q2Terre“, Q8bonheur“, Q8261roman“. Un élément peut être décrit par plusieurs classes. Les propriétés sont nommées par la lettre P suivie d’un numéro. L’IRI d’une propriété prend la forme P# : “https://www.wikidata.org/wiki/Property:P#”. Wikidata définit actuellement 9162 propriétés.

Le choix de désigner les éléments et les propriétés à l’aide de numéros impersonnels et peu parlants répond dans un contexte massivement multilingue à plusieurs causes, nécessités et arguments : 1/ Des concepts présents dans une langue peuvent ne pas exister dans une autre langue. Ainsi le concept germanophone de Q1497087Geborgenheit” ne peut être traduit en d’autres langues. 2/ Des intitulés uniques peuvent se montrer polysémiques. La chanteuse “Céline Dion” sort en 1992 l’album “Celine Dion”. Les deux éléments sont de classe différente. 3/ Pourquoi privilégier la langue de Shakespeare plutôt que celle de Molière ou de Goethe ? 4/ Le CIDOC CRM, une ontologie des musées et objets archéologiques, adopte la même stratégie de nommage des classes et propriétés à l’aide d’un numéro logique depuis le milieu des années 2000.

Les membres d’un triplet sémantique dans Wikidata présentent les caractéristique suivantes :

2.1 Le sujet

Tout élément Wikidata référencé par son identifiant IRI Q# : “<https://www.wikidata.org/wiki/Q#>” se retrouve par définition sujet d’au moins un triplet et possiblement valeur.

2.2 La propriété

Toute propriété Wikidata est référencée par son identifiant IRI P# de la forme “<https://www.wikidata.org/wiki/Property:P#>”. Le champs “Data type” indique le type de valeur attendu et introduit une contrainte. Les valeurs possibles de Data type sont Item (un autre élément), External identifier (identifiant externe), String (chaîne de caractères), Globe coordinate (coordonnées géographiques), Mathematical expression (expression mathématique), etc.

Ainsi, la propriété P50 “auteur” susceptible de renseigner la notice de “Grâce et Dénuement” admet “Item” (Élément en français) comme contrainte. Des appellations alternatives de la propriété “auteur” sont en français “romancier, nouvelliste, essayiste, écrivain, romancière, écrivaine, autrice, auteure, écrit par“. Les propriétés P170 “créateur” appellations alternatives “créé par, artiste, créatrice, peintre, sculpteur, photographe“, P57 “réalisateur ou metteur en scène“, P175 “interprète” se montrent employés dans divers contextes. De manière générale, ce genre de propriétés se trouve documenté sur la page List of properties/art.

L’importante propriété P31instance of” / “nature de l’élément” définit la classe de l’élément. Ainsi, le triplet sémantique (“Socrate”, “est un”, “homme”) se formule à l’aide de Wikidata (Q913Socrate“, P31nature de l’élément“, Q5être humain“). Une liste des plus de 9000 propriétés possibles se trouve documentée sur le wiki de Wikidata.

Un arbre des classes est possiblement défini à l’aide de la propriété P279sous-classe de“. A titre d’exemple, l’entrée Q571livre” se montre simultanément sous-classe de Q49848document“, Q732577publication“, Q47461344œuvre écrite” et Q2342494objet de collection“. Cette dernière classe se montre sous-classe de Q488383objet“, elle-même sous-classe de Q35120entité“. Un graphe permet de visualiser une partie de la hiérarchie (Figure 2).

Figure 2 : Arbre des classes obtenu à l’aide de la propriété P31 “nature de l’élément” pour la classe Q571 “livre” avec Wikidata Graph Builder : Lien
  • Wikidata Help:Type de données : Lien
  • Wikidata Category:Properties by datatype : Lien
  • Wikidata: Liste des propriétés : Lien
  • Wikidata:List of properties/art : Lien
  • Wikidata Property Explorer : Lien

2.3 La valeur

Troisième composante d’un triplet sémantique, le type de donnée de la valeur est défini par la propriété. Une valeur peut être renseignée de manière unique ou bien multiple conduisant à la création de plusieurs triplets partageant les mêmes sujets et propriétés.

Des exemples de triplets et de types de valeurs peuvent être donnés : un autre item (Q913Socrate“, P27pays de citoyenneté“, Q844930Athènes“), un texte (Q913Socrate“, P1559nom dans la langue maternelle de la personne“, “Σωκράτης (Ancient Greek)”), une date (Q913Socrate“, P570date de mort“, “15 February 399 BCE“) ou bien un champs répété comme dans (Q913Socrate“, P106occupation“, Q4964182philosophe“) et (Q913Socrate“, P106occupation“, Q37226enseignant“). Des “qualificatifs” (qualifiers) viennent finalement modifier la portée de certaines valeurs et permettent par exemple de dater un événement. On apprend ainsi que Socrate devient membre de la Boulè en 406 avant notre ère (Q913Socrate“, P463membre de“, Q729128Boulè“). Nous en savons maintenant assez sur les triplets sémantiques et nous allons pouvoir lancer quelques requêtes.

3. Éléments de syntaxe Sparql

Les requêtes Sparql sont écrites dans l’interface Yasgui de Wikidata nommée WDQS (Wikidata Query Service) qui sert également à visionner les résultats.

3.1 Wikidata Query Service

https://query.wikidata.org/

Wikidata SPARQL query service

Wikidata SPARQL query service (WDQS) est accessible à l’adresse query.wikidata.org. On peut obtenir en réponse à une requête Sparql plusieurs choses du genre tableau de données. De multiples formats d’export (HTML, XML, JSON, TSV, CSV, RDF binaire) rendent possible l’exploitation ultérieure des données. De nombreux exemples de requêtes classés par thème et commentés en français se montrent accessibles depuis l’onglet “Exemples”. La requête écrite dans le formulaire du haut est lancée avec la flèche bleue à gauche et le tableau de résultat s’affiche en bas (Figure 3).

Figure 3 : L’interface Yasgui de WDQS : Lien
  • Wikidata Query Service (WDQS) : Lien

3.2 Structure d’une requête

Les requêtes Sparql intègrent des instructions ou clauses notées ici en majuscule et en rouge et des variables précédées d’un point d’interrogation et colorées ici en vert. Le caractère # dans les requêtes indique un commentaire. Une requête standard comprend trois parties PREFIX, SELECT, WHERE et se termine éventuellement par un ou plusieurs modificateurs de résultats (LIMIT, ORDER BY, GROUP BY, HAVING, OFFSET, BINDINGS) que nous découvrirons ultérieurement. Un tutoriel plus complet sur Sparql en général se trouve en français sur WIKIVERSITÉ, alors qu’un tutoriel sur Sparql et Wikidata se trouve en anglais sur WIKIBOOKS.

3.2.1 PREFIX : L’instruction PREFIX permet de déclarer une abréviation et son espace de nom. Les IRI d’une requête sont écrits au choix de manière longue ou abrégée dans Sparql. Ainsi, le sujet Q1 “univers” peut être noté dans Sparql “<https://www.wikidata.org/wiki/Q1>” ou bien “wd:Q1“. De même pour les propriétés : “<http://www.wikidata.org/prop/direct/P31>” ou “wdt:P31“. Ne sont nécessaire à la déclaration en début de requête que les ontologies externes à Wikidata. Une liste des PREFIX pré-déclarés :

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX wd: <http://www.wikidata.org/entity/>
PREFIX wds: <http://www.wikidata.org/entity/statement/>
PREFIX wdv: <http://www.wikidata.org/value/>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
PREFIX wikibase: <http://wikiba.se/ontology#>
PREFIX p: <http://www.wikidata.org/prop/>
PREFIX ps: <http://www.wikidata.org/prop/statement/>
PREFIX pq: <http://www.wikidata.org/prop/qualifier/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX bd: <http://www.bigdata.com/rdf#>

3.2.2 SELECT : La clause SELECT spécifie les variables ou les comptages à afficher en sortie. La valeur étoile (*) affiche toutes les variables présentes dans WHERE. La clause SELECT DISTINCT enlève les doublons dans les réponses liés aux propriétés renseignées de manière multiple.

SELECT ?sujet ?propriete ?valeur # Sélection des variables à afficher
SELECT *                         # Afficher toutes les variables
SELECT DISTINCT *                # Affiche une seule valeur de variable

3.2.3 WHERE : L’instruction WHERE contient entre parenthèses un ou plusieurs motifs de triplets de la forme générale “?sujet ?propriete ?valeur . “. Chaque motif de triplet se termine par un point. Plusieurs sortes de motifs de triplet se montrent combinatoirement possibles. Sept types de questions correspondant à sept types de triplets différents. Trois motifs de triplet sont ici commentés en prenant l’exemple (Q3118322Grâce et Dénuement“, P31nature de l’élément“, Q47461344œuvre écrite“).

  1. Variable en troisième position. Un exemple type de motif serait “WHERE {wd:Q3118322 wdt:P31 ?valeur .}”. On pose ainsi la question des valeurs attribuées à un élément et à une propriété connue. Cela correspond autrement dit à la question “Quelle est la classe de l’item Grâce et dénuement“.
  2. Variable en première position. Exemple : “WHERE {?sujet wdt:P31 wd:Q47461344.}”. Question des items correspondant à des conditions et des valeurs connues. Le motif répond à la requête “Quels sont les items de la classe “œuvre écrite“.
  3. Variable en deuxième et troisième position. Exemple : “WHERE {wd:Q3118322 ?propriete ?valeur.}”. La question des couples propriété / valeur d’un item connu est posée. “Quelles est l’ensemble des couples propriétés et valeurs de l’élément “Grâce et dénuement“.
  • Wikibase/Indexing/RDF Dump Format/Full_list_of_prefixes : Lien
  • Wikidata:Service de requête SPARQL/Aide sur le service de requête de Wikidata : Lien
  • SPARQL Protocol and RDF Query Language, WIKIVERSITE, par Karima Rafes : Lien
  • SPARQL, WIKIBOOKS, par HenkvD : Lien

3.3 Une première requête

10 triplets quelconques de Wikidata sont recherchés à l’aide du motif de triplet?sujet ?propriete ?valeur . ” (cliquez le lien ci-joint et appuyez sur la flèche bleue en bas à gauche pour lancer la requête). Requête 3.1.1 :

# Recherche de 10 triplets quelconques, requête 3.1.1
SELECT ?sujet ?propriete ?valeur # Sélection des variables à afficher
WHERE { 
  ?sujet ?propriete ?valeur. # Chercher un triplet quelconque
}
LIMIT 10 # Limiter à 10 les résultats affichés

L’instruction SELECT en rouge précise les variables à afficher. Un point conclue chaque motif de triplet généralement notée sur une ligne. L’instruction LIMIT en fin de requête restreint l’affichage à 10 triplets. On obtient le tableau dont les 3 premières lignes sont reproduites ci-dessous. On a donc en réponse à cette requête un tableau de 3 colonnes et 10 lignes. On remarque que le nom des colonnes correspond au nom des variables sans le point d’interrogation.

sujetpropvaleur
wikibase:Dump<http://creativecommons.org/ns#license><http://creativecommons.org/publicdomain/zero/1.0/>
wikibase:Dumpschema:softwareVersion1.0.0
wikibase:Dumpschema:dateModified22 mars 2021
3 triplets quelconques de Wikidata

3.4 Une deuxième question

Quels émotions positives sont référencées dans Wikidata ? Une requête sur les instances P31 de la classe Q60539479émotion positive” est posée. Il convient non seulement de récupérer l’IRI de l’émotion mais aussi son libellé en français. On utilise pour cela les deux secondes lignes de WHERE et les clauses FILTER, LANGMATCHES et LANG pour sélectionner les libellés français. Requête 3.4 :

# Recherche d'émotions positives, requête 3.4
SELECT ?sujet ?label # Sélection des variables à afficher
WHERE { 
  ?sujet wdt:P31 wd:Q60539479.            # entités "émotions positives"
  ?sujet rdfs:label ?label.               # libellés en toutes langues
  FILTER(LANGMATCHES(LANG(?label), "fr")) # libellés en français seulement 
}
LIMIT 10                                  # limiter à 10 items
sujetlabel
wd:Q8bonheur
wd:Q190507espoir
wd:Q203994euphorie
3 émotions positives

Nous verrons d’autres manières d’obtenir le même résultat. Nous pouvons maintenant explorer la structure graphique de “bonheur”. Une loupe se trouve présente dans WDQS à gauche de wd:Q8 dans la colonne “sujet” des résultats. L’indication “Explore item” s’affiche en survol. On clique et on obtient un graphe interactif à l’aide de l’Explorer (Figure 4).

Figure 4 : Graphe de l’élément Q8 “bonheur

La propriété P31 “nature de l’élément” définit la classe et se trouve renseignée pour “bonheur” dans Wikidata par “émotion“, “émotion positive“, “humeur“. D’autres propriétés représentées dans ce graphe sous forme d’arêtes dirigées proposent d’autres éléments Q#. On remarque notamment P373 “catégorie Commons” qui établit un lien entre Q8 Wikidata et la catégorie “Bonheur” de la base de connaissance d’un projet voisin Wikimédia Commons dédiée au stockage d’images en accès libre. Nous en savons maintenant assez des structures du web sémantique et de Sparql pour nous intéresser spécifiquement aux personnes sous Wikidata.

4. Requêtes sur les personnes

Les personnes sont nommées de manière indépendante de la période historique, des habitudes culturelles et linguistiques sous Wikidata. 9,31 millions d’individus de toutes nationalités et de toutes époques se trouvent actuellement décrits ce qui représente 8,9 % des contenus. Les éléments et propriétés renseignés se montrent assez variables et nous pouvons sommairement explorer cela.

4.1 Propriétés relatives aux personnes

Des gabarits de même qu’un projet Wikidata dédié fournissent une liste des propriétés susceptibles d’être renseignées, de même que les listes d’autorités auxquelles il est possible de se référer en France pour identifier et normaliser la notation des noms.

  • Template:Person properties : Lien
  • Template:France properties : Lien
  • Wikidata:WikiProjet Noms/Propriétés : Lien

Plusieurs types de propriétés relatives aux personnes se montrent fréquemment renseignées.

  • Des informations comme P19lieu de naissance“, P20lieu de mort“, P119lieu de sépulture“, P69scolarité“, P551résidence“, P485archivé par” apportent des informations de localisation.
  • De nombreuses requêtes menées sur les personnes concernent les dates : P569date de naissance“, éventuelle P570date de mort“, date de candidature P3602candidat à l’élection“, date de début et de fin de fonction P39fonction“, date de P166distinction reçue“, que celles-ci soit connue directement ou en tant que qualificatif.
  • P101domaine d’activité“, P106occupation“, P463 “membre de“. Des classes et sous-classes définissent les activités et peuvent servir d’élément factuel en vue d’établir une biographie.

4.2 Personnes simples

Des triplets particuliers relatifs à Alice Ferney sont recherchés avec Sparql.

SELECT * signifie que toutes les variables présentes dans la requête seront affichées. L’instruction WHERE contient deux motifs successifs de sujet identique et terminés par un point. Le premier (?sujet rdfs:label “Alice Ferney”@fr.) sélectionne tous les triplets dont l’étiquette (rdfs:label) contient en français Alice Ferney. Le deuxième motif (?sujet ?propriete ?valeur.) permet de définir les variables. Requête 3.2.1 :

# Triplets relatifs à l'auteure "Alice Ferney", requête 3.2.1
SELECT * WHERE {
  ?sujet rdfs:label "Alice Ferney"@fr.
  ?sujet ?propriete ?valeur.
}
sujetproprietevaleur
wd:Q2836569wdt:P1207n2003086874
wd:Q2836569wdt:P1412 wd:Q150
wd:Q2836569wdt:P1477Cécile Brossollet

La notice d’Alice Ferney dans Wikidata comprend 148 triplets dont les trois premiers sont ici affichés. La colonne “sujet” fournit l’IRI Q2836569 du sujet. On remarque dans la liste complète des résultats les préfixes wd, wdt, wdtn (lien vers des bases de connaissances externes), “schema:description”, “rdfs:label”, “skos:altLabel” qui renseignent sur les ontologies liées au fonctionnement de Wikidata. Les noms alternatifs d’Alice Ferney : Cécile Brossollet et Cécile Brossollet Gavriloff sont référencés. Une image en accès libre localisée sous Wikimédia Commons se trouve en valeur de la propriété P18image“. Un raccourci pour formuler la même question consiste à se servir du “point-virgule” en fin de première ligne. La variable ?sujet n’a pas alors à être répétée.

# Triplets relatifs à l'auteure "Alice Ferney", requête 3.2.2
SELECT * WHERE {
  ?sujet rdfs:label "Alice Ferney"@fr;
         ?propriete ?valeur.
}

On regarde sur la page Q2836569Alice Ferney“. Les propriétés P1559 “nom dans la langue maternelle de la personne“, P268 “identifiant Bibliothèque nationale de France“, P269 “identifiant IdRef” et P69 “scolarité” nous intéressent. Quatre motifs de triplets sont recherchés, correspondant à quatre lignes dans la clause WHERE qui partagent tous le même sujet.

# noms et identifiants d'Alice Ferney, requête 3.2.3
SELECT * WHERE {
  wd:Q2836569 wdt:P1559 ?nom;
              wdt:P268 ?id_bnf;
              wdt:P269 ?idref;
              wdt:P69 ?scolarite.
}
nomid_bnfidrefscolarite
Alice Ferney12947466j056544731 wd:Q273518
Alice Ferney12947466j056544731 wd:Q273642

La réponse contient deux lignes car “École des hautes études en sciences sociales” et “École supérieure des sciences économiques et commerciales” sont les deux établissements mentionnées, alors que “nom, id_bnf et idref” restent identiques.

Nous faisons appel dans la requête suivante au service “wikibase:label” de Wikidata à l’aide de l’instruction SERVICE afin de faciliter l’accès à des variables descriptives supplémentaires. Ce service adjoint les suffixes “Label”, “Description” et “AltLabel” à toutes les variables présentes dans la requête. Les variables “?scolariteLabel”, “?scolariteDescription”, “?scolariteAltLabel” deviennent alors disponibles et l’affichage est demandé dans SELECT.

# scolarité d'Alice Ferney, requête 3.2.4
SELECT ?nom ?scolarite ?scolariteLabel ?scolariteDescription ?scolariteAltLabel
WHERE {
  wd:Q2836569 wdt:P1559 ?nom;
              wdt:P69 ?scolarite.
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
nomscolaritescolariteLabelscolariteDescriptionscolariteAltLabel
Alice Ferney wd:Q273518École des hautes études en sciences socialesécole supérieure en sciences humaines et socialesÉcole des Hautes Études, École des Hautes Etudes en Sciences Sociales, École des Hautes Études en Sciences Sociales, École Pratique des Hautes Etudes en Sciences Sociales, École pratique des hautes études VIe section, EHESS
Alice Ferney wd:Q273642École supérieure des sciences économiques et commercialesGrande école de commerce françaiseEcole superieure des sciences economiques et commerciales, ESSEC, Institut des sciences économiques et commerciales de Paris

Notice d’autorité d’Alice Ferney en français : La requête suivante permet l’affichage en français de la notice d’autorité d’Alice Ferney ou de toute autre personne de Wikidata en modifiant l’identifiant Q# présent en deux endroits de la requête. Requête 3.2.1.6 :

# Notice d'autorité d'Alice Ferney Q2836569 3.2.6
PREFIX entity: <http://www.wikidata.org/entity/>
SELECT ?propUrl ?propLabel ?valUrl ?valLabel ?picture
WHERE
{
	hint:Query hint:optimizer 'None' .
	{	BIND(entity:Q2836569 AS ?valUrl) .
		BIND("N/A" AS ?propUrl ) .
		BIND("identity"@fr AS ?propLabel ) .
	}
	UNION
	{	entity:Q2836569 ?propUrl ?valUrl .
		?property ?ref ?propUrl .
		?property rdf:type wikibase:Property .
		?property rdfs:label ?propLabel
	}
	
  	?valUrl rdfs:label ?valLabel
	FILTER (LANG(?valLabel) = 'fr') .
	OPTIONAL { ?valUrl wdt:P18 ?picture .}
	FILTER (LANG(?propLabel) = 'fr' )
}
ORDER BY ?propUrl ?valUrl
LIMIT 200
propUrlpropLabelvalUrlvalLabelpicture
wdt:P103langue maternellewd:Q150français
wdt:P106occupationwd:Q1914832maître de conférences
wdt:P106occupationwd:Q36180écrivaincommons:Kusakabe Kimbei – Writing Letter (large).jpg
wdt:P108employeurwd:Q13334université d’Orléanscommons:Orléans – parc floral (28).jpg
wdt:P184directeur de thèsewd:Q1001839François Bourguignon
5 première lignes de la notice d’autorité d’Alice Ferney, avec image associée

4.3 Personnes liées à une personne simple

Une ou plusieurs autres personnes se trouvent fréquemment directement liées à un individu par un réseau de propriétés. Les conjoints et filiations se montrent les plus fréquemment renseignés, mais ce ne sont pas les seules. Nous allons ici explorer la direction de thèse et l’homonymie du nom de famille.

a/ Directeur de thèse : François Bourguignon a dirigé la thèse d’Alice Ferney et nous souhaitons connaître les noms des docteurs de première et deuxième génération dirigés par cet économiste disparu en 2018. Ceci est donné par la propriété P184 “directeur de thèse“. Le champ P569 “date de naissance” est demandé avec la condition OPTIONAL car dans la pratique rarement renseigné. On trouve ainsi 19 docteurs formés par François Bourguignon lui-même ou par des docteurs devenus eux-mêmes directeurs.

# docteurs dirigés par François Bourguignon et docteurs de deuxième génération
SELECT ?etudiant ?etudiantLabel ?etudiantDescription ?datenaissance
WHERE {
  wd:Q2836569 wdt:P184 ?directeur.
  ?etudiant wdt:P184* ?directeur.
  OPTIONAL {?etudiant wdt:P569 ?datenaissance.}
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}

b/ Recherche des personnes portant le nom de famille “Ferney”. Nous allons dans cette série de requêtes montrer plusieurs manières de poser la même question et introduire la notion de chemin de propriété. La propriété P734nom de famille” permet de fabriquer un motif de triplet qui affiche les personnes portant le même patronyme.

# Personnes portant le nom de famille "Ferney", requête 3.2.3.2
SELECT ?personne ?personneLabel ?personneDescription WHERE {
  ?personne wdt:P734 wd:Q36872846;
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}

Une autre méthode sans la recherche manuelle, mais avec une variable intermédiaire nommée “?nomid” :

# Personnes portant le nom de famille "Ferney", requête 3.2.3.2bis
SELECT ?personne ?personneLabel ?personneDescription WHERE {
  ?personne wdt:P734 ?nomid.
  ?nomid rdfs:label "Ferney"@fr.
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}

La variable intermédiaire peut être omise en spécifiant non pas une propriété simple mais un chemin de propriété avec l’instruction “/”. Requête 4.3.b :

# Personnes portant le nom de famille "Ferney", requête 3.2.3.2ter
SELECT ?personne ?personneLabel ?personneDescription WHERE {
  ?personne wdt:P734/rdfs:label "Ferney"@fr.
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
personnepersonneLabelpersonneDescription
wd:Q2836569Alice Ferneyécrivaine française
wd:Q15502990Liam Ferneypoète australien
Les deux personne portant le patronyme “Ferney” dans Wikidata

Si l’on fait appel à l’Explorer, on obtient le graphe :

Figure 5 : Graphe de l’élément Q2836569Alice Ferney

4.4 Listes de personnes

Nous allons dans cette dernière série de requêtes afficher des listes de personnes simples ou bien satisfaisant à un ou plusieurs critères.

a/ 10 personnes de Wikidata au hasard, avec affichage du libellé, de la description et des noms alternatifs sont recherchées. Le nom des personnes de la classe Q5 “être humain” est affiché.

# Recherche de 10 personnes avec nom, description, noms alternatifs, requête 4.4.a
SELECT ?sujet ?sujetLabel ?sujetDescription ?sujetAltLabel
WHERE { 
  ?sujet wdt:P31 wd:Q5. 
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
LIMIT 10
sujetsujetLabelsujetDescriptionsujetAltLabel
wd:Q838Andreï Roublevmoine et peintre d’icônes russe du XVe siècle
wd:Q839Georgina Cassargymnaste de Gibraltar
wd:Q845Pedro Aguirre Cerdahomme politique du Chili (1879-1941)
wd:Q848Arturo Alessandri Palmahomme politique du chili (1868-1950)
wd:Q849François Villonpoète français (1431-1463)Francois Villon, François de Moncorbier, François de Montcorbier

b/ Philosophes et sociétés de philosophie vers 1910 : Les philosophes nés entre 1880 et 1900 et les sociétés auxquelles ils ont adhéré sont ici recherchées. L’instruction OPTIONAL permet de récupérer les philosophes qui ne sont membres d’aucune académie. Parmi les personnalités connues Pierre Boutroux, Pierre Teilhard de Chardin, Louis Rougier, Louis de Broglie, Alexandre Koyré, Marcel Duchamp, Jean Rostand. On remarque les sociétés “Ouvroir de littérature potentielle”, “Collège de ‘Pataphysique”. 165 entrées correspondant à 90 personnes uniques sont retrouvées.

# Philosophes français nés entre 1880 et 1900 et sociétés de philosophie, requête 3.2.7
SELECT ?sujet ?sujetLabel ?paysLabel ?membre_deLabel ?datenaissance ?genreLabel
WHERE {
  ?sujet wdt:P106 wd:Q4964182.             #occupation : Philosophe
  ?sujet wdt:P27 wd:Q142.                  #pays de citoyenneté: France
  ?sujet wdt:P27 ?pays.                    
  OPTIONAL{?sujet wdt:P463 ?membre_de.}    # membre de
  OPTIONAL{?sujet wdt:P569 ?datenaissance.}
  OPTIONAL{?sujet wdt:P21 ?genre.}         # genre
  FILTER("1880-01-01"^^xsd:dateTime <= ?datenaissance && ?datenaissance < "1900-01-01"^^xsd:dateTime).               # date de naissance
  SERVICE wikibase:label {bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" .}
}
ORDER BY ?datenaissance
sujetsujetLabelpaysLabelmembre_deLabeldatenaissancegenreLabel
wd:Q2898000Bernard GroethuysenFrance9 janvier 1880masculin
wd:Q2898000Bernard GroethuysenAllemagne9 janvier 1880masculin
wd:Q3185736Joseph VialatouxFrance2 juillet 1880masculin
wd:Q1399119Pierre BoutrouxFrance6 décembre 1880masculin
wd:Q2847743André FauconnetFrance17 février 1881masculin
wd:Q189564Pierre Teilhard de ChardinFranceAcadémie des sciences1 mai 1881masculin
Les 6 premiers philosophe d’expression française

c/ Agrégation avec GROUP BY et GROUP_CONCAT : Bernard Groethuysen possède une double nationalité si bien que deux lignes renseignent les deux valeurs de paysLabel. Nous souhaiterions que les éventuel champs répétés (dates, activités professionnelles, nationalités) soient affichées dans une même cellule. Il faudrait étendre la requête aux philosophes de toutes nationalités : Requête 4.4.c

# Philosophes nés entre 1880 et 1890
SELECT ?sujet
(GROUP_CONCAT(DISTINCT ?anneeValeur;separator=", ") AS ?dateNais)
 ?sujetNom ?sujetDescription
(GROUP_CONCAT(DISTINCT ?occupationNom;separator=", ") AS ?professions) 
(GROUP_CONCAT(DISTINCT ?paysNom;separator=", ") AS ?pays)
WHERE {
  ?sujet wdt:P106 wd:Q4964182.            #occupation philosophe
  ?sujet wdt:P106 ?occupation.            #toutes les occupations
  ?sujet wdt:P27 ?pays.
  ?sujet wdt:P569 ?datenaissance.
  BIND(year(?datenaissance) AS ?annee)    # année de naissance
  FILTER("1880-01-01"^^xsd:dateTime <= ?datenaissance && ?datenaissance < "1891-01-01"^^xsd:dateTime).
  SERVICE wikibase:label { 
    bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en".
    ?sujet rdfs:label ?sujetNom .
    ?sujet schema:description ?sujetDescription .
    ?pays rdfs:label ?paysNom .
    ?occupation rdfs:label ?occupationNom .
    ?annee rdfs:label ?anneeValeur .
  }
} 
GROUP BY ?sujet ?sujetNom ?sujetDescription
ORDER BY ?dateNais

Les fonctions d’agrégation GROUP_CONCAT et GROUP BY peuvent être utilisées. Le modificateur d’instruction “GROUP BY” utilisé en fin de requête dans “GROUP BY ?sujet ?sujetNom ?sujetDescription” crée une agrégation pour des variables renseignées de manière unique pour chaque élément sujet. Le libellé des variables (?sujet ?pays ?occupation ?annee) est recherché de “manière manuelle” à l’aide du service “SERVICE wikibase:label”. Les variables réservées ?sujetLabel ?sujetDescription ne sont en effet pas fonctionnelles avec GROUP BY. La clause “BIND” permet d’afficher l’année de naissance à partir de la date complète et de l’affecter à la variable ?annee. Les instructions “GROUP_CONCAT” en début de requête permettent la concaténation des champs multivalués. Ce type de requête se montre fort intéressant car un ensemble de donnée susceptible de servir à la création ou à l’enrichissement d’un corpus se trouve ainsi créé. Des corpus de toutes natures peuvent après vérification des données être créés ou bien des corpus existants se montrent susceptibles d’être améliorés.

Dans notre cas, 646 résultats paginés par défaut par groupe de 200 sont retournés parmi lesquels il est possible de filtrer à l’aide d’un formulaire localisé en haut du tableau. Les résultats peuvent être téléchargés au format CSV. Une manipulation du corpus à l’aide de LibreOffice Calc se montre alors fortement recommandée (Excel gère mal l’utf-8). Nous cherchons “France” et 58 résultats s’affichent. Il devient alors relativement aisé d’en savoir plus sur le philosophe binational Bernard Groethuysen et sur les publications et biographies de ceux de cette génération.

sujetdateNaissujetNomsujetDescriptionprofessionspays
wd:Q13991191880Pierre Boutrouxmathématicien français et historien des sciencesprofesseur, mathématicien, philosopheFrance
wd:Q31857361880Joseph Vialatouxphilosophe françaisphilosopheFrance
wd:Q28980001880Bernard Groethuysensociologue et philosophe allemand du XXe siècleécrivain, traducteur, professeur d’université, philosophe, historien de la littératureFrance, Allemagne
wd:Q1895641881Pierre Teilhard de Chardinprêtre jésuite, théologien, philosophe, paléontologue, anthropologue et géologue français (1881-1955)théologie, écrivain, prêtre catholique, géologue, paléontologue, philosophe, paléoanthropologue, scientific collectorFrance
  • Wikidata:SPARQL query service/queries/examples/human/fr : Lien
  • Wikidata:MOOC/Course outline : Lien
  • en.wikibooks SPARQL/Aggregate functions : Lien
  • en.wikibooks SPARQL/SERVICE – Label : Lien
  • en.wikibooks SPARQL/Expressions and Functions : Lien

Conclusion

De premières requêtes peuvent être posées et les résultats affichés sous forme de tableaux de données susceptibles de former ou enrichir un corpus. Le prochain tutoriel va concerner la visualisation des données de Wikidata sous forme de cartes, de frises chronologiques, de graphiques et d’autres choses encore. Nous nous intéresserons aux parcs et réserves naturelles françaises ainsi qu’à leur histoire. A suivre !

1 Star2 Stars3 Stars4 Stars5 Stars (Pas encore noté)
Loading...

Laisser un commentaire