Allez vers la page précédente

É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 créé, nous pourrons réaliser plusieurs traitements statistiques, d'analyses descriptives et d'analyses de réseaux.

Sur cette page, vous retrouvez l'ensemble des éléments pour comprendre notre projet:

Une documentation expliquant les différents langages utilisés, le fonctionnement des bases de données utilisées, etc.

La délimitation du sujet sur la définition des termes “économistes” et “juristes” ainsi que les bornes chronologiques et géographiques choisies.

La feuille de route retraçant les différentes étapes de notre projet.

Le détail des étapes réalisés.

Documentation

Vous retrouverez la documentation qui peut être utile pour comprendre le projet avec les langages employés, les bases de données utilisés, etc.

Délimitation du sujet

Afin d'avoir une population claire à étudier, il faut pour cela délimiter notre sujet et ainsi discriminer les personnes qui rentrent ou non dans la définition d'économiste ou de juriste.

Dans cette section, vous retrouverez la délimitation du sujet qui est le point de départ de notre recherche.

Feuille de route

Nous devons dans ce projet réaliser différentes étapes:

Récolter le maximum de personnes sur DBpedia et BnF Data via des requêtes SPARQL - Aligner les deux jeux de données avec le langage Python

Voir s'il y a des propriétés qui sont présentes sur une majorité de personnes

en extrayant les propriétés par des requêtes SPARQL

Créer une ontologie particulière

Basé sur des ontologies de haut niveau comme le Cidoc CRM

En utilisant OntoMe

Créer un point de terminaison SPARQL

Comparer le jeux de données créé avec Siprojuris

BnF Data et Siprojuris ont tous les deux des IDRef communs qui permettront de faire un alignement

Réaliser des différentes analyses statistiques

Sondage des données

La première étape est de connaître l'état des jeux de données de DBpedia et 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.

Pour cela il faut réaliser des requêtes 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 SPARQL d'aller chercher des chaînes de caractères avec la clause 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 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 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 point de terminaison SPARQL BnF Data:

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)

Cette requête est exécuté sur Python est permet d'aller chercher à la fois les économistes et à la fois les juristes BnF Data. (cf. documentation SPARQL pour comprendre davantage comment se construit la requête).

Nous ajoutons de façon optionnelle les personnes qui aurait un URI VIAF. Il est important, car il nous permet de faire une jointure entre les données BnF Data et DBpedia pour les personnes qui ont le même URI VIAF sur les bases de données.

Il est possible de retrouver sur ce carnet la requête pour BnF Data et DBpedia, ainsi que les démarches pour aligner les deux bases de données.

Accès à notre dépôt Github sur lequel nous mettons nos différents carnets Python.