MCD CONTACT V2 - Référentiel, nomenclature et champs
Closed this issue · 18 comments
Voir le standard Occurences de taxons du SINP : http://standards-sinp.mnhn.fr/occurrences_de_taxons_v1-2-1/
Et les nomenclatures : http://standards-sinp.mnhn.fr/nomenclature/
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) :
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
.
-
Vocabulaires et nomenclature :
Je suis en train de travailler sur une proposition d'organisation centrale (cœur de GeoNature). Pour ça, j'étudie les ressources disponibles et j'ai trouvé ceci : http://standards-sinp.mnhn.fr/nomenclature/
Je vous invite à prendre qq minutes pour y jeter un œil. Si on partage ce niveau d'information, ça nous aidera à discuter des options possibles. J'en fait un large usage dans les commentaires ci-dessous.
En gros, on voit que l'INPN à fortement structuré de nombreux sujets sur lesquels nous avons déjà discutés, parfois longuement. Un vocabulaire existe avec des nomenclatures proposées et validées. Je travaille sur une proposition de structuration regroupant ces nomenclatures afin que l'on puisse les factoriser dans le cœur de GeoNature. On pourrait ainsi les utiliser dans n'importe quel module. Par exemple faire un test d'intégration au module Contactfaune.
Voici qq exemples : -
pour les stades / phénologies : http://standards-sinp.mnhn.fr/nomenclature/10-stade-de-vie-stade-de-developpement-du-sujet-occurrencestadedevie-23-06-2016/
-
pour ce qu'on a nommé "comportements" : http://standards-sinp.mnhn.fr/nomenclature/13-statut-biologique-occurrencestatutbiologique-23-06-2016/
-
pour ce qu'on a nommé "critères" : http://standards-sinp.mnhn.fr/nomenclature/14-methodes-dobservation-observationmethode-23-06-2016/
-
Autres exemples : http://standards-sinp.mnhn.fr/nomenclature/19-statut-de-la-source-16-08-2016/ - http://standards-sinp.mnhn.fr/nomenclature/2-code-dorigine-de-la-donnee-22-06-2016/
-
Rattachement des comportements, critères, stades et techniques aux listes. Nous avons 2 options possibles
1- Comme c'est proposé, rattachement aux listes. Avantage, c'est très souple car on créé les listes qu'on veut et on met les taxons qu'on veut dedans. inconvénients, c'est très lourd car il faut peupler toutes ces tables et si un taxon est oublié, on ne sais pas quelles valeurs proposer. Donc très risqué et difficile à maintenir.
2- On attache ces informations à taxref (group2_inpn est un bon candidat pour la plupart des cas) : avantages c'est l'inpn qui gère l'intégrité du rattachement et on peut proposer qq chose de stable par défaut et de très générique. Inconvénient, on perd de la souplesse.
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.
-
Stade, sexe et effectif :
On avait conclu un relevé par sexe et age. Je trouve cependant que ta proposition est intéressante en terme de modèle. On devrait pouvoir proposer dans le formulaire web une astuce d'ergonomie permettant pour un taxon d'ajouter plusieurs effectifs selon sexe et age disponibles. Par contre coté mobile, ce sera difficile et je pense qu'il faut en rester à la conclusion de la réunion : un enregistrement dans t_taxon_cfaune par sexe et age.
http://standards-sinp.mnhn.fr/wp-content/uploads/sites/16/versionhtml/OccTax_v1_2_1/
Voir aussi ça : !!! http://standards-sinp.mnhn.fr/nomenclature/6-objet-du-denombrement-objetdenombrement-23-06-2016/
Le sexe parait être une notion simple, voici la nomenclature INPN : http://standards-sinp.mnhn.fr/nomenclature/9-sexe-occurrencesexe-23-06-2016/
C'est compliqué la nature ! -
Structuration générale :
En travaillant avec Amandine on avait ébaucher une proposition de structuration plus générique. Je propose d'explorer cette structuration dans une autre base car cela remet à plat tout le MCD. Et comme nous en sommes resté à l'ébauche, il serait bon de d'abord tester pour évaluer la faisabilité et les conséquences. Le MCD proposé ici est une base de discussion très lisible. -
Diffusion : quelle stratégie pour cette notion : http://standards-sinp.mnhn.fr/nomenclature/5-niveaux-de-precision-de-diffusion-souhaites-niveauprecision-23-06-2016/
Niveau de rattachement (observation, jeu de données, les deux ?) -
Geom : http://standards-sinp.mnhn.fr/wp-content/uploads/sites/16/versionhtml/OccTax_v1_2_1/
Pour le contact faune, certains ont demandé de pouvoir saisir des lignes et polygones. Il faut noter que dans ce cas, nous devrons gérer le champ "insee" en nn (ou dupliquer l'observation pour chacune des communes. A discuter. -
Organismes : http://standards-sinp.mnhn.fr/wp-content/uploads/sites/16/versionhtml/OccTax_v1_2_1/
Ceci veut dire qu'il nous ajouter à UsersHub un organisme "indépendant" au moins. Je crois que "inconnu" existe déjà. -
Détails :
Pourquoi un id_nom ET un cd_nom dans t_taxon_cfaune ? Au passage, pour info, on réfléchi a supprimer le id_nom et ne plus faire référence qu'au cd_nom. -
Déterminateur : est-ce qu'on doit obligatoirement enregistrer les déterminateurs dans t_roles, ou met-on un champ libre ? Attention, en l'état, si un utilisateur veut saisir un déterminateur qui n'est pas présent dans UsersHub, il ne pourra pas le faire.
-
t_taxon_cfaune.v_taxref : le standard sinp rattache cette information au jeu de données (lot)
-
t_taxon_cfaune.effectif : ce champ ne fait-il pas doublon avec cor_stade_effectif.effectif ? Sur ce point, voir ceci : http://standards-sinp.mnhn.fr/nomenclature/21-type-de-denombrement-16-08-2016/ Doit-on intégrer ces notions ? Discussion à compléter ici : #187
-
t_taxon_cfaune.valide : la valeur de ce champ devrait être plus complexe qu'un simple booléen :
-
t_taxon_cfaune.etat_biologique : à ajouter ? Obligatoire ? valeur par défaut ? http://standards-sinp.mnhn.fr/nomenclature/7-etat-biologique-de-lobservation-occurrenceetatbiologique-23-06-2016/
-
prelevement : je propose un id_prelevement (integer PK machine) ET un num_prelevement (varchar champ libre pour l'identification de l'échantillon par l'utilisateur)
-
medias : prévoir l'ajout de médias attachés à t_taxon_cfaune (nn)
-
t_obs_faune.altitude*3 : ne devrait-on pas conserver une seule altitude et gérer l'altitude à retenir via l'application et les triggers ?
-
t_obs_faune.pdop : je ne sais plus si les gps fournissent une valeur décimale ou integer. Si on conserve ce champ, on doit implémenter sa valeur depuis les appli mobile. ce n'est pas le cas actuellement. PnEcrins/GeoNature-mobile#13
-
t_obs_faune.précision : qq notions intéressantes et normalisées : http://standards-sinp.mnhn.fr/nomenclature/23-type-dinformation-geographique-16-08-2016/
http://standards-sinp.mnhn.fr/nomenclature/3-nature-dobjet-geographique-natureobjetgeo-23-06-2016/ -
Doit-on permettre l'observation de taxons domestiques : http://standards-sinp.mnhn.fr/nomenclature/8-niveau-de-naturalite-occurrencenaturalite-23-06-2016/
-
Informations optionnelles : http://standards-sinp.mnhn.fr/wp-content/uploads/sites/16/versionhtml/OccTax_v1_2_1/
On peut envisager de mettre ces champs dans la base et d'activer ou non leur présence dans le formulaire selon une liste de paramètres permanents (lié à l'instance de GeoNature) et/ou rattaché à chaque jeu de données. -
Notion de jeu de données et de regroupement : http://standards-sinp.mnhn.fr/wp-content/uploads/sites/16/versionhtml/OccTax_v1_2_1/
Il y a là de quoi faire des choses très intéressantes mais potentiellement complexes. A creuser. -
Pseudo champs : http://standards-sinp.mnhn.fr/wp-content/uploads/sites/16/versionhtml/OccTax_v1_2_1/
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 :
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émastaxonomie
(on gère les médias taxhub à part jusqu'au bout de la logique) - lien medias --> observations avec 2 champs
entity_name
etentity_value
dans la tablemedias.t_medias
- contrainte de vérification de l'existence de
schema.table.field
déclaré dans le champentity_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 vuecontactfaune.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.
Dernières versions ici : https://github.com/PnX-SI/GeoNature/blob/docker/data/modules/contact/contact.sql et compléments (synthese, métadonnées, nomenclatures...) dans https://github.com/PnX-SI/GeoNature/tree/docker/data/core
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
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
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.