Guide du développeur XML de métadonnées

version 0.7 (2004-02-23T10:02:51)

Résumé

Voici le résumé...


Table des matières

Avant propos
1. Introduction
2. Lignes directrices
1. Principes généraux
2. Profils de métadonnées
3. Dublin Core et les métadonnées gouvernementales
4. dc:SimpleLiteral et sa conformance avec les schémas XML
5. Métadonnée obligatoire, élément vide
6. Limitations
1. Enrichissements et sous-classement
2. Contrôle des substitutions
3. Schème d'encodage par défaut
7. Quelques exemples
1. Ajout d'une métadonnée à un profil gouvernemental
2. Ajout d'un enrichissement à une métadonnée
3. Création d'un schème d'encodage
4. Utilisation de listes d'autorité externes
5. Contenu structuré d'une métadonnée
6. Création d'un nouveau profil
Bibliographie

Liste des illustrations

3.1. Diagramme d'inclusion/importation des schémas Dublin Core et gouvernemental

Liste des tableaux

7.1. Espaces nominatifs en jeux

Liste des exemples

7.1. Ajout d'une métadonnée à un profil gouvernemental
7.2. Ajout d'un enrichissement à une métadonnée existante

Avant propos

Ce document présente les lignes directrices pour l'implémentation des métadonnées gouvernementales en schéma XML. Ces métadonnées gouvernementales sont décrites dans le document @@xref. Le modèle qui sous-tend celles-ci est décrit dans le guide @@xref.

[Warning]Avertissement

Les termes élément, enrichissement et schème d'encodage employés dans ce document réfèrent aux objets du modèle de métadonnées correspondants tels que définits dans le guide d'utilisation des métadonnées.

Ce guide utilise conjointement deux terminologies provenant des domaines XML et des métadonnées, ce qui peut porter à confusion. On désignera donc par le terme élément une métadonnée et par élément XML l'objet définit dans la norme XML 1.0.

Conventions utilisées dans ce document

Pour fins de conventions et de simplification dans ce document, nous employons les préfixes qui suivent pour référer aux espaces nominatifs et/ou normes:

dc

L'espace nominatif des 15 métadonnées Dublin Core v1.1 {http://purl.org/dc/elements/1.1/}.

dcmi

L'espace nominatif des éléments et enrichissements Dublin Core v1.1 (sans les 15 métadonnées de base) {http://purl.org/dc/terms/}.

dcmitype

L'espace nominatif des types de ressources de Dublin Core {http://purl.org/dc/dcmitype}.

doc-ref

L'espace nominatif du profil de métadonnées gouvernementale pour les documents de référence {http://www.gouv.qc.ca/2004/metadonnees/doc-reference}.

meta

L'espace nominatif des métadonnées gouvernementales {http://www.gouv.qc.ca/2004/metadonnees}.

mo

Des espaces nominatifs d'un ministère fictif {http://www.mo.qc.ca/2004/metadonnees} et subdivisions.

xs, xsd

L'espace nominatif de la norme des schémas XML du W3C {http://www.w3.org/2001/XMLSchema}.

Prenez note que ces choix de préfixes n'ont de valeur que pour simplifier la compréhension du texte et ne constituent pas une prescription. D'autres préfixes peuvent être utilisés dans d'autres écrits/documents XML.

Chapitre 1. Introduction

[Note]Note
  • Tout nouvel élément de métadonnée, enrichissement ou schème d'encodage doit être versé dans un espace nominatif autre que celui gouvernemental.

  • Un rappel des bonnes pratiques (priorité à la réutilisation, pointeurs vers les autres documents dont celui décrivant le modèle abstrait de métadonnées)

Les concepts et leur transposition en schéma XML

  • Le mécanisme mis en place pour modifier un profil ou une métadonnée existante: le complexType associé à chaque métadonnée (i.e. titre_type pour titre) permet d'imposer un schème d'encodage... Donner une procédure à suivre:

    1. Créer un schéma driver

      1. espace nominatif cible (targetNamespace) identique à celui du schéma que l'on veut redéfinir

      2. redéfinir les complexType associés aux métadonnées (donner des exemples)

    2. importer le schéma driver dans le schéma du profil local que l'on veut créer...

