Newer
Older
web-services / affiliations-tools / README.md
# affiliations-tools

L'instance `affiliations-tools` utilise l'application ezmaster
[`lodex-workers`](https://github.com/Inist-CNRS/lodex-workers).

Elle offre plusieurs services autour des affiliations dans les notices bibliographiques:

- `netscity`: donne des informations sur les villes envoyées (position
  géographique, pays, province, ...)
- `rnsr`: déduit de l'adresse d'une affiliation d'auteur et d'une date de
  publication (l'année suffit) zéro, un ou plusieurs identifiants RNSR
  (correspondant à une ou plusieurs structures de recherche française(s)).

Cet appariement suit des [règles
certaines](https://github.com/Inist-CNRS/ezs/blob/master/packages/conditor/README.md#r%C3%A8gles-certaines).

## Configuration

Il faut préciser dans le fichier de configuration de l'instance qu'elle utilise des paquets nodes:

- `@ezs/analytics`
- `@ezs/basics`
- `@ezs/conditor`
- `@ezs/storage`

Bien sûr, les dernières versions sont préférables.

Exemple:

```json
{
    "packages": [
        "@ezs/analytics@1.17.0",
        "@ezs/basics@1.16.0",
        "@ezs/conditor@2.5.0",
        "@ezs/storage@1.6.0",
        "@ezs/libpostal@0.2.0"
    ]
}
```

> **Attention**: ce serveur doit être une instance de
> `inistcnrs/ezmaster-libpostal`.

## Utilisation

- [v1/rnsr/csv](#v1%2frnsr%2fcsv)
- [v1/rnsr/json](#v1%2frnsr%2fjson)
- [v1/rnsr/conditor](#v1%2frnsr%2fconditor)

### v1/rnsr/csv

Prend un fichier CSV, avec des colonnes nommées `Adresse` et `Année`, et renvoie
un CSV avec la colonne supplémentaire `RNSR`.

Les colonnes doivent être séparées par des tabulations, des points-virgules ou
des virgules.

#### Exemple CSV

```bash
cat <<EOF | curl -X POST --data-binary @- "https://affiliations-tools.services.inist.fr/v1/rnsr/csv"
Année,Adresse
2015,CNRS UMR AMAP MONTPELLIER FRA
2015,IRD UMR AMAP MONTPELLIER FRA
2015,"University of Bordeaux, IMS, CNRS UMR5218, Talence, F-33405, France"
2015,"CENBG, CNRS/IN2P3, Chemin du Solarium B. P. 120, Gradignan, F-33175, France"
EOF
```

Sortie:

```csv
Année;Adresse;RNSR
2015;CNRS UMR AMAP MONTPELLIER FRA;200317641S
2015;IRD UMR AMAP MONTPELLIER FRA;200317641S
2015;University of Bordeaux, IMS, CNRS UMR5218, Talence, F-33405, France;200711887V
2015;CENBG, CNRS/IN2P3, Chemin du Solarium B. P. 120, Gradignan, F-33175, France;199512079F
```

### v1/rnsr/json

Prend un fichier JSON, avec des champs nommés `id` (pour l'identifiant) et
`value`, et renvoie un JSON avec le ou les identifiant RNSR
dans le champ `value`.

Le champ `value` contient un objet avec deux propriétés:

1. `year`: l'année de publication
2. `address`: l'adresse de la structure qu'on veut trouver

> *Remarque : Quand aucun identifiant n'est trouvé, un tableau vide est
> renvoyé.*

#### Paramètres de v1/rnsr/json

| nom    | description                                        |
| ------ | -------------------------------------------------- |
| indent | `true` ou `false`, indente le JSON résultat ou non |

#### Exemple JSON

```bash
cat <<EOF|curl -X POST --data-binary @- "https://affiliations-tools.services.inist.fr/v1/rnsr/json?indent=true"
[
{ "id":1, "value": { "year": "2021", "address": "CNRS UMR AMAP MONTPELLIER FRA" } },
{ "id":2, "value": { "year": "2021", "address": "IRD UMR AMAP MONTPELLIER FRA" } },
{ "id":3, "value": { "year": "2021", "address": "University of Bordeaux, IMS, CNRS UMR5218, Talence, F-33405, France" } },
{ "id":4, "value": { "year": "2021", "address": "CENBG, CNRS/IN2P3, Chemin du Solarium B. P. 120, Gradignan, F-33175, France" } },
{ "id":5, "value": { "year": "2021", "address": "Nulle part" } },
{ "id":6, "value": { "address": "Intemporel" } },
{ "id":7, "value": { "address": "Inist-CNRS, UPS76, 2 rue Jean Zay, Vandoeuvre-lès-Nancy" } }
]
EOF
```

Sortie:

```json
[
    { "id":1, "value": ["200317641S"] },
    { "id":2, "value": ["200317641S"] },
    { "id":3, "value": ["200711887V"] },
    { "id":4, "value": ["199512079F"] },
    { "id":5, "value": [] },
    { "id":6, "value": [] },
    { "id":7, "value": ["198822446E"] }
]
```

### v1/rnsr/conditor

Prend une notice Conditor minimale (contenant au moins des auteurs (`authors`) et leurs affiliations (`affiliations`) avec au moins une adresse (`address`)), et tente de trouver le/les identifiant(s) RNSR correspondant.

Ajoute un champ `conditorRnsr` au niveau du champ `address`.

#### Exemple conditor

```bash
cat <<EOF|curl -X POST --data-binary @- "https://affiliations-tools.services.inist.fr/v1/rnsr/conditor"
[
{
     "xPublicationDate": ["2012-01-01"],
     "authors": [{
         "affiliations": [{
             "address": "GDR 2989 Université Versailles Saint-Quentin-en-Yvelines, 63009"
         }]
     }]
}
]
EOF
```

Sortie:

```json
[{
    "xPublicationDate": [
        "2012-01-01"
    ],
    "authors": [
        {
            "affiliations": [
                {
                    "address": "GDR 2989 Université Versailles Saint-Quentin-en-Yvelines, 63009",
                    "conditorRnsr": [
                        "200619958X"
                    ]
                }
            ]
        }
    ]
}]

```

### v1/addresses/parse

#### via curl

```bash
cat <<EOF|curl -N --data-binary @- "https://affiliations-tools.services.inist.fr/v1/addresses/parse?indent=true"
[
{ "value": "Inist-CNRS 2, rue Jean Zay CS 10310 F-54519 Vandœuvre-lès-Nancy France" },
{ "value": "46th St & 1st Ave, New York, NY 10017" }
]
EOF
```