SPW-DIG / metawal-core-geonetwork

Metawal - Catalogue pour l'information géographique de Wallonie
http://metawal.wallonie.be
GNU General Public License v2.0
3 stars 1 forks source link

[INSPIRE TG2] Conformité basique en ISO19139:2007 pour INSPIRE metadata #455

Closed stephyritz closed 4 years ago

stephyritz commented 5 years ago

Amélioration de la transcription 19115-3 vers 19139

Certaines URL de différentes codelist devraient être mises à jour en ISO19139. Les éléments posant problème lors du test via l'outil de validation de la CE sont mis en évidence dans ce GoogleDoc.

Je joins également à ce ticket le fichier XML Template qui est full conforme sur le Common Requirements. Les modifications sont mises en évidence car les anciennes valeurs sont toujours présentes sous forme de commentaires.

Actions à réaliser Modification dans le fichier de mapping 115-3 vers 139

exemple_md_PS_190710.zip

stephyritz commented 5 years ago

François, tu trouveras en attaché le même fichier exemple xml conforme en classe 1. Avec les modifications qui sont indiquées en commentaire. Avec le travail que tu as aussi fait de ton côté (conformité en classe 2), je pense que nous pouvons déjà assurer une bonne base de travail pour l'adaptation aux TG2. Est-ce que tu penses que cela serait possible d'apporter les changements en DB et sur l'interface de Metawal afin de mettre l'ensemble des fiches taguées INSPIRE à niveau pour la fin août ?

exemple_md_PS_190715_Conformance_Class_1_OK.zip

fxprunayre commented 5 years ago

Déployer et tester la procédure.

davinciagf commented 5 years ago

En 3.8 - Erreur référencée sur http://metawal4.test.wallonie.be/geonetwork/srv/fre/catalog.search#/metadata/ffc45d44-1cc2-4924-bb8c-214096eb9058 Screen Shot 2019-09-20 at 17 07 20

stephyritz commented 5 years ago

En effet, reste le problème cité par Arnaud dans la déclaration des conditions d'accès et d'utilisation. Je vais regarder cela lundi matin. Il faudrait qu'on reparte de l'exemple que j'ai uploadé plus tôt dans la discussion et qui est conforme de ce point de vue. J'aurais aimé déclarer de la même manière les fiches INSPIRE et les autres. Mais pour cela il faut trouver les bonne balises où on pourrait stocker les informations CGA/CGU et les anchor liés à la conformité INSPIRE (Public Access et Condition Apply and Use). J'essaie de me pencher sur le sujet lundi matin et de faire une proposition de structure XML. Ensuite, nous verrons ensemble si ça vous semble bon et comment on fait pour que l'interface puisse traduire au mieux les balises xml utilisées.

stephyritz commented 5 years ago

Pour les conditions d'accès et d'utilisation, je pense qu'il faut déclarer de la façon suivante pour que cela soit conforme et le plus clair possible :

      <gmd:resourceConstraints>
        <gmd:MD_LegalConstraints>
          <gmd:accessConstraints>
            <gmd:MD_RestrictionCode codeList="http://standards.iso.org/iso/19139/resources/gmxCodelists.xml#MD_RestrictionCode" codeListValue="otherRestrictions" />
          </gmd:accessConstraints>
          <gmd:otherConstraints>
            <gmx:Anchor xlink:href="http://inspire.ec.europa.eu/metadata-codelist/LimitationsOnPublicAccess/noLimitations">No limitations to public access</gmx:Anchor>
          </gmd:otherConstraints>
        </gmd:MD_LegalConstraints>
      </gmd:resourceConstraints>
      <gmd:resourceConstraints>
          <gmd:MD_LegalConstraints>
              <gmd:useLimitation>
                <gco:CharacterString>Conditions d'accès et d'utilisation</gco:CharacterString>
              </gmd:useLimitation>
              <gmd:useConstraints>
                <gmd:MD_RestrictionCode codeList="http://standards.iso.org/iso/19139/resources/gmxCodelists.xml#MD_RestrictionCode" codeListValue="otherRestrictions" />
              </gmd:useConstraints>
          <gmd:otherConstraints>
            <gco:CharacterString>ACCÈS : 
