Closed vbombaerts closed 7 months ago
Exemple de requête via l'interface https://metawal.wallonie.be/geonetwork/srv/eng/catalog.search#/search?any=q(%2BMD_LegalConstraintsOtherConstraintsObject.link:%22https:%2F%2Fgeoportail.wallonie.be%2Ffiles%2Fdocuments%2FConditionsSPW%2FDataSPW-CGA.pdf%22)
q(+th_infraSIG.default:"Open Data")
q(+MD_LegalConstraintsOtherConstraintsObject.link:"https://geoportail.wallonie.be/files/documents/ConditionsSPW/DataSPW-CGA.pdf")
Exclure :
q(-resourceType:(dataset OR series))
q(+isTemplate:n)
q(+isPublishedToAll:false)
A préciser avec un exemple de fiche ?
La requête de ce qu'il me faudrait serait qqch comme ça :
Il faut que ce soit une ressource de type donnée, jeu de données, serie, donnée non géo, document ET qu'elle soit publiée pour tous ET qu'elle soit publiée dans le groupe GeoportailWal ET qu'elle soit considérée comme Open data.
Pour être considérée comme open data, il faut soit qu'elle ait le mot-clé InfraSIG Open Data OU qu'elle ait la combinaison des licences CGA+CPU-TypeC OU qu'elle soit une des licences creative commons
+resourceType:(data OR dataset OR document OR nonGeographicDataset OR series)
AND
+isPublishedToAll:true
AND
+groupPublished:"GeoportailWal"
AND
[
+th_infraSIG.default:"Open Data"
OR
+mw-gp-constraintsObject.link: ("https://geoportail.wallonie.be/files/documents/ConditionsSPW/DataSPW-CGA.pdf" AND "https://geoportail.wallonie.be/files/documents/ConditionsSPW/DataSPW-CPU-TypeC.pdf")
OR
+mw-gp-constraintsObject.link:("https://creativecommons.org/licenses/by-sa/3.0/" OR "https://creativecommons.org/licenses/by-nc/4.0/legalcode" OR "https://creativecommons.org/licenses/by/4.0/deed.fr" OR "https://creativecommons.org/licenses/by-nc/3.0/fr/" OR "https://creativecommons.org/licenses/by-sa/2.0/be")
]
Mais en plus, il faudrait que ce soit en query DSL pour pouvoir en faire une requête qui sera envoyée de FME vers l'API Metawal _search.
😃
On peut éviter le
AND +groupPublished:"GeoportailWal"
si ils font la requête directement sur le point d'accès GeoportailWal
On peut aussi simplifier le
OR +mw-gp-constraintsObject.link:("https://creativecommons.org/licenses/by-sa/3.0/" OR "https://creativecommons.org/licenses/by-nc/4.0/legalcode" OR "https://creativecommons.org/licenses/by/4.0/deed.fr" OR "https://creativecommons.org/licenses/by-nc/3.0/fr/" OR "https://creativecommons.org/licenses/by-sa/2.0/be")
puisque toutes les adresses commencent par https://creativecommons.org/licenses
Autre point : peut-on indiquer dans la requête de ne renvoyer en réponse que
Pour la sélection des champs on peut utiliser _source
{
"_source": {
"includes": [ "resourceIdentifier.code", "revisionDateForResource", "format", "crsDetails.code" ]
},
"query": {
"query_string": {
"query": "+isPublishedToAll:true +resourceType:(data OR dataset OR document OR nonGeographicDataset OR series)
"
}
}
}
eg.
curl 'https://metawal.wallonie.be/geonetwork/srv/api/search/records/_search' \
-H 'Accept: application/json, text/plain, */*' \
-H 'Accept-Language: eng' \
-H 'Content-Type: application/json;charset=UTF-8' \
-H 'Cookie: XSRF-TOKEN=d911162a-e35b-4aec-bd09-510a8b990c08; JSESSIONID=08C609A60169C6FF9709FB2F06F67DB7; serverTime=1686227744514; sessionExpiry=1686227744514; _gid=GA1.2.1573378445.1686202625; _gat=1; _ga_LSCTPKPSGL=GS1.1.1686227738.9.0.1686227738.0.0.0; _ga=GA1.1.1211503249.1682583678' \
-H 'X-XSRF-TOKEN: d911162a-e35b-4aec-bd09-510a8b990c08' \
--data-raw $'{"_source": {"includes": [ "resourceIdentifier.code", "revisionDateForResource", "format", "crsDetails.code" ]},"query": {"query_string": {"query": "+isPublishedToAll:true +resourceType:(data OR dataset OR document OR nonGeographicDataset OR series)"}}}'
Si on y va par étape:
q(+isPublishedToAll:true +resourceType:(data OR dataset OR document OR nonGeographicDataset OR series)) = 736
q(mw-gp-constraintsObject.link:/https:\/\/creativecommons.org\/licenses.*/) = 17
q(mw-gp-constraintsObject.link:("https://geoportail.wallonie.be/files/documents/ConditionsSPW/DataSPW-CGA.pdf" AND "https://geoportail.wallonie.be/files/documents/ConditionsSPW/DataSPW-CPU-TypeC.pdf")) = 134
q(th_infraSIG.default:"Open Data") = 414
q(th_infraSIG.default:"Open Data" OR mw-gp-constraintsObject.link:("https://geoportail.wallonie.be/files/documents/ConditionsSPW/DataSPW-CGA.pdf" AND "https://geoportail.wallonie.be/files/documents/ConditionsSPW/DataSPW-CPU-TypeC.pdf") OR mw-gp-constraintsObject.link:/https:\/\/creativecommons.org\/licenses.*/) = 439
q(+isPublishedToAll:true +resourceType:(data OR dataset OR document OR nonGeographicDataset OR series) +(th_infraSIG.default:"Open Data" OR mw-gp-constraintsObject.link:("https://geoportail.wallonie.be/files/documents/ConditionsSPW/DataSPW-CGA.pdf" AND "https://geoportail.wallonie.be/files/documents/ConditionsSPW/DataSPW-CPU-TypeC.pdf") OR mw-gp-constraintsObject.link:/https:\/\/creativecommons.org\/licenses.*/)) = 429
Ca semble correct ?
oui, très correct
Finalement, c'était pas si compliqué :
{
"from": 0,
"size": 100,
"_source": {
"includes": [ "mw-gp-globalIdentifier", "revisionDateForResource", "format", "crsDetails.code", "status"]
},
"query": {
"bool": {
"must": [
{"terms": {"resourceType": ["data","dataset","series","document","nonGeographicDataset"]}},
{"term": {"isPublishedToAll": {"value": "true"}}},
{"term": {"groupPublished": {"value": "GeoportailWal"}}},
{"bool": {
"should": [
{"term": {"th_infraSIG.default": {"value": "Open Data"}}},
{"term": {"mw-gp-constraintsObject.link": {"value": "https://creativecommons.org/licenses"}}},
{"bool": {
"must": [
{"term": {"mw-gp-constraintsObject.link": {"value": "https://geoportail.wallonie.be/files/documents/ConditionsSPW/DataSPW-CPU-TypeC.pdf"}}},
{"term": {"mw-gp-constraintsObject.link": {"value": "https://geoportail.wallonie.be/files/documents/ConditionsSPW/DataSPW-CGA.pdf"}}}
]
}}
]
}}
]
}
}
}
Le "bool" permet d'introduire les AND, les OR et les NOT https://www.elastic.co/guide/en/elasticsearch/guide/2.x/combining-filters.html
curl -X POST "https://metawal.wallonie.be/geonetwork/srv/api/search/records/_search?bucket=metadata" -H "accept: application/json" -H "Content-Type: application/json" -H "X-XSRF-TOKEN: cdd82d72-7311-4a21-bcee-01cc92a286df" -d "{\"from\":0,\"size\":100,\"_source\":{\"includes\":[\"mw-gp-globalIdentifier\",\"revisionDateForResource\",\"format\",\"crsDetails.code\",\"status\"]},\"query\":{\"bool\":{\"must\":[{\"terms\":{\"resourceType\":[\"data\",\"dataset\",\"series\",\"document\",\"nonGeographicDataset\"]}},{\"term\":{\"isPublishedToAll\":{\"value\":\"true\"}}},{\"term\":{\"groupPublished\":{\"value\":\"GeoportailWal\"}}},{\"bool\":{\"should\":[{\"term\":{\"th_infraSIG.default\":{\"value\":\"Open Data\"}}},{\"term\":{\"mw-gp-constraintsObject.link\":{\"value\":\"https://creativecommons.org/licenses\"}}},{\"bool\":{\"must\":[{\"term\":{\"mw-gp-constraintsObject.link\":{\"value\":\"https://geoportail.wallonie.be/files/documents/ConditionsSPW/DataSPW-CPU-TypeC.pdf\"}}},{\"term\":{\"mw-gp-constraintsObject.link\":{\"value\":\"https://geoportail.wallonie.be/files/documents/ConditionsSPW/DataSPW-CGA.pdf\"}}}]}}]}}]}}}"
Demande de requête de la part de Dominique pour obtenir l'id, la date de mise à jour de la ressource, les formats et les EPSG des données considérées comme "open". L'objectif est de vérifier, en routine, si le prézip existant contient bien la dernière version de la donnée. Egalement d'éliminer les prezip sur les donnée obsolètes/plus distribuées.
Sont considérés comme open data dans ce use case :
Exclure :