La mise en forme classique des données est la table où les colonnes sont les différents champs et chaque ligne représente un enregistrement. L’export sous forme tabulaire transforme un corpus en table. Autrement dit, l’export sous forme tabulaire permet de récupérer les données d’un corpus dans un tableur ou de les insérer automatiquement dans une base SQL. Comme l’export sous forme de table suppose de passer de données au format XML et à des données texte, le format de définition de l’export est conçu pour donner à l’administrateur une assez grande souplesse dans la définition des colonnes.
La définition des colonnes se présente sous la forme d’un fichier texte où chaque ligne correspond à la définition d’une colonne (les lignes blanches éventuelles sont ignorées). (<= à reprendre)
La définition d’une colonne comprend jusqu’à quatre éléments, les deux premiers sont obligatoires, les deux derniers sont facultatifs.
le premier élément correspond au nom de la colonne
le deuxième élément correspond aux champs à insérer
le troisième élément correspond à la règle de transformation à appliquer aux données (Pattern)
le quatrième élément correspond à une série de paramètres éventuels
1) Nom d’une colonne
Le nom d’une colonne est libre (les éventuels espaces blancs en début et en fin étant ignorés), il est cependant préférable d’utiliser un nom « technique » (que des caractères ASCII sans espace)
2) Les champs à insérer
Il s’agit des champs suivant la syntaxe classique (propriete_..., titre, etc, tel qu’elle apparait dans la gestion de l’interface. On peut avoir à la fois des champs du corpus (ou des sous-champs), des indications d’insertions d’indexation ou de liage (avec possibilité de filtres sur le poids).
Il est possible d’indiquer plusieurs champs, à condition qu’ils soient compatibles, les données étant fusionnées. Les champs compatibles sont les suivants :
les indexations (indication de plusieurs thésaurus)
les liages (indication de plusieurs corpus)
le champ Texte et les annexes
les champs Propriété et les champs Information qui ont le même type de données (le champ Rédacteurs est compatible avec les propriétés et les informations dont les données sont des personnes, le champ Langue de la fiche est compatible avec les propriétés et les informations dont les données sont des langues.
Pour indiquer plusieurs champs, on les sépare par des virgules.
col1
information_auteurs,redacteurs
Dans cet exemple, le champ information_auteurs
(dont les données sont supposées être des personnes) est fusionné avec les rédacteurs dans la colonne appelée col1
.
motscles
thesaurus_thema_3,thesaurus_thema_4
Ici, on ne conserve que les mots-clés du thésaurus thema
de poids 3 et 4
Note : pour le moment, il n’y a pas de vérification des doublons
4) Les paramètres :
Les paramètres sont sous la forme clé=valeur
(ou c[clé]] quand il s’agit d’un booléen) :
cast : peut prendre les valeurs integer, decimal ou date, indique que la valeur doit être transformée en entier ou en décimal, si la valeur n’est pas transformée, la valeur est vide
limit : doit avoir pour valeur un entier strictement positif, dans le cas où il peut y avoir plusieurs valeurs (indexation, liage, information, fusion de plusieurs champs)), cela limite le nombre de valeurs (on n’utilisera limit=1
pour n’avoir qu’une seule valeur
pos : doit avoir pour valeur un entier strictement positif, ne retient que la valeur à la position indiquée (nul s’il n’y en a pas), peut prendre la valeur last pour indiquer de prendre la dernière position
sep : indique le séparateur à utiliser dans le cas de plusieurs valeurs, utiliser les guillemets si on veut un espace (ex: sep=", "
), prendre la valeur NL pour indiquer un saut de ligne.
last : booléen, se combine avec pos
et indique que s’il n’y a pas de valeur à la position indiquée, il doit prendre la dernière valeur disponible (ne fonctionne que pour les items de fiche), last
est implicte quand pos=last
noitem : booléen, indique qu’il faut ignorer les items simples quand le champ a un type particulier de données (par exemple, dans un champ date, une date mal saisie sera ignorée)
defval : indique une valeur par défaut à utiliser si la valeur est nulle.
defprop : indique la clé d’un champ Propriété à utiliser comme valeur par défaut, si la valeur est nulle ; ce paramètre peut se combiner avec le précédent et il a la préséance (si la valeur est nulle, on regarde la valeur de la propriété indiquée par defprop
et si celle-ci est également nulle, on prend la valeur de defval
)
null : booléen, indique que si la valeur est une chaine vide, elle doit être convertie dans en valeur nulle
Dans l’exemple suivant, on considère que, sauf erreur de saisie, il n’y a qu’une seule fiche éditeur de poids 3, on veut avoir son numéro et conserver le fait que c’est un entier (dans le cas de tables relationnelles par exemple).
editeur
corpus_editeur_3
{idcorpus}
cast=integer,limit=1
Cas des séparateurs
Le paramètre sep
permet de spécifier le séparateur entre les différents éléments. Or il peut parfois être utile de préciser des séparateurs différents en fonction de l’origine des éléments. Supposons par exemple que l’on désire configurer un champ qui récapitule en une seule chaine les identifiants alphanumériques de deux thésaurus (le premier correspondant à projet, le second à une ligne budgétaire, dont on supposera qu’il n’y a qu’une seule valeur possible), ainsi que les valeurs d’un champ information de type date (représentant une période et que l’on suppose avoir une ou deux valeurs). Cela donnerait avec le paramètre sep
simmple la configuration suivante :
thesaurus_projet, information_periode, thesaurus_ligne
{idalpha}||{code}||{idalpha}
sep=" / "
Pour une fiche indexée avec le projet « RAR
» pour la ligne budgétaire « V001
» sur la période 2008-06;2008-09
, on obtient « RAR / 2008-06 / 2008-09 / V001 ». Tout l’information est là, mais ce n’est pas totalement satisfaisant. Supposons que l’on voudrait avoir « RAR : 2008-06 @ 2008-09 (V001) ». C’est possible avec le paramétrage suivant (à noter sur la deuxième ligne, la mise en parenthèse de {idalpha}
pour la troisième source) :
thesaurus_projet, information_periode, thesaurus_ligne
{idalpha}||{code}||({idalpha})
sep1_2=" : ", sep2= " @ ", sep2_3=" "
Les paramètres sep
avec deux chiffres séparés par un trait de soulignement indiquent le séparateur à utiliser entre des éléments provenant des deux sources correspond aux deux chiffres (dans l’exemple, le mot-clé du projet et la première date de la période). Il est possible d’indiquer un séparateur entre deux sources a priori éloignées qui sera utilisé si les sources intermédiaires sont vides.
En effet, dans notre exemple, si le champ information Période est vide, on aurait « RAR : (V001) ». En ajoutant le paramètr sep1_3=" "
, on obtient « RAR (V001) ».
Les paramètres sep
avec un seul chiffre désignent le séparateur à utiliser entre éléments de la source, indiquée par le chiffre. Dans notre exemple, cela donne l’ajout de l’arobase entre les deux dates.