Dictionnaire sur les données ouvertes XML Lignes directrices techniques

Table des matières

Introduction

La présente spécification vise à établir la syntaxe et la sémantique du schéma des fichiers dictionnaires de données ouvertes XML de TPSGC. Un fichier dictionnaire de données contient de l’information sur le format et le contenu d’un ensemble de données, de fichiers de données et de fichiers ressources. Un fichier dictionnaire de données est un fichier de métadonnées qui contient de l’information sur le contenu et le format d’un fichier de données. Il pourrait également contenir de l’information concernant la création et la maintenance de fichiers de ressources individuels qui forment un ensemble de données du Portail du gouvernement ouvert. Il définit, au minimum, les en-têtes du fichier de données et les liens vers les ensembles de données auxquelles s’appliquent les en-têtes. Il pourrait également comprendre, s’il y a lieu, toutes contraintes ou conditions applicables aux cellules de données (p. ex., format, ensemble de valeurs). L’utilisation d’un dictionnaire de données XML permet de générer des fichiers de données mis en forme au moyen de la notation des objets du langage Java – données couplées (JSON-LD) afin que d’obtenir les cotes de degré d’ouverture des données de quatre et cinq étoiles, comme défini dans le Portail des données ouvertes.

Structure du gestionnaire de données

Voici la structure générale d’un dictionnaire de données XML. Seuls les éléments requis figurent dans l’aperçu.

<?xml …?>
  <data_dictionary …>
  <headings>
  <heading id=”h1>
  <label>heading label</label>
  <description xml:lang="en">English description</description>
  <description xml:lang="fr">Description  française</description>
  …
  </heading>
  <heading id=”h2>
  <label>heading label</label>
  <description xml:lang="en">English description</description>
  <description xml:lang="fr">Description  française</description>
  …
  </heading>
  ….
  </headings>
</data_dictionary>

Les sections suivantes donnent des renseignements sur les éléments, leurs formats, leurs attributs et s’ils sont obligatoires.

Énoncé de déclaration

Le dictionnaire de données doit débuter par la balise de déclaration XML et doit préciser le codage de caractères UTF-8.

  <?xml version="1.0"  encoding="UTF-8" standalone="no" ?>

Éléments

Les balises ou les éléments suivants sont définis dans le schéma de dictionnaire de données XML de TPSGC.

Élément data_condition

L’élément data_condition est un élément facultatif qui précise toute condition qui s’applique aux valeurs des cellules données sous l’en-tête de colonne. Les conditions visant les données reposent sur le langage de schéma CSV (version 1.1) pour la définition et la validation de données CSV. Si des conditions multiples sont précisées, elles doivent être séparées par des points-virgules. Les énoncés de conditions comprennent, sans s’y limiter, ce qui suit :

Condition Description
not Vérifie que la valeur de la colonne n’est pas égale à la chaîne fournie ou à la valeur de la colonne à laquelle elle renvoie.
notEmpty Vérifie que la colonne a du contenu.
range

Vérifie que la valeur de la colonne est un nombre entre les limites inférieures et supérieures fournies, inclusivement. Exemple de plage :

  • 1. Au moins n. Par exemple, range(10, *) indique que la valeur de la colonne DOIT être de 10 ou plus.
  • 2. Au plus n. Par exemple, range(*, 10) indique que la colonne de la valeur DOIT être d’au plus 10 (et peut-être négative).
  • 3. Entre m et n (inclusivement). Par exemple, range(4, 7) indique que la valeur de la colonne doit être entre 4 et 7 (inclusivement).
unique Vérifie que la valeur de la colonne est unique dans le fichier CSV en cours de validation (dans la colonne actuelle, la valeur peut être répétée ailleurs dans le fichier dans une autre colonne).

Remarque : La condition regex du schéma de langage CSV ne doit pas être utilisée, la balise data_pattern précise l’expression régulière des valeurs de données.

Remarque : Si les en-têtes de colonnes sont inclus dans les conditions, les étiquettes d’en-têtes devraient être indiquées, par exemple :

<data_condition>if($"Deposit-Transaction-Type-Code-Code-type-opération-dépôt"/not("CAD"),is(""))</data_condition>

Si l’étiquette d’en-tête ‘Deposit-Transaction-Type-Code-Code-type-opération-dépôt’ n’est pas indiquée adéquatement, une erreur pourrait survenir lorsque la condition est évaluée à l’aide d’un outil de langage de schéma CSV.

Si aucune balise data_condition n’apparaît dans la balise d’en-tête, aucune condition ne s’applique aux valeurs des données.

Exemple de code :

  <heading id="h1">
  ….
  <data_condition>unique</data_pattern>
  …
  </heading>

Élément data_dictionary

