API:Recherche:Hal
Sommaire
- 1 API de recherche HAL
- 1.1 Exemple 1 - Varia
- 1.2 Exemple 2 - Liste d'auteurs affiliés à une structure
- 1.3 Exemple 3 - Auteurs des articles d'une collection
- 1.4 Exemple 4 - Nombre de dépôts par type de dépôt
- 1.5 Exemple 5 - Nombre de dépôts par année, type de dépôt et type de document
- 1.6 Exemple 6 - Dépôts dans une collection mais pas dans une autre
- 1.7 Exemple 7- Chercheurs ayant créé leur IdHAL pour une structure
- 1.8 Exemple 8 - Liste de documents par type de dépôt
- 1.9 Exemple 9 - Liste des revues où les déposants publient
- 1.10 Exemple 10 - Nombre de dépôts par contributeur
- 1.11 Exemple 11 - Flux RSS des derniers dépôts d'une collection
- 1.12 Exemple 12 - Liste de références d'un laboratoire dans HAL
- 1.13 Exemple 13 - Nombre de dépôts de thèses
- 1.14 Exemple 14 - Nombre de dépôts dans HAL
- 1.15 Exemples sur d'autres sites
- 1.16 Fonctionnement des dates renvoyées par l'API
API de recherche HAL
Exemple 1 - Varia
Pour le portail ENS-LYON
https://api.archives-ouvertes.fr/search/ens-lyon/
Liste 20 publications
https://api.archives-ouvertes.fr/search/ens-lyon/?q=*:*&rows=20
Triées par date de production + récentes en premier
https://api.archives-ouvertes.fr/search/ens-lyon/?q=*:*&rows=20&sort=producedDate_tdate desc
Toujours dans le portail ENS-LYON, on ajoute un filtre pour limiter les publis à celles du labo dont l'acronyme est IGFL
https://api.archives-ouvertes.fr/search/ens-lyon/?q=*:*&row=20&sort=producedDate_tdate%20desc&fl=halId_s,producedDate_tdate,label_s,structAcronym_s&fq=structAcronym_s:IGFL
on peut aussi utiliser son identifiant de structure 39280 :
https://api.archives-ouvertes.fr/search/ens-lyon/?q=*:*&row=20&sort=producedDate_tdate%20desc&fl=halId_s,producedDate_tdate,label_s,structAcronym_s&fq=structId_i:39280
Si l'on veut limiter le corpus à certains types de documents, les types peuvent être obtenus dans le référentiel dédié :
https://api.archives-ouvertes.fr/ref/doctype
ou par cette requête qui donne en plus le nombre de docs pour chaque type, ici uniquement dans le portail ens-lyon :
https://api.archives-ouvertes.fr/search/ens-lyon/?q=*:*&rows=0&facet=true&facet.field=docType_s
En ayant repéré les types de documents souhaités, on connaît les filtres à ajouter par exemple pour avoir uniquement les monographies + articles :
https://api.archives-ouvertes.fr/search/ens-lyon/?q=*:*&rows=20&sort=producedDate_tdate%20desc&fq=docType_s:(ART%20OR%20OUV%20OR%20COUV%20OR%20DOUV)
Exemple 2 - Liste d'auteurs affiliés à une structure
Obtenir une liste d'auteurs affiliés à la structure AgroParisTech avec le nombre de dépôts par auteur
on utilise le champ structHasAuthId_fs qui a ce type de contenu :
148117_FacetSep_AgroParisTech_JoinSep_1048930_FacetSep_Daniel Sauvant
Identifiant de structure + _FacetSep_ + Nom structure + _JoinSep_ + Identifiant Auteur + _FacetSep_ + Nom auteur
on demande une facette sur ce champ :
https://api.archives-ouvertes.fr/search/?q=*%3A*&rows=0&&facet=true&facet.field=structHasAuthId_fs
on restreint la liste des facettes à celles qui commencent par l'identifiant de la structure qui nous intéresse (plus le séparateur _FacetSep_) :
https://api.archives-ouvertes.fr/search/?q=*%3A*&rows=0&&facet=true&facet.field=structHasAuthId_fs&facet.prefix=148117_FacetSep_
si la liste est trop courte on peut l'allonger par exemple à 3000 (facet.limit=3000) :
https://api.archives-ouvertes.fr/search/?q=*%3A*&rows=0&&facet=true&facet.field=structHasAuthId_fs&facet.prefix=148117_FacetSep_&facet.limit=3000
Exemple 3 - Auteurs des articles d'une collection
Une requête sur les déposants de ma collection qui affiche : nom du déposant/sigle ou nom du labo
https://api.archives-ouvertes.fr/search/UNIV-AMU/?q=*:*&facet=true&facet.field=authIdHasPrimaryStructure_fs&rows=0&wt=xml
Même chose mais répartie par type de dépôt :
https://api.archives-ouvertes.fr/search/?q=*:*&facet=true&facet.pivot=submitType_s,authIdHasPrimaryStructure_fs&rows=0&wt=json
NB : ce ne sont pas forcément les déposants, mais plutôt les auteurs et leurs co-auteurs mais si on veut que les dépôts en auto-archivage on peut ajouter le filtre selfArchiving_bool:true :
https://api.archives-ouvertes.fr/search/UNIV-AMU/?q=*:*&facet=true&facet.field=authIdHasPrimaryStructure_fs&rows=0&wt=xml&fq=selfArchiving_bool:true
Exemple 4 - Nombre de dépôts par type de dépôt
Pour la collection IRDEP : Nombre de dépôts par type de dépôt
https://api.archives-ouvertes.fr/search/IRDEP/?q=*:*&facet=true&facet.field=submitType_s&rows=0&wt=xml
Dans HAL : Nombre de dépôts par type de dépôt
https://api.archives-ouvertes.fr/search/?q=*:*&facet=true&facet.field=submitType_s&rows=0&wt=xml
Dans le portail HAL-AMU : Nombre de dépôts par type de dépôt
https://api.archives-ouvertes.fr/search/amu/?q=*:*&facet=true&facet.field=submitType_s&rows=0&wt=xml
Dans HAL : Nombre de dépôts par type de dépôt où la structure d'un des auteurs a pour parent Aix-Marseille Université [AMU] 198056
https://api.archives-ouvertes.fr/search/?q=*:*&fq=structIsParentOf_fs:198056_*&rows=0&facet=true&facet.field=docType_s&wt=xml
Exemple 5 - Nombre de dépôts par année, type de dépôt et type de document
Le nombre de dépôts, par année, par type de dépôt et par type de document avec facet.pivot
https://api.archives-ouvertes.fr/search/?q=*:*&wt=xml&rows=0&facet=true&facet.pivot=submittedDateY_i,submitType_s,docType_s
Exemple 6 - Dépôts dans une collection mais pas dans une autre
Les dépôts qui ne sont pas dans la collection DICE mais qui sont dans la collection CERIC. Autrement dit : la collection DICE récupère-t-elle bien les dépôts de DICE/CERIC ?
https://api.archives-ouvertes.fr/search/CERIC/?q=*:*&wt=xml&fq=collCode_s:(NOT DICE)
Exemple 7- Chercheurs ayant créé leur IdHAL pour une structure
Lister des chercheurs ayant créé leur IdHal pour une structure par exemple (Maison des Sciences de l'Homme de Dijon docid=226306)
La liste comprend des chercheurs avec et sans idhal. Pour ceux qui ont un idhal la chaine le représentant est entre _JoinSep_ et _FacetSep_
- Exemple avec Idhal : 226306_FacetSep_Maison des Sciences de l'Homme de Dijon_JoinSep_lsaligny_FacetSep_Saligny Laure
- Exemple sans Idhal : 226306_FacetSep_Maison des Sciences de l'Homme de Dijon_JoinSep__FacetSep_Alazard Céline
https://api.archives-ouvertes.fr/search/?q=*:*&rows=0&facet=true&facet.field=structHasAuthIdHal_fs&facet.prefix=226306_&wt=xml
Même chose dans le portail univ-bourgogne
https://api.archives-ouvertes.fr/search/univ-bourgogne/?q=*:*&rows=0&facet=true&facet.field=structHasAuthIdHal_fs&facet.prefix=300270_&wt=xml
Même chose dans la collection CRC
https://api.archives-ouvertes.fr/search/CRC/?q=*:*&rows=0&facet=true&facet.field=structHasAuthIdHal_fs&facet.prefix=390620_&wt=xml
Même chose pour le labo IREDU (structId_i:245758)
https://api.archives-ouvertes.fr/search/?q=*:*&rows=0&facet=true&facet.field=structHasAuthIdHal_fs&facet.prefix=245758_&wt=xml&fq=structId_i:245758
Exemple 8 - Liste de documents par type de dépôt
Une liste de documents groupée par type de dépôt, 20 publications par type de dépôt
http://api.archives-ouvertes.fr/search/?q=*:*&group=true&group.field=submitType_s&indent=true&group.limit=20&wt=xml&group.sort=producedDate_tdate desc
Exemple 9 - Liste des revues où les déposants publient
Pour le portail Lille 3 liste des revues où les déposants publient
https://api.archives-ouvertes.fr/search/univ-lille3/?indent=true&rows=0&facet=true&facet.field=journalTitle_s&wt=xml
Exemple 10 - Nombre de dépôts par contributeur
Pour le portail Lille 3, par année de dépôt, nombre de dépôts par contributeur
https://api.archives-ouvertes.fr/search/univ-lille3/?q=*:*&facet=true&facet.pivot=submittedDateY_i,contributorFullName_s&rows=0&wt=xml&facet.limit=100
Exemple 11 - Flux RSS des derniers dépôts d'une collection
Flux RSS des derniers dépôts de la collection LIGM :
https://api.archives-ouvertes.fr/search/?wt=rss&q=collCode_s%3A%28LIGM%29&sort=submittedDate_tdate+desc&rows=50
Exemple 12 - Liste de références d'un laboratoire dans HAL
Pour le "Laboratoire Identité Culturelle, Textes et Théâtralité" :
https://api.archives-ouvertes.fr/search/?q=structId_i:109351&wt=xml&rows=1000
Afin d'obtenir la liste sous format csv (tableur) :
https://api.archives-ouvertes.fr/search/?q=structId_i:109351&wt=csv&rows=1000
Exemple 13 - Nombre de dépôts de thèses
- total par année :
https://api.archives-ouvertes.fr/search/?q=*:*&fq=docType_s:THESE&rows=0&wt=json&indent=true&facet=true&facet.field=submittedDateY_i
- total par domaine de recherche :
https://api.archives-ouvertes.fr/search/?q=*:*&fq=docType_s:THESE&rows=0&wt=json&indent=true&facet=true&facet.field=domainAllCode_s
- total par année en sociologie :
https://api.archives-ouvertes.fr/search/?q=*:*&fq=docType_s:THESE%20AND%20domainAllCode_s:shs.socio&rows=0&wt=json&indent=true&facet=true&facet.field=submittedDateY_i
Exemple 14 - Nombre de dépôts dans HAL
- total par année (notices et documents) :
https://api.archives-ouvertes.fr/search/?q=*:*&rows=0&wt=json&indent=true&facet=true&facet.field=submittedDateY_i&facet.sort=count
- total par année (documents uniquement) :
https://api.archives-ouvertes.fr/search/?q=fileType_s:%22file%22&rows=0&wt=json&indent=true&facet=true&facet.field=submittedDateY_i&facet.sort=count
- total en SHS par année (notices et documents) :
https://api.archives-ouvertes.fr/search/?q=*:*&fq=domain_s:%220.shs%22&rows=0&wt=json&indent=true&facet=true&facet.field=submittedDateY_i&facet.sort=count
- total en SHS par année (documents uniquement) :
https://api.archives-ouvertes.fr/search/?q=fileType_s:%22file%22&fq=domain_s:%220.shs%22&rows=0&wt=json&indent=true&facet=true&facet.field=submittedDateY_i&facet.sort=count
Exemples sur d'autres sites
* sur Bibliopedia : http://bibliopedia.fr/wiki/AdminHAL * avec les réponses cachées, pour s'entraîner : https://hal-upec-upem.archives-ouvertes.fr/page/api
Fonctionnement des dates renvoyées par l'API
submittedDate versus releasedDate
- releasedDate contient la date de mise en ligne du ou des fichier(s) (c.à.d. lorsque l'étape de validation est terminée, i.e. date de fin du processus de modération), OU, à défaut, la date de dépôt (date de création) de la notice bibliographique.
- En principe, submittedDate contient la date d'ajout du fichier (lorsque celui-ci a été rajouté a posteriori sur une notice bibliographique), OU, à défaut, la date de création du dépôt.
Mais il arrive parfois que la submittedDate soit postérieure (de plusieurs jours) à la releasedDate : cf. par exemple halshs-00867376 et halshs-00867379. On constate alors dans l'historique qu'il y a eu une "mise en ligne" à une date postérieure à la date de fin de modération.
Pour avoir la vraie date de création d'un dépôt, il convient donc de faire :
date_de_creation := Min(submittedDate, releasedDate)
producedDate
Lorsque le champ "date de publication" contient la valeur "0" (zéro), l'API ne retourne PAS la valeur zéro dans le champ producedDate. Le fonctionnement observé est en réalité un peu plus compliqué, à savoir :
SI date_de_publication (dans HAL) ≠ 0 ALORS
SI conferenceStartDate_tdate EST renseigné ALORS
producedDate_tdate := conferenceStartDate_tdate
// en pareille circonstance, il est impossible de récupérer la date de publication (des actes du colloque) via l'API.
SINON
SI defenseDate_tdate EST renseigné ALORS
producedDate_tdate := defenseDate_tdate
SINON
producedDate_tdate := date_de_publication
FIN DE SI
FIN DE SI
SINON
SI writingDate_tdate EST renseigné ALORS
producedDate_tdate := DATE_DE(writingDate_tdate)
SINON
producedDate_tdate := DATE_DE(submittedDate_tdate)
FIN DE SI
FIN DE SI
Dans le pseudo-code ci-dessus, la fonction DATE_DE(...) a pour effet de ne prendre que la date en elle-même (c.a.d. ne conserve pas l'heure, qui se trouve après "T"). Exemple : DATE_DE("2016-09-24T20:48:30Z") donne comme résultat : "2016-09-24T00:00:00Z".
Par conséquent, si vous voulez repérer, dans les résultats retournés par l'API, les dépôts qui ont pour date de publication la valeur "0" (qui sont généralement des publications "à paraître" ou "sous presse"), il vous faut utiliser l'astuce suivante :
boolean a_pour_date_de_publication_zero := (producedDate_tdate == DATE_DE(submittedDate_tdate)) OU (producedDate_tdate == DATE_DE(writingDate_tdate))
Attention de bien utiliser ici les champs ..._tdate et non pas les champs ..._s ni le triplet ...Y_i / ...M_i / ...D_i car il arrive parfois que producedDate_tdate contienne une date précise (ex. "2015-01-01T00:00:00Z") là où les autres champs producedDate_* ne contiennent que l'année. Pour des questions de fiabilité du résultat, il est important en effet que ces comparaisons ne soient pas effectuées seulement sur l'année, mais bien sur le jour/mois/année.
Cette méthode n'est toutefois pas fiable à 100 % :
- c'est très peu probable, mais il se pourrait que quelqu'un fasse un dépôt dans HAL exactement le jour même de la publication - ET - qui soit suffisamment zêlé pour saisir dans ce dépôt la date de publication exacte, au jour près (bien que la plupart du temps, les gens ne mettent que l'année de publication, et que, la plupart du temps aussi, ils ne déposent pas dans HAL pile poil le jour même de la publication)
- elle ne fonctionne pas pour les communications à un congrès avec actes (pour lesquels l'API de HAL ne nous permet tout simplement PAS de récupérer la date de publication des actes !)
- si jamais quelqu'un a renseigné dans les champs "Date de production/écriture" et "Date de publication" la même date, on se retrouve avec des faux positifs... Inversement, si on enlève la deuxième moitié de la comparaison ci-dessus, on passe sous silence tous les dépôts qui ont date de publication à zéro ET date de production non vide.
Cette solution n'est donc pas parfaite, mais puisque l'API ne nous retourne pas "0" lorsque le champ "date de publication" contient pourtant bien "0" en base de données, il n'y a guère d'autre façon de faire...