Spécification CSVM-1

 Cet article décrit les spécifications associées au format CSVM dans sa première version. Il s’agit à la fois du cadre de conception initiale du CSVM et d’une base permettant les évolutions futures. En raison de l’ajout d’un bloc de métadonnées, le CSVM n’est pas conforme à la norme RFC 4180 relative au CSV. Le CSVM est un format ouvert, sa spécification est publique et libre. Contrairement aux parseur, le format n’est pas affecté de droits de manière à garantir son utilisation, sans contraintes particulières. Néanmoins, avec la publication d’une spécification en 2012, il existe probablement une question d’antériorité sur le nom et le format. Pour être qualifié de CSVM, un fichier devrait correspondre à la spécification qui est décrite dans cet article.

Publications initiales : buidez.net (2012), rapports techniques sur arXiv (2012) – Version refondue et mise à jour en 2024-2025.

Références

1. Données, métadonnées, commentaires

Prenons le cas d’un fichier CSV délimité par des tabulations (non visibles, une seule tabulation entre colonnes) qui est constitué de deux parties: une entête et un bloc de données. L’entête correspond à la première ligne, il s’agit souvent du titre/identifiant des colonnes (en vert, délimités par des guillemets doubles). Le bloc de données constitue le reste, il correspond à une table, sans discontinuité (lignes vides), et incluant le même nombre de colonnes par ligne. Les fichiers CSV peuvent se présenter sans entête et avec d’autres délimiteurs, les cellules de l’entête ne sont pas forcément encadrées par des guillemets simples ou doubles. Dans le cas de l’exemple, nous avons en plus une ligne de commentaire (en orange) qui démarre avec un caractère # :

Ce fichier peut être réécrit en CSVM d’une manière simple, nous supprimons la ligne d’en-tête pour la transformer en bloc de métadonnées qui est placé après le bloc de données précédent. Ce bloc est signalé par des mots-clés précédés du caractère #. L’ordre des colonnes dans les métadonnées (cf. ligne #HEADER) reprend celui du bloc de données.

Concernant la gestion des délimiteurs, des cellules vides ou des lignes vides : chaque cellule est séparée par le même caractère délimiteur qu’en CSV (tabulation ou autre). Une cellule vide est définie, comme en CSV, par deux délimiteurs successifs. Une pratique courante consiste à utiliser un caractère spécifique (par exemple ‘-‘) pour marquer une cellule vide, ce qui facilite l’édition dans un simple éditeur de texte.

Lignes vides et commentaires

Un fichier CSVM peut accepter des lignes vides entre le bloc de données et le bloc de métadonnées, ou à l’intérieur du bloc de données. De plus, les lignes débutant par # dans le bloc de données ne sont pas prises en compte par le parseur, mais peuvent être incluses dans le fichier afin de conserver certaines informations.

Le CSVM autorise donc deux niveaux d’annotation : (1) le bloc de métadonnées, (2) l’insertion de remarques dans le fichier, qui ne seront pas prises en compte par le parseur CSVM. Le développement de ces annotations de second niveau est volontairement limité, afin d’éviter l’introduction de descripteurs qui orienteraient le format vers une spécificité ou de la complexité.

La ligne rule

Nous pouvons également doubler les valeurs de #HEADER dans la première ligne du fichier (un peu comme dans un fichier CSV), sous la forme d’un commentaire, par exemple #ID MODEL TYPE MANUFACTURER pour l’exemple précédent. Cette ligne ne sera par interprétée par le parseur CSVM, sa synchronisation avec la ligne #HEADER est à la charge de l’utilisateur ou de l’application. Le choix des caractères séparateurs peut être identique à #HEADER ou non. Cette ligne est utile pour se remémorer les titres de colonnes dans une édition à la main, ou un copier-coller vers un autre format de table. Cette ligne peut être produite par certaines versions du parseur CSVM.

Retour en haut