Catalogue Service for the Web - CSW

Description d’un catalogue de ressources spatialisées

Le service CSW est un standard de l’OGC qui permet d’interagir avec un ou plusieurs catalogues de ressources spatialisées. C'est est un service de "découverte"
des métadonnées présentes dans un catalogue généralement de manière distante via le Web.

La notion de ressources spatialisées peut correspondre à des données cartographiques et services web OGC mais aussi des référentiels spatiaux ou des capteurs (SensorML par exemple). Dans le cadre de ce chapitre, la ressource est limitée à des données cartographiques et des services web définis par l’OGC (WMS, WFS, WMTS, WCS,…).

Le catalogue regroupe l’ensemble des descriptions des ressources que le gestionnaire du catalogue (qui peut être directement le producteur de données ou un acteur tiers) souhaite référencer. Cette description constitue une notice avec des champs obligatoires et facultatifs (un titre, un responsable,…), généralement normée sous forme de métadonnées selon les exigences européennes de la Directive INSPIRE.

Fonctionnement

Les types d'usages du CSW

Le service CSW s’inscrit dans deux grandes familles d’usages :

  • la découverte des ressources (exemples : données cartographiques et services web) disponibles dans le catalogue :
  • la recherche de données cartographiques ou services via un critère ouvert “à la google” (« tout texte ») ou de critères avancées (sur le titre, le système de coordonnées, le type de données,…) ;

Usage : recherche dans une zone (spatio-temporelle), suivant une thématique (océano, géo, météo) ou par rapport à un besoin de livraison d’un flux de données (timeliness de la réponse, cohérence de la série temporelle, pérennité de la donnée).

  • l’accès à la fiche descriptive détaillée d’une donnée/service sous forme de contenu XML, par exemple conforme aux normes ISO 19115/19139 ;

Usage : le profil de présentation de la fiche peut être adapté au monde utilisateur, à la thématique de l’application.

  • le moissonnage du catalogue (à ne pas confondre avec le moissonnage par le catalogue) consistant généralement à synchroniser le contenu du catalogue avec un autre catalogue.

Usage : la synchronisation peut se faire suivant différents points de vue : thématique données, types de services d’accès réseau, flux temps réel (façon broadcast), flux historique ….

  • la gestion des métadonnées du catalogue via le service web, dénommé dans ce cas CSW-T (Transactionnel) :
  • l’ajout, la modification et la suppression de tout ou partie d’une métadonnée par un utilisateur ou un logiciel à distance ;

Usage : mise à jour d’une métadonnée suite à la mise à jour de la ressource spatialisée décrite.

  • l’envoi d’un ordre de moissonnage par le catalogue afin que ce dernier récupère ou génère un nouveau référencement.

Usage : envoi d’une adresse WMS qui permet au catalogue de récupérer les informations décrites dans l’opération GetCapabilities du service WMS et de générer une notice.

Il est à noter que la deuxième famille doit être généralement mise en œuvre selon des protocoles Internet sécurisés afin d’éviter une corruption du catalogue. Non décrits actuellement dans le standard de l’OGC, il existe plusieurs modalités d’implémentation complexifiant l’interopérabilité du CSW-T.

Les principales opérations du CSW

 

GetCapabilities

Permet de retourner les métadonnées du service CSW en décomposant les informations suivantes :

  • la description générale du service (titre, résumé, responsable, limitations d’usages,…),
  • les opérations mises en œuvre par le service et leurs paramètres d’appel,
  • les critères de recherche auxquels le service peut répondre (par exemple requête sur l’intersection d’un polygone,…),
  • les profils disponibles dans le catalogue.

Exemple :
https://geosas.fr/geoserver/ows?SERVICE=csw&VERSION=2.0.2&REQUEST=GetCapabilities

GetRecords

Permet de réaliser une recherche de métadonnées dans le catalogue et de récupérer les informations de métadonnées répondant aux critères.
Les différents paramètres de l’opération GetRecords permettent au client de « définir » différents types d’informations :
* les critères de recherche en précisant le langage, la version de requêtes utilisées, les paramètres de recherche et les éventuels tris des résultats (SORTBY).

Le contenu de la réponse attendue configuré par plusieurs paramètres (RESULTTYPE, ELEMENTSETNAME, OUTPUTFORMAT, OUTPUTSCHEMA).

La réponse de l’opération est souvent un flux XML dont le contenu dépend des éléments attendus. Au minimum est toujours indiqué le nombre de résultats total, le nombre de résultats retournés et la position du prochain enregistrement disponible (pour la pagination).

Exemple :