Les conditions générales d'accès s’appliquent (http://geoportail.wallonie.be/files/documents/ConditionsSPW/DataSPW-CGA.pdf)

UTILISATION : 
Les conditions générales d'utilisation s'appliquent (http://geoportail.wallonie.be/files/documents/ConditionsSPW/DataSPW-CGU.pdf)
            </gco:CharacterString>
          </gmd:otherConstraints>
        </gmd:MD_LegalConstraints>
      </gmd:resourceConstraints>
fxprunayre commented 5 years ago

Du coup on met ça dans toutes les fiches ? ou selon des conditions ?

stephyritz commented 5 years ago

Il y a encore un problème concernant le texte règlementaire cité dans les balises qui concernent la conformité (). Le texte "correct" est 'RÈGLEMENT (UE) N o 1089/2010 DE LA COMMISSION du 23 novembre 2010 portant modalités d'application de la directive 2007/2/CE du Parlement européen et du Conseil en ce qui concerne l'interopérabilité des séries et des services de données géographiques'. Voir https://inspire.ec.europa.eu/schemas/common/1.0/enums/enum_fre.xsd

fxprunayre commented 5 years ago

Si tu nous donnes le texte actuel à remplacer ça nous permet de le faire en base de donnée directement. Tu peux nous indiquer une fiche ?

stephyritz commented 5 years ago

Voici un exemple de fiche conforme selon ce que je viens de mentionner PS_N2000_metadata-iso19139_TEST_GOOD.zip

davinciagf commented 5 years ago

Je joindrai cela à la requête SQL de migration vers la 3.8.1

stephyritz commented 5 years ago

Texte à remplacer : "Commission RÈGLEMENT (UE) N o 1089/2010 DE LA COMMISSION du 23 novembre 2010 portant modalités d'application de la directive 2007/2/CE du Parlement européen et du Conseil en ce qui concerne l'interopérabilité des séries et des services de données géographiques". En fait c'est la suppression de "Commission", je ne sais pas pourquoi c'était là ça.

stephyritz commented 5 years ago

Pour les conditions, je suis d'avis d'utiliser cette manière de déclarer pour toutes les fiches concernées par INSPIRE (keyword = Reporting INSPIRE). Mais c'est un peu brutal parce que, même si en théorie cela ne devrait pas être le cas, certaines fiches ont des conditions plus restrictives. Je vous dis dès que j'ai pris une décision à ce sujet.

stephyritz commented 5 years ago

Pour le changement du texte :

Texte à remplacer : "Commission RÈGLEMENT (UE) N o 1089/2010 DE LA COMMISSION du 23 novembre 2010 portant modalités d'application de la directive 2007/2/CE du Parlement européen et du Conseil en ce qui concerne l'interopérabilité des séries et des services de données géographiques". En fait c'est la suppression de "Commission", je ne sais pas pourquoi c'était là ça.

Non réalisé. Pour cause de problème d'accent ? @davinciagf ? Je ne comprends pas très bien pourquoi. Existe-t-il une solution ? Alternative ? Prévoir changement DB assez rapidement ou alors faire un count sur cette valeur pour voir combien de fiches sont concernées (ce n'est pas généralisée) et je procéderai alors manuellement éventuellement.

stephyritz commented 5 years ago

Concernant les conditions d'accès et d'utilisation des fiches concernées par INSPIRE, je vous propose de jeter un œil à ce document word dans lequel j'ai essayé de mettre par écrit mon analyse :

CA_CU_metawal4_INSPIRETG2.docx

Il me semble que le plus simple serait de faire deux blocs de gmd:resourceConstraints/gmd:MD_LegalConstraints :

