Web Data Service - WDS-Cookbook 1.0.0
Introduction
La multitude de formats et d'outils disponibles afin de conserver et d'exploiter les données engendre une panoplie de solutions. Cette richesse soulève une autre problèmatique, soit le niveau de connaissances et les technologies nécessaires afin d'exploiter des sources de données utilisants des solutions et des orientations différentes. Les environnements ne sont pas homogènes. C'est une problématique qui survient lorsqu'il s'agit d'exploiter les données de divers fournisseurs. Le résultat de cette expérience est le Web Data Service, qui se veut une piste de solution répondant en grande partie aux besoins d'exploitation de données.
Un Web Data Service (WDS) consiste en un Framework visant à favoriser l'interopérabilité entre les systèmes en encadrant le développement de services Web de données. Le Framework met en application les bonnes pratiques en SOA (Service Oriented Architecture).
La technologie SOAP et le protocole HTTP sont utilisés afin de réaliser le Framework WDS. Les services WDS peuvent être développés dans le langage et l'infrastructure de son choix.
La technologie SOAP est disponible sur la plupart des plateformes et des langages de programmation. Cette particularité permet de réduire le couplage des systèmes et le niveau de connaissances nécessaires pour l'exploitation des données. L'expertise est conservée dans les bonnes sphères, le développeur d'un système client n'ayant plus besoin d'acquérir l'expertise de la source de données. Le système client utilise simplement un client SOAP pour accéder aux données d'un service WDS. Aucune connaissance spécifique de l'architecture des données n'est nécessaire.
Architecture WDS
Spécifications génériques
- La latitude est exprimée en degrés fractionnaires ([-90, 90]).
- La longitude est exprimée en degrés fractionnaires ([-180, 180]).
- Le format de date utilisé est le standard ISO-8601 (YYYY-MM-DD hh:mm:ss) et le fuseau horaire est UTC.
- L'unité de mesure utilisée pour la profondeur est le mètre.
Diagramme de classes

