Programme d’alignement des notices bibliographiques Inist avec les documents Istex
Le programme matchStan2Istex.pl permet d’aligner les bases bibliographiques Pascal et Francis de l’Inist avec la base Istex, c’est-à-dire retrouver dans la base Istex les documents correspondants aux notices bibliographiques des base Pascal ou Francis.
À noter que si ce programme est utilisé à l'Inist, il est recommandé d’éviter de passer par le proxy. Pour cela, il faut supprimer les variables globales le définissant, ce qui se fait avec la commande : unset http_proxy https_proxy no_proxy. Vérifiez également avec la commande env si ces mêmes variables n'existent pas en majuscule. Auquel cas, supprimez les avec la commande : unset HTTP_PROXY HTTPS_PROXY NO_PROXY.
Le programme matchStan2Istex.pl fonctionne sous Unix/Linux ainsi qu’avec Cygwin sous Windows. Il utilise plusieurs modules qui ne sont pas tous dans la distribution standard de Perl. Les modules qu’on peut être amené à installer sont :
Il peut aussi être nécessaire d’avoir le programme IhfdCat pour accéder aux notices Inist i eles sont dans un fichier HFD (voir divers).
matchStan2Istex.pl -f (fichier|-) [ -d ] [ -v nombre ] [ -r id ]
[ -n notices ] [ -c corpus[,corpus]* ]*
matchStan2Istex.pl -h fichier_HFD [ -d ] [ -v nombre ] [ -r id ]
[ -n notices ] [ -c corpus[,corpus]* ]*
matchStan2Istex.pl -i
-c indique le nom du ou des corpus de la base Istex à interroger (on peut soit répéter
cette option, soit mettre tous les noms de corpus séparés par des virgules, mais sans
espace)
-d active le mode “débogage”
-f indique le nom du fichier d’entrée (qui peut être un fichier compressé avec “gzip” ou
“bzip2”). Pour utiliser l’entrée standard, mettre un tiret “-”
comme argument
-h indique le nom du fichier HFD servant d’entrée au programme
-i affiche cette aide.
-n indique le nom du fichier contenant les notices Pascal ou Francis modifiées parce
que les notices originales provoquaient une erreur de syntaxe dans la requête à l’API
ISTEX (N.B. : l’absence du fichier indiqué n’entraîne pas l’arrêt du programme)
-r indique le numéro de la dernière notice Pascal ou Francis traitée précédemment, pour
permettre la reprise de l’alignement si celui-ci a été prématurément arrêté
-v permet de suivre la progression du traitement en affichant sur la sortie erreur l’heure
de début, l’heure de fin et l’heure chaque fois qu’un lot de notices, correspondant au
nombre de notices donné en argument, a été traité
Les notices bibliographiques des bases Pascal et Francis sont des documents balisés en SGML (norme ISO 8879:1986). Chaque notice est sur une seule ligne et à chaque balise ouvrante correspond une balise fermante. En dehors des lettres majuscules et minuscules non-accentuées, des chiffres et des signes de ponctuation de base, les caractères sont écrits sous forme d’entité caractère (par exemple, é pour le caractère é). À l’inverse de ce qu’on peut trouver dans XML (qui est un sous-ensemble de SGML), les valeurs d’attribut ne sont pas entre quotes, simples ou doubles et il n'y a pas de balise vide.
La racine du document est l’élément record et il y a deux niveaux de balise correspondant aux zones et sous-zones du format d’échange de notices bibliographiques de la norme ISO 2709 comme on peut le voir dans l’exemple ci-dessous (indenté par souci de lisibilité). La sémantique des noms de zone, préfixés par f en SGML, des noms de sous-zone, préfixés par s en SGML, et de l’attribut dir est défini dans le document « Format INIST Standard 1994 ».
<record label=044710B00002014830004560>
<fA01 dir=011000>
<s0>0138-9130</s0>
</fA01>
<fA02 dir=010000>
<s0>SCNTDX</s0>
</fA02>
<fA03 dir=001000>
<s0>Scientometrics : (Print)</s0>
</fA03>
<fA05 dir=000000>
<s2>72</s2>
</fA05>
<fA06 dir=000000>
<s2>2</s2>
</fA06>
<fA08 dir=011ENG>
<s1>Profiling citation impact : A new methodology</s1>
</fA08>
<fA11 dir=011000>
<s1>ADAMS (Jonathan)</s1>
</fA11>
<fA11 dir=021000>
<s1>GURNEY (Karen)</s1>
</fA11>
<fA11 dir=031000>
<s1>MARSHALL (Stuart)</s1>
</fA11>
<fA14 dir=010000>
<s1>Evidence Ltd</s1>
<s2>Leeds</s2>
<s3>GBR</s3>
<sZ>1 aut.</sZ>
<sZ>2 aut.</sZ>
<sZ>3 aut.</sZ>
</fA14>
...
<fC03 dir=17XFRE>
<s0>Aide décision</s0>
<s5>18</s5>
</fC03>
<fC03 dir=17XENG>
<s0>Decision aid</s0>
<s5>18</s5>
</fC03>
<fC03 dir=17XSPA>
<s0>Ayuda decisión</s0>
<s5>18</s5>
</fC03>
<fN21 dir=000000>
<s1>203</s1>
</fN21>
</record>
Pour chaque notice Inist traitée, et sauf pour 2 exceptions que l’on verra plus loin, on a une première ligne commençant par URI et indiquant la requête envoyée à l’API. La ligne suivante donne le nombre de réponses obtenues.
URI : "https://api.istex.fr/document/?q=(host.title:"Scientometrics" OR host.issn:"0138-9130" OR host.eissn:"0138-9130"
OR serie.issn:"0138-9130" OR serie.eissn:"0138-9130") AND (publicationDate:2007 OR copyrightDate:2007 OR host.publicationDate:2007
OR host.copyrightDate:2007 OR serie.publicationDate:2007 OR serie.copyrightDate:2007 OR host.volume:72 OR host.issue:2) AND
(author.name:("ADAMS" OR "GURNEY" OR "MARSHALL") OR host.pages.first:[325 TO 344] OR host.pages.last:[325 TO 344])
&output=title,author,host,serie,doi,publicationDate,copyrightDate"
=> 68
On peut ensuite trouver d’autres requêtes commençant par ALT, ETC ou RAC. Ces requêtes complémentaires servent soit à tester une autre stratégie de recherche (RAC), soit à essayer différentes valeurs pour la pagination (ETC) ou soit à rechercher un groupe de documents indexés dans une seule notice Inist (ALT). Les requêtes de type ETC et RAC sont suivies d’une ligne indiquant le nombre de réponse renvoyées par l¹API.
Dans le cas le plus général, on a ensuite le résultat sur une ligne avec 22 champs, pas toujjours remplis, séparés par des tabulations. On a respectivement :
***** à 05.000 à 0.000, parfois suivi d’un point d’exclamation !A pour un article et M pour une monographie|Dans l’exemple suivant, on a rajouté un signe d’exclamation aux champs vides pour permettre de les repérer.
***** 5.000 A 08-0322753 Profiling citation impact : A new methodology Scientometrics ! 0138-9130 ! 2007 72 2 325 344 ADAMS Jonathan GURNEY, Karen|MARSHALL, Stuart 16AA6F7A70CD152792DC04F6D65A673B8B7F2214 ark:/67375/VQC-DZRDKVN2-2 10.1007/s11192-007-1696-x ! !
On considère que l'alignement est bon si le score est supérieur ou égal à 3.490. Pour les scores inférieurs à cette valeur, on a parfois un point d’exclamation ! qui indique que les données bibliographiques sur la revue, l’année de publication, la volumaison, la tomaison (si elle existe) et la pagination sont correctes, mais que le reste des données ne correspond pas. Cela peut être dû à des fautes de frappe ou d’OCR dans les noms d’auteur ou dans le titre, ou cela peut être dû à une erreur de bulletinage : le document s'est vu attribuer par exemple la pagination d’un autre article du même fascicule. On trouve de tels décalages aussi bien dans les données Inist que dans celles des éditeurs.
On peut aussi avoir des messages, pas forcément d’erreur, après la requête. Ils sont précédés d’une flèche, ont un texte en majuscule et se terminent par un point d’exclamation, comme => CORRECTION MAC !. Ils indiquent un traitement particulier et ont servi à perfectionner le programme.
Les véritables erreurs sont indiquées comme telles. Ont a 3 types d’erreur :
=> ERREUR 400 "400 Bad Request" !=> ERREUR 500 "500 Internal Server Error" !=> ERREUR CONVERSION JSON -> PERL !La première est due aux données de la notice Inist. En utilisant les notices corrigées, cela ne devrait plus arriver. Les deux autres sont des problèmes temporaires qu'on peut corriger avec le programme recupErreurs.pl dans le répertoire “correction”.
Certaines notices Inist concernent non pas un article, mais un groupe d’articles pour différentes raisons :
Les différents articles pouvant être regroupés sont indiqués après le résultat général. Pour chaque article, on a une flèche ~~> suivie de 7 champs séparés par des tabulations. On a respectivement :
|Ces document sont présentés normalement dans l’ordre de la pagination, comme dans cet exemple article/commentaires/réponses.
~~> 2 10 I. P. Stolerman|M. J. Jarvis The scientific case that nicotine is addictive 5A8E718F07659D84B0480F8D78D661F0E17ECAC6 ark:/67375/1BB-TFLHTXVC-4 10.1007/BF02245088 ~~> 11 13 J. E. Henningfield|S. J. Heishman The addictive role of nicotine in tobacco use B16BD3EAB82D95F6780752DAEC1ABB1E1FAA27BF ark:/67375/1BB-3ZB0VPRG-6 10.1007/BF02245089 ~~> 14 15 S. Shiffman Comments on nicotine addiction 79BF81FCD57EECD784BC85C823992173162BE5C1 ark:/67375/1BB-QWBZ3DS5-C 10.1007/BF02245090 ~~> 16 17 J. H. Robinson|W. S. Pritchard Reply to stolerman and jarvis 70F7FD3CA45D99F42EAD372FF607CAC82376B7EA ark:/67375/1BB-0KBPPP8C-F 10.1007/BF02245091 ~~> 18 20 M. E. Jarvik Commentary DC536BE3D44EEC8BCA32DCFE79FE23590494CA35 ark:/67375/1BB-JZ3PB2LS-Z 10.1007/BF02245092 ~~> 21 22 J. H. Jaffe Commentary on the nicotine IS/IS not addictive debate 5B0620646FBF8A3785C50F3597709ED9B25DA216 ark:/67375/1BB-XFHN05CC-V 10.1007/BF02245093
Dans deux cas, on n’a pas de requête, mais seulement un résultat nul : pour les monographies et pour les articles dont la revue n’est pas dans la base Istex. Dans le premier cas, la note est un underscore _, le score est un tiret - et le niveau bibliographique est M. Dans le deuxième cas, on a le même résultat que lorsque l’API n’a trouvé aucun document, mais sans la requête. En fait, au premier article d’une revue, on teste la présence de cette revue dans la base. Si la réponse est nulle, tous les autres articles de la même revue ne font l’objet d’aucune recherche inutile.
En cas d’utilisation de l’option -v, le programme envoie par la sortie “erreur standard” des messages sur le travail en cours. On a :
entrée standard -v==> matchStan2Istex.pl, version 14.3.2 (24 Août 2020) *** Notices traitées : 2008/Pascal.strd08.bib *** -> Mardi 29 Septembre 2020 03:27:56 : début -> Mardi 29 Septembre 2020 03:29:47 : 10000 notices -> Mardi 29 Septembre 2020 03:31:13 : 20000 notices -> Mardi 29 Septembre 2020 03:32:59 : 30000 notices ... -> Mardi 29 Septembre 2020 04:45:50 : 480000 notices -> Mardi 29 Septembre 2020 04:47:26 : 490000 notices -> Mardi 29 Septembre 2020 04:48:35 : fin = 497745 notices