Outils pour utilisateurs

Outils du site


besson_sylvain:economist_jurist

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
Prochaine révision Les deux révisions suivantes
besson_sylvain:economist_jurist [2021/03/18 12:10]
Sylvain Besson [VIAF]
besson_sylvain:economist_jurist [2021/03/23 17:22]
Sylvain Besson
Ligne 3: Ligne 3:
 ====== Économiste et juriste ====== ====== Économiste et juriste ======
 \\ \\
-Économiste et juriste est un projet visant à étudier les économistes et les juristes depuis 1800 jusqu'​à nos jours. Pour cela, nous allons prendre les données qui sont présentes sur DBpedia et BnF Data et les lier entre elles. Le but final étant d'​avoir une base de données fonctionnelle sur ces populations. De cette base de données nous pourront réaliser plusieurs traitements statistiques,​ d'​analyses descriptives et d'​analyses de réseaux. ​+Économiste et juriste est un projet visant à étudier les économistes et les juristes depuis 1800 jusqu'​à nos jours. Pour cela, nous allons prendre les données qui sont présentes sur DBpedia et BnF Data et les lier entre elles. Le but final étant d'​avoir une base de données fonctionnelle sur ces populations. ​ 
 + 
 +De cette base de données nous pourront réaliser plusieurs traitements statistiques,​ d'​analyses descriptives et d'​analyses de réseaux
 + 
 +Nous utiliserons pour cela le langage SPARQL. 
 + 
 +=====SPARQL===== 
 + 
 +SPARQL (**S**PARQL **P**rotocol and **R**DF** Q**uery **L**anguage - [[https://​fr.wikipedia.org/​wiki/​SPARQL|page fr wikipedia]]) est langage de requêtes. Il permet d’interroger,​ supprimer, modifier des données qui se trouve au format RDF (**R**esource **D**escription **F**ramework - [[https://​fr.wikipedia.org/​wiki/​Resource_Description_Framework|page fr wikipedia]]). Il est apparu en 2008 et est un standard recommandé par le [[https://​www.w3.org/​|W3C]]. Comme le RDF, il repose sur l'​utilisation des triplets. 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 : 
 + 
 +  * un **sujet**, la ressource à décrire 
 +  * un **prédicat**,​ le type de propriété pour laquelle est applicable la ressource 
 +  * un **objet**, une autre ressource ou donnée; la valeur de la propriété 
 + 
 +exemple: 
 + 
 +<​http://​dbpedia.org/​resource/​Yuri_Maltsev>​ dpb:​birthDate <"​1950-12-31">​ 
 + 
 +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 espace de nom qui dans lequel sont regroupés tous les types de ressources de dbpedia. Cela permet de faire en sorte que tout le monde utilise le même vocabulaire pour décrire des choses semblables.  
 + 
 +vocabulaire de base à utiliser pour le langage de requête SPARQL:  
 + 
 +<​code>​ 
 +PREFIX # définit des espaces de noms 
 + 
 +SELECT # permet de choisir les variables du résultat, parmi les résultats de la clause WHERE 
 +SELECT distinct # enleve les doublons parmi les couples 
 +SELECT * # conserver toutes les variables de la requête 
 + 
 +WHERE # contient des triplets qui définissent le pattern recherché 
 + 
 +-------------------------------------------------------- 
 + 
 +FILTER # permet de mettre des conditions 
 +GROUP BY # partitionner la solution en plusieurs groupes, sur lesquels on peut appliquer une fonction d’agrégat. 
 +HAVING # Indique les valeurs lorsque les conditions sont respectés avec des agrégats de valeurs 
 +BIND # sert à définir de nouvelles variables et à leur affecter une valeur. 
 +LIMIT # permet de mettre une limite sur le nombre de résultats affichés 
 +OFFSET # signifie qu’on ”passe” les n premières solutions. 
 +OPTIONAL # on peut mettre des parties optionnelles,​ même lorsque qu'il ne pas de valeurs dans l'​objet 
 +SERVICE # permet d'​agréger des points d'​accès SPARQL 
 + 
 +-------------------------------------------------------- 
 + 
 +ASK # retourne un booléen indiquant l’existence d’une solution qui satisfait le motif 
 +CONSTRUCT # pour construire un graphe RDF solution, à partir des valuations des variables 
 +DESCRIBE # retourne un graphe RDF décrivant les ressources trouvées. Le résultat dépend du service qui publie la donnée 
 +INSERT # permet d'​ajouter des données à un graph 
 + 
 + 
 +</​code>​ 
 + 
 +Ce vocabulaire réalisé à partir du document de Caron Anne-Cécile,​ «[[https://​www.google.com/​url?​sa=t&​rct=j&​q=&​esrc=s&​source=web&​cd=&​ved=2ahUKEwio3arnsd_uAhUNzYUKHYlmDI8QFjAAegQIARAC&​url=http%3A%2F%2Fwww.fil.univ-lille1.fr%2F~caronc%2FWS%2FsparqlPar4.pdf&​usg=AOvVaw31SW0hP9ETUOVuaAAHfl7j|sparql,​ Langage d’interrogation du web sémantique]]» dans le cadre du //Master image parcours ipi-nt//, 2016-2017. 
 + 
 +Cette «[[http://​www.iro.umontreal.ca/​~lapalme/​ift6281/​sparql-1_1-cheat-sheet.pdf|anti-sèche]]» permet aussi de retrouver l'​ensemble de la syntaxe du langage SPARQL. 
 + 
 +Un document qui permet d'​avoir toutes les clés en main pour comprendre le language SPARQL: Du Charme Bob, //Learning SPARQL: querying and updating with SPARQL 1.1//, Beijing, Chine, Pays multiples, 2011. 
 +Il est aussi possible de consulté le [[http://​learningsparql.com/​|site de l'​auteur]],​ ainsi que son [[http://​www.bobdc.com/​|blog]] (ici l'​[[http://​www.snee.com/​bobdc.blog/​metadata/​rdf/​sparql/​|ancienne version]] avec les articles avant Février 2019). 
 + 
 + 
 +Exemple de requête SPARQL: 
 + 
 +<​code>​ 
 + 
 +PREFIX foaf: <​http://​xmlns.com/​foaf/​0.1/>​ # exemple d'​espace de nom (foaf pour Friend of a friend; vocabulaire qui permet de décrire les personnes) 
 +PREFIX dbo: <​http://​dbpedia.org/​ontology/>​ 
 +PREFIX dbp: <​http://​dbpedia.org/​property/>​ 
 +PREFIX owl: <​http://​www.w3.org/​2002/​07/​owl#>​ 
 +PREFIX xsd: <​http://​www.w3.org/​2001/​XMLSchema#>​ 
 + 
 +SELECT DISTINCT ?s ?name (year(xsd:​dateTime(?​Birth_Date)) AS ?year) #ce sont les variables que l'on veut afficher 
 +# year permet de convertir une date (Année/​Mois/​Jour) en une année  
 +WHERE 
 +       {?s a dbo:Person . 
 +        ?s foaf:name ?name . 
 +        ?s dbp:​birthDate ?Birth_Date . 
 +        ?s dbo:​abstract ?abstract . 
 +         
 +        FILTER regex(?​abstract,​ "​lawyer"​) # la clause regex permet d'​aller chercher dans les résumés ceux qui ont comme motif "​lawyer"​  
 +        FILTER (xsd:date (?​Birth_Date) > "​1800-01-01"​^^xsd:​date) # permet de ne garder que ceux qui sont nés après 1800. 
 +        } 
 +ORDER BY (?year) #Cela ordonne les données par année de façon croissante 
 +LIMIT 50 # c'est important quand on ne sait pas le nombre de résultat à afficher et qu'il peut être important 
 +</​code>​ 
 + 
 +Ici, le but est d'​afficher les juristes qui sont nés après 1800 avec leur nom. 
 +Il est possible de l’exécuter sur un [[https://​dbpedia.org/​sparql|point d'​accès SPARQL]]. 
 + 
 + 
 +Les points d'​accès permettent d'​accéder à des jeux de données.  
 + 
 +Dans ce projet nous exécutons nos requêtes directement avec le language python. Pour cela, nous utilisons la bibliothèque [[https://​rdflib.dev/​sparqlwrapper/​|SPARQLWrapper]] (il faut l'​installer préalablement avec [[https://​anaconda.org/​conda-forge/​sparqlwrapper|conda]] ou [[https://​pypi.org/​project/​SPARQLWrapper/​|pip]] en ligne de commande sur un terminal). 
 + 
 +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 permettant 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). 
 + 
 +Il est là encore 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écisement dans le serveur local, cela ce situe dans REST API -lui-même dans //help//- puis il faut choisir SPARQL puis //expend operations//​- soit on choisie //GET// pour interroger les données ou //POST// pour les modifier. Il suffit ensuite de reporter le chemin -localhost:​7200/​webapi/​repositories/​{repositoryID} par exemple- dans le wrapper sur python)
  
 =====DBpedia===== =====DBpedia=====
Ligne 10: Ligne 107:
  
 Au prémisse du projet, l'​objectif de DBpedia était de récupérer toutes les données qui sont contenues dans les //​infoboxes//​ (c'est une table de données résumant les informations essentiels dans une fiche Wikipedia) de Wikipedia. Ensuite, ils ont aussi récupérer diverses données comme le résumé ou bien tous les liens présents sur la pages. Ils ont pu aussi rajouter d'​autres liens vers des fiches d'​autres sites ou bases de données. Cette extraction (via l'​extracteur MARVIN) se faisait au début du projet tous les ans, mais aujourd'​hui ils arrivent à extraire l'​ensemble des données de Wikipedia chaque mois. De plus actuellement,​ à chaque étape de l'​extraction jusqu'​à la publication,​ il y a une validation sur la plateforme [[https://​databus.dbpedia.org/​|Databus]] afin de corriger la syntaxe RDF, etc.  Au prémisse du projet, l'​objectif de DBpedia était de récupérer toutes les données qui sont contenues dans les //​infoboxes//​ (c'est une table de données résumant les informations essentiels dans une fiche Wikipedia) de Wikipedia. Ensuite, ils ont aussi récupérer diverses données comme le résumé ou bien tous les liens présents sur la pages. Ils ont pu aussi rajouter d'​autres liens vers des fiches d'​autres sites ou bases de données. Cette extraction (via l'​extracteur MARVIN) se faisait au début du projet tous les ans, mais aujourd'​hui ils arrivent à extraire l'​ensemble des données de Wikipedia chaque mois. De plus actuellement,​ à chaque étape de l'​extraction jusqu'​à la publication,​ il y a une validation sur la plateforme [[https://​databus.dbpedia.org/​|Databus]] afin de corriger la syntaxe RDF, etc. 
 +
 +Voici le schéma complet du cycle de mis à jour de DBpedia:
 +
 +\\
 +{{projets_individuels:​schema_dbpedia_release_cycle.png|schéma du cycle de mis à jour de DBpedia }}
 +Source: Hofer M., Hellmann S., Dojchinovski M., Frey J., [[https://​link.springer.com/​chapter/​10.1007/​978-3-030-59833-4_1|The New DBpedia Release Cycle: Increasing Agility and Efficiency in Knowledge Extraction Workflows]],​ dans: Blomqvist E. et al. (eds) //Semantic Systems. In the Era of Knowledge Graphs. SEMANTICS 2020. Lecture Notes in Computer Science//, Springer, Cham, 27 octobre 2020. (DOI:​10.1007/​978-3-030-59833-4_1)
 +
 +\\
 +
 +Il faut ajouter à cela que DBpedia a en plus une version par langue, appelées chapitres afin d'​internationaliser au mieux DBpedia. C'est le cas du [[http://​fr.dbpedia.org/​|français]].
  
 De plus, il y a une [[https://​wiki.dbpedia.org/​online-access/​DBpediaLive/​|version]] qui est mise à jour à chaque modification sur Wikipedia. Cette dernière ne se base que sur le Wikipedia anglais. De plus, il y a une [[https://​wiki.dbpedia.org/​online-access/​DBpediaLive/​|version]] qui est mise à jour à chaque modification sur Wikipedia. Cette dernière ne se base que sur le Wikipedia anglais.
Ligne 24: Ligne 131:
 Vous retrouver [[https://​dbpedia.org/​sparql?​nsdecl|ici]] la liste des [[https://​fr.wikipedia.org/​wiki/​Espace_de_noms|espaces de noms]] (wikipedia fr) utilisés par DBpedia. Vous retrouver [[https://​dbpedia.org/​sparql?​nsdecl|ici]] la liste des [[https://​fr.wikipedia.org/​wiki/​Espace_de_noms|espaces de noms]] (wikipedia fr) utilisés par DBpedia.
  
-L'​accès direct au [[https://​dbpedia.org/​sparql|terminal ​SPARQL]] de DBpedia, ainsi que de la version //​[[https://​live.dbpedia.org/​sparql|live]]//​.+L'​accès direct au [[https://​dbpedia.org/​sparql|point d'​accès ​SPARQL]] de DBpedia, ainsi que de la version //​[[https://​live.dbpedia.org/​sparql|live]]// ​et la [[http://​fr.dbpedia.org/​sparql|version française]].
  
 =====BnF Data===== =====BnF Data=====
Ligne 61: Ligne 168:
  
 Ces différents niveaux sont mis en relation à des personnes ou des collectivités. Auxquels, on peut ajouter des lieux, des événements,​ des concepts et des objets. Ces différents niveaux sont mis en relation à des personnes ou des collectivités. Auxquels, on peut ajouter des lieux, des événements,​ des concepts et des objets.
 +
 +Schéma du modèle FRBR:
 +
 +{{projets_individuels:​projets_individuels:​frbr.png|Schéma FRBR }}
 +
 +Source : Bénézet Joly, http://​slideplayer.fr/​slide/​3213771/​.
  
 ====Liens utiles==== ====Liens utiles====
Ligne 107: Ligne 220:
  
 Ils semblent qu'ils aient réalisé une ontologie mais qu'​elle est, à ce jour plus exploitée, ou bien qu'​elle ne soit publique (mais depuis 2011, il y a aucune documentation sur elle). Vous trouverez [[http://​viaf.org/​viaf.jpg|l'​ontologie]] comme elle a été imaginée. Ils semblent qu'ils aient réalisé une ontologie mais qu'​elle est, à ce jour plus exploitée, ou bien qu'​elle ne soit publique (mais depuis 2011, il y a aucune documentation sur elle). Vous trouverez [[http://​viaf.org/​viaf.jpg|l'​ontologie]] comme elle a été imaginée.
 +
 +
 +=====Github=====
 +
 +Les différents carnets créés durant ce projet sont disponibles sur ce [[https://​github.com/​Semantic-Data-for-Humanities/​Economists_Lawyers|répertoire Github]]. ​
  
  
besson_sylvain/economist_jurist.txt · Dernière modification: 2021/07/22 19:05 par Sylvain Besson