L’élément data_dictionary est la base d’un dictionnaire de données et doit suivre l’énoncé de déclaration. Il doit comprendre des attributs pour préciser les déclarations d’espace de noms et de schéma.

Attribut Description
dd_version Précise la version du schéma du dictionnaire de données. La version actuelle du schéma est 1.0.
xmlns:xsi Indique le schéma d’où proviennent les types de données et éléments.
xsi:noNamespaceSchemaLocation Précise le document du schéma XML qui contient l’espace de noms cible

L’élément data_dictionary doit être codé comme suit :

<data_dictionary  dd_version=”1.0”
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:noNamespaceSchemaLocation="http://donnees-data.spac-pspc.gc.ca/dd/spac-pspc-dd.xsd">

La balise data_dictionary doit uniquement contenir une version unique de la balise <headings> des ensembles de données.

Exemple de code :

<data_dictionary dd_version=”1.0”
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:noNamespaceSchemaLocation="http://donnees-data.spac-pspc.gc.ca/dd/spac-pspc-dd.xsd">
  <headings>
  …
  </headings>
</data_dictionary>

Élément data_pattern

L’élément data_pattern est un élément facultatif qui précise le modèle ou l’expression régulière de validation qui apparaît dans une cellule de données sous l’en-tête de colonne. Le contenu de la balise est une expression régulière Perl complète. L’expression régulière doit commencer par un caractère de début de ligne '^' et se terminer par un caractère de ligne de fin '$'. Si aucune balise data_pattern n’apparaît dans la balise d’en-tête, tout caractère peut apparaître dans les cellules de données (c.-à-d. : le modèle est ^.*$).

Exemple de code pour la concordance d’une date (AAAA-MM-JJ) :

  <heading id="h1">
  ….
  <data_pattern>^\d\d\d\d-\d\d-\d\d$</data_type>
  …
  </heading>

Élément data_type

L’élément data_type est un élément facultatif qui précise le type de données (p. ex., chiffre, date, etc.) qui apparaît dans des cellules de données sous l’en-tête de colonne. Le contenu de la balise est l’adresse URL d’un type défini dans le schéma. Les schémas publics sont disponibles sur schema.org. Si aucun type convenable n’est disponible dans un schéma, l’élément data_type peut renvoyer à la balise d’en-tête du dictionnaire de données actuelles. Si aucune balise data_type n’apparaît dans la balise d’en-tête, tout type de données peut être inscrit dans les cellules de données.

Exemple de code pour un type défini par schema.org :

  <heading id=”h1”>
  ….
  <data_type>https://schema.org/Organization#legalName</data_type>
  …
  </heading>

Exemple de code pour un type non défini par un schéma, le type de données renvoie au dictionnaire de données (l’ancre de l’adresse URL correspond à l’attribut id de l’en-tête) :

  <heading id=”h1”>
  ….
  <data_type><a href="http://donnees-data.spac-pspc.gc.ca/dd/my_dd.xml">http://donnees-data.spac-pspc.gc.ca/dd/my_dd.xml</a>#h1</data_type>
  …
  </heading>

Élément description

L’élément description décrit un en-tête ou un ensemble de données. La description est propre à la langue et doit comprendre un attribut xml:lang pour préciser la langue de la description.

Attribut Description
xml:lang Précise la langue du contenu de la description.

L’élément description est un élément requis, il précise le texte de la description pour un seul en-tête de fichier de données CSV (en-tête de colonne). Il doit y avoir au moins deux balises description pour chaque en-tête, une pour chaque langue officielle.

Exemple de code pour un en-tête :

  <heading id="h1">
  <label>col_1</label>
  <description xml:lang="en">Identifies the fiscal year of payment issuance.</description >
  <description xml:lang="fr">Indique l'exercice financier au cours duquel le paiement a été émis.</description>
  …
  </heading>

Élément heading

La balise heading est une balise de conteneur pour les renseignements d’un seul en-tête de fichiers de données CSV (en-tête de colonne). La balise heading doit comprendre un attribute id pour désigner de façon unique l’en-tête dans le dictionnaire de données.

Attribut Description
id Identificateur unique de l’en-tête dans un dictionnaire de données. Il ne s’agit pas de l’étiquette d’en-tête de la colonne CSV.

La balise heading doit comprendre les balises facultatives et requises qui suivent dans l’ordre suivant :

Exemple de code :

  <heading id="h1">
    <label>heading label</label>
    <description xml:lang="en">English description</description>
    <description xml:lang="fr">French description</description>
    …
  </heading>

Élément headings

La balise headings est une balise conteneur pour un ensemble de balises <heading>, y compris les renseignements sur les en-têtes de fichier de données (en-têtes de colonne). La balise headings doit comprendre une ou plusieurs balises <heading>.

Exemple de code :

  <headings>
  <heading>
  …
  </heading>
  …
  </headings>

Élément label