Dans notre cas, cela impliquerait une réorganisation de cette partie du xml dans la majorité de nos fiches. J'ai décrit dans le document ci-dessus mes propositions sous forme de commentaires. Nous pouvons en discuter également au téléphone pour que cela soit plus facile. L'avantage c'est qu'il s'agit principalement de déplacer les balises, d'en supprimer et de rajouter certaines parties. A priori, il n'y aurait pas de changements conditionnés par des valeurs. Est-ce que nous pouvons construire des requêtes SQL capables de faire ce boulot de manière généralisée ?

Nous allons nous concentrer sur les datasets et series dans un premier temps. Je pense que cela sera beaucoup plus simple et homogène pour les services, nous le ferons ensuite.

fxprunayre commented 4 years ago

Draft pour discussion https://github.com/SPW-DIG/iso19115-3.2018/blob/3.8.x/src/main/plugin/iso19115-3.2018/process/mw-constraints-cleanup.xsl

stephyritz commented 4 years ago

Suite à notre discussion : la présence de deux balises "otherconstraints" satisfait tout de même au test de conformité, y compris dans les cas où nous utilisons une ancre --> http://staging-inspire-validator.eu-west-1.elasticbeanstalk.com/etf-webapp/v2/TestRuns/EID2236d332-d7cc-4305-b9e7-5b1d2a8d7de2.html
Donc proposition de mettre Conditions Générales d'Accès et Conditions Générales d'Utilisation dans deux balises "otherconstraint" différentes validée. D'autant plus que c'est très cohérent avec l'interface de saisie et le système de codelist mis en place dans la 3.8.0.

fxprunayre commented 4 years ago

Pour analyser en base ce qu'il y a :

WITH ns AS (
select ARRAY[ARRAY['xlink', 'http://www.w3.org/1999/xlink'],
       ARRAY['mdb', 'http://standards.iso.org/iso/19115/-3/mdb/2.0'],
       ARRAY['cit', 'http://standards.iso.org/iso/19115/-3/cit/2.0'],
       ARRAY['mri', 'http://standards.iso.org/iso/19115/-3/mri/1.0'],
       ARRAY['mco', 'http://standards.iso.org/iso/19115/-3/mco/1.0'],
       ARRAY['xsi', 'http://www.w3.org/2001/XMLSchema-instance'],
       ARRAY['gco', 'http://standards.iso.org/iso/19115/-3/gco/1.0']] AS n
)

SELECT distinct(unnest(xpath('//mdb:identificationInfo/*/mri:citation/*/cit:title/*/text()',
 XMLPARSE(DOCUMENT data), n)))::text  AS node,
 unnest(xpath('//mco:uselimitation/*/text()',
 XMLPARSE(DOCUMENT data), n))::text  AS uselimitation,
 unnest(xpath('//mco:otherConstraints/*/text()',
 XMLPARSE(DOCUMENT data), n))::text  AS otherConstraints,
 unnest(xpath('count(//mco:otherConstraints/*[contains(text(), ''DataSPW-CPA-TypeA1'')]) > 0',
 XMLPARSE(DOCUMENT data), n))::text  AS A1,
 unnest(xpath('count(//mco:otherConstraints/*[contains(text(), ''DataSPW-CPA-TypeD1'')]) > 0',
 XMLPARSE(DOCUMENT data), n))::text  AS D1
FROM metadata, ns
WHERE data LIKE '%%'
-- WHERE data LIKE '%Reporting INSPIRE%'

J'attends un dump de la prod pour voir plus en détail.

stephyritz commented 4 years ago

Ok, j'ai testé la requête sur pgadmin mais j'ai un tableau vide en retour.

constraints_request

J'ai manqué un truc ?

Je n'ai malheureusement pas les permissions pour faire le dump. J'ai dû faire un ticket DTIC pour cela. J'ai bon espoir que cela soit fait cette après-midi. Je vous envoie le fichier de backup dès que je l'ai.

fxprunayre commented 4 years ago

