Outils pour utilisateurs

Outils du site


besson_sylvain:documentation_sparql

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
besson_sylvain:documentation_sparql [2021/07/05 16:43]
Vincent Alamercery Links to projets_individuels:documentation_dbpedia changed to besson_sylvain:documentation_dbpedia
besson_sylvain:documentation_sparql [2021/08/03 18:11] (Version actuelle)
Sylvain Besson [RDF]
Ligne 7: Ligne 7:
 ====RDF==== ====RDF====
  
-Le RDF (**R**esource **D**escription **F**ramework - [[https://fr.wikipedia.org/​wiki/​Resource_Description_Framework|page ​fr wikipédia]]) est un modèle de donnée ​graph orienté. Il est utilisé pour décrire des ressources web avec leurs métadonnées. Il est apparu en 1996 et recommandé depuis 1999 par le [[https://​www.w3.org/​|W3C]]. ​+Le RDF (**R**esource **D**escription **F**ramework - [[https://en.wikipedia.org/​wiki/​Resource_Description_Framework|page ​en wikipédia]]) est un modèle de données ​graph orienté. Il est utilisé pour décrire des ressources web avec leurs métadonnées. Il est apparu en 1996 et recommandé depuis 1999 par le [[https://​www.w3.org/​|W3C]]. ​
  
 Le modèle repose sur l'​utilisation de triplet, c'​est-à-dire qu'une donnée est composée de trois informations : un sujet, un prédicat et un objet. À l'​instar d'une phrase composée d'un sujet, d'un verbe et d'un complément,​ ici une donnée est répartie entre : Le modèle repose sur l'​utilisation de triplet, c'​est-à-dire qu'une donnée est composée de trois informations : un sujet, un prédicat et un objet. À l'​instar d'une phrase composée d'un sujet, d'un verbe et d'un complément,​ ici une donnée est répartie entre :
Ligne 23: Ligne 23:
 Il est possible de "​traduire"​ ce triplet de la façon suivante : Yuri Maltsev (sujet) est né (prédicat) le 31 décembre 1950 (objet). Il est possible de "​traduire"​ ce triplet de la façon suivante : Yuri Maltsev (sujet) est né (prédicat) le 31 décembre 1950 (objet).
  
-"​dpb:"​ est un préfixe qui dans lequel sont regroupés tous les types de ressources de [[besson_sylvain:​documentation_dbpedia|DBpedia]]. Cela permet de faire en sorte que tout le monde utilise le même vocabulaire pour décrire des choses semblables. ​+"​dpb:"​ est un préfixe qui dans lequel sont regroupés tous les types de ressources de [[documentation_dbpedia|DBpedia]]. Cela permet de faire en sorte que tout le monde utilise le même vocabulaire pour décrire des choses semblables. ​
  
-[[https://​www.w3.org/​TR/​2014/​NOTE-rdf11-primer-20140624/​|Document]] fournie par le [[https://​www.w3.org/​|W3C]] ​pour comprendre le fonctionnement du RDF.+Ce [[https://​www.w3.org/​TR/​2014/​NOTE-rdf11-primer-20140624/​|document]] fournie par le [[https://​www.w3.org/​|W3C]] ​permet de comprendre le fonctionnement du RDF.
  
 ====Vocabulaire==== ====Vocabulaire====
Ligne 102: Ligne 102:
 ====GraphDB==== ====GraphDB====
  
-Bien qu'​il ​n'est pas possible ​d'​associer différents jeux de données (provenant de sites différents) sur un même point SPARQL (pour des raisons de sécurité),​ il est possible de les fédérer via un système tiers ([[https://​www.w3.org/​TR/​sparql11-federated-query/​|documentation W3C]]) sur le sujet. Nous avons fait le choix d'​utiliser la version gratuite de GraphDB ([[https://​graphdb.ontotext.com/​documentation/​free/​|documentation]] et [[https://​www.ontotext.com/​products/​graphdb/​graphdb-free/​|lien de téléchargement]]),​ qui a une interface graphique permettant d'​avoir un serveur local. GraphDB permet notamment de faire des requêtes SPARQL fédérées. Pour les réaliser, il faut indiquer dans la requête les points d'​accès que l'on veut utiliser en se servant de la clause SERVICE (voir le lien sur les requêtes fédérées pour l'​utiliser correctement). ​+Bien qu'il est la plupart du temps impossible ​d'​associer différents jeux de données (provenant de sites différents) sur un même point SPARQL (pour des raisons de sécurité),​ il est possible de les fédérer via un système tiers ([[https://​www.w3.org/​TR/​sparql11-federated-query/​|documentation W3C]]) sur le sujet. Nous avons fait le choix d'​utiliser la version gratuite de GraphDB ([[https://​graphdb.ontotext.com/​documentation/​free/​|documentation]] et [[https://​www.ontotext.com/​products/​graphdb/​graphdb-free/​|lien de téléchargement]]),​ qui a une interface graphique permettant d'​avoir un serveur local. GraphDB permet notamment de faire des requêtes SPARQL fédérées. Pour les réaliser, il faut indiquer dans la requête les points d'​accès que l'on veut utiliser en se servant de la clause SERVICE (voir le lien sur les requêtes fédérées pour l'​utiliser correctement). ​
  
-GraphDB est aussi très utile pour mettre les individus sur un serveur local, afin de fusionner les données présentes sur plusieurs bases de données ainsi que de ne plus à aller chercher sur les différentes bases de données. Nous montrons comment nous faisons pour le réaliser à cette **[[projets_individuels:​etapes_fusion|page]]**. Il est possible par la suite d'​aligner les données avec un vocabulaire propre au serveur local.+GraphDB est aussi très utile pour mettre les individus sur un serveur local, afin de fusionner les données présentes sur plusieurs bases de données ainsi que de ne plus à aller chercher sur les différentes bases de données. Nous montrons comment nous faisons pour le réaliser à cette **[[etapes_fusion|page]]**. Il est possible par la suite d'​aligner les données avec un vocabulaire propre au serveur local.
  
-Il est aussi possible de faire les requêtes directement dans un carnet python. Pour cela, il faut utiliser l'API de GraphDB ([[https://​graphdb.ontotext.com/​documentation/​enterprise/​devhub/​workbench-rest-api/​index.html|documentation]]),​ plus précisément dans le serveur local, cela se situe dans REST API -lui-même dans //help//- puis il faut choisir SPARQL puis //expend operations//​- soit en choissant //GET// pour interroger les données ou bien //POST// pour les modifier. Il suffit ensuite de reporter le chemin -localhost:​7200/​webapi/​repositories/​{repositoryID} par exemple- dans le //wrapper// sur [[python:​accueil|python]]). ​+Il est aussi possible de faire les requêtes directement dans un carnet python. Pour cela, il faut utiliser l'API de GraphDB ([[https://​graphdb.ontotext.com/​documentation/​enterprise/​devhub/​workbench-rest-api/​index.html|documentation]]),​ plus précisément dans le serveur local, cela se situe dans REST API -lui-même dans //help//- puis il faut choisir SPARQL puis //expend operations//​- soit en choissant //GET// pour interroger les données ou bien //POST// pour les modifier. Il suffit ensuite de reporter le chemin -localhost:​7200/​webapi/​repositories/​{repositoryID} par exemple- dans le //wrapper// sur [[python:​accueil|python]])
 + 
 +{{ :​besson_sylvain:​graphdb_rest_api.png?​direct&​1000 |REST API graphDB}} 
 + 
 +====Base de données SQLite==== 
 + 
 +Pour conserver les différentes requêtes que nous avons réalisé et pouvoir les effectuer à nouveau, nous avons eu recours à une base de données [[https://​www.sqlite.org/​index.html|SQLite]]. Elle a l'​avantage d'​être légère et permet facilement de sauvegarder les requêtes. Ce **[[https://​github.com/​Semantic-Data-for-Humanities/​Economists_Jurists/​blob/​main/​Notebooks/​Database_SQlite.ipynb|carnet]]** montre comment la créer. Elle est bien sûr modifiable selon les besoins. Pour la lire, il est préférable d'​avoir recours à un logiciel de requêtage de base de données comme [[https://​dbeaver.io/​|DBeaver]] ([[https://​dbeaver.io/​download/​|lien]] vers le téléchargement,​ Mac Os, Windows et Linux). 
 + 
 + 
 + 
 +====Point d'​accès SPARQL public==== 
 + 
 +Un [[https://​hub-fne.idref.fr/​sparql|point d'​accès SPARQL Virtuoso]] a été crée et il est hébergé par l'ABES (Agence Bibliographique de l'​Enseignement Supérieur). Il est possible d'​effectuer des requêtes pour interroger les données. Les requêtes se font de la même façon que dans d'​autres point SPARQL, néanmoins, il est obligatoire de préciser dans quel graphe la requête est faite, sinon cela ne fonctionne pas. Pour cela il suffit d'​ajouter la clause GRAPH et de mettre entre chevrons le graphe: <​http://​dataforhumanities.org/​graph/​economists_jurists>​. 
 + 
 + 
 +<code sparql>​ 
 +PREFIX ​ wdt:  <​http://​www.wikidata.org/​prop/​direct/>​ 
 +PREFIX ​ rdfs: <​http://​www.w3.org/​2000/​01/​rdf-schema#>​ 
 + 
 +SELECT ​ * #​Selectionne l'​ensemble des variables inscrites dans la clause WHERE 
 +WHERE 
 +  { GRAPH <​http://​dataforhumanities.org/​graph/​economists_jurists>​ 
 +      { ?​person ​ wdt:​P569 ​   ?bD ; #Cherche les personnes 
 +                 ​rdfs:​label ​ ?nameLabel #Cherche leur nom 
 +     ​FILTER (lang(?​nameLabel) = '​fr'​) # Filte uniquement les noms avec une étiquette en français. 
 +      } 
 +  } 
 +LIMIT 10 #Affiche que les 10 premiers resultats 
 + 
 +</​code>​ 
 + 
 +De la même façon que pour GraphDB, il est possible de faire les requêtes directement sur python. Néamnoins, il faut savoir qu'il y a une limite (comme tous les graphes publics) de 100 000 lignes.
  
 ====Outils==== ====Outils====
Ligne 115: Ligne 146:
  
 :!: Ils vérifient uniquement si la requête est bien formulée, mais cela ne permet pas de juger de la pertinence de la requête ou de sa réussite. :!: Ils vérifient uniquement si la requête est bien formulée, mais cela ne permet pas de juger de la pertinence de la requête ou de sa réussite.
 +
 +
besson_sylvain/documentation_sparql.1625496237.txt.gz · Dernière modification: 2021/07/05 16:43 par Vincent Alamercery