(2 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 110 : Ligne 110 :
  
 
=== Notice === <!--T:29-->
 
=== Notice === <!--T:29-->
 +
 +
Vous pouvez demander une notice au format JSON directement à l'adresse :
 +
 +
<pre>[http://adresse.de.mon.bokeh]/recherche/viewnotice/format/json/id/xx/clef/xxxx-xxxx</pre>
 +
 
Le format s'inspire de dublin-core en ajoutant des champs.
 
Le format s'inspire de dublin-core en ajoutant des champs.
  
Ligne 228 : Ligne 233 :
 
</pre>
 
</pre>
  
 +
Les champs '''..._type''' peuvent avoir une valeur parmi
 +
* afi:notice : l'URI est un permalien de notice Bokeh
 +
* afi:album : l'URI est un permalien d'album de la bibliothèque numérique Bokeh
 +
* afi:external : l'URI n'est pas reconnue
  
  
 
[[Catégorie:Développement]]
 
[[Catégorie:Développement]]

Version actuelle en date du 15 novembre 2018 à 15:16

Il est possible d'interroger le moteur de recherche de Bokeh et d'obtenir une réponse JSON avec pagination.

Requête

Minimale

[http://adresse.de.mon.bokeh]/recherche/simple/format/json

Renvoie en JSON un résultat correspondant à tout le catalogue.
À partir de cette requête tous les autres critères peuvent être ajoutés et combinés.

Critères supplémentaires

Cette liste non exhaustive est tirée du model Class_CriteresRecherche.

expressionRecherche

[http://adresse.de.mon.bokeh]/recherche/simple/format/json/expressionRecherche/[termes de la recherche]

Filtre les résultats par les termes saisis sur les axes titres, auteurs, éditeurs, collections, matières et dewey.
Tout d'abord en requérant la présence de tous les termes (mode ET), puis si aucun résultat n'est trouvé en requérant la présence d'au moins un terme (mode OU).
Les résultats sont triés par pertinence calculée suivant la formule:

(pertinence des termes dans le titre * 1.5) + (pertinence des termes dans les auteurs)

no_extension

[http://adresse.de.mon.bokeh]/recherche/simple/format/json/expressionRecherche/[termes de la recherche]/no_extension/1

Permet de désactiver le comportement d'élargissement automatique de la recherche en mode OU.
Ce critère n'a donc de sens que dans une requête ayant aussi le critère expressionRecherche contenant plus d'un terme.

type_doc

[http://adresse.de.mon.bokeh]/recherche/simple/format/json/type_doc/[identifiant]

Filter les résultats par le type de document spécifié.
La liste par défaut des identifiants est disponible dans le model Class_TypeDoc

nouveaute

[http://adresse.de.mon.bokeh]/recherche/simple/format/json/nouveaute/[nombre de mois]

Filtre les résultats sur les notices dont la date de fin de nouveauté est supérieur à aujourd'hui moins [nombre de mois].

annee_debut, annee_fin

[http://adresse.de.mon.bokeh]/recherche/simple/format/json/annee_debut/[debut]/annee_fin/[fin]

Filtre les résultats par l'année d'édition comprise entre [debut] et [fin].
Si une des années est passée vide, le filtre se transforme soit en à partir si l'annee_debut est donnée, soit en jusqu'à si l'annee_fin est donné.

tri

[http://adresse.de.mon.bokeh]/recherche/simple/format/json/tri/[tri]

Permet de gérer l'ordre des résultats par défaut par pertinence, sinon par la valeur spécifiée dans [tri] parmi:

  • * : Pertinence (par défaut)
  • alpha_titre : Titre
  • annee desc : Année de publication
  • type_doc,alpha_titre : Type de document
  • date_creation desc : Date de nouveauté
  • nb_visu desc : Consultation

page

[http://adresse.de.mon.bokeh]/recherche/simple/format/json/page/[numéro de page]

Permet d'accéder à une page de résultat, par défaut la première page est renvoyée.

page_size

[http://adresse.de.mon.bokeh]/recherche/simple/format/json/page_size/[nombre d'éléments par page]

Permet de spécifier le nombre d'éléments renvoyés par page. Si non-spécifié, prend la taille de page paramétrée dans Bokeh. Taille maximale limitée à 50.

digital_lib

[http://adresse.de.mon.bokeh]/recherche/simple/format/json/digital_lib/[1]

Permet de filtrer le résultat sur les notices ayant un type document de la bibliothèque numérique.

from

[http://adresse.de.mon.bokeh]/recherche/simple/format/json/from/[aaaa-mm-jj]

Permet de filtrer le résultat sur les notices ayant une date de mise à jour supérieur au paramètre *from*.

Réponse

La réponse est composée d'un entête et d'une liste de notices.

{
  "url": "http://bokeh.pas.net/recherche/simple/format/json",
  "total": 3,
  "page_size": 10,
  "page": 1,
  "records": [...]
}

Entête

  • url : rappel de l'url ayant servi à obtenir le résultat
  • total : nombre total de résultats
  • page_size : maximum de notices par page
  • page : page courante de résultat
  • records : liste des notices de la page courante

Notice

Vous pouvez demander une notice au format JSON directement à l'adresse :

[http://adresse.de.mon.bokeh]/recherche/viewnotice/format/json/id/xx/clef/xxxx-xxxx

Le format s'inspire de dublin-core en ajoutant des champs.

{
  "identifier": "HARRYPOTTERALECOLEDESSORCIERS--ROWLINGJ-1-GALLIMARDJEUNESSE-2011-1",
  "permalink": "http://[adresse.de.mon.bokeh]/recherche/viewnotice/clef/HARRYPOTTERALECOLEDESSORCIERS--ROWLINGJ-1-GALLIMARDJEUNESSE-2011-1/id/234",
  "type": {"code": 1, "label": "livre"},
  "titles": ["Harry Potter", "Harry Potter à l'école des sorciers"],
  "serial": "Harry Potter",
  "thumbnail" : "http://www.gallimard.fr/var/storage/images/product/4ea/product_9782070612369_195x320.jpg",
  "creators": ["Joanne Kathleen Rowling"],
  "publishers": ["Gallimard-Jeunesse"],
  "date": 2011,
  "volume": 1,
  "language": "fre",
  "description": "Le jour de ses onze ans, Harry Potter, un orphelin élevé par un oncle ...",
  "collections": ["Folio junior"],
  "classifications": [...],
  "items": [...],
  "relations": [...]
}
  • identifier : clef alpha interne Bokeh
  • permalink : url d'accès à la notice
  • type : type de document, voir le model Class_TypeDoc
  • titles : liste des titres, titre principale en premier
  • creators : liste des auteurs, auteur principal en premier
  • date : année d'édition

Classification

Les classifications rattachées à une notice sont regroupées par type de classification.

{
  "type": "genre",
  "label": "Genre",
  "entries": [ {"code": "G10", "label": "Roman jeunesse"}, 
               {"code": "G67", "label": "Aventure"} ],
}

Items

Les exemplaires rattachés à une notice sont regroupés dans le champs *items*

{
 "id" : "identifiant unique",
 "id_notice" : "identifiant unique de la notice parente",
 "id_bib" : "identifiant unique de la biliothèque parente",
 "code_barres" : "code barre",
 "cote" : "cote",
 "genre" : "genre",
 "documentaire" : "documentaire",
 "section" : "section",
 "activite" : "activité",
 "emplacement" : "emplacement",
 "annexe" : "annexe",
 "date_nouveaute" : "date_nouveaute",
 "zone995" : [],
 "id_origine" : "identifiant unique d'origine externe"
 "id_int_bib" : "identifiant unique de l'import"
 "is_available" : "flag de disponibilité"
 "url" : "url de l'exemplaire"
}

zone995

La zone 995 se trouve dans le tableau de l'exemplaire. Elle est composé de plusieurs tableaux.

{
"code" : "a",
"valeur" : "a"
}
zone995 exemplaire PNB Dilicom
{"code": "a", "valeur": "libelle de la biliotheque"},
{"code": "c", "valeur": "date de la commande"},
{"code": "f", "valeur": "identifiant unique de l'exemplaire"},
{"code": "n", "valeur": "identifiant unique de la transaction"},
{"code": "v", "valeur": "activité de l'exemplaire"}

relations

Les relations de la notice avec d'autres entités sons regroupées dans la collection "relations".

Elles sont regroupées par type de relation:

{"id": "identifiant unique",
  "label": "Libellé du type de relation",
  "from_source": "Libellé de la relation du point de vue de l'entité source",
  "from_target": "Libellé de la relation du point de vue de l'entité destination",
  "entries": [...]
}

Imaginons un type de relation "Imprimé / Numérique", les libellés de relations pourraient être "A pour version numérique" et "A pour version imprimée".

Chaque relation dans la collection "entries" se compose ainsi:

{"id": "identifiant unique",
  "type_id": "identifiant unique du type",
  "source": "URI de la source",
  "target": "URI de la destination",
  "source_type": "type d'entité source détecté par Bokeh",
  "target_type":"type d'entité destination détecté par Bokeh",
  "source_key": "identifiant de l'entité source si type connu par Bokeh",
  "target_key":"identifiant de l'entité destination si type connu par Bokeh"}

Les champs ..._type peuvent avoir une valeur parmi

  • afi:notice : l'URI est un permalien de notice Bokeh
  • afi:album : l'URI est un permalien d'album de la bibliothèque numérique Bokeh
  • afi:external : l'URI n'est pas reconnue

Il est possible d'interroger le moteur de recherche de Bokeh et d'obtenir une réponse JSON avec pagination.

Requête[modifier | modifier le wikicode]

Minimale[modifier | modifier le wikicode]

[http://adresse.de.mon.bokeh]/recherche/simple/format/json

Renvoie en JSON un résultat correspondant à tout le catalogue.
À partir de cette requête tous les autres critères peuvent être ajoutés et combinés.

Critères supplémentaires[modifier | modifier le wikicode]

Cette liste non exhaustive est tirée du model Class_CriteresRecherche.

expressionRecherche[modifier | modifier le wikicode]

[http://adresse.de.mon.bokeh]/recherche/simple/format/json/expressionRecherche/[termes de la recherche]

Filtre les résultats par les termes saisis sur les axes titres, auteurs, éditeurs, collections, matières et dewey.
Tout d'abord en requérant la présence de tous les termes (mode ET), puis si aucun résultat n'est trouvé en requérant la présence d'au moins un terme (mode OU).
Les résultats sont triés par pertinence calculée suivant la formule:

(pertinence des termes dans le titre * 1.5) + (pertinence des termes dans les auteurs)

no_extension[modifier | modifier le wikicode]

[http://adresse.de.mon.bokeh]/recherche/simple/format/json/expressionRecherche/[termes de la recherche]/no_extension/1

Permet de désactiver le comportement d'élargissement automatique de la recherche en mode OU.
Ce critère n'a donc de sens que dans une requête ayant aussi le critère expressionRecherche contenant plus d'un terme.

type_doc[modifier | modifier le wikicode]

[http://adresse.de.mon.bokeh]/recherche/simple/format/json/type_doc/[identifiant]

Filter les résultats par le type de document spécifié.
La liste par défaut des identifiants est disponible dans le model Class_TypeDoc

nouveaute[modifier | modifier le wikicode]

[http://adresse.de.mon.bokeh]/recherche/simple/format/json/nouveaute/[nombre de mois]

Filtre les résultats sur les notices dont la date de fin de nouveauté est supérieur à aujourd'hui moins [nombre de mois].

annee_debut, annee_fin[modifier | modifier le wikicode]

[http://adresse.de.mon.bokeh]/recherche/simple/format/json/annee_debut/[debut]/annee_fin/[fin]

Filtre les résultats par l'année d'édition comprise entre [debut] et [fin].
Si une des années est passée vide, le filtre se transforme soit en à partir si l'annee_debut est donnée, soit en jusqu'à si l'annee_fin est donné.

tri[modifier | modifier le wikicode]

[http://adresse.de.mon.bokeh]/recherche/simple/format/json/tri/[tri]

Permet de gérer l'ordre des résultats par défaut par pertinence, sinon par la valeur spécifiée dans [tri] parmi:

page[modifier | modifier le wikicode]

[http://adresse.de.mon.bokeh]/recherche/simple/format/json/page/[numéro de page]

Permet d'accéder à une page de résultat, par défaut la première page est renvoyée.

page_size[modifier | modifier le wikicode]

[http://adresse.de.mon.bokeh]/recherche/simple/format/json/page_size/[nombre d'éléments par page]

Permet de spécifier le nombre d'éléments renvoyés par page. Si non-spécifié, prend la taille de page paramétrée dans Bokeh. Taille maximale limitée à 50.

digital_lib[modifier | modifier le wikicode]

[http://adresse.de.mon.bokeh]/recherche/simple/format/json/digital_lib/[1]

Permet de filtrer le résultat sur les notices ayant un type document de la bibliothèque numérique.

from[modifier | modifier le wikicode]

[http://adresse.de.mon.bokeh]/recherche/simple/format/json/from/[aaaa-mm-jj]

Permet de filtrer le résultat sur les notices ayant une date de mise à jour supérieur au paramètre *from*.

Réponse[modifier | modifier le wikicode]

La réponse est composée d'un entête et d'une liste de notices.

{
  "url": "http://bokeh.pas.net/recherche/simple/format/json",
  "total": 3,
  "page_size": 10,
  "page": 1,
  "records": [...]
}

Entête[modifier | modifier le wikicode]

Notice[modifier | modifier le wikicode]

Le format s'inspire de dublin-core en ajoutant des champs.

{
  "identifier": "HARRYPOTTERALECOLEDESSORCIERS--ROWLINGJ-1-GALLIMARDJEUNESSE-2011-1",
  "permalink": "http://[adresse.de.mon.bokeh]/recherche/viewnotice/clef/HARRYPOTTERALECOLEDESSORCIERS--ROWLINGJ-1-GALLIMARDJEUNESSE-2011-1/id/234",
  "type": {"code": 1, "label": "livre"},
  "titles": ["Harry Potter", "Harry Potter à l'école des sorciers"],
  "serial": "Harry Potter",
  "thumbnail" : "http://www.gallimard.fr/var/storage/images/product/4ea/product_9782070612369_195x320.jpg",
  "creators": ["Joanne Kathleen Rowling"],
  "publishers": ["Gallimard-Jeunesse"],
  "date": 2011,
  "volume": 1,
  "language": "fre",
  "description": "Le jour de ses onze ans, Harry Potter, un orphelin élevé par un oncle ...",
  "collections": ["Folio junior"],
  "classifications": [...],
  "items": [...],
  "relations": [...]
}

Classification[modifier | modifier le wikicode]

Les classifications rattachées à une notice sont regroupées par type de classification.

{
  "type": "genre",
  "label": "Genre",
  "entries": [ {"code": "G10", "label": "Roman jeunesse"}, 
               {"code": "G67", "label": "Aventure"} ],
}

Items[modifier | modifier le wikicode]

Les exemplaires rattachés à une notice sont regroupés dans le champs *items*

{
 "id" : "identifiant unique",
 "id_notice" : "identifiant unique de la notice parente",
 "id_bib" : "identifiant unique de la biliothèque parente",
 "code_barres" : "code barre",
 "cote" : "cote",
 "genre" : "genre",
 "documentaire" : "documentaire",
 "section" : "section",
 "activite" : "activité",
 "emplacement" : "emplacement",
 "annexe" : "annexe",
 "date_nouveaute" : "date_nouveaute",
 "zone995" : [],
 "id_origine" : "identifiant unique d'origine externe"
 "id_int_bib" : "identifiant unique de l'import"
 "is_available" : "flag de disponibilité"
 "url" : "url de l'exemplaire"
}

zone995[modifier | modifier le wikicode]

La zone 995 se trouve dans le tableau de l'exemplaire. Elle est composé de plusieurs tableaux.

{
"code" : "a",
"valeur" : "a"
}
zone995 exemplaire PNB Dilicom[modifier | modifier le wikicode]
{"code": "a", "valeur": "libelle de la biliotheque"},
{"code": "c", "valeur": "date de la commande"},
{"code": "f", "valeur": "identifiant unique de l'exemplaire"},
{"code": "n", "valeur": "identifiant unique de la transaction"},
{"code": "v", "valeur": "activité de l'exemplaire"}

relations[modifier | modifier le wikicode]

Les relations de la notice avec d'autres entités sons regroupées dans la collection "relations".

Elles sont regroupées par type de relation:

{"id": "identifiant unique",
  "label": "Libellé du type de relation",
  "from_source": "Libellé de la relation du point de vue de l'entité source",
  "from_target": "Libellé de la relation du point de vue de l'entité destination",
  "entries": [...]
}

Imaginons un type de relation "Imprimé / Numérique", les libellés de relations pourraient être "A pour version numérique" et "A pour version imprimée".

Chaque relation dans la collection "entries" se compose ainsi:

{"id": "identifiant unique",
  "type_id": "identifiant unique du type",
  "source": "URI de la source",
  "target": "URI de la destination",
  "source_type": "type d'entité source détecté par Bokeh",
  "target_type":"type d'entité destination détecté par Bokeh",
  "source_key": "identifiant de l'entité source si type connu par Bokeh",
  "target_key":"identifiant de l'entité destination si type connu par Bokeh"}