Requêtes SPARQL - AliaBrah/militants_droit_femmes GitHub Wiki

Première requête SPARQL pour déterminer la population et les propriétés, qui peuvent être intéressantes pour notre recherche

Demande de base pour trouver tous les triplets où cet URI est le sujet

select ?p ?o
 where {
  <http://dbpedia.org/resource/List_of_women's_rights_activists> ?p ?o
}

Suite à cette demande, nous allons étendre la catégorie, en unissant les personnes militants pour le droit des femmes et les personnes catégorisées comme féministes, car elles apparaissent comme "ressources" dans les triplets liés à l'URI de la liste des militants pour le droit des femmes.

Demande pour trouver les propriétés et la population et combien de personnes sont liées à la propriété

PREFIX dbr: <http://dbpedia.org/resource/>
PREFIX dbp: <http://dbpedia.org/property/>
SELECT ?p1 (COUNT(*) as ?eff)
WHERE { 
{
      {<http://dbpedia.org/resource/List_of_women's_rights_activists> ?p ?o1.}
  UNION
      {dbr:List_of_feminists ?p ?o1.}
  UNION
      {?o1 ?p dbr:feminist.}
}
?o1 a dbo:Person;
dbp:birthDate | dbo:birthDate ?birthDate;
?p1 ?o2.
BIND(xsd:integer(SUBSTR(STR(?birthDate), 1, 4)) AS ?birthYear)
}
GROUP BY ?p1
ORDER BY DESC(?eff)

Plusieurs propriétés liées aux militant.e.s pour le doit des femmes nous intéressent: la date de naissance "birthDate", "birthYear", "academicDiscipline" et "almaMater", c'est-à-dire l'université où se sont formés ces personnes.

Exportation des données sur DBPedia en TSV grâce à une requête SPARQL

Exemple: les militant.e.s pour le droit des femmes et leur année de naissance

Requête pour trouver le nombre de personnes qui compose la population

PREFIX dbr: <http://dbpedia.org/resource/>
PREFIX dbp: <http://dbpedia.org/property/>
PREFIX dbo: <http://dbpedia.org/ontology/>
SELECT (COUNT(*) as ?effectif)
WHERE {
SELECT DISTINCT ?o1 ?birthDate ?birthYear
WHERE { 
{
 {<http://dbpedia.org/resource/List_of_women's_rights_activists> ?p ?o1.}
 UNION
 {dbr:List_of_feminists ?p ?o1.}
 UNION
 {?o1 ?p dbr:feminist.}
 UNION 
 {?o1 ?p dbr:Feminism.}
 }
 ?o1 a dbo:Person;
 dbp:birthDate | dbo:birthDate ?birthDate.
 BIND(xsd:integer(SUBSTR(STR(?birthDate), 1, 4)) AS ?birthYear)
 }
}

Cette requête donne un résultat de 2120 personnes.

Requête pour établir une liste avec le nom et prénom des militant.e.s et leur année de naissance qui est exportable en TSV et ensuite utilisable dans la base de données

PREFIX dbr: <http://dbpedia.org/resource/>
PREFIX dbp: <http://dbpedia.org/property/>
PREFIX dbo: <http://dbpedia.org/ontology/>
SELECT DISTINCT ?o1  (str(?label) as ?name) ?birthYear
WHERE {
SELECT DISTINCT ?o1 ?birthDate ?birthYear ?label
WHERE { 
{
 {<http://dbpedia.org/resource/List_of_women's_rights_activists> ?p ?o1.}
UNION
  {dbr:List_of_feminists ?p ?o1.}
UNION
  {?o1 ?p dbr:feminist.}
UNION
 {?o1 ?p dbr:Feminism.}
}
?o1 a dbo:Person;
 dbp:birthDate | dbo:birthDate ?birthDate;
rdfs:label ?label.
BIND(xsd:integer(SUBSTR(STR(?birthDate), 1, 4)) AS ?birthYear)
FILTER ( (?birthYear >= 1500
            && ?birthYear < 2005 )
            && LANG(?label) = 'en') 
  }
ORDER BY ?birthYear
}

De cette requête, nous avons produit un fichier TSV. De plus, ce fichier a été importé dans un doublon de notre base de données militant_import. La table s'intitule "sparql_militante_date" (cette table a été un peu modifiée à cause de la suite du processus pour créer un graphique avec celle-ci.

Autre requête intéressante

Requête qui indique la date de naissance de la personne militante et l'université où elle a étudié

PREFIX dbr: <http://dbpedia.org/resource/>
PREFIX dbp: <http://dbpedia.org/property/>
PREFIX dbo: <http://dbpedia.org/ontology/>
SELECT DISTINCT ?o1  (str(?label) as ?name) ?birthYear
WHERE {
SELECT DISTINCT ?o1 ?birthDate ?birthYear ?label
WHERE { 
 {
 {<http://dbpedia.org/resource/List_of_women's_rights_activists> ?p ?o1.}
 UNION
 {dbr:List_of_feminists ?p ?o1.}
 UNION
 {?o1 ?p dbr:feminist.}
 UNION
 {?o1 ?p dbr:Feminism.}
}
 ?o1 a dbo:Person;
 dbp:birthDate | dbo:birthDate ?birthDate;
 dbp:almaMater | dbo:almaMater ?target.
 ?target rdfs:label ?label.
 BIND(xsd:integer(SUBSTR(STR(?birthDate), 1, 4)) AS ?birthYear)
 FILTER ( (?birthYear >= 1500
        && ?birthYear < 2005 )
        && LANG(?label) = 'en') 
 }
ORDER BY ?birthYear
}

Nous avons exporter cette requête SPARQL en fichier TSV, pour ensuite l'importer dans notre base de donnée militant_import.

pistes de requêtes SQL sur cette table

Pour démontrer que cette table peut être intéressante pour notre recherche, nous proposons le début d'une piste de requête SQL. C'est-à-dire que nous allons commencer par rechercher combien d'universités ont formé des militant.e.s pour le droit des femmes:

SELECT COUNT (DISTINCT name) 
FROM sparql_universite_date sud;

Grâce à cette requête l'on sait qu'il y a 479 universités différentes dans la table que nous avons importé grâce à la requête SQL ci-dessus.

Suite à cette requête nous voulons savoir combien de personnes ont été formée par chaque université:

SELECT name as Universite, COUNT(*) as Effectif 
FROM sparql_universite_date sud
GROUP BY name
ORDER BY name ;

Grâce à cette requête SQL l'on sait combien de personne ont été formée dans chaque université. Cela dans le but de pouvoir savoir quelles universités ont formé le plus de personnes militant pour le droit des femmes. Une "vue" de cette table a été crée dans la base de donnée militant_import. Nous l'avons ensuite exportée en fichier CSV.