GetRecordById
Permet d’accéder à une métadonnée précise à partir de son identifiant (ID). Les paramètres d’appel de l’opération sont très similaires à ceux de GetRecords :
* l’identifiant de la ressource recherchée (ID),
* le contenu de la réponse attendue (RESULTTYPE, ELEMENTSETNAME, OUTPUTFORMAT, OUTPUTSCHEMA).
La réponse de l’opération est souvent un flux XML dont le contenu dépend des éléments attendus. Au minimum, une réponse vide si la métadonnée n’est pas trouvée ; sinon, la métadonnée dans le format demandé.

Exemple :

http://geobretagne.fr/geonetwork/srv/fre/csw?REQUEST=GetRecordById&SERVICE=CSW&ElementSetName=full&Constraint_Language_Version=1.1.0&OutputFormat=application/xml&CONSTRAINT=AnyText%20LIKE%20%27%quimper%20communaute%%27&NAMESPACE=xmlns%28csw=http://www.opengis.net/cat/csw%29&version=2.0.2&MaxRecords=10&OutputSchema=http://www.opengis.net/cat/csw/2.0.2&ResultType=results&TypeNames=csw:Record&ConstraintLanguage=CQL_TEXT&ID=d7db70de-e31d-47b3-abc6-54a60b02a0b2

DescribeRecord

Permet au client de découvrir les informations relatives aux standards utilisés par le catalogue. L’opération retourne généralement le schéma de métadonnée utilisé par le catalogue.
Dans le cas du profil ISO AP, l’opération retourne le schéma XML de l’ISO 19139 pour les métadonnées de données (ISO 19115) et les métadonnées de services (ISO 19119).
Exemple :

https://geosas.fr/geoserver/ows?REQUEST=DescribeRecord&SERVICE=CSW&VERSION=2.0.2&TypeNames=csw:Record

GetDomain
Retourne des informations sur les valeurs possibles /disponibles d’un ou plusieurs descripteurs d’une notice. Par exemple, elle indique que le paramètre ‘Type’ (PROPERTYNAME=’type’) peut retourner ‘service’, ’dataset’ ou ‘series’ dans un catalogue INSPIRE.
Cette opération offre la possibilité au client d’adapter son interface utilisateur en fonction du service CSW recherché. Par exemple elle pré-remplit une liste de sélection possible sur une page Web à partir des informations fournies par le service CSW ou indique que la plage de saisie du critère échelle est limitée entre 1/5000 et 1/1000000 selon le contenu du catalogue.

Exemple (Chercher les résumés (Abstract) de toute les fiche de métadonnées de GéoBretagne):

http://geobretagne.fr/geonetwork/srv/fre/csw?REQUEST=GetDomain&SERVICE=CSW&VERSION=2.0.2&PropertyName=Abstract
Transaction (CSW-T)
Permet d’ajouter, modifier, supprimer une ou plusieurs métadonnées du catalogue à partir du client. La méthode est dite de type ‘PUSH’ (le client « pousse » des notices vers le serveur).
Le paramètre TRANSACTIONTYPE permet de préciser si le client réalise un ajout, une mise à jour ou une suppression de métadonnées.
L’ajout est opéré en fournissant la métadonnée dans le standard attendu par le catalogue (MD_Metadata). La mise à jour s’effectue par une recherche de métadonnées puis une mise à jour de tout ou partie des notices trouvées. La suppression se réalise par une recherche de métadonnées puis suppression des notices identifiées.
Harvest (CSW-T)
Permet d’ajouter une ou plusieurs métadonnées dans le catalogue en fournissant une adresse URL qui sera « moissonnée » (récupérée) par le catalogue. La méthode est dite de type ‘PULL’ (le serveur « va chercher » des notices fournies par le client).
Les paramètres d’appel permettent de préciser l’adresse de la ressource (SOURCE) et le type de document (RESOURCETYPE) que le catalogue doit moissonner. Au minimum dans le profil ISO AP, le document doit être un fichier de métadonnées XML ISO 19139 (par exemple, disponible sur un serveur FTP).
Cette opération permet théoriquement aussi de spécifier :
  • un autre service CSW, le catalogue permettant ainsi de moissonner un autre catalogue. La notion de moissonnage correspond à la récupération de l’ensemble des métadonnées du catalogue distant. A noter néanmoins que l’un des défauts du service CSW en tant que technique de moissonnage est son incapacité à gérer la suppression d’une métadonnée.
  • une adresse d’un service Web OGC (WMS, WFS, WCS,…), le catalogue peut alors utiliser le contenu du GetCapabilities pour produire sa notice.

Un cas d'usage classique du CSW

L’un des cas d’utilisation les plus usuels du CSW consiste à réaliser les opérations suivantes :
  • Une requête GetRecords avec la liste des critères de recherche fournie par l’utilisateur en limitant à une réponse « courte » sous forme de Dublin-Core : Le tableau de résultats « Titre, résumé, emprise » de la recherche est affiché à l’utilisateur ;
  • Une requête GetRecords successifs pour gérer la pagination des résultats ;
  • Une requête GetRecordById lorsque l’utilisateur sélectionne une fiche spécifique avec les paramètres permettant de récupérer l’ensemble de la métadonnée sous forme XML ISO.

