# Étude GIEC Étude pour l'INSU, à partir de ~14000 DOI présents dans le WOS. À rendre pour mi-octobre 2022. Voir <https://wos-dumps.conditor.inist.fr/> et les `.ini` qui y sont. Voir <https://gitbucket.inist.fr/tdm/web-services/blob/master/biblio-tools/v1/wos/works/expand.ini>. Voir <https://gitbucket.inist.fr/tdm/web-dumps>. Les DOI sont dans un `.bib` ([BibTeX](http://www.bibtex.org/)). Décider sur quelle machine mettre ce dump. `WOS_API_KEY` dans mon mail CNRS. - [x] concaténer titre et abstract pour teeft - [x] ajouter les reprint_addresses (affiliations) - [x] enrichissement service web base Pascal <https://domains-classifier.services.inist.fr/v1/en/classify>, [doc](https://openapi.services.inist.fr/?urls.primaryName=Classification%20en%20domaines%20scientifiques#/default/post_v1_en_classify) - [ ] récupérer les organismes ## Workflow ```mermaid graph TD A[(dois.txt)] --> B[[harvest-from-doi.ini]] B --> C[(corpus.json)] C --> D[[extract-fields.ini]] D --> E[(corpus-simple.json)] E --> F[[enrich-rnsr.ini]] F --> G[(corpus-simple-rnsr.json)] G --> H[[enrich-etab.ini]] H --> I[(corpus-simple-etab.json)] I --> J[[enrich-institutes.ini]] J --> K[(corpus-simple-instituts.json)] K --> L[[enrich-teeft.ini]] L --> M[(corpus-simple-teeft-en.json)] M --> N[[enrich-pascal.ini]] N --> O[(corpus-simple-pascal.json)] ``` [](https://mermaid-js.github.io/mermaid-live-editor/edit#pako:eNpd0l1rgzAUgOG_IrnaoBZ268Vgrf3urjoYTKWkepwZmoTkZGyU_vdlxyqqV9G854FgrixXBbCIfRquq-AtTmXgn5fkIVdGO3t-V6fzt6qf5l9WyccsCMPnYJEk8IOG5xiWAurCzoUUWdaOLihZdkBoRaNruI-3yZKS2CvSiLwKjbRmSMS0v5oQbTZ0VtSteweQX4bOmvY3U4eyobOhbts7QloU6BBGB9tStZtqXWxH5I7ifU8iQIlDbU_BYapRF4IcYQdqjz2muc15PdSOVLxOtXvYWWzGGjANF4X_4df_yZRhBQ2kLPLLAkruakxZKm8-5Q7V6VfmLELjYMacLjhCLLi_Kg2LSl5b_1Vz-aFU9377A316wPA) ## Potentiels - base du SAPPS (?): correspondance adresses WoS / unités du CNRS - alignement adresse / expression régulière pour le marquage labo - annotation de corpus avec un thésaurus (quel outil: XSLT ?) ## Configuration ezMaster Utiliser [lodex-crontab@1.4+](https://github.com/Inist-CNRS/ezmaster-apps/tree/main/applications/lodex-crontab), avec cette configuration: ```json { "environnement": { "CRON_VERBOSE": true, "EZS_VERBOSE": false, "DEBUG": "ezs" }, "packages": [ "@ezs/core@2.1.0", "@ezs/basics@1.22.3", "@ezs/analytics@2.0.2" ], "files" : { "zip": "https://gitbucket.inist.fr/parmentf/giec-wos/archive/master.zip" }, "tasks": [ { "CronRule": "0 1 * * *", "Target": "data/corpus-simple-cnrs.json", "RunOnStartup": true } ] } ``` ## Précautions préalables Pour repérer les lignes du fichier de DOI contenant des caractères non ASCII: ```bash perl -ne 'print "$. : $_" if /[^\0-\177]/o;' dois.txt ``` ## Décisions - 26/09/2022: ne pas récupérer instituts, ni enrichissement Pascal. Priorité: récupérer les notices pour tous les DOI (DOI originaux + manquants du chapitre 11) ## Procédure actuelle de l'équipe - Vérifier le nombre de publis - récupération des DOI dans le rapport du GIEC (outil qui va chercher les liens dans le PDF (voir Ségia)) - interrogation du WOS par API pour récupérer le corpus en JSON - identifier les pays: - aligner les pays avec dénominations Français en majuscules (à terme avec les hiddenLabels dans Loterre) - regrouper les pays éclatés (England, Welsh), (France et Outre Mer (Guadeloupe, French Guiana, ...)), table de correspondance - récupération du code ISO3 du pays homogénéisé (table `WoS_PaysENG_Correction_Correspondance`) pour la cartographie dans LODEX - repérage du CNRS: - unités internationales (anciennement UMI, maintenant IRL): ~40 - adresses France: - alignement UT / base consolidée du SAPPS (2012-2020): UT -> oui/non CNRS (si oui: labo et institut) (pas les collections de SHS) - reliquat d'adresses non repérées: tables d'expressions régulières (lots par zones géographiques, par année pour éviter les homonymes) - homogénéisation des unités CNRS selon leur intitulé le plus récent (infos [Grafilabo](https://www2.cnrs.fr/graflabo/accueil.php), sous forme de fichier) - part France / Europe: regrouper par continent - adresses françaises non CNRS: pas les universités, pas les tutelles, mais les autres organismes français présents hors CNRS - aligner avec le RNSR (web service) - retrouver INRIA, INSERM, INRAE, IRD, CEA, BRGM, IFREMER, Météo France: - trouver les tutelles des labos non CNRS (à partir du RNSR) - homogénéiser selon la forme des tutelles dans le RNSR (IRSTEA, INRA => INRAE) - filtre "big 10" (table) - dédoublonnage des labos (les paires UT/organisme (organisme = Identifiant + année)) - rassemblement des organismes par UT (une colonne multivaluée des organismes) - organismes mondiaux: à partir du JSON (plus d'infos), voir <https://trello.com/c/l0aLODjn/25-ajouter-les-organismes-au-niveau-mondial> (forme normalisée par le WoS dans "Records Records Rec Static_Data Fullrecord_Metadata Addresses Address_Name Address_Spec Organizations Organization Content", si c'est le préférentiel (Pref = Y) et dans les Reprint_Addresses) - thématiques - catégories WoS subheadings (/publi) - ne pas prendre les keywords plus: moins pertinents - mots-clés d'auteur (keywords): pertinents mais peu présents - (interroger Incites pour récupérer les classifications) - Nathalie et Majid ont aligné (projection) avec le vocabulaire changement climatique (plusieurs outils); titre + résumé + mots-clés: recherche de termes (+ générique) - enrichissement catégories Pascal (concaténation niveau 2 et 3) sur titre + résumé (problèmes: Psychologie apparaît, noms de bases comme BGI PRODIG) - DOI / chapitre (MyCORE: Volume 1) ## DEBUG ### corpus 50 notices Les items 25,26, 27, 29 ,30, 31, 32, 34, 35, 39, 41 ont un tableau dans le champ `abstract`, ce qui pose problème au web service. Il faut donc s'arranger pour n'envoyer qu'une chaîne. ### corpus 12643 notices (vol1, sans le dernier chapitre) L'enrichissement RNSR n'a rien retourné pour ces 61 UT: ```bash $ fx < data/corpus-simple-rnsr.json '.map(n => ({uri: n.uri, rnsr: n.ws.rnsr?.[0]}))' '.map(n => ({ ok: Array.isArray(n.rnsr), ...n}))' '.filter(n => !n.ok)' '.map(n => n.uri).join("\n")' | sort -u WOS:000087687000034 WOS:000201991500005 WOS:000202541600015 WOS:000259592400005 WOS:000278783300013 WOS:000297080200009 WOS:000303246100021 WOS:000307031000011 WOS:000326102600010 WOS:000328962700024 WOS:000330731300004 WOS:000336983900012 WOS:000351469300002 WOS:000358138100001 WOS:000368910100002 WOS:000369014100030 WOS:000371481700005 WOS:000375767000046 WOS:000376443100012 WOS:000382134800021 WOS:000403527800002 WOS:000415909900003 WOS:000416761600042 WOS:000417409700018 WOS:000419033400048 WOS:000425514300054 WOS:000432597400029 WOS:000433901600021 WOS:000437255400003 WOS:000437362800003 WOS:000440301400006 WOS:000446187900022 WOS:000449897200002 WOS:000451164300002 WOS:000451785200002 WOS:000462592200001 WOS:000493421500001 WOS:000515035400001 WOS:000578319700001 WOS:000598066100006 WOS:000616977100020 WOS:000620058900026 WOS:A1945XY75400007 WOS:A1949UA83200002 WOS:A1954YH20800003 WOS:A1955WU68300004 WOS:A1955ZQ16500003 WOS:A1957XF83300002 WOS:A1960XF81800012 WOS:A19614744A00031 WOS:A1961WY83500001 WOS:A1961XG98500003 WOS:A19656660700020 WOS:A19656993100009 WOS:A19679381400001 WOS:A1969E372700020 WOS:A1969E761200001 WOS:A1969F336900001 WOS:A1970H335700006 WOS:A1971I822800004 WOS:A1971J729400017 ``` Premier cas: pas d'adresse d'affiliation (35 occurrences) ```json { "uri": "WOS:000087687000034", "title": "A North Atlantic climate pacemaker for the centuries", "abstract": "", "publication_year": 2000, "source": "SCIENCE", "affiliations": [], "countries": [], "subjects": [ "Multidisciplinary Sciences", "Science & Technology - Other Topics" ], "subheadings": [ null ], "headings": [ "Science & Technology" ] } ``` Deuxième cas: tout semble normal ```json { "uri": "WOS:000259592400005", "title": "On avoiding dangerous anthropogenic interference with the climate system: Formidable challenges ahead", "abstract": "The ... degrees C.", "publication_year": 2008, "source": "PROCEEDINGS OF THE NATIONAL ACADEMY OF SCIENCES OF THE UNITED STATES OF AMERICA", "affiliations": [ "Univ Calif San Diego, Scripps Inst Oceanog, La Jolla, CA 92093 USA", "Univ Calif San Diego, Scripps Inst Oceanog, 9500 Gilman Dr, La Jolla, CA 92093 USA" ], "countries": [ "USA" ], "keywords": [ "EMISSIONS", "TRENDS", "CHINA" ], "subjects": [ "Multidisciplinary Sciences", "Science & Technology - Other Topics" ], "subheadings": [ null ], "headings": [ "Science & Technology" ] }, { "uri": "WOS:000278783300013", "title": "Compensation between Model Feedbacks and Curtailment of Climate Sensitivity", "abstract": "The ... of the intermodel spread.", "publication_year": 2010, "source": "JOURNAL OF CLIMATE", "affiliations": [ "Harvard Univ, Cambridge, MA 02138 USA", "Harvard Univ, 20 Oxford St, Cambridge, MA 02138 USA" ], "countries": [ "USA" ], "keywords": [ "GENERAL-CIRCULATION MODELS", "CLOUD FEEDBACK", "SURFACE-TEMPERATURE", "SIMULATIONS", "PROJECTIONS", "MECHANISMS", "CYCLE" ], "subjects": [ "Meteorology & Atmospheric Sciences" ], "subheadings": [ "Physical Sciences" ], "headings": [ "Science & Technology" ] } ``` En cherchant ces deux exemples à la main, le service ne trouve aucune structure (logique, elles sont à l'étranger). ```bash $ curl -X 'POST' \ 'https://affiliations-tools.services.inist.fr/v1/rnsr/info' \ -H 'accept: application/json' \ -H 'Content-Type: application/json' \ -d '[ { "id": 1, "value": { "year": 2010, "address": "Harvard Univ, Cambridge, MA 02138 USA" } }, { "id": 3, "value": { "year": 2010, "address": "Harvard Univ, 20 Oxford St, Cambridge, MA 02138 USA" } }, { "id": 4, "value": { "year": 2008, "address": "Univ Calif San Diego, Scripps Inst Oceanog, La Jolla, CA 92093 USA" } }, { "id": 5, "value": { "year": 2008, "address": "Univ Calif San Diego, Scripps Inst Oceanog, 9500 Gilman Dr, La Jolla, CA 92093 USA" } } ]' [{ "id": 1, "value": [] }, { "id": 3, "value": [] }, { "id": 4, "value": [] }, { "id": 5, "value": [] }] ``` Donc le service est capable de traiter ces adresses, et de retourner un tableau vide pour chacune. Ça n'explique pas le comportement sur ces 61 - 35 = 26 notices. Mais comme ça n'arrive que pour 26 notices sur plus de 12000, on va juste faire en sorte que ça ne fasse pas planter le script suivant (`enrich-etab.ini`).