Allez vers la page précédente - étapes
La première étape est de connaître l'état des jeux de données de DBpedia, BnF Data et Wikidata 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 bases de données le nombre de personnes qui répondre à ces critères. Pour cela, les requêtes doivent être réalisées avec le moins grande nombre de critères de sélection afin de ne pas 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 la date 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 (c'est le cas dans BnF Data). 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 et Wikidata, 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_viaf ?bio ?date WHERE { { ?s egr:biographicalInformation ?bio ; egr:dateOfBirth ?bd BIND(STRBEFORE(STRAFTER(STR(?bd), "http://data.bnf.fr/date/"), "/") AS ?date) # La clause "BIND" est utilisé afin de ne garder dans l'URL que la date. FILTER ( ?date > "1800" ) 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_viaf FILTER REGEX(?uri_viaf, "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 ?date) FILTER ( ?date > "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_viaf FILTER REGEX(?uri_viaf, "viaf.org", "i") } } } ORDER BY DESC(?uri_viaf)
Cette requête est exécuté sur Python est permet d'aller chercher à la fois les économistes et à la fois les juristes dans 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 bases de données pour les personnes qui ont le même URI VIAF sur les bases de données.
Il est possible de retrouver sur cette base de données l'intégralité des requêtes pour les différentes bases de données (ce sont les requêtes n°46, 47 et 48; cf. base de données SQLite pour comprendre comment la réaliser).