L’élément label est un élément requis qui précise le texte de l’en-tête d’un seul fichier de données CSV (en-tête de colonne). L’élément peut être indépendant de la langue ou propre à la langue. Si l’élément est propre à la langue, il doit inclure l’attribut xml:lang pour la préciser.

Attribut Description
xml:lang Précise la langue du contenu de l’élément d’étiquette.

Si une balise <heading> contient une étiquette indépendante de la langue (c.-à-d., aucun attribut xml:lang), il ne doit pas contenir une étiquette propre à une langue.

Exemple d’un en-tête contenant une étiquette indépendante de la langue :

  <heading id="h1">
    <label>col_1</label>
    …
  </heading>

Exemple d’un en-tête avec étiquettes propres à la langue :

  <heading id="h1";>
    <label xml:lang="en">column_1</label>
    <label xml:lang="fr">colonne_1</label>
    …
  </heading>

L’élément related_resource est un élément facultatif qui renvoie à une ressource en ligne qui prend en charge l’en-tête, ou qui y est liée. Le contenu de la balise est l’adresse URL de la ressource connexe. Si la ressource est propre à la langue, elle doit comprendre un attribut xml:lang pour préciser la langue de la ressource.

Attribut Description
xml:lang Précise la langue du contenu de la ressource connexe.

Exemple de code :

  <heading id="h1";>
    …
    <related_resource xml:lang="en">http://www.tpsgc-pwgsc.gc.ca/recgen/pceaf-gwcoa/1516/txt/rg-3-num-eng.html</related_resource>
    <related_resource xml:lang="fr">http://www.tpsgc-pwgsc.gc.ca/recgen/pceaf-gwcoa/1516/txt/rg-3-num-fra.html</related_resource>
    …
  </heading>

Attributs

Les attributs suivants sont utilisés selon les éléments ou les balises définis dans le schéma de dictionnaire de données XML de TPSGC.

Attribut dd_version

L’attribut dd_version précise la version du schéma du dictionnaire sur les données ouvertes XML. La valeur est un chiffre.

Attribut id

L’attribut id précise l’identificateur unique de son élément. La valeur doit être unique parmi tous les identificateurs du dictionnaire de données. Elle doit contenir au moins un caractère et ne doit contenir aucun espace.

The xml:lang attribute

L’attribut xml:lang précise la langue de base du contenu textuel et des valeurs de l’attribut d’un élément. La valeur par défaut de cet attribut est inconnue. Les valeurs sont des codes de langage ISO 639 à deux lettres (p. ex., « en », « fr »).

Exemple complet

Voici un exemple complet d’un dictionnaire de données XML qui comprend toutes les balises et les valeurs requises.

<?xml  version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/dd/dd.xsl"?>
  <!--
  Real Property branch, payment in lieu of taxes data dictionary.
  -->
  <data_dictionary xsi:noNamespaceSchemaLocation="http://donnees-data.spac-pspc.gc.ca/dd/spac-pspc-dd.xsd"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  dd_version="1.0">
    <headings>
      <heading id="h1">
        <label xml:lang="en">Province/Territory</label>
        <label xml:lang="fr">Province/Territoire</label>
        <description xml:lang="en">Province/Territory Name: The  name of Canadian Province or Territory where a Taxing Authority is  located.</description>
        <description xml:lang="fr">Nom de la Province/Territoire : Le nom de la Province Canadienne ou du Territoire où est située une Autorité Taxatrice.</description>
        <data_type>https://schema.org/State#name</data_type>
      </heading>
      <heading id="h2">
        <label xml:lang="en">Taxing Authority</label>
        <label xml:lang="fr">Autorité taxatrice</label>
        <description xml:lang="en">
        Taxing Authority Name: The name of Canadian taxing authorities that host federal property  belonging to federal departments of the Government of Canada.</description>
        <description xml:lang="fr">Nom de l’autorité taxatrice : Le nom des autorités taxatrices canadiennes qui comptent sur leur territoire des propriétés fédérales appartenant à divers ministères du Gouvernement du Canada.</description>
        <data_type>https://schema.org/Organization#legalName</data_type>
      </heading>
      <heading id="h3">
        <label xml:lang="en">2009 PILT Amount</label>
        <label xml:lang="fr">Montant des PERI pour 2009</label>
        <description xml:lang="en">Tax Year PILT Amount: Total PILT amount paid to a Taxing Authority for a specific tax year.</description>
        <description xml:lang="fr">Montant annuel de PERI : Le montant total de PERI versé à une Autorité Taxatrice pour une année de taxation donnée.</description>
        <data_type>https://schema.org/amount</data_type>
        <data_pattern>^\d+\.\d\d$</data_pattern>
      </heading>
  </headings>
</data_dictionary>
Signaler un problème sur cette page
Date de modification :