Modélisation des données
Description
Cette documentation décrit schématiquement les modèles JSON de validation du validateur IGNF/validator
pour ses versions 4.0
et supérieures.
Vue d’ensemble des concepts
Concept | Description | Implémentation |
---|---|---|
Document | Modélisation du contenu d’un dossier ou d’une archive. | DocumentModel |
File | Modélisation d’un fichier du document (chemin, type, présence obligatoire,…). | FileModel |
Table | Modélisation d’une table matérialisée dans un fichier. | FeatureType |
Column | Modélisation d’une colonne d’une table. | AttributeType |
Modélisation des concepts
Document
Le concept de Document.json est utilisé pour modéliser un dossier ou une archive contenant des fichiers.
Propriété | Type | Description | Obligatoire | Version |
---|---|---|---|---|
document.name |
string |
Le nom du modèle au niveau système (ex : cnig_PLU_2013) | O | 4.0 |
document.title |
string |
Le nom du modèle pour l’affichage | N | 4.0 |
document.description |
string |
La description du modèle | N | 4.0 |
document.files |
File[] |
La liste des fichiers attendus dans le dossier | O | 4.0 |
document.constraints |
DocumentConstraints |
Contraintes au niveau du document | N | 4.0 |
DocumentConstraints
Propriété | Type | Description | Obligatoire | Version |
---|---|---|---|---|
document.folderName |
RegExp |
Nom de dossier attendu pour le document | N | 4.0 |
document.metadataSpecification |
string |
Valeur attendue dans la fiche de métadonnée | N | 4.0 |
File
Les fichiers d’un document peuvent correspondre à des tables, des sous-dossiers, des PDF ou des fichiers de métadonnées. Ils sont décrits par les propriétés suivantes :
Propriété | Type | Description | Obligatoire | Version |
---|---|---|---|---|
file.name |
string |
Le nom identifiant le fichier | O | 4.0 |
file.title |
string |
Le nom du fichier pour affichage | N | 4.0 |
file.description |
string |
La description du fichier | N | 4.0 |
file.type |
FileType | Le type de fichier | O | 4.0 |
file.path |
RegExp |
Chemin relatif par rapport à la racine du document (1) | N | 4.0 |
file.tableModel |
string |
Liens vers le modèle de table | N (2) | 4.0 |
Remarques :
- (1) Les extensions ne sont pas spécifiées dans les modèles. L’expression régulière est complétée automatiquement en fonction du
type
, ce qui simplifie le support de plusieurs formats pour les tables (c.f. FileType ) - (2) Il est conseillé de spécifier l’URL du modèle de table qui sera par défaut
./types/{file.name}.json
FileType
Les types de fichiers supportés sont les suivants :
Type | Description | Version |
---|---|---|
directory |
Dossier permettant d’en valider l’existence | 4.0 |
metadata |
Fiche de métadonnées XML au format ISO 19115 (.xml ) |
4.0 |
pdf |
Fichier PDF (.pdf ) |
4.0 |
table |
Table de données géographique ou non (.csv , .dbf , .shp , .geojson , .gml ) |
4.0 |
multi_table |
Un ensemble de tables stockées dans un seul fichier (.gml , .gpkg ) |
4.2 |
Remarque : L’ajout du concept multi_table
est lié à la validation des données PCRS vecteur où un même fichier GML contient plusieurs collections. Il est étendu au format GeoPackage pour le Géostandards Risques.
Table
Le concept de Table.json est utilisé pour modéliser une table et ses colonnes.
Propriété | Type | Description | Obligatoire | Version |
---|---|---|---|---|
table.name |
string |
Le nom de la table au niveau système | O | 4.0 |
table.title |
string |
Le nom de la table pour affichage | N | 4.0 |
table.description |
string |
La description de la table | N | 4.0 |
table.columns |
Column[] |
La description des colonnes de la table | O | 4.0 |
Remarque : L’ajout d’une propriété PrimaryKey
, définie sous forme d’une chaîne de caractère (“ID” ou “C1,C2”), est à l’étude.
Column
Le concept de Column.json est utilisé pour modéliser une table et ses colonnes.
Propriété | Type | Description | Obligatoire | Version |
---|---|---|---|---|
column.name |
string |
Le nom de la table au niveau système | O | 4.0 |
column.title |
string |
Le nom de la table pour affichage | N | 4.0 |
column.description |
string |
La description de la table | N | 4.0 |
column.type |
Type | Le type de la colonne | O | 4.0 |
column.constraints |
ColumnConstraints |
Les contraintes sur la colonne | N | 4.0 |
ColumnType
Le validateur supporte une liste finie de types :
Nom | Description | Version |
---|---|---|
Boolean | Vrai ou faux | 4.0 |
String | Chaîne de caractères | 4.0 |
Integer | Valeur numérique entière | 4.0 |
Double | Valeur numérique en virgule flottante | 4.0 |
Date | Jour, mois et année | 4.0 |
Geometry | Géométrie de type non spécifié | 4.0 |
Point | Géométrie de type point | 4.0 |
LineString | Géométrie de type polyligne | 4.0 |
Polygon | Géométrie de type polygone | 4.0 |
MultiPoint | Géométrie de type multi-point | 4.0 |
MultiLineString | Géométrie de type multi-polyligne | 4.0 |
MultiPolygon | Géométrie de type multi-polygone | 4.0 |
GeometryCollection | Géométrie de type hétérogène | 4.0 |
Path | Chemin vers un fichier dans le document | 4.0 |
Url | URL | 4.0 |
L’ajout des types suivants est à l’étude pour les futures versions :
Nom | Description |
---|---|
DateTime | Jour, mois, année et heures |
Year | Année uniquement |
YearMonth | Année et mois |
JSON | Valeur JSON valide |
ColumnConstraints
Propriété | Type | Description | Version |
---|---|---|---|
required |
boolean |
Contrainte interdisant une valeur nulle ou vide | 4.0 |
unique |
boolean |
Contrainte d’unicité au sein de la table | 4.0 |
enum |
any[] |
Contrainte d’appartenance à une liste de valeur | 4.0 |
pattern |
string |
Contrainte sous forme d’une expression régulière (syntaxe JAVA) | 4.0 |
maxLength |
integer |
Contrainte sur la longueur maximale d’une chaîne de caractère | 4.0 |
reference |
ReferenceTarget |
Contrainte de correspondance entre la valeur et celle d’une table référencée | 4.0 |
Remarques :
- La cible d’une référence (
ReferenceTarget
) est définie sous forme d’une chaîne de caractère :{TABLE_CIBLE}.{COLONNE_CIBLE}
( (ex : “SERVITUDE.IDSUP”) - Moyennant des références à des tables statiques, les références permettront de gérer plus proprement l’appartenance à des listes de valeur codifiée (
reference: doc_urba_type(code)
) que l’utilisation des énumérés. - Dans un premier temps, les clés étrangères ne sont pas supportées mais il sera possible d’étendre le modèle pour être en mesure de définir la clé étrangère
(TYPEPSC,STYPEPSC) REFERENCES prescription_urba_type(code,sous_code)
au niveau deZONE_URBA
dans les standards CNIG. - L’ajout des contraintes suivantes est à l’étude pour les futures versions :
Propriété | Type | Description |
---|---|---|
minimum |
any |
Contrainte sur la valeur minimale autorisée (incluse) |
maximum |
any |
Contrainte sur la valeur maximale autorisée (incluse) |