Les opérations de transformation sont des opérateurs appliqués en séquence, lorsque plusieurs sont utilisées pour un même champ, à la valeur initiale du champ au moment du paramétrage de l’affichage des données. Elles permettent par exemple de séparer une liste d’auteurs, de supprimer des valeurs redondantes ou encore de tronquer des valeurs.
Remarque importante : les opérations de transformation n’agissent pas sur les valeurs elles-mêmes, mais uniquement sur leur affichage dans la fiche d’une ressource. En effet, l’export des champs des ressources à partir de l’onglet Recherche renvoie un fichier CSV ou JSON contenant les valeurs des champs sous leur format initial.
Opérations de transformation disponibles
ARRAY
Transforme des données séparées par des virgules en un tableau.
Exemple utilisé pour transformer les catégories Inist de niveau 1, qui n’ont pas de classification, en un tableau.
PARSE
GET Classification; Nom
ARRAY
BOOLEAN
Transforme la valeur du champ en un booléen, dont la valeur ne peut être que true ou false, vrai ou faux. Ceci n’est utile que si la valeur attendue est un booléen. Par défaut, la valeur d’un champ est une chaîne de caractères.
Toute chaîne de caractères valant true, 1, on, ok, oui ou yes sera vraie, et toute autre chaîne sera fausse.
CAPITALIZE
Met la première lettre de la chaîne de caractères en majuscule, et toutes les autres en minuscules.
DEFAULT
Renvoie une valeur par défaut si la valeur n’existe pas (null, undefined, 0, "", c’est-à-dire une des valeurs falsy de JavaScript).
Remarque : faites attention au type de la valeur de départ, en particulier si vous manipulez des nombres, car "0" est différent de 0, et sa valeur de vérité est différente. C’est pourquoi vous pouvez vouloir utiliser une opération de transtypage, comme BOOLEAN, STRING ou NUMBER.
FORMAT
Renvoie une chaîne de caractères incluant la valeur et les caractéristiques données en paramètre.
"hello" => "<%s>" => "<hello>"
GET
Même fonction que SELECT en plus complexe.
Permet de sélectionner une partie d’un objet JSON. On obtient une chaîne de caractères.
Permet d’associer plusieurs sous-champs.
Concatène plusieurs sous-champs pour tous les éléments du tableau.
Pour plusieurs colonnes séparées par ; :
{ a: { aa: 1, bb: 1 }, b: 2 }
Utiliser GET et a.aa;a.bb comme paramètre permet de récupérer [1, 1] en sortie.
Dans le cas des classifications WoS, il faut lui donner le nom du ou des objets à sélectionner, c’est-à-dire le sous-champ JSON.
GET Classification; Nom
Exemple :
[{"Nom":["3 - microbiology"],"Classification":["1 - health sciences","2 - biomedical research"],"Outils":["multicat"]}]
Avec le chemin :
Classification; Nom
On récupère :
[["1 - health sciences","2 - biomedical research"]]
Associé à l’opération de transformation PARSE, GET est utilisé pour pointer sur la classification associée à chaque nom d’espèce ou chaque catégorie d’une ressource.
JOIN
Rassemble les éléments d’un tableau dans une chaîne de caractères, en les séparant par la chaîne fournie par le paramètre.
["hello", "world"] => " dear " => "hello dear world"
LOWERCASE
Renvoie la valeur en bas de casse, qu’il s’agisse d’une chaîne de caractères ou d’un tableau de chaînes de caractères.
"HELLO" => "hello"
MAPPING
Opération permettant le remplacement à partir d’une table, équivalent à l’enchaînement de plusieurs opérations REPLACE.
Elle peut par exemple être utilisée pour la verbalisation des acronymes d’institut ou des langues.
field = keywords
list = "hello":"bonjour", "hi":"salut"
MASK
Permet de filtrer, en les rendant nulles, les valeurs d’un champ qui correspondent à un masque défini avec des expressions régulières.
Exemple 1 :
Objet en entrée :
{ a: 2, b: 'trois', c: true }
Paramètre :
^[a-z]+$
Objet en sortie :
{ a: 2, b: 'trois', c: true }
Exemple 2 :
Objet en entrée :
{ a: 3, b: 'un quatre', c: true }
Paramètre :
^[a-z]+$
Objet en sortie :
{ a: 3, b: null, c: true }
Attention : ne fonctionne que sur des champs simples et pas sur des champs tableaux de type multivalués comme JSON.
Exemples d’utilisation :
- sélectionner les identifiants de type ISSN (XXXX-XXXX) dans un champ d’identifiants contenant également des ISBN ;
- supprimer des données vides, par exemple dans les facettes.
NUMBER
Transforme la valeur du champ en un nombre. Ceci n’est utile que si la valeur attendue du champ est un nombre.
PARSE
Transforme une chaîne de caractères en un objet JavaScript (JSON).
"[1,2]" => [1,2]
Remarque : un objet JavaScript peut également être :
- une chaîne de caractères :
"\"a\"" => "a"- un nombre :
"1.0" => 1.0- un tableau :
"[1,\"a\"]" => [1, "a"]- un objet :
"{ a:1, b: \"s\" }" => { a:1, b: "s" }
PREFIX
Préfixe une valeur de champ avec une chaîne de caractères. Lorsque la valeur est un tableau, la chaîne de caractères est insérée au début du tableau.
"dear world" => "hello" => "hello dear world"
REMOVE
Supprime une sous-chaîne d’une chaîne de caractères, ou un élément d’un tableau.
"hello world" => " world" => "hello"
REPLACE
Remplace une chaîne de caractères par une autre.
("hello world") => ("world" => "you") => ("hello you")
REPLACE_REGEX
Remplace une chaîne de caractères à partir d’une expression régulière.
Exemple : rechercher tous les "outil*" et les remplacer par "outillage".
Attention : les expressions régulières peuvent être complexes.
SELECT
Permet de récupérer différentes valeurs dans différents tableaux et de conserver le tableau lorsqu’une valeur est unique. Sélectionne l’élément du tableau à exploiter.
SELECT 1 (= ligne 1)
Peut être associé à l’opération de transformation PARSE, qui transforme une chaîne de caractères en un objet JavaScript JSON.
SHIFT
Décale le début de la valeur du champ vers la droite, en fonction du paramètre donné. Ce faisant, il supprime le début de la valeur. S’applique sur des chaînes de caractères ou des tableaux.
"The world" => 4 => "world"
SPLIT
Découpe une chaîne de caractères en séparant les morceaux grâce à la chaîne de caractères passée en paramètre.
Remarque : cette opération de transformation est l’inverse de JOIN.
"hello dear world" => " dear " => ["hello", "world"]
STRING
Transforme la valeur du champ en une chaîne de caractères. Ceci n’est utile que si elle n’est pas déjà une chaîne, qui est le type par défaut, ou si vous voulez supprimer les espaces au début et à la fin d’une chaîne.
Remarque : on peut appliquer une séquence d’opérations de transformation sur une valeur de champ, ce qui implique que la valeur en entrée de STRING peut être autre chose qu’une chaîne de caractères.
" hello " => "hello"
SUFFIX
Ajoute une chaîne de caractères à la fin de la valeur du champ. Lorsque la valeur est un tableau, la chaîne est ajoutée à la fin du tableau.
Remarque : c’est l’opération inverse de PREFIX.
"hello dear" => " world" => "hello dear world"
TRIM
Supprime les espaces au début et à la fin de la valeur du champ quand il s’agit d’une chaîne de caractères. Sinon, renvoie la valeur sans la modifier.
Remarque : sur une chaîne de caractères, STRING fait la même chose.
" hello " => "hello"
TRUNCATE
Supprime le dernier élément de la valeur du champ, en fonction du nombre passé en paramètre.
Le nombre indique la position du caractère, ou de l’élément dans le cas d’un tableau, à partir duquel couper la valeur. La position la plus à gauche a la valeur zéro (0).
Remarque : c’est la transformation inverse de SHIFT.
"hello world" => 5 => "hello"
Pour un tableau :
[1, 2, 3, 4] => TRUNCATE 2 => [1, 2]
TRUNCATE_WORDS
Permet de garder au maximum n mots, n étant le paramètre numérique.
"Une maison rouge flamboyante dans un pré" => 3 => "Une maison rouge"
UNIQ
Dédoublonne les valeurs du champ lorsqu’il s’agit d’un tableau. Retourne la valeur lorsqu’il s’agit d’une chaîne, d’un nombre ou d’un booléen. Renvoie null sinon.
["hello", "hello"] => ["hello"]
UPPERCASE
Renvoie une chaîne de caractères dans laquelle tous les caractères sont en majuscules.
"hello" => "HELLO"
URLENCODE
Permet d’éviter les problèmes d’encodage dans les URL.
Transforme les URL UTF-8 en « encodage-pourcent ».
Par exemple : %20 pour un espace.
Attention : ne pas appliquer plusieurs fois
URLENCODEsur la même URL.