Newer
Older
web-dumps / conditor-dumps / README.md
# Conditor-dumps

Collecte, restructuration et enrichissement de données
[Conditor](https://corhal-api.inist.fr/api-docs/).

Les fichiers fournis sont au format JSON Lines (`.jsonl`), ce qui veut dire que le *loader* utilisé pour LODEX doit être adapté.

> 📗 Tant qu'une étape n'est pas terminée, le fichier résultant est suffixé par `.crdownload`.

## Étapes

### 01-query

Dépôt d'un fichier `NOM_DU_FICHIER.txt` (requête) dans le répertoire `01-query`.

### 02-download

Téléchargement de données via la requête sur l'api Corhal.

### 03-create-fields

Création des champs suivants :

- `ApilPublicationDate` à partir de données existantes dans le json (`publicationDate` et `electronicPublicationDate`).
- `ApilFinancement` à partir du champ `funders`

### 04-enrich

Appel de deux web services ([informations RNSR](https://openapi.services.inist.fr/?urls.primaryName=affiliations-tools%20-%20Structuration%20%26%20enrichissements%20d%27affiliations#/affiliations/post-v1-rnsr-info) et [instituts CNRS](https://objectif-tdm.inist.fr/2022/03/29/attribution-de-noms-dinstituts-cnrs-a-partir-didentifiants-rnsr/)) pour créer les champs suivants :

- `ApilWsIsCnrs`
- `ApilWsLaboSigle`
- `ApilWsLaboIntitule`
- `ApilWsRnsr`
- `ApilWsInstitutCnrs`
- `ApilWsSigleLaboIntitule`

Appel de plusieurs web services de mapping ([documentType](https://mapping-tools.services.inist.fr/v1/homogenize/documentType/json), [source](https://mapping-tools.services.inist.fr/v1/homogenize/source/json), [publisher](https://mapping-tools.services.inist.fr/v1/homogenize/publisher/json)) et d'outils bibliographiques ([crossref](https://biblio-tools.services.inist.fr/v1/crossref/prefixes/expand)) pour créer les champs suivants :

- `ApilWsTypeDoc` homogénéisé à partir du champ `originalGenre`. Si l'homogénéisation renvoie un "n/a" alors on récupère la valeur d'origine `originalGenre`.
- `ApilWsSource` Récupération du champ `host/title`. Si vide, alors récupération du champ `host/conference/name`. Homogénéisation des sources, si résultat "n/a", conservation de la valeur d'origine (`host/title` ou `host/conference/name`).
- `ApilWsPublisher` champ d'origine `host.publisher` et par défaut on récupère
  un éditeur à partir de la racine du champ `doi`. Si le champ `doi` renvoie un "n/a" alors on récupère le champ d'origine `host.publisher`.

Appel du web service ([Libpostal](https://affiliations-tools.services.inist.fr/v1/expand)) pour créer les champs suivants

- `ApilWSCodeISO` récupéré à partir du champ `Authors.affiliation.address`.
- `ApilWSCountry` récupéré à partir du champ `Authors.affiliation.address`.

### 05-future-loader

Cette étape sert à préparer un *loader* spécifique à Conditor. À terme, son
contenu sera intégré à ce *loader*.

Nouveaux champs créés:

- `ApilCollation`: concaténation de `host.volume`, `host.issue`, `host.pages.range`,
- `ApilProvenance`: récupération de la source dans `sourceUids`, et dédoublonnage.

## Configuration

> ⚠️ **Attention**: utilisez au moins la version 1.5 de `lodex-crontab` et la version 14 de `node`.

S'assurer d'avoir les versions suivantes :

```json
"packages": [
    "@ezs/core@2.3.1",
    "@ezs/basics@1.23.1",
    "@ezs/conditor@2.10.3"
  ]
```

Reste de la [configuration](../conditor-dumps-config.json) :

```json
{
    "environnement": {
        "CRON_VERBOSE": true,
        "EZS_VERBOSE": false
    },
    "files" : {
        "zip": "https://gitbucket.inist.fr/tdm/web-dumps/archive/conditor-dumps/conditor-dumps@1.11.0.zip"
    },
    "tasks": [
        {
            "Target": "watch",
            "RunOnStartup": true
        }
    ]
}
```

Trello : <https://trello.com/b/wJoKuJXZ/conditor-m%C3%A9trie>