-
Notifications
You must be signed in to change notification settings - Fork 31
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Intégration de plusieurs référentiels et de leurs correspondances #318
Comments
Salut, on avait déjà étudié la possibilité de remplacer le référentiel Taxref par un autre référentiel en en gardant la même structure (PnX-SI/GeoNature#164) et ça fonctionnait bien pour WORMS ou le BACKBONE du GBIF. Par contre pour gérer plusieurs référentiels et leurs correspondances, il faudrait ajouter des tables. A voir quand même si dans ce cas, on ne raccroche les données qu'à Taxref et qu'on veut juste avoir les correspondances avec d'autres référentiels pour faire des exports, ou si on veut pouvoir utiliser ces différents référentiels aussi dans GeoNature en saisie et en requête ? |
Yes le besoin est surtout sur les correspondances dans ce cas là :) L'idée pour le moment est de raccrocher les données qu'à TaxRef pour avoir des données cohérentes dans GN avec un seul référentiel. |
Bonjour a tous On a un utilisateur intéressé par l'écosystème mais c'est un jardin botanique (de renom lol) GBif Backbone ou liste a ajout ? @amandine-sahl |
Pas de projet prévu ou financé sur le sujet. Mais toute contribution est bienvenue. En l'état et sans développement, il me semble qu'il est possible de remplacer le référentiel Taxref par un autre qui aurait une structure similaire. A vérifier, tester, et voir si ça tient niveaux performances. Il est aussi possible en l'état de garder Taxref et d'y ajouter d'autres taxons ou un autre référentiel, en plus. Ce qui n'est pas possible actuellement au niveau du modèle de données est d'avoir plusieurs référentiels avec des correspondances entre eux. Pour avoir des correspondances entre taxons de différents référentiels, il faudrait ajouter une table des référentiels et une table de correspondances entre taxons de différentes nomenclatures. Comme on a dans Habref il me semble. Mais je ne pense pas que le besoin concerne les correspondances entre taxons de différents référentiels, mais plutôt d'avoir d'autres référentiels que Taxref, ce qui en l'état me semble possible. |
On ne trouve pas le Hack : |
Ah mince, c'est une vieille branche qui a été supprimée depuis. |
Bon, déjà j'ai retrouvé les scripts d'intégration de médias depuis l'API GBIF : PnX-SI/GeoNature-atlas@18a240a Et le SQL en question : https://github.com/PnX-SI/GeoNature-atlas/pull/299/files#diff-af3eb02e0bee442da81d2ca320a6843b8b7f4c636b9a27e1601d6f0630bd1742 Youpi ! Par contre, ça date un peu tout ça, les outils ont évolué depuis, mais ça doit s'adapter assez facilement. |
|
OK super. Je serai curieux que vous partagiez la méthode et les scripts que vous avez exécuté (@JulienCorny). |
Salut, On a simplement importé backbone dans une table de la bdd puis on l'a inséré en taxons négatifs dans taxref, en essayant de faire correspondre le mieux possible les colonnes de backbone dans taxref (probablement possibilité de faire mieux pour les correspondances mais c'était juste un essai). Puis on a créé une liste de taxons contenant seulement les cd_noms négatifs. Effectivement backbone contient plus de 7 millions de taxons, du coup on a inséré seulement la flore, qui représente quand-même plus de 2 millions de taxons. Les performances de l'autocomplete ne souffrent pas trop de ce grand nombre de taxons. Voici les quelques manip faites :
CREATE TABLE public.backbone (
id int PRIMARY KEY,
parent_key int,
basionym_key int,
is_synonym boolean,
status text,
rank text,
nom_status text[],
constituent_key text,
origin text,
source_taxon_key int,
kingdom_key int,
phylum_key int,
class_key int,
order_key int,
family_key int,
genus_key int,
species_key int,
name_id int,
scientific_name text,
canonical_name text,
genus_or_above text,
specific_epithet text,
infra_specific_epithet text,
notho_type text,
authorship text,
year text,
bracket_authorship text,
bracket_year text,
name_published_in text,
issues text[]
)
sudo psql -h localhost -U postgres -d geonature2db -c '\copy public.backbone FROM /home/geonatureadmin/simple.txt' (https://techdocs.gbif.org/en/data-use/download-formats#simple)
insert into taxonomie.taxref
select
id*-1,
null,
null,
rank,
'Plantae',
null,
(select b2.canonical_name from public.backbone b2 where b2.id = b.class_key), --classe
(select b2.canonical_name from public.backbone b2 where b2.id = b.family_key), --famille
null, --sous-famille
null, --tribu
null, --cd_taxsup
parent_key, --cd_sup
null,
null,
canonical_name, --lb_nom
null,
scientific_name, --nom_complet
null,
null, --nom_valide
null, --nom_vern
null,
null, --group1
null,
null,
null
from public.backbone b (todo: améliorer les correspondances des colonnes dans ce insert)
delete from taxonomie.cor_nom_liste ;
delete from taxonomie.bib_noms;
insert into taxonomie.bib_noms(cd_nom,cd_ref,nom_francais)
select cd_nom, cd_ref, nom_vern
from taxonomie.taxref
where cd_nom < 0;
insert into taxonomie.cor_nom_liste(id_liste,id_nom)
select 100, id_nom
from taxonomie.bib_noms
where cd_nom < 0; (!! si la suppression bloque, désactiver les triggers et pas oublier de les réactiver)
-- supprimer la vue, la modifier et la recréer
CREATE MATERIALIZED VIEW taxonomie.vm_taxref_list_forautocomplete
TABLESPACE pg_default
AS SELECT row_number() OVER () AS gid,
t.cd_nom,
t.cd_ref,
t.search_name,
unaccent(t.search_name) AS unaccent_search_name,
t.nom_valide,
t.lb_nom,
t.nom_vern,
t.regne,
t.group2_inpn,
t.group3_inpn
FROM ( SELECT t_1.cd_nom,
t_1.cd_ref,
concat(t_1.lb_nom, ' = <i>', t_1.nom_valide, '</i>', ' - [', t_1.id_rang, ' - ', t_1.cd_nom, ']') AS search_name,
t_1.nom_valide,
t_1.lb_nom,
t_1.nom_vern,
t_1.regne,
t_1.group2_inpn,
t_1.group3_inpn
FROM taxonomie.taxref t_1
UNION
SELECT DISTINCT t_1.cd_nom,
t_1.cd_ref,
concat(split_part(t_1.nom_vern::text, ','::text, 1), ' = <i>', t_1.nom_valide, '</i>', ' - [', t_1.id_rang, ' - ', t_1.cd_ref, ']') AS search_name,
t_1.nom_valide,
t_1.lb_nom,
t_1.nom_vern,
t_1.regne,
t_1.group2_inpn,
t_1.group3_inpn
FROM taxonomie.taxref t_1
WHERE t_1.nom_vern IS NOT NULL AND t_1.cd_nom = t_1.cd_ref) t
WITH DATA;
-- View indexes:
CREATE INDEX i_tri_vm_taxref_list_forautocomplete_search_name ON taxonomie.vm_taxref_list_forautocomplete USING gin (unaccent_search_name gin_trgm_ops);
CREATE INDEX i_vm_taxref_list_forautocomplete_cd_nom ON taxonomie.vm_taxref_list_forautocomplete USING btree (cd_nom);
CREATE UNIQUE INDEX i_vm_taxref_list_forautocomplete_gid ON taxonomie.vm_taxref_list_forautocomplete USING btree (gid); |
OK intéressant. Merci pour le partage. Sachant par ailleurs qu'avec Wikidata on peut refaire le lien entre un ID GBIF backbone et un cd_ref. Voir https://pncevennes.github.io/test/inpn_to_gbif.html |
Surtout, étant donné que le lien entre TaxRef et Backbone est opérationnel à 96%, pourquoi ne pas "simplement" ajouter un identifiant GBIF à TaxHub, en complément de l'identifiant TaxRef ? |
Bien le bonjour !
Je me permets d'ouvrir ce ticket pour la problématique suivante : pouvoir alimenter taxhub avec plusieurs référentiels, créer/éditer les correspondances, envoyer ces correspondances dans GeoNature.
Exemples d'utilisation :
La LPO récupère aujourd'hui les données des plateformes faune dans GeoNature.
Souci : le référentiel utilisé par ces plateformes n'est pas TaxRef.
Pour éviter un effet "boite noire", l'idéal serait que les correspondances soient éditables par les utilisateurs.
Ce que j'imagine très grossièrement :
Là j'en parle dans le cadre de la LPO mais ça pourrait être utilisé pour des instances étrangères, multi-langues, multi-sources de données.
J'ai vu la discussion dans le ticket #309, j'ai l'impression que la fonctionnalité des attributs pourrait aider au moins dans un premier temps ?
Des avis ou d'autres choses en cours sur la question ?
Merci !
The text was updated successfully, but these errors were encountered: