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/22 13:25]
Sylvain Besson
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://​en.wikipedia.org/​wiki/​Resource_Description_Framework|page en 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 25: Ligne 25:
 "​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. ​ "​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 **[[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==== ====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> ​+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. 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.
besson_sylvain/documentation_sparql.1626953151.txt.gz · Dernière modification: 2021/07/22 13:25 par Sylvain Besson