J'ai manqué un truc ?

Je vois pas. On a bien des fiches en "iso19115-3.2018"

SELECT distinct(schemaid) FROM metadata;

Devrait retourner "iso19115-3.2018"

On tente un truc simple d'abord:


WITH ns AS (
select ARRAY[ARRAY['xlink', 'http://www.w3.org/1999/xlink'],
       ARRAY['mdb', 'http://standards.iso.org/iso/19115/-3/mdb/2.0'],
       ARRAY['cit', 'http://standards.iso.org/iso/19115/-3/cit/2.0'],
       ARRAY['mri', 'http://standards.iso.org/iso/19115/-3/mri/1.0'],
       ARRAY['mco', 'http://standards.iso.org/iso/19115/-3/mco/1.0'],
       ARRAY['xsi', 'http://www.w3.org/2001/XMLSchema-instance'],
       ARRAY['gco', 'http://standards.iso.org/iso/19115/-3/gco/1.0']] AS n
)

SELECT distinct(unnest(xpath('//mdb:identificationInfo/*/mri:citation/*/cit:title/*/text()',
 XMLPARSE(DOCUMENT data), n)))::text  AS node
FROM metadata, ns
WHERE data LIKE '%%'
stephyritz commented 4 years ago

Cette requête va bien --> 1002 rows avec effectivement le titre des MD

D'ailleurs il faut que nous nous méfions du WHERE data LIKE '%Reporting INSPIRE%" car ce filtre inclut les fiches pour lesquelles le mot clé 'Reporting INSPIRENO' est utilisé (apparemment utilisé dans Metawal si une fiche est analysée et jugée non concernée par INSPIRE).

Je crois que pour être sûr, il vaut mieux qu'on utilise quelque chose du genre WHERE data LIKE '%Reporting INSPIRE</gco:CharacterString>%'

fxprunayre commented 4 years ago

Modif faite comme discuté : on aura donc CGU+CGA+(optionel) Type D1 ou A1.

stephyritz commented 4 years ago

Dans nos discussions nous nous sommes beaucoup basés sur les datasets, plus complexes. Mais il y a aussi le cas des services (41 fiches). Pour celles-ci, la situation semble nettement plus simple car le contenu me paraît homogène à vue d’œil et le résultat vers lequel nous souhaitons aller est simple et unique.

Exemple de situation actuelle (http://metawal.wallonie.be/geonetwork/srv/fre/catalog.search#/metadata/be109cca-44fe-4687-a965-4dbacca99006) :

ex_licence_service_INSPIRE

Situation souhaitée, dans la logique de ce dont nous avons discuté :

exemple_condition_acces_utilisation_service_be109cca-44fe-4687-a965-4dbacca99006.txt

Dites mois si ça vous paraît correct. Si oui, est-ce possible à mettre en œuvre également au cours du déploiement prochain ?

fxprunayre commented 4 years ago

@stephyritz plutot avec une Anchor non ?

              <mco:otherConstraints>
                <gcx:Anchor xlink:href="https://geoportail.wallonie.be/files/documents/ConditionsSPW/LicServicesSPW.pdf">Les conditions d'utilisation du service sont régies par les Conditions d’accès et d’utilisation des services web géographiques de visualisation du Service public de Wallonie.</gcx:Anchor>
              </mco:otherConstraints>
            </mri:resourceConstraints>
stephyritz commented 4 years ago

Oui, tout à fait.

stephyritz commented 4 years ago

Ok tout est bon en environnement de test. Les modifications seront visibles en prod après ajout des deux xslt (mw-constraints-cleanup et tolISO19139) et application du script updateConstraints.sh. Actions prévues avant déploiement du WAR (28/11) afin de solutionner ces problèmes d'ordres génériques qui pourraient "cacher" des problèmes plus spécifiques. Si c'est le cas, nous pourrons encore réagir à ces soucis lors du déploiement du WAR le 28/11 (dernière release possible avant le reporting INSPIRE).