Une déclinaison de ce cas d’utilisation est souvent réalisée lorsqu’un catalogue est utilisé pour rechercher des données affichables ou téléchargeables (recherche de services OGC de type WMS ou WFS portant sur les données qui intéressent l’utilisateur). Pour cela, le cas d’utilisation précédent devient :

  • Une requête GetRecords (limité aux données seules - Type=dataset) avec la liste des critères de recherche fournie par l’utilisateur en limitant à une réponse « courte » sous forme de Dublin Core;

  • à l’affichage de chaque page, pour chaque métadonnée de donnée remontée, un appel GetRecords visant à trouver les services portant sur la donnée en question (critère ‘OperatesOnIdentifier’ en passant l’identifiant de la donnée) : ici, le résultat doit être le plus complet possible afin de pouvoir récupérer les paramètres nécessaires à l’appel du service (RESULTTYPE=results, OUTPUTSCHEMA=http:www.isotc211.org/2005/gmd, ELEMENTSETNAME=full) ;

Cet enchaînement permet de proposer un éventuel service WMS portant sur les données qui intéressent l’utilisateur. L’appel au GetCapabilities du WMS est une étape supplémentaire utile avant d’afficher les données.

Notions importantes

L’encodage du service web

Comme l’ensemble des services OGC, l’implémentation et l’encodage technique du CSW peut s’effectuer selon différents protocoles du web :

  • selon le protocole SOAP du W3C,
  • sous forme de requêtes HTTP GET avec les paramètres organisés en paires clé=valeur (HTTP/GET / Keywords-Value Pairs protocol) ;
  • sous forme de requêtes HTTP POST avec les paramètres transmis sous forme d’un document XML (HTTP/POST/XML encoding).

Les différents protocoles ne sont pas interopérables entre eux. Le client doit s’adapter aux capacités techniques de chaque catalogue.

Les critères de recherche

La spécification permet de saisir les critères de recherche selon deux langages :

  • Catalogue Query Language Description (CQL)
  • OGC Filter Encoding (FE) basé sur un fichier XML contenant les différents critères de recherche et leurs « emboitements » (ET, OU, INTERSECTS,…). OGC FE est utilisé par la plupart des services Web de l’OGC dès qu’une requête doit être effectuée (par exemple pour le WFS).

Ces différents langages permettent de gérer aussi bien des recherches textuelles, numériques et dates (=, like,…) que des recherches spatiales (intersection, inclusion, emprise rectangulaire,…).
Le standard CSW définit une quinzaine de critères de recherche (titre, identifiant, tout texte, date, emprise rectangulaire,…). Le profil ISO AP en ajoute encore une quinzaine supplémentaire dédiée aux métadonnées ISO (point de contact, généalogie,…). Il est de plus possible d’en ajouter de nouveaux, comme le propose le guide technique d’INSPIRE.

Le moissonnage de catalogue

Le moissonnage et un mécanisme permettant de collecter des métadonnées sur un catalogue distant et de les rapatrier dans un catalogue local pour un accès plus rapide. Cette action de moissonnage est une action périodique, par exemple, une fois par semaine. Le moissonnage n'est pas un import simple : les métadonnées locale et celle du catalogue distant sont synchronisées.
Ce mécanisme permet d'optimiser les temps d'accès par rapport à la recherche distribuée. Il est en effet possible de ne moissonner qu'une partie d'un autre catalogue (selon certains critères) et non pas sa totalité.

La recherche distribuée

Le standard permet d’effectuer des recherches distribuées, dites avec rebond. Concrètement, le client interroge un service CSW qui lui-même interroge un ou plusieurs services CSW sous-jacents en passant les mêmes critères de recherche. Le client reçoit ensuite une unique réponse issue de la somme des réponses des services sous-jacents. Évidemment, cette approche pose des questions ergonomiques et fonctionnelles (peut-on, voire doit-on, fusionner des résultats de recherche avec des systèmes de tri différents ?)
Ce mécanisme peut être récursif (les services CSW sous-jacents appelant eux-même des services CSW), voire circulaire. Pour éviter ce risque, le paramètre HOPCOUNT permet de limiter le nombre de rebonds autorisés.
La recherche distribuée peut s'avérer lente et résulter de réponses “vides” lorsqu'un serveur ne répond pas ou dans le cas d'un problème sur le réseau.

Liens utiles:

http://www.opengeospatial.org/standards/cat (Anglais)

http://docs.geoserver.org/2.7.1/user/extensions/csw/index.html (Anglais)

OpenGIS Catalogue Service Implementation Specification (2.0.2) (Anglais)

Modifié le: mardi 25 octobre 2022, 10:39