PnX-SI/GeoNature

MCD CONTACT V2 - Référentiel, nomenclature et champs

Closed this issue · 18 comments

Premier jet de MCD par @ClaireLagaye pour la schema Contact faune V2, sur la base du premier document de définition (http://geonature.fr/documents/2017-04-GN2-Fonctionnalites-0.1.pdf) :

mcd

A discuter et à accorder avec les décisions qui seront prises sur les points :

Et à comparer aux standards Occurrences de taxon, métadonnées, sensibilité et aux nomenclature SINP pour s'en approcher le plus possible quand c'est pertinent.

A comparer aussi aux standards internationaux du GBIF.

Une première interrogation : Les valeurs des bibliothèques qui dépendent d'un groupe doivent-elles se baser sur taxonomie.bib_listes ou sur les rangs taxonomies et groupes présents dans TaxRef ?

Je pencherai pour la deuxième solution pour s'appuyer sur moins possible sur taxonomie.bib_listes.

Dans le cas du contact faune je suis plutôt pour l'option 2. A évaluer mais je pense que pour stade, critères et comportement au moins, on colle bien avec la hiérarchie taxonomique. Pour technique, j'y reviens plus loin.

Comment procède t-on pour les modifications à venir ? A t-on les droits en écriture sur cette base ? Passe t-on obligatoirement par Claire pour les modifications, même mineures (exemple : renommer la table bib_lots en t_lots ou t_jeux_donnees pour reprendre le vocabulaire SINP)

Je vous invite aussi à lire aussi cette FAQ: http://standards-sinp.mnhn.fr/faq-occurrences-de-taxons-v1-2-1/

GIL :

J'ai créé un fichier sql introduisant qq notions concernant les nomenclatures de l'INPN.
Je n'ai encore pris le temps d'importer toutes les nomenclatures qui nous seraient utiles mais j'ai une requête ligne 1159 qui permet de traiter les fichiers csv dispo sur le site de l'inpn : http://standards-sinp.mnhn.fr/nomenclature/. Il faut ajouter une colonne (en premier) contenant le N° du type de nomenclature.
Je le ferai plus tard si on valide le principe.

Si dans ta base il y a déjà les schémas utilisateurs et taxonomie, tu peux ne prendre que la partie à partir de la ligne 875.

A noter, j'avais commencé à travailler sur une notion de vocabulaire que la notion de nomenclature remplace. J'ai tout laissé, c'est un brouillon.

J'ai surtout commencé à tester la factorisation des nomenclatures et le rattachement des stades à taxref plutôt qu'aux listes. La table "contactfaune.bib_stades_cfaune" serait remplacée par la table "meta.t_nomenclatures" et la table "contactaune.cor_stade_liste" par la table "contactfaune.cor_taxref_stade_vie".
Le travail est à poursuivre sur la même logique avec les autres notions (comportement, critères, techniques, etc...).

J'ai aussi commencé à tester la notion de paramètres en base mais ce n'est pas du tout abouti.

Gil et Amandine ont ensuite retravaillé cela et vont proposer une nouvelle version du MCD, à discuter.

Voici donc la nouvelle version du MCD :

geonature2db

Et les commentaires de @gildeluermoz :

Voici un modèle provisoire découlant de nos échanges avec @amandine-sahl lors du GTSI.
Les évolutions majeures concernent le schéma contact faune qui est maintenant totalement indépendant des autres.

  • Ci-joint un fichier SQL modifiable (je le pousse sur github dès que possible). Utiliser ce script plutôt que des modif directement en base car on l'utilisera pour mettre à jour ce schéma au fur et à mesure. DROP SCHEMA contactfaune CASCADE; puis rejouer le script.
  • Vocabulaire des tables pour un rapprochement SINP : "obs" devient "relevés" et "taxons" devient "occurences"
  • suppression des liens avec les listes mais tout est lié à la nomenclature unique + lien entre la nomenclature et la taxonomie.
  • déplacement des medias dans le contacfaune
  • une seule altitude
  • num_prelevement uniquement
  • determinateur en champ libre
  • suppression du pdop (inutilisé)
  • suppression du id_nom et lien en FK du cd_nom vers taxref avec une contrainte check cdnom_isinbibnoms (à terme on supprimera le id_nom dans bib_noms pour ne garder que le cd_nom, du coup on évite de créer des dépendances à ce champ).

Prochaine étape :

  • tester un modèle contacts unique pour tous les contacts
  • commencer à remplir proprement la table des nomenclatures au moins celles utiles au contact ainsi que les correspondances avec les group2_inpn ou regne
  • retravailler la partie lots
  • créer la partie meta concernant les dispositifs de collecte
  • créer des vues dans le contact permettant de peupler les menus déroulant à partir de la nomenclature et selon le règne et/ou le group2_inpn du taxon choisi.

GIL :

J'ai principalement intégré les nomenclatures INPN permettant de gérer les occurrences de taxons (les 254 premières nomenclatures). J'ai mis en place avec l'aide d'Amandine la hiérarchie.
J'ai également commencé à créer qq liens entre nomenclature, règne et group2_inpn dans "taxonomie.cor_nomenclature_taxref", juste pour tester. J'ai du légèrement modifier une contrainte pour permettre l'affectation d'une nomenclature à tout un règne (on ne peut pas laisser le champ group2_inpn null car il fait parti de la clé primaire).
Remplir cette correspondance va être ardu et long.

AMANDINE

Je n'ai pas compris pourquoi il y avait une table spécifique bib_techniques_obs. Elle pourrait rentrer dans la table nomenclature et gérer les restrictions via la table relation, Ce qui éviterait les tables spécifiques. Cela créerait 2 vocabulaires techniques d'observation et champ d'application (ou un autre nom) et une relation de type condition d'utilisation ou restriction d'usage
Qu'est-ce que c'est que cette table meta.bib_vocabulaires?

GIL

Tout ça est en cours.
Bib_vocabulaires doit être supprimée.
La bib_techniques obs doit aussi être intégrée à la nomenclature bien sur. Mais comme il y a des liens avec les group inpn qui sont fait, je ne voulais pas les perdre avant d'avoir fait l'intégration.
Il y a d'autres tables à nettoyer.

GIL

Le champ id_numerisateur est actuellement dans la table des occurrences de taxons.
Est-ce que vous êtes d'accord sur le fait qu'il devrait plutôt se situer dans la table des releves (avec la date, le geom, l'altitude, etc...) ?

Sinon, j'ai intégré les techniques d'observation dans la t_nomenclature et j'ai récupéré les liens avec les règnes ou les group2_inpn utilisables.
J'ai aussi fait une vue des techniques d'observation dans le schéma contact faune.
usage
SELECT * FROM contactfaune.v_techniques_observations
WHERE group2_inpn = 'Oiseaux';
SELECT * FROM contactfaune.v_techniques_observations
WHERE regne = 'Plantae'; --bon c'est pas de la faune mais si on fait un seul contact ça anticipe l'affaire.

Le soucis c'est que tous les group2_inpn ne sont pas décrits. Dans le cas d'un taxon dont le group2_inpn n'est pas renseigné dans taxonomie.cor_taxref_nomenclature, je pense qu'il faut renvoyer toutes les techniques.
Pour ça, je creuse l'idée d'une fonction (la plus générique possible) et qui teste si le group2_inpn ou le regne du est présent. Si ou on renvoie une liste filtrée, sinon, on renvoie une liste de toutes les nomenclatures du type demandé.

GIL :

Quelques infos sur les évolutions du MCD.

  • Suppression du lien entre medias.t_medias et le schémas taxonomie (on gère les médias taxhub à part jusqu'au bout de la logique)
  • lien medias --> observations avec 2 champs entity_name et entity_value dans la table medias.t_medias
  • contrainte de vérification de l'existence de schema.table.field déclaré dans le champ entity_name
  • idem pour le champ entity_value, on vérifie que l'id de l'observation de rattachement existe. (TODO : gérer les exceptions avec les RAISE et lever une erreur qui cause si on return false).
  • altidudemin et max, idem pour les dates d'obs (SINP compatible)
  • nom_taxon_saisi --> nom_cite (= vocabulaire sinp)
  • migration de la FK numerisateur de occurrence vers releves.
  • 1ere vue remontant de la nomenclature INPN : contactfaune.v_techniques_observations

TODO :

  • Factoriser un peu, c'est verbeux.
  • Ajouter un champ source de la nomenclature (INPN, Campanule, GeoNature, perso, etc...), en plus du statut de validation.
  • Ajouter un champ boolean actif (default = true) et l'utiliser dans la vue contactfaune.v_techniques_observations

Ci-joint les SQL des 3 schémas (+data_nomenclatures + qq complément taxonomie) si vous voulez faire une install en local (DROP SCHEMA meta CASCADE d'abord + contacfaune + medias).
Et un schéma dev pour sauvegarder qq trucs potentiellement utiles.

SQL-mcd-geonature-V2_2017-06-22.zip

Dernière discussion sur l'organisation des schemas et des nomenclatures : 46904bf#commitcomment-23545214

Banzaï, on bascule le MCD en anglais !

Non on parle là des noms des champs. Basculer tous les champs en anglais et non plus en FR.

---- Modification de la BDD----

Schéma nomenclature

SENSIBILITY
Modification/ ajout de colonnes :

  • source
  • id (PK) et ajouter contrainte d'unicité
  • actif (oui/non)
  • fk_territoire
  • commentaire

CONTACT

  • créer table de correspondance cor_municipality (id_obs, id_municipality)

Relevés

Modification:

  • renommer la table t_obs_contact en t_releve_contact -> DONE
  • suppression insee remplacé par la table de correspondance -> DONE
  • datemin/date_max en datetime -> DONE
  • suppression obs_hour -> DONE
  • renommage : initial_entry (meta_device_entry) Saisie via mobile ou web
  • contexte suppression (les données peuvent être saisie dans le champ commentaire)
  • rajout champ precision int DEFAULT (10) . Indication sur la précision géographique du pointage
  • techique_obs : renommer en obs_technique
  • renommer table cor_role_obs_contact en cor_role_releve_contact

Occurrences
Modification :

  • renommer sample_number_contact en sample_number_proof
  • suppression id_nomeclature_obs_statut et dénombrement obligatoirement supérieur à 0
  • renommer id_nomenclature_accur_level en diffusion_level
  • renommer v_taxref en meta_v_taxref A voir faire en sorte que la valeur par défaut soit configurable dans les settings de l’installation. Remplacer v9.0 en taxref v9.0

Correspondance dénombrement (Cor_stage_sexe_number)

Modification :

  • Renommer la table en cor_counting_contact
  • renommer id_nomenclature_sexe en id_nomenclature_sex
  • renommer counting_min/max en count_min/max
  • renommer : id_nomenclature_type_count en id_nomenclature_type_count

Après traduction de la BDD en anglais, intégration du multilingue et pas mal d'évolutions, voici une nouvelle version du MCD (y aurait encore de quoi faire pas mal d'ajustements des blocs mais c'est looooooooooooong !)

2017-08-24-geonature2db

Le MCD et le formulaire avancent.
On peut désormais attribuer des valeurs par défaut à de nombreux champs (définis dans la BDD en fonction du regne/group2_inpn du taxon et éventuellement de l'organisme de l'utilisateur connecté).
On peut masquer certains champs pour insérer de manière transparente sa valeur par défaut

2017-11-occtax

Module renommé en OCCTAX - #277

Concernant l'UUID (id_sinp) de chaque OCCURRENCE, on stocke l'UUID au niveau du dénombrement pour pouvoir remonter une info précise de dénombrement dans la synthèse et les exports SINP. Une observation d'un taxon avec 2 dénombrements = 2 lignes dans la synthèse et les exports SINP.

Vu avec le MNHN :

En attente de la bascule du dénombrement vers le concept de descriptif du sujet, voilà la réponse que j'avais pu faire à l'OAFS qui avait la même problématique :

  • si vous avez un dénombrement global, sans plus d'informations : une seule occurrence avec son UUID

  • si vous avez le cas 2 mâles, 3 femelles : deux occurrences (donc deux lignes), chacune avec son UUID, l'une pour 2 mâles, l'autre pour 3 femelles.

On a désormais une première version stabilisée du MCD du module OCCATX (ex-Contact).
Les compléments/ajustements seront traités dans des tickets spécifiques.