API:Recherche:Hal : Différence entre versions

De HAL
Sauter à la navigation Sauter à la recherche
Ligne 114 : Ligne 114 :
  
 
<code>
 
<code>
SI date_de_publication (dans HAL) == 0 ALORS
+
SI date_de_publication (dans HAL) <big>≠</big> 0 ALORS
  SI writingDate_tdate EST renseignée ALORS
 
    producedDate_tdate := DATE_DE(writingDate_tdate)
 
  SINON
 
    producedDate_tdate := DATE_DE(submittedDate_tdate)
 
  FIN DE SI
 
SINON
 
 
   producedDate_tdate := date_de_publication
 
   producedDate_tdate := date_de_publication
FIN DE SI
+
SINON :
 +
  SI writingDate_tdate EST renseigné ALORS producedDate_tdate := DATE_DE(writingDate_tdate)
 +
  OU* SI conferenceStartDate_tdate EST renseigné ALORS producedDate_tdate := DATE_DE(conferenceStartDate_tdate)
 +
  SINON, producedDate_tdate := DATE_DE(submittedDate_tdate)
 +
 
 +
//  * A noter que lorsque writingDate_tdate ET conferenceStartDate_tdate sont tous les deux renseignés, j'ignore lequel des deux est prioritaire (d'où ce "OU SI" qui laisse volontairement l'ambiguïté entre les deux)
 
</code>
 
</code>
 +
  
 
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").
 
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").

Version du 7 octobre 2016 à 08:42

API de recherche HAL

Exemple 1

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

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

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

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

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

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

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=226306_&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=226306_&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=226306_&wt=xml&fq=structId_i:245758

Exemple 8

Une liste de document 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

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

Pour le portail Lille 3, par année de dépôt, nombre de dépôt 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

Fonctionnement des dates renvoyées par l'API

Lorsque le champ "date de publication" contient la valeur "0" (zéro), l'API ne retourne PAS la valeur zéro. Le fonctionnement observé est en réalité un peu plus compliqué, à savoir :

SI date_de_publication (dans HAL) 0 ALORS

 producedDate_tdate := date_de_publication

SINON :

 SI writingDate_tdate EST renseigné ALORS producedDate_tdate := DATE_DE(writingDate_tdate)
 OU* SI conferenceStartDate_tdate EST renseigné ALORS producedDate_tdate := DATE_DE(conferenceStartDate_tdate)
 SINON, producedDate_tdate := DATE_DE(submittedDate_tdate)

// * A noter que lorsque writingDate_tdate ET conferenceStartDate_tdate sont tous les deux renseignés, j'ignore lequel des deux est prioritaire (d'où ce "OU SI" qui laisse volontairement l'ambiguïté entre les deux)


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)
  • 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...