Closed stephyritz closed 4 years ago
Reprendre la transfo https://github.com/SPW-DIG/iso19115-3.2018/blob/3.10.x/src/main/plugin/iso19115-3.2018/process/mw-constraints-cleanup.xsl qui fait une partie de l'opération.
- État des lieux sur l'ensemble
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 title,
unnest(xpath('count(//mri:keyword[gco:CharacterString = ''Reporting INSPIRE'']) > 0',
XMLPARSE(DOCUMENT data), n))::text AS isInspire, isTemplate,
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 CPATypeA1,
unnest(xpath('count(//mco:otherConstraints/*[contains(text(), ''DataSPW-CPA-TypeD1'')]) > 0',
XMLPARSE(DOCUMENT data), n))::text AS CPATypeD1,
unnest(xpath('count(//mco:otherConstraints/*[contains(text(), ''DataSPW-CPU-TypeC'')]) > 0',
XMLPARSE(DOCUMENT data), n))::text AS CPUTypeC,
unnest(xpath('count(//mco:otherConstraints/*[contains(text(), ''DataSPW-CPU-TypeA'')]) > 0',
XMLPARSE(DOCUMENT data), n))::text AS CPUTypeA,
unnest(xpath('count(//mri:resourceConstraints)',
XMLPARSE(DOCUMENT data), n))::text AS nbRC
FROM metadata, ns
WHERE data LIKE '%%' AND isHarvested = 'n'
ORDER BY isInspire, title;
@stephyritz tu me dis si y'a besoin de plus d'information ? Il faudrait arriver à sortir les cas particuliers à gérer et voir si on peut les gérer en automatique ou manuellement.
- Appliquer aux fiches INSPIRE
- CSW inverse
Test:
Prendre une fiche eg. http://localhost:8080/geonetwork/srv/api/records/435c454c-0d4b-41cf-a136-a1aba134d9ac/formatters/xml
Traité au préalable par mw-constraints-cleanup-nosplit (normalement c'est fait)
curl -X POST "http://localhost:8080/geonetwork/srv/api/0.1/processes/mw-constraints-cleanup-nosplit?uuids=435c454c-0d4b-41cf-a136-a1aba134d9ac&updateDateStamp=true&index=true" -H "accept: application/json" -H "X-XSRF-TOKEN: c2302f0a-1766-4c98-8852-0a9caafb6790"
Les contraintes sont alors du type
<mri:resourceConstraints>
<mco:MD_LegalConstraints>
<mco:useLimitation>
<gco:CharacterString>Conditions d'accès et d'utilisation spécifiques</gco:CharacterString>
</mco:useLimitation>
<mco:useConstraints>
<mco:MD_RestrictionCode codeList="http://standards.iso.org/iso/19139/resources/gmxCodelists.xml#MD_RestrictionCode"
codeListValue="otherRestrictions"/>
</mco:useConstraints>
<mco:otherConstraints>
<gco:CharacterString>ACCÈS : Les conditions générales d'accès s’appliquent (https://geoportail.wallonie.be/files/documents/ConditionsSPW/DataSPW-CGA.pdf) mais sont restreintes par les conditions particulières de type D1 (https://geoportail.wallonie.be/files/documents/ConditionsSPW/DataSPW-CPA-TypeD1.pdf).
UTILISATION : Les conditions générales d'utilisation s'appliquent (https://geoportail.wallonie.be/files/documents/ConditionsSPW/DataSPW-CGU.pdf).</gco:CharacterString>
</mco:otherConstraints>
</mco:MD_LegalConstraints>
curl -X POST "http://localhost:8080/geonetwork/srv/api/0.1/processes/mw-constraints-split?uuids=435c454c-0d4b-41cf-a136-a1aba134d9ac&updateDateStamp=true&index=true" -H "accept: application/json" -H "X-XSRF-TOKEN: c2302f0a-1766-4c98-8852-0a9caafb6790"
<mri:resourceConstraints>
<mco:MD_LegalConstraints>
<mco:useLimitation>
<gco:CharacterString>Conditions d'accès et d'utilisation spécifiques</gco:CharacterString>
</mco:useLimitation>
<mco:useConstraints>
<mco:MD_RestrictionCode codeList="http://standards.iso.org/iso/19139/resources/gmxCodelists.xml#MD_RestrictionCode"
codeListValue="otherRestrictions"/>
</mco:useConstraints>
<mco:otherConstraints>
<gcx:Anchor xlink:href="https://geoportail.wallonie.be/files/documents/ConditionsSPW/DataSPW-CGU.pdf">Les conditions générales d'utilisation s'appliquent.</gcx:Anchor>
</mco:otherConstraints>
<mco:otherConstraints>
<gcx:Anchor xlink:href="https://geoportail.wallonie.be/files/documents/ConditionsSPW/DataSPW-CGA.pdf">Les conditions générales d'accès s’appliquent.</gcx:Anchor>
</mco:otherConstraints>
<mco:otherConstraints>
<gcx:Anchor xlink:href="https://geoportail.wallonie.be/files/documents/ConditionsSPW/DataSPW-CPA-TypeD1.pdf">Les conditions générales d'accès s’appliquent mais sont restreintes ou étendues par les
conditions particulières de type D1.</gcx:Anchor>
</mco:otherConstraints>
</mco:MD_LegalConstraints>
</mri:resourceConstraints>
mw
retourne l'ancien encodage<?xml version="1.0"?>
<csw:GetRecords xmlns:csw="http://www.opengis.net/cat/csw/2.0.2"
xmlns:gmd="http://www.isotc211.org/2005/gmd"
service="CSW" version="2.0.2"
resultType="results"
outputSchema="mw">
<csw:Query typeNames="gmd:MD_Metadata">
<csw:ElementSetName>full</csw:ElementSetName>
<csw:Constraint version="1.1.0">
<csw:CqlText>_uuid = '435c454c-0d4b-41cf-a136-a1aba134d9ac'</csw:CqlText>
</csw:Constraint>
</csw:Query>
</csw:GetRecords>
A déployer et tester. @davinciagf
Ok, je test la requête dès que j'ai de nouveau mes permissions sur la DB. J'imagine que le résultat correspond au document google sheet que tu m'as partagé ? Je vais regarder cela de près. Le timing est assez bon, car nous avons eu l'accord de la direction des routes pour passer toute une série de donnée en CGA/CGU. Cela fera l'objet d'un batchediting cette semaine.
Et aussi, tant qu'à faire, dans l'anchor, Dominique me demandait si cela était possible (conforme) de rajouter un paramètre pour l'anchre indiquant s'il s'agissait de contraintes liées à l'accès ou à l'utilisation. J'ai alors pensé à ce genre d'arguments qui semblent être conformes du point de vue du validateur INSPIRE :
<gmx:Anchor xlink:title="data access" xlink:href"http://geoportail.wallonie.be/files/documents/ConditionsSPW/DataSPW-CGA.pdf">Conditions générales d’accès.</gmx:Anchor>
<gmx:Anchor xlink:title="data access" xlink:href="http://geoportail.wallonie.be/files/documents/ConditionsSPW/DataSPW-CPA-TypeD1.pdf">Conditions particulières d’accès de type D1.</gmx:Anchor>
<gmx:Anchor xlink:title="data use" xlink:href=" http://geoportail.wallonie.be/files/documents/ConditionsSPW/DataSPW-CGU.pdf ">Conditions générales d’utilisation</gmx:Anchor>
Qu'en pensez-vous ? Il s'agirait d'indiquer ici au process FME s'il s'agit d'accès ou d'utilisation. Il pourrait peut-être se baser sur une recherche de la lettre "A" ou "U" dans la valeur mais c'est plus "propre" ainsi je trouve. Même si c'est un détournement de l'argument xlink:title..
Qu'en pensez-vous ?
Dans l'éditeur, ça complique un peu les choses. Après si on a un bouton pour sélectionner les différents cas, ça peut être envisageable. Dans FME, on peut chercher "accès" ou "utilisation" dans le texte de la balise non ? Ca me semble plus simple.
Plus simple oui si on arrive à faire en sorte que les valeurs soient homogènes et restreintes par une codelist. Parce que actuellement, on est tributaire d'une recherche texte qui peut se faire potentiellement sur des valeurs ne contenant pas les mots "accès" ou "utilisation". Mais faisons step by step : split sans cet argument dans un premier temps et nous verrons alors si ce besoin côté FME est primordial. Nous analyserons à ce moment là quelle pourrait être la meilleure solution.
Ok ça m'a l'air bon et toujours conforme côté INSPIRE. On va pouvoir faire le split sur les données concernées par INSPIRE. Est-ce que je peux déjà transmettre cette commande à NSI : http://metawal4.test.wallonie.be/geonetwork/srv/fre/csw?SERVICE=CSW&VERSION=2.0.2&REQUEST=GetRecordById&ID=435c454c-0d4b-41cf-a136-a1aba134d9ac&outputSchema=mw&ElementSetName=full pour modification des paramètres d'appel du CSW en environnement de test ?
Est-ce que je peux déjà transmettre cette commande à NSI : http://metawal4.test.wallonie.be/geonetwork/srv/fre/csw?SERVICE=CSW&VERSION=2.0.2&REQUEST=GetRecordById&ID=435c454c-0d4b-41cf-a136-a1aba134d9ac&outputSchema=mw&ElementSetName=full pour modification des paramètres d'appel du CSW en environnement de test ?
Oui, il faudrait modifier outputSchema=mw
côté geoportail.
Parfait, reste à adapter l'affichage du contenu dans le Geoportail côté SPW.
Séparer les CGA/CPA/CGU/CPU et les mettre dans des balises "otherconstraints" dédiées. Enmode édition, ces rubriques seront associés avec une codelist. L'url renseignée dans l'ancre fera référence au document pdf décrivant les CGA/CPA/CGU/CPU.
Action à réaliser après https://github.com/SPW-DIG/metawal-core-geonetwork/issues/502 et en bonne coordination avec Samuel et Dominique pour les interactions avec le Géoportail et les outils FME.
Cf. https://github.com/SPW-DIG/metawal-core-geonetwork/issues/502