Refonte du registry VizieR
Cahier des charges
L'objectif est de revoir l'ensemble de l'architecture du Registry
VizieR. Actuellement, les enregistrements sont générés à la volée en fonction des requêtes
OAI-PMH : récupération d'une resource, des dernières modifiées, ou harvesting de l'ensemble des resources.
Le projet comporte plusieurs volets :
- Faire le code qui permet de créer et stocker les resources sous forme de fichiers XML statiques et lisibles
- Développer quelques outils pour faciliter la validation et la mise à jour des resources
- Déployer une nouvelle interface OAI-PHM
Le code actuellement en PERL ne sera pas conservé, et pour une meilleure pérennité, on passe en Python.
Documentation
Documentation_Registry.pdf
Existant
- Standards IVOA dans la section ReR, en particulier VOResource, Registry interfaces.
- Schemas XSD utilisés pour le format XML IVOA. Voir Registry and extensions.
- Code local en PERL
- Interface OAI-PMH
Metadonnées
Les différents éléments utilisés pour les métadonnées sont extraits de plusieurs endroits:
- Fichiers ReadMe
- Tables META en base de données
- Certaines resources locales statiques sont codées en dur
Interface pour accéder au contenu des ReadMe, exemple sortie JSON :
http://cdsarc.u-strasbg.fr/viz-bin/ReadMe/V/147?tex=true
Exemple pour le catalogue I/325
Création des fichiers XML des resources et stockage
Code pour produire à la demande le contenu XML des resources pour les nouveaux catalogues
VizieR.
Organisation des fichiers conservés.
Génération des classes à partir des schémas XSD de l'IVOA
Outil utilisé :
PyXB
Pour convertir un fichier XSD en classe python : pyxbgen -u <Fichier.xsd> -m <FichierSortieSansExtension>
Exemple : pyxbgen -u VOResource-v1.1.xsd -m VOResource
Erreurs constatées dans les schémas de l'IVOA :
Ligne 9, l'attribut "version" est déclaré deux fois.
XSD de départ :
<xs:schema targetNamespace="http://www.ivoa.net/xml/VOSpace/v2.0" elementFormDefault="qualified"
attributeFormDefault="unqualified"
version="2.1-PR-20170924"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:vos="http://www.ivoa.net/xml/VOSpace/v2.0"
xmlns:uws="http://www.ivoa.net/xml/UWS/v1.0"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="2.1">
XSD corrigé :
<xs:schema targetNamespace="http://www.ivoa.net/xml/VOSpace/v2.0" elementFormDefault="qualified"
attributeFormDefault="unqualified"
version="2.1-PR-20170924"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:vos="http://www.ivoa.net/xml/VOSpace/v2.0"
xmlns:uws="http://www.ivoa.net/xml/UWS/v1.0"
xmlns:xlink="http://www.w3.org/1999/xlink">
- Dans VORegistry-1.0.xsd :
Lignes 69-70, deux annotations sont imbriquées dans un xs:element alors qu'une seule est autorisée.
XSD de départ :
<xs:element name="tableset" type="vs:TableSet" minOccurs="0">
<xs:annotation>
<xs:documentation>
For registry interfaces with a user-visible table
structure, tableset allows its declaration.
</xs:documentation>
</xs:annotation>
<xs:annotation>
<xs:documentation>
In case protocols implemented in different capabilities
have conflicting requirements on tableset, the two
capabilities should be considered belonging to separate
resources.
</xs:documentation>
</xs:annotation>
</xs:element>
XSD corrigé :
<xs:element name="tableset" type="vs:TableSet" minOccurs="0">
<xs:annotation>
<xs:documentation>
For registry interfaces with a user-visible table
structure, tableset allows its declaration.
</xs:documentation>
<xs:documentation>
In case protocols implemented in different capabilities
have conflicting requirements on tableset, the two
capabilities should be considered belonging to separate
resources.
</xs:documentation>
</xs:annotation>
</xs:element>
En bas du fichier, on trouve des restes des précédentes versions du schéma, notamment un type basé sur "ssap:SSACapRestriction" qui n'existe plus depuis la 1.0.
Validation, synchronisation, mise à jour
Code pour pouvoir régénérer les fichiers, et comparer les différences avec les versions exposées.
Harvesting, interface OAI-PMH
Interface publique répondant à la norme OAI-PMH pour le harvesting des resources par les registry extérieurs.
S'appuyer sur
la librairie pyoai pour implémentation coté serveur, et tests avec des clients?
Pour améliorer l'interface oai_dc :
https://guidelines.readthedocs.io/en/latest/literature/use_of_oai_dc.html
--
SebastienDerriere - 2019-06-21