-
Notifications
You must be signed in to change notification settings - Fork 4
API Z39.50
L'api Z3950 est un protocole défini dans les années 80, permettant de chercher des informations dans une base de données.
À la Bnf, il permet d'interroger le catalogue général qui regroupe la description bibliographique des documents conservés à la bibliothèque.
Il permet de faire des requêtes sur certains champs des notices (ISBN, titre) et de récupérer la description bibliographique des documents répondant à ces critères.
z3950.bnf.fr:2211 Z3950/Z3950_BNF : c'est la version officielle et historique
Pour la nouvelle version (bascule le 21 novembre)
z3950labs.bnf.fr:2211 Z3950/Z3950_BNF : version nouvelle, plus stable, avec la recherche par numéro de notice
Recherche titre en Intermarc
C:\Program Files (x86)\YAZ\bin>yaz-client z3950labs.bnf.fr:2211/TOUT-UTF8 -u Z39
50/Z3950_BNF
Authentication set to Open (Z3950/Z3950_BNF)
Connecting...OK.
Sent initrequest.
Connection accepted by v3 target.
ID : 81
Name : Metaproxy/YAZ
Version: 1.11.3/5.16.0 e3fd23ffc6ce9cc4d06177cb4c083d27dc69cc26
Options: search present scan namedResultSets
Z> elements F
Z> format Unimarc
Z> find @attr 1=4 "destin "
Sent searchRequest.
Received SearchResponse.
Search was a success.
Number of hits: 6897, setno 1
records returned: 0
Z> show 1+1
Sent presentRequest (1+1).
Records: 1
[TOUT-UTF8]Record type: Unimarc
00808nam 2200217 450
001 FRBNF357460980000009
003 http://catalogue.bnf.fr/ark:/12148/cb357460983
020 $a FR $b 59514357
039 $o OPL $a 019117149
100 $a 19950426d1947 m y0frey50 ba
101 0 $a fre
102 $a FR
105 $a ||||z 00|a|
106 $a r
200 1 $a Destin $b Texte imprim+® $f Andr+®e Marik
210 $a Paris $c Ed. Pierre de Ronsard $d [1947]
215 $a 44 p. $d 18 cm
686 $a 821 $2 Cadre de classement de la Bibliographie nationale fran+ºaise
700 | $3 11914579 $a Marik $b Andr+®e $f 1914-.... $4 070
801 0 $a FR $b FR-751131015 $c 19950426 $g AFNOR $h FRBNF357460980000009 $2 int
ermrc
930 $5 FR-751131010:35746098001001 $a 16-YE PIECE-3222 $b 759999999 $c Tolbia
c - Rez de Jardin - Litt+®rature et art - Magasin $d O
nextResultSetPosition = 2
Ce n'est pas une interface interrogeable en HTTP, mais à plus bas niveau, en TCP. Il existe des clients, comme yaz, qui implémentent le protocole d'interrogation. Par ailleurs, le langage d'interrogation est peu intuitif
Index Data fournit yaz, outil d'interrogation :
Il existe des versions pour différents langages java, C++ ...
- find @attr 1=4 "toto"
- **@attr 1 **veut dire "recherche usage" (c'est celle là qu'on interroge en général.)
- = 4 champ interrogé. Ici le 4 signifie un titre
- et puis on met la valeur recherchée. La liste des attributs possible est là
Recherche ISBN:
- find @attr 1=7 "2-267-00326-0"
Mieux, recherche par numéro de notice
mais **UNIQUEMENT ** sur z3950labs
Z> find @attr 1=12 "44409265"
Sent searchRequest.
Received SearchResponse.
Search was a success.
Number of hits: 1, setno 1
records returned: 0
Z> show 1+1
Sent presentRequest (1+1).
Records: 1
[TOUT-UTF8]Record type: Intermarc
01774n0 m 22003251 450
001 FRBNF444092650000009
Pour les nostalgiques de la notation polonaise inversée
Recherche titre Feroe, uniquement les documents de type cartographique :
C:\Program Files (x86)\YAZ\bin>yaz-client z3950labs.bnf.fr:2211/TOUT-UTF8 -u Z39
50/Z3950_BNF
Authentication set to Open (Z3950/Z3950_BNF)
Connecting...OK.
Sent initrequest.
Connection accepted by v3 target.
ID : 81
Name : Metaproxy/YAZ
Version: 1.11.3/5.16.0 e3fd23ffc6ce9cc4d06177cb4c083d27dc69cc26
Options: search present scan namedResultSets
Z> elements F
Z> format Intermarc
Z> find @and @attr 1=4 "feroe" @attr 1=1031 "e"
Sent searchRequest.
Received SearchResponse.
Search was a success.
Number of hits: 17, setno 1
records returned: 0
Z> show 1
Sent presentRequest (1+1).
Records: 1
[TOUT-UTF8]Record type: Intermarc
00944c63m02200241 450
001 FRBNF406450430000005
003 http://catalogue.bnf.fr/ark:/12148/cb40645043t
008 970416m 1941 1941 dkdut b 001
009 e aa1
042 0 $a a $u hf $b 20000
072 $a cxaj
217 $o S├®rie cartographique $a F├®ro├® (├Äles) $b Topographie $e 1:20
1941
...
On peut demander différents jeux de caractères. Pour faire simple, demander UTF-8
- Unimarc : Format d'échanges
- Intermarc : Format natif de la BnF
Plus d'info sur Formats-bibliographiques-(Intermarc,-Unimarc)
Là ça dépend du corpus auquel vous vous intéressez. Demandez à votre référent format.
yaz-client z3950labs.bnf.fr:2211/TOUT-UTF8 -u Z350/Z3950_BNF
Une fois dans la console yaz: elements F Ça c'est indispensable.
format Intermarc pour choisir le format
find @and @attr 1=4 "feroe" @attr 1=1031 "e" la recherche
show 3+2 Je montre 2 résultats à partir du 3ème
Et ça doit donner ça:
C:\Program Files (x86)\YAZ\bin>yaz-client z3950labs.bnf.fr:2211/TOUT-UTF8 -u Z39
50/Z3950_BNF
Authentication set to Open (Z3950/Z3950_BNF)
Connecting...OK.
Sent initrequest.
Connection accepted by v3 target.
ID : 81
Name : Metaproxy/YAZ
Version: 1.11.3/5.16.0 e3fd23ffc6ce9cc4d06177cb4c083d27dc69cc26
Options: search present scan namedResultSets
Z> elements F
Z> format Intermarc
Z> find @and @attr 1=4 "feroe" @attr 1=1031 "e"
Sent searchRequest.
Received SearchResponse.
Search was a success.
Number of hits: 17, setno 1
records returned: 0
Z> show 3+2
Sent presentRequest (3+2).
Records: 2
[TOUT-UTF8]Record type: Intermarc
00957n04c 2200229 450
001 FRBNF422442170000004
003 http://catalogue.bnf.fr/ark:/12148/cb422442175
008 100726m 16.. 17.. zzmul b 006
009 em
040 $a fr $a nl $a de
041 0 $a fre $a dut $a ger
072 $a cxaj
245 1 $a [Division 2 du portefeuille 18 du Service hydrographique de la marine
...
647 $a Carte
937 1 $a 42244217001001 $d BNF $e CPL $f M $g P $p GE SH 18 PF 18 DIV 2 $z DEP
$4 0 $5 O $m A $s 98
938 1 $a 42244217001001 $d 20100726 $e POYAU MORGAN $h 98
[TOUT-UTF8]Record type: Intermarc
01618n0 m 2200349 450
001 FRBNF40800492000000X
003 http://catalogue.bnf.fr/ark:/12148/cb40800492f
008 910513s 1988 frfre1 b 001
009 e aa1
015 $a 49200009
042 0 $a a $u hj $b 140000 $d W0074845 $e W0060445 $f N0622900 $g N0611700
043 $a a $a k $a g $a c $a e $b bd $c aa
072 $a cxaj
245 1 $a Iles F├®ro├® : oc├®an Atlantique Nord $d Document cartographique $f Se
rvice hydrographique et oc├®anographique de la marine
250 $u 3 $a Ed. n┬░ 3
...
raphique de la marine $4 0150
730 $3 11876223 $w 20..b..... $a France $b Service hydrographique et oc├®anog
raphique de la marine $4 3250
917 $o OPA $a 000477610
937 1 $a 40800492001001 $d BNF $e CPL $f M $g P $p GE AA-3545 (5157-1988) $z DL
CE $1 |DL 8900010 (04/01/1989) $4 0 $5 O $m A $s 97
938 1 $a 40800492001001 $d 20070312 $e MIGV3 $h 97
nextResultSetPosition = 5
yaz-client z3950labs.bnf.fr:2211/TOUT-ANA1 -u Z3950/Z3950_BNF > ${fichierSortie} << EOF
elements F
format Unimarc
find @attr 1=4 "destin "
show 1+1
EOF
On peut récupérer yaz4j ici : http://ftp.indexdata.dk/pub/yaz4j/
import org.yaz4j.exception.*;
import org.yaz4j.*;
...
con = new Connection("z3950labs.bnf.fr:2211/TOUT-UTF8", 0);
con.setUsername("Z3950");
con.setPassword("Z3950_BNF");
con.setSyntax(""Intermarc"); con.option("elementSetName","F");
con.connect();
getLogger().info("Connexion passee");
...
ResultSet s = con.search(new PrefixQuery("@attrset bib-1 @attr 1=7 \" 978-989-95416-2-7\""));
s.option("elementSetName","F");
long nbReponses = s.getHitCount();
...
Record rec;
String txtData = txtHeader;
for(int i=0; i< nbReponsesVoulues ; i++){
rec = s.getRecord(i);
txtData += "\n--------------------------\nEnregistrement: " + i + "\n" + rec.render();
}