Ci-dessous, les différences entre deux révisions de la page.
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/04/01 11:46] Sylvain Besson [Sondage des données] |
besson_sylvain:economist_jurist [2021/04/01 16:37] Sylvain Besson [Étapes du projet] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | Allez vers la [[besson_sylvain|page précédente]] | + | Allez vers la [[besson_sylvain|page précédente - stage]] |
====== Économiste et juriste ====== | ====== Économiste et juriste ====== | ||
Ligne 47: | Ligne 47: | ||
---- | ---- | ||
- | =====Sondage des données===== | + | =====Étapes du projet===== |
- | La première étape est de connaître l'état des jeux de données de **[[documentation_DBpedia|DBpedia]]** et **[[documentation_BnF_Data|BnF Data]]** afin de voir le nombre de personnes dont on peut considérer qu'elles font parties de la "population" des Économistes et des juristes. | + | Vous retrouver ici les différentes **[[etapes|étapes]]** du projet "Économiste et juriste". |
- | Pour cela il faut réaliser des requêtes **[[documentation_SPARQL|SPARQL]]** afin de connaître indépendamment sur les deux bases de données le nombre de personnes qui répondre à ce critère. Pour cela, il ne faut faire les requêtes avec le moins grande nombre de critère de sélection afin de ne réduire la population si une personne ne correspond pas à une des critères. Les seuls critères qui sont conservés sont l'URI de la personne, sans quoi on ne peut pas l'identifier et l'année de naissance. | ||
- | |||
- | Il est ensuite possible de rajouter des critères optionnels comme le nom (toutes les personnes n'ont pas systématiquement un nom inscrit), la nationalité, etc. | ||
- | |||
- | Il est aussi parfois essentiel de conserver le résumé/la biographie de la personne, car c'est cet élément qui l'identifie en tant qu'économiste ou juriste. Il est possible dans le langage **[[documentation_SPARQL|SPARQL]]** d'aller chercher des chaînes de caractères avec la clause [[https://www.w3.org/TR/rdf-sparql-query/#funcex-regex|REGEX]]. C'est avec cette dernière que nous pouvons aller chercher dans les biographies et les résumées les mentions d'économistes, professeur d'économie, //jurist//, etc. | ||
- | Pour **[[documentation_BnF_Data|BnF Data]]**, il y n'a besoin de chercher ces chaînes de caractère qu'en français, car toutes les biographies sont écrites en français. Par contre, pour **[[documentation_DBpedia|DBpedia]]**, il faut avant tout les faire en anglais, car c'est la langue qui est privilégiée. | ||
- | |||
- | Voici un exemple d'interrogation possible pour obtenir les économistes sur le [[https://data.bnf.fr/sparql/|point de terminaison SPARQL]] BnF Data: | ||
- | |||
- | <code sparql> | ||
- | PREFIX egr: <http://rdvocab.info/ElementsGr2/> | ||
- | PREFIX owl: <http://www.w3.org/2002/07/owl#> | ||
- | PREFIX dbr: <http://dbpedia.org/resource/> | ||
- | PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> | ||
- | PREFIX skos: <http://www.w3.org/2004/02/skos/core#> | ||
- | PREFIX foaf: <http://xmlns.com/foaf/0.1/> | ||
- | |||
- | SELECT DISTINCT ?s ?name ?sName ?uri ?year ?bio | ||
- | WHERE | ||
- | { { ?s egr:biographicalInformation ?bio ; | ||
- | egr:dateOfBirth ?bd | ||
- | BIND(strbefore(strafter(str(?bd), "http://data.bnf.fr/date/"), "/") AS ?year) | ||
- | # La clause "BIND" est utilisé afin de ne garder dans l'URL que la date. | ||
- | FILTER ( ( regex(?bio, "juriste", "i") || regex(?bio, "professeur de droit", "i") ) || regex(?bio, "docteur en droit", "i") ) | ||
- | # Ce filtre est nécessaire pour obtenir la population que nous avons défini. | ||
- | OPTIONAL | ||
- | { ?s foaf:name ?name } | ||
- | OPTIONAL | ||
- | { ?s skos:prefLabel ?sName } | ||
- | OPTIONAL | ||
- | { ?s owl:sameAs ?uri | ||
- | FILTER regex(?uri, "viaf.org", "i") | ||
- | # Ce filtre est utilisé pour fusionner les données issues de | ||
- | # BnF Data et de DBpedia by l'URI VIAF. | ||
- | } | ||
- | } | ||
- | UNION | ||
- | { ?s egr:biographicalInformation ?bio ; | ||
- | egr:dateOfBirth ?bd | ||
- | BIND(strbefore(strafter(str(?bd), "http://data.bnf.fr/date/"), "/") AS ?year) | ||
- | FILTER ( ?year > "1800" ) | ||
- | FILTER ( ( ( regex(?bio, "économiste") || regex(?bio, "Economiste") ) || regex(?bio, "professeur d'économie", "i") ) || regex(?bio, "docteur en économie", "i") ) | ||
- | OPTIONAL | ||
- | { ?s foaf:name ?name } | ||
- | OPTIONAL | ||
- | { ?s skos:prefLabel ?sName } | ||
- | OPTIONAL | ||
- | { ?s owl:sameAs ?uri | ||
- | FILTER regex(?uri, "viaf.org", "i") | ||
- | } | ||
- | } | ||
- | } | ||
- | ORDER BY DESC(?uri) | ||
- | </code> | ||
- | |||
- | Cette requête est exécuté sur [[python:accueil|Python]] est permet d'aller chercher à la fois les économistes et à la fois les juristes **[[documentation_BnF_Data|BnF Data]]**. (cf. **[[projets_individuels:economiste_juriste_documentation|documentation SPARQL]]** pour comprendre davantage comment se construit la requête). | ||
- | |||
- | Nous ajoutons de façon optionnelle les personnes qui aurait un URI **[[documentation_VIAF|VIAF]]**. Il est important, car il nous permet de faire une jointure entre les données **[[documentation_BnF_Data|BnF Data]]** et **[[documentation_DBpedia|DBpedia]]** pour les personnes qui ont le même URI **[[documentation_VIAF|VIAF]]** sur les bases de données. | ||
- | |||
- | Il est possible de retrouver sur ce **[[https://github.com/Semantic-Data-for-Humanities/Economists_Jurists/blob/development/Notebooks/Issues/DBpedia_BnF_Data_URI.ipynb|carnet]]** la requête pour **[[documentation_BnF_Data|BnF Data]]** et **[[documentation_DBpedia|DBpedia]]**, ainsi que les démarches pour aligner les deux bases de données. | ||
---- | ---- | ||