Interface WDS
Cette interface fournit les fonctionnalités nécessaires pour créer un service d'accès aux données. L'interface WDS est utilisée pour mettre en place un service web WDS.
Cette méthode permet d'obtenir la version du Framework WDS implanté dans le service de données.
Cette méthode permet d'obtenir le nom du service de données.
Cette méthode permet d'obtenir diverses informations génériques sur le service de données.
Cette méthode permet d'obtenir l'état du service de données.
Cette méthode permet d'obtenir les limites spatiales du service de données.
Cette méthode permet d'obtenir les limites de profondeur du service de données.
Cette méthode permet d'obtenir les limites temporelles du service de données.
Cette méthode permet d'obtenir de l'information sur les métadonnées fournies par le service de données.
Cette méthode permet d'obtenir de l'information sur les données offertes par le service de données.
latitudeMin : double,
latitudeMax: double,
longitudeMin: double,
longitudeMax: double,
depthMin: double,
depthMax: double,
dateMin : string,
dateMax : string,
start: integer,
sizeMax: integer,
metadata: Bool,
metadataSelection: string,
order: String) : ResultSet
Cette méthode permet d'effectuer une recherche dans le service de données. Les résultats sont ordonnés par date.
Description des paramètres :
latitudeMin : latitude minimum
latitudeMax : latitude maximum
longitudeMin : longitude minimum
longitudeMax : longitude maximum
depthMin : profondeur minimum
depthMax : profondeur maximum
dateMin : date de début
dateMax : date de fin
start : numéro de départ des résultats (>0)
sizeMax : nombre maximum de résultats (>0)
metadata : inclusion des métadonnées dans les résultats
metadataSelection : critères de sélection sur les métadonnées ("" = aucun)
Ce paramètre permet de
spécifier les valeurs que
doivent avoir les métadonnées pour que les
données
correspondantes soient sélectionnées. Le
paramètre
metadata
n'a pas d'influence sur le paramètre metadataSelection.
Syntaxe : "metadata_1=valeur::metadata_2=valeur::metadata_n=valeur"
Exemple: "station_name=Rimouski"
Exemple: "station_name=Rimouski::semaphore=2"
asc : ascendant (de la plus ancienne à la plus
récente)
desc : descendant (de la plus récente à la plus
ancienne)
Datatype ResultSet
Ce type représente les résultats d'une recherche.
Datatype BoundarySpatial
Ce type représente des limites spatiales.
Datatype BoundaryDepth
Ce type représente des limites de profondeur en mètres.
Datatype BoundaryDate
Ce type représente des limites temporelles (ISO-8601).
Datatype Status
Ce type représente un état.
Datatype Metadata
Ce type représente une métadonnée.
Datatype Data
Ce type représente une donnée.
Liste de coordonnées spatiales représentant la donnée.
ligne : liste de coordonnées
polygone : liste de coordonnées dont la première et la dernière ont la même valeur
Comment créer un Web Data Service (WDS)
La création d'un WDS est une opération simple. Il suffit d'implanter l'interface WDS (voir le diagramme de classes) dans le langage de son choix et de le rendre disponible sur un serveur SOAP de son choix. L'implantation est régie par une suite de règles qui doivent être suivies afin de respecter le Framework et de rendre le comportement du service conforme à la spécification WDS. Les spécifications génériques décrites initialement doivent toujours êtres respectées.
Règles
Exemple : "1.5.4". Cette information est nécessaire afin de connaître la conformité du service avec le Framework. Cette version du cookbook est conforme à la version "1.0.0".
Exemple : une courte description avec le contact et l'URL pour obtenir de l'information.
- l'unité est le mètre
- les valeurs négatives sont interdites
- La norme ISO-8601 est utilisé pour représenter les dates (YYYY-MM-DD hh:mm:ss). Tous les éléments du format doivent être présents.
- Le fuseau horaire est UTC.
- La norme ISO 19115 doit être utilisée pour les métadonnées de nature géospatiale. Les métadonnées minimales de la norme sont essentielles. Elle sont décrites ci-dessous :
date : date de création du service
langage : langage du service
topic : sujet du service
name : nom du service
abstract : brève description du service
reference_date : les limites temporelles du service
- Il est recommandé d'utiliser une norme reconnue pour les autres types de metadonnées.
- Tous les paramètres de la méthode sont obligatoires et doivent être validés.
- Les données excédant les limites (spatiale, profondeur, temporelle) du service doivent être rejetées.

- Les données ne rencontrant pas les exigences du paramètre metadataSelection doivent être rejetées.
- Les données doivent être ordonnées par la date selon la valeur du paramètre order.
- Le paramètre start s'applique une fois les données ordonnées.
- Un nombre maximal de données pour une recherche doit être défini afin de prévenir la surexploitation de la source de données. Le paramètre sizeMax pourrait être un nombre très grand.
- Les métadonnées doivent être incluses (ResultSet, Data) lorsque le paramètre metadata l'indique.
- Les coordonnées associées à une donnée (Data) doivent respecter une structure appropriée au type d'objet spatial.
ligne : liste de coordonnées
polygone : liste de coodonnées dont la première et la dernière sont identiques.
- Au minimum, un tableau doit être de dimension 0.
Comment exploiter un Web Data Service (WDS)
Les assises d'une architecture basée sur SOAP rendent son exploitation par un système d'une grande simplicité. Il suffit d'utiliser un client SOAP sur la plateforme et dans le langage de son choix pour accéder au service WDS et interagir avec les méthodes de l'interface WDS.
import sys | |
from SOAPpy import WSDL | |
server = WSDL.Proxy(sys.argv[1] + "?wsdl") | #connect |
bnds = server.getBoundarySpatial() | #call |
print "lat: (%.2f, %.2f) lon: (%.2f, %.2f)" %\ | #digest |
(bnds.latitude.min,
bnds.latitude.max, bnds.longitude.min, bnds.longitude.max) |
#results |