okfnfr / CITES-biodiversity

CITES project
6 stars 0 forks source link

Faire une liste .csv des espèces dont on recherche des illustrations #9

Open cecilaki opened 4 years ago

cecilaki commented 4 years ago

Objectif : partager cette liste avec des parties prenantes susceptibles de fournir des images supplémentaires. Exemples : universitaires, ONGs (WWF..) etc..

Faire un premier extract à partir de requête SPARQL, avec les informations suivantes :

Marinetep commented 4 years ago

WIP

@Iencho : 1) pourrais tu me donner ton avis sur les résultats ci dessous et 2) sais tu comment améliorer la seconde query pour obtenir le IUCNconservationstatusLabel en anglais ?

1. Identification du nombre d'espèces référencées sous Wikidata avec un ID Cites mais sans illustration

11 858 espèces sont référencées sous Wikidata avec un ID Cites mais n'ont pas d'illustrations. (Pour rappel 20 349 des 38 619 ID Cites ont été identifiés comme non référencés sur Wikidata).

SELECT (COUNT(distinct ?idCITES) AS ?countidCITES) WHERE { ?item wdt:P105 wd:Q7432 ; wdt:P2040 ?idCITES.
FILTER NOT EXISTS{ ?item wdt:P18 ?image. } # without images SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" } } ORDER BY ASC (?idCITES)

2. Fichier contenant ces ID Cites : IDCITES_in_Wikidata_without_pictures.csv

Le fichier IDCITES_in_Wikidata_without_pictures.csv recense ces différents ID Cites enrichis des informations suivantes : taxon label, taxon Common Name, nom Scientific, IUCN taxon ID et IUCN statut. Ce fichier compte 12 332 observations car plusieurs "Taxon Common Name(s)" peuvent être associés à un même ID Cites. Ce fichier est le résultat de la query ci dessous :

SELECT distinct ?idCITES ?speciesLabel ?nomScientific ?IUCNtaxonID ?IUCNconservationstatusLabel ?taxonCommonName WHERE { ?species wdt:P105 wd:Q7432 . ?species wdt:P2040 ?idCITES. FILTER NOT EXISTS{ ?species wdt:P18 ?image. } # without images OPTIONAL { ?species wdt:P225 ?nomScientific . ?species wdt:P627 ?IUCNtaxonID . ?species wdt:P141 ?IUCNconservationstatus . ?species wdt:P1843 ?taxonCommonName . FILTER(LANG(?taxonCommonName) = "en") .
} SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" }

} ORDER BY ASC (?idCITES)

Aide Sparql :

https://www.wikidata.org/wiki/Wikidata:SPARQL_query_service/queries/examples/fr

itly314 commented 4 years ago

@Marinetep, j'ai regarder pour tes questions 1) et 2) et reponds en deux parties.

Partie 1/ D'abord, il y avait un pépin avec la clause OPTIONAL{ ... } car il manquait des données dans certaines cellules. En l'occurence, les colonnes, nomScientific, IUCNtaxonID, IUCNconservationstatusLabel et taxonCommonName, n'étaient renseignés que si toutes ces quatres informations étaient disponibles ensemble pour un item donné. S'il y avait juste le nomScientific par exemple, les quatres cellules étaient vides.

Or, les items pour les taxa en Wikidata ont toujours un nom scientifique à ce que je vois ; et je pense même qu'un item de type taxon qui n'a pas de nom scientifique pourrait être consideré comme non valable.

Pour corriger, on a besoin d'une clause 'OPTIONAL{...}' par variable facultatif.

En même temps, j'ai réussi à extraire le statut IUCN en anglais en utilisant le service wikibase:label ; et j'ai fait en sorte que le nom scientifique n'est plus facultatif

Ce qui donne le suivant :

SELECT ?idCITES ?speciesLabel ?scientificName ?IUCNtaxonID ?IUCNconservationstatusLabel_en ?taxonCommonName
WHERE
{
  ?species wdt:P2040 ?idCITES.  # items with a CITES ID
  ?species wdt:P225 ?scientificName . # with a scientific name
  ?species wdt:P105 wd:Q7432 . # taxons with the rank of species
  FILTER NOT EXISTS{ ?species wdt:P18 ?image. } # without images

  OPTIONAL { ?species wdt:P627 ?IUCNtaxonID . }
  OPTIONAL { ?species wdt:P141 ?IUCNconservationstatus . }
  OPTIONAL {
    ?species wdt:P1843 ?taxonCommonName .
    FILTER(LANG(?taxonCommonName) = "en") .
  }

  SERVICE wikibase:label {
    bd:serviceParam wikibase:language "en"
  }

  SERVICE wikibase:label {
    bd:serviceParam wikibase:language "en".
    ?IUCNconservationstatus rdfs:label ?IUCNconservationstatusLabel_en
  }

}
ORDER BY ASC (?idCITES)
itly314 commented 4 years ago

Partie 2 / Ensuite, je propose quelques améliorations dans la version de la requête ci-dessous

On note aussi que,

Requête améliorée pour générer CITES_Species_requiring_images.csv :

SELECT ?idCITES ?wdItem ?scientificName ?IUCNtaxonID
?IUCNconservationstatusLabel_en (GROUP_CONCAT(?taxonCommonName ; separator=" ; ") AS ?taxonCommonNames)
WHERE
{
  ?wdItem wdt:P2040 ?idCITES.  # items with a CITES ID
  ?wdItem wdt:P225 ?scientificName . # with a scientific name
  ?wdItem wdt:P105 wd:Q7432 . # taxons with the rank of species
  FILTER NOT EXISTS{ ?wdItem wdt:P18 ?image. } # without images

  OPTIONAL { ?wdItem wdt:P627 ?IUCNtaxonID . }
  OPTIONAL { ?wdItem wdt:P141 ?IUCNconservationstatus . }
  OPTIONAL {
    ?wdItem wdt:P1843 ?taxonCommonName .  # retrieve common names in EN and FR
    FILTER( LANG(?taxonCommonName) = "en" || LANG(?taxonCommonName) = "fr" ) .
  }

  SERVICE wikibase:label {
    bd:serviceParam wikibase:language "en".
    ?IUCNconservationstatus rdfs:label ?IUCNconservationstatusLabel_en
  }

}
GROUP BY ?idCITES ?wdItem ?scientificName ?IUCNtaxonID ?IUCNconservationstatusLabel_en
ORDER BY ASC (?idCITES)

Cliquer ici pour exécuter : https://tinyurl.com/y3usk25d

itly314 commented 4 years ago

Le fichier CITES_Species_requiring_images.csv remplace désormais le fichier IDCITES_in_Wikidata_without_pictures.csv

@cecilaki peut on supprimé l'ancien fichier?

itly314 commented 4 years ago

Amélioration pour plus tard : rajouter des colonnes qui permettront de ségmenter la liste selon les niveaux taxanomique.

Par exemple: il serait utile de traiter les animaux séparamment des plantes ; ou sortir une liste des mamifères dont on cherche une illustration

cecilaki commented 4 years ago

Le fichier CITES_Species_requiring_images.csv remplace désormais le fichier IDCITES_in_Wikidata_without_pictures.csv

@cecilaki peut on supprimé l'ancien fichier?

Bien sur!