Notes en vrac

  • se conformer au protocole de création de schémas

  • Peut-on qualifier la relation entre un qualificatif et le terme auquel il se rapporte? @@ Par exemple, préciser que le qualificatif xx yy?

  • Mentionner qu'il faut commenter les composants créés.

Chapitre 2. Lignes directrices

Cette section décrit comment réaliser les composants du modèle de métadonnées gouvernemental en utilisant le langage des schémas XML du World Wide Web Consortium (W3C).

1. Principes généraux

awef

Principe numéro 1. On employera des noms d'espaces nominatifs pour identifier de façon unique des noms d'élément, des enrichissements et des schèmes d'encodageLes composants provenant d'autres schèmes, par exemple ceux de Dublin Core@@xref ou des composants communs gouvernementaux, doivent conserver leurs noms d'espace nominatif d'origine. L'ajout d'un composant XML à un espace nominatif donné ne peut se faire que si l'on détient la responsabilité du nom de l'espace nominatif.

Principe numéro 2. Une métadonnée est représentée par un élément XMLLe nom de cet élément doit correspondre avec le nom de la métadonnée et non son libellé. Le nom d'un élément XML doit toujours s'écrire en lettres minuscules.

Soit la métadonnée Date de création et un fragment de la fiche qui la définit:

Date de création
LibelléDate de création
Nomdate-création
......

L'élément qualifié:

<métadonnées xmlns:meta="http://www.gouv.qc.ca/2003/metadonnees">
   <meta:date-création>2004-01-08</meta:date-création>
</métadonnées>

Principe numéro 3. La valeur d'une métadonnée est consignée dans le contenu d'un élément XMLOn doit éviter de consigner la valeur d'une métadonnée dans un attribut XML.

On préférera autant que possible une valeur littérale à une valeur structurée dans le contenu d'une métadonnée.

Employer:

<métadonnées xmlns:meta="http://www.gouv.qc.ca/2003/metadonnees">
   <meta:titre>Initiation aux techniques horticoles</meta:titre>
</métadonnées>

Ce qui suit est à éviter:

<métadonnées xmlns:meta="http://www.gouv.qc.ca/2003/metadonnees">
   <meta:titre valeur="Initiation aux techniques horticoles"/>
</métadonnées>

Principe numéro X. Les valeurs multiples sont consignées chacunes dans un élément XMLOn doit éviter de consigner plusieurs valeurs dans un même élément XML.

<meta:auteur>Borduas, Paul-Emile</meta:auteur>
<meta:auteur>Arbour, Magdeleine</meta:auteur>
<meta:auteur>Barbeau, Marcel</meta:auteur>

Principe numéro X. Un enrichissement est représenté par un élément XML. Le nom de cet élément XML doit correspondre avec le nom de l'enrichissement et non son libellé. L'élément XML n'est pas imbriqué dans un élément de niveau supérieur qui représenterait la métadonnée qu'il enrichit. La filiation entre l'enrichissement et l'élément de métadonnée est assurée par un groupe de substitution, à même le schéma XML, où l'élément de métadonnée est choisi comme élément de tête du groupe, et chacun de ses enrichissements constitue un membre du groupe de substitution. Il est possible d'ajouter un enrichissement à une métadonnée provenant d'un espace nominatif différent que celui de l'enrichissement.

Ainsi, une métadonnée titre et son enrichissement titre-autre, provenant des métadonnées gouvernementales, seraient représentées comme suit:

<métadonnées xmlns:meta="http://www.gouv.qc.ca/2003/metadonnees">
  <meta:titre>L'ABC de la taille</meta:titre>
  <meta:titre-autre>Apprenez à tailler vos végétaux</meta:titre-autre>
</métadonnées>

Les exemples qui suivent sont à éviter:

<métadonnées xmlns:meta="http://www.gouv.qc.ca/2003/metadonnees">
  <meta:titre>L'ABC de la taille
    <meta:titre-autre>Apprenez à tailler vos végétaux</meta:titre-autre>
 </meta:titre>
</métadonnées>
<métadonnées xmlns:meta="http://www.gouv.qc.ca/2003/metadonnees">
  <meta:titre>L'ABC de la taille</meta:titre>
  <meta:titre.titre-autre>
    Apprenez à tailler facilement vos végétaux
  </meta:titre.titre-autre>
</métadonnées>

Principe numéro X. Un schème d'encodage est représenté par un type de donnée XML. On employera l'attribut XML xsi:type pour associer un schème d'encodage à un élément. Ce type de donnée doit être dérivé du type de base dc:SimpleLiteral et son nom doit être un nom XML qualifié (QName). Le nom du type de donnée doit correspondre à celui du schème d'encodage.

Par exemple:

<meta:identifiant xsi:type="meta:ISBN">2-89105-817-8</meta:identifiant>

Principe numéro X. Lorsque la langue du contenu d'une métadonnée est identifiée, celle-ci doit être consignée dans l'attribut XML xml:langLa valeur inscrite doit provenir de la liste des codes de langues à deux ou trois lettres prescrite par les normes RFC 3066 et ISO 639-2. Les subdivisions des codes sont acceptés (par exemple: en-GB). La langue par défaut est le français.

Par exemple:

<métadonnées xmlns:meta="http://www.gouv.qc.ca/2003/metadonnees">
   <meta:titre xml:lang="fra">Lexique musical international</meta:titre>
   <meta:titre xml:lang="eng">International vocabulary of music</meta:titre>
</métadonnées>

Est équivalent à:

<métadonnées xmlns:meta="http://www.gouv.qc.ca/2003/metadonnees">
   <meta:titre>Lexique musical international</meta:titre>
   <meta:titre xml:lang="eng">International vocabulary of music</meta:titre>
</métadonnées>

2. Profils de métadonnées

Un exemple de restriction d'un profil des métadonnées gouvernementales: la seule chose permise est d'interdire ce qui est facultatif.

Principe numéro X. Un profil de métadonnées est constitué d'un élément XML conteneur, ayant son propre nom d'espace nominatif, et dont le modèle de contenu est constitué d'une séquence d'éléments de métadonnées. On aura précisé pour chacun d'eux le caractère facultatif, obligatoire ou répétable à l'aide des attributs minOccurs et maxOccurs.

Principe numéro X. Toute dérivation d'un profil de métadonnées gouvernemental effectuée par extension de son modèle de contenu doit s'effectuer dans un espace nominatif différent que celui d'origine. Il est déconseillé d'employer la stratégie de redéfinition xs:redefine afin de dériver par extension un modèle de contenu d'un profil pour, par exemple, lui ajouter une nouvelle métadonnée. On optera plutôt pour la création d'un nouveau profil, ayant son propre espace nominatif, dans lequel on pourra importer le profil source pour lui appliquer une dérivation par extension.

Chapitre 3. Dublin Core et les métadonnées gouvernementales

La compatibilité des métadonnées gouvernementales avec le schème de Dublin Core est assurée par l'importation des schémas XML définissant ces composants et par leur réutilisation l'intérieur des schémas XML définissant les métadonnées gouvernementales. La structure d'inclusion/importation des composants est représentée par le diagramme qui suit:

Figure 3.1. Diagramme d'inclusion/importation des schémas Dublin Core et gouvernemental

Diagramme d'inclusion/importation des schémas Dublin Core et gouvernemental

Prenez note que les noms des fichiers peuvent changer.

Chapitre 4.  dc:SimpleLiteral et sa conformance avec les schémas XML

Chapitre 5. Métadonnée obligatoire, élément vide

La condition obligatoire d'une métadonnée s'exprime via la facette minOccurs et non en précisant que le contenu ne peut pas être vide.

Chapitre 6. Limitations

1. Enrichissements et sous-classement

Les mécanismes intrinsèques des schémas XML limitent considérablement les possibilités de qualification de la relation entre un élément et son enrichissement. Le mécanisme des groupes de substitution (substitutionGroup) des schémas XML est utilisé ici pour indiquer que la métadonnée Y constitue une sous-classe de la métadonnée X. La relation filiale elle-même ne peut pas être qualifié.

2. Contrôle des substitutions

La solution actuelle pour implémenter un modèle de métadonnées en schéma XML fait en sorte qu'il n'est pas possible de contrôler le mécanisme de substitution des métadonnées. Cette limitation des schémas XML provient du fait que les métadonnées employées dans un profil ne sont généralement pas définies localement, mais sont plutôt invoquées par référence à l'aide de l'attribut xs:element/@ref dans le modèle de contenu de l'élément conteneur du profil.

Une solution possible serait de définir un schéma alternatif pour la validation at run time des systèmes où l'on définierait localement les métadonnées dans le modèle de contenu du profil. Cette solution n'est pas possible, puisque les schémas XML ne permettent pas de définir localement des éléments faisant partie d'un espace nominatif autre que celui de l'élément conteneur.

3. Schème d'encodage par défaut

Lorsqu'un utilise par référence une métadonnées, il n'est pas possible de lui déclarer un type par défaut.

Chapitre 7. Quelques exemples

1. Ajout d'une métadonnée à un profil gouvernemental

L'ajout d'une nouvelle métadonnée à un profil gouvernemental — et non d'un enrichissement à une métadonnée gouvernemental — nécessite la création d'un profil de métadonnées local. Ce profil local constituera une extension du profil gouvernemental de base. Le profil résultant constituant un super-ensemble de celui d'origine, il est déconseillé d'effectuer l'ajout dans l'espace nominatif du profil souche. La solution consiste donc à créer un nouveau profil par extension et à verser ce dernier dans un nouvel espace nominatif.

Exemple 7.1. Ajout d'une métadonnée à un profil gouvernemental

L'exemple qui suit illustre le cas d'ajout d'une métadonnée mo:nouvelle-métadonnée au profil de métadonnées pour les documents de référence, ce dernier étant identifié par un élément doc-ref:doc-référence dont le modèle de contenu est constitué d'une séquence des éléments XML représentant les métadonnées faisant partie du profil.

<xs:schema targetNamespace="http://www.mo.qc.ca/2004/metadonnees/doc-reference" 
    xmlns:mo="http://www.mo.qc.ca/2004/metadonnees/doc-reference" 1
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:doc-ref="http://www.gouv.qc.ca/2004/metadonnees/doc-reference" 
    xmlns:dc="http://purl.org/dc/elements/1.1/" 
    elementFormDefault="qualified" version="1.0">
    <xs:import 
        namespace="http://www.gouv.qc.ca/2004/metadonnees/doc-reference" 
        schemaLocation="http://gouv.qc/doc-reference.xsd"/> 2
    <xs:element 
        name="nouvelle-métadonnée"  
        substitutionGroup="dc:any"/> 3
    <xs:complexType name="doc-référence"> 4
        <xs:complexContent>
            <xs:extension base="doc-ref:doc-référence">
                <xs:sequence>
                    <xs:element ref="mo:nouvelle-métadonnée"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:element name="doc-référence" type="mo:doc-référence">5
        <xs:annotation>
            <xs:documentation>Profil de métadonnées des documents de références du 
                              ministère « mo ».</xs:documentation>
        </xs:annotation>
    </xs:element>
</xs:schema>
1

Espace nominatif cible pour le nouveau profil de métadonnées.

2

Importation du profil de métadonnées gouvernemental pour les documents de référence (l'adresse est fictive).

3

Création de la nouvelle métadonnée mo:nouvelle-métadonnée, et versement dans le groupe de substitution des métadonnées de base.

4

Création d'un type mo:doc-référence basé sur celui du profil gouvernemental et ajout de la nouvelle métadonnée. Le type de base est dérivé par extension afin de permettre l'ajout de la nouvelle métadonnée.

5

Création du profil de métadonnées des documents de références du ministère mo (mo:doc-référence), lequel constitue une extension du profil gouvernemental.

2. Ajout d'un enrichissement à une métadonnée

Mentionner que l'enrichissement doit être versé dans un espace nominatif autre que celui d'origine si l'on n'est pas registraire de l'espace nominatif source.

Un enrichissement est représenté par un type complexe (xs:complexType) dérivé à partir du type ancestral des métadonnées, soit dc:SimpleLiteral.

Exemple 7.2. Ajout d'un enrichissement à une métadonnée existante

Cet exemple illustre le cas où le ministère « mo » souhaite ajouter un nouvel enrichissement Titre parallèle à la métadonnée gouvernementale Titre (dc:title). L'enrichissement Titre parallèle aura comme nom mo:titre-parallèle. Voici un fragment de schéma XML:

<xs:schema
  targetNamespace="http://www.gouv.qc.ca/2002/metadonnees"
  xmlns:meta="http://www.gouv.qc.ca/2002/metadonnees"
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  elementFormDefault="qualified">
…
<xs:element name="titre" type="dc:SimpleLiteral">@@
  <xs:annotation>
    <xs:documentation>Nom donné au document.</xs:documentation>
    </xs:annotation>
</xs:element>
…
<xs:element name="titre-autre" substitutionGroup="meta:titre">
  <xs:annotation>
    <xs:documentation>
      Titre complémentaire ou alternatif du document.
    </xs:documentation>
  </xs:annotation>
</xs:element>
…
</xs:schema>

3. Création d'un schème d'encodage



4. Utilisation de listes d'autorité externes

Exemple type: conversion en schème d'encodage flottant. Y a-t-il des alternatives?

Prendre l'exemple des attributs de droits d'accès.

<xs:complexType name="limite-accès">
  <xs:annotation>
    <xs:documentation>Schème d'encodage contenant la liste des valeurs 
                      provisoires pour les limites d'accès.</xs:documentation>
  </xs:annotation>
  <xs:simpleContent>
    <xs:restriction base="dc:SimpleLiteral">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="public"/>
          <xs:enumeration value="protégé"/>
          <xs:enumeration value="confidentiel"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:attribute ref="xml:lang" use="prohibited"/>
    </xs:restriction>
  </xs:simpleContent>
</xs:complexType>

5. Contenu structuré d'une métadonnée

Description du cas

Un centre de documentation du ministère « mo » dispose d'une collection de rapports techniques. On voudrait créer pour chaque ouvrage une fiche de métadonnées basée sur le profil de métadonnées des documents de référence du gouvernement du Québec, à laquelle on ajoutera la table des matières de l'ouvrage.

Pour les fins de cet exemple, on supposera que la table des matières sera consignée dans une métadonnée « Table des matières » créée par le ministère mo pour cette fin, et que cette nouvelle métadonnée est un enrichissement de la métadonnée « Résumé » du profil gouvernemental. On présume égallement que le schéma XML de la table des matières est créé au ministère mo dans un espace nominatif qui lui est consacré.

Tableau 7.1. Espaces nominatifs en jeux

PréfixeURIDescription
metahttp://www.gouv.qc.ca/2002/metadonneesMétadonnées gouvernementales.
doc-refhttp://www.gouv.qc.ca/2002/metadonnees/doc-referenceEspace nominatif pour le profil de métadonnées des documents de référence.
mohttp://www.mo.gouv.qc.ca/2002/metadonneesEspace nominatif pour les métadonnées du ministère mo.
tdmhttp://www.mo.gouv.qc.ca/2002/tdmEspace nominatif où est versé le schéma définissant une table des matières. Celle-ci aurait tdm:tdm pour élément racine .

Solution adoptée

Créer une nouvelle métadonnée mo:tdm, un enrichissement de meta:résumé (une métadonnée gouvernementale). La nouvelle métadonnée aura comme modèle de contenu l'élément tdm:tdm.

Les étapes de réalisation

<xs:schema 
    targetNamespace="http://www.mo.gouv.qc.ca/2004/metadonnees" 
    xmlns:meta="http://www.gouv.qc.ca/2002/metadonnees" 
    xmlns:doc-ref="http://www.gouv.qc.ca/2002/metadonnees/doc-reference" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:tdm="http://www.mo.gouv.qc.ca/2004/tdm" 
    xmlns:mo="http://www.mo.gouv.qc.ca/2004/metadonnees" 
    elementFormDefault="qualified" attributeFormDefault="unqualified">

<xs:import namespace="http://www.mo.gouv.qc.ca/2004/tdm" 
           schemaLocation="tdm.xsd"/> 1
<xs:import namespace="http://www.gouv.qc.ca/2002/metadonnees/doc-reference" 
           schemaLocation="doc-reference.xsd"/> 2
<xs:import namespace="http://www.gouv.qc.ca/2002/metadonnees" 
           schemaLocation="composants-communs.xsd"/> 3
  <xs:element name="tdm" substitutionGroup="meta:résumé"> 4
    <xs:complexType>
      <xs:complexContent mixed="true"> 5
        <xs:extension base="dc:SimpleLiteral">@@
          <xs:sequence>
            <xs:element ref="tdm:tdm"/> 6
          </xs:sequence>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
</xs:schema>
1

Importation du schéma XML pour les tables des matières.

2

Importation du schéma XML du profil de métadonnées des documents de référence, ce qui expose l'élément doc-ref:doc-référence contenant le profil. Cet élément XML sera le conteneur des métadonnées dans les instances.

3

Importation du schéma XML pour les métadonnées gouvernementales, y compris les enrichissements. Ce schéma contient le type de base dc:SimpleLiteral qui sert de type de base à la nouvelle métadonnée.

4

Déclaration de la nouvelle métadonnée mo:tdm en tant qu'enrichissement de meta:résumé.

5

En utilisant l'élément xsd:complexContent, nous pouvons dériver le type ancestral des métadonnées dc:SimpleLiteral de façon à permettre des éléments dans le contenu.

6

L'élément racine devant contenir une table des matières.

Exemple d'instance XML

<?xml version="1.0" encoding="UTF-8"?>
<doc-ref:doc-référence
    xmlns:doc-ref="http://www.gouv.qc.ca/2002/metadonnees/doc-reference"
    xmlns:meta="http://www.gouv.qc.ca/2002/metadonnees" 
    xmlns:mo="http://www.mo.gouv.qc.ca/2004/metadonnees"  
    xmlns:tdm="http://www.mo.gouv.qc.ca/2004/tdm" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.mo.gouv.qc.ca/2004/metadonnees mo.xsd">

    <meta:titre>Titre de la ressource</meta:titre>
    <!-- ... -->

    <!-- Selon la séquence, meta:résumé peut être utilisée ici. On lui 
         préfèrera l'enrichissement mo:tdm -->
    <mo:tdm>
        <tdm:tdm><!-- Le contenu de la table des matières... --></tdm:tdm>
    </mo:tdm>
    <!-- ... -->
</doc-ref:doc-référence>

6. Création d'un nouveau profil



Bibliographie

[DC Schema Note] Pete Johnston. Notes on the W3C XML Schemas for Qualified Dublin Core . http://dublincore.org/schemas/xmls/qdc/2003/04/02/notes/.

[e-Gif Guide] UK Cabinet Office. Office of the e-Envoy. e-Gif. e-Government Schema Guidelines for XML [version 3.0, December 2002] . Décembre 2002. http://www.nhsia.nhs.uk/egif/pages/docs/e-government_schema_guidelines_for_XML_v3.pdf.

[ISO 639-2] Organisation internationale de normalisation. ISO 639-2:1998 Codes pour la représentation des noms de langue -- Partie 2: Code alpha-3 . http://www.iso.ch/iso/fr/CatalogueDetailPage.CatalogueDetail?CSNUMBER=4767&ICS1=1&ICS2=140&ICS3=20.

[RFC 3066] H. Alvestrand. Cisco Systems. Tags for the Identification of Languages . http://www.ietf.org/rfc/rfc3066.txt.

[XML.gov Guide] U.S. Federal CIO Council. Architecture and Infrastructure Committee. XML Working Group. Draft Federal XML Developer’s Guide . Avril 2002. http://xml.gov/documents/in_progress/developersguide.pdf.

[EBSI 2002] Prénom Nom. et/ou Organisation. Le titre de la ressource . (Consulté le 12 janvier 2003). http://www.ebsi.umontreal.ca/termino/index.htm.