OpenBiblio e interrogazione di SBN tramite Z39.50: soluzione

Soundtrack per il post: Eruption – Van Halen

Recentemente avevo illustrato come installare la lookup patch per permettere la ricerca z39.50 in OpenBiblio, riscontrando problemi nell’interrogazione di SBN.

Ho avuto il tempo di effettuare qualche test e direi che il problema è sostanzialmente risolto: interrogando il server opac.sbn.it alla porta 2100 si otterrà sempre un errore, poiché in quel caso è supportata solo la sintassi del record surts e questa non è supportata dalla funzione php yaz_record se si utilizza il type array.

Se invece si interroga sempre opac.sbn.it alla porta 3950 è supportata anche la sintassi di dati usmarc, ovviando al problema.

$host[0] = 'opac.sbn.it:3950'; ##-- sbn
$hostName[0] = 'SBN - Sistema Bibliotecario Nazionale';
$database[0] = 'nopac'; ##-- as required for the server
$hostUser[0] = ''; ##-- as required for the server
$hostPassword[0] = ''; ##-- as required for the server

Bisogna ancora risolvere un piccolo inconveniente: la lookup patch, nel caso di un ISBN elimina tutti gli spazi vuoti e gli score “-“, SBN invece si aspetta proprio il numero ISBN segmentato nelle 4 (5 se ISBN13) parti.

Per ovviare a questo, nel file lookup_z3950_search.php proprio all’inizio bisogna sostituire l’intero else if ($srchBy == “7”) con:

else if ($srchBy == "7") {

$srchByName = 'ISBN';
## remove any space char user may have entered
$lookupVal = str_replace(" ", "-", $lookupVal);

## test if its a scanned EAN code
## '978' & '979' per Cristoph Lange of Germany
## sbn seems to record isbn13 without "-"

if (((substr($lookupVal, 0,3) == '978') ||(substr($lookupVal, 0,3) == '979')) && (strlen($lookupVal) > 12)) {
## remove any "-" char user may have entered
$lookupVal = str_replace("-", "", $lookupVal);

## remove any space char user may have entered
str_replace(" ", "", $lookupVal);

}
//$lookupVal = substr($lookupVal,0,10);
//echo 'final isbn: ' . $lookupVal . '';
}

In questo modo inserendo un codice ISBN segmentato la ricerca su SBN funziona (mentre l’isbn13 viene passato non segmentato così come sembra essere di solito registrato in sbn).
Mi rendo conto che come workaround non è il massimo dell’eleganza…

6 thoughts on “OpenBiblio e interrogazione di SBN tramite Z39.50: soluzione

  1. ciao sto seguendo le tue istruzioni per la modifica a openbiblio, quando avrò finito ti dirò come sono andate!
    ti ringrazio fin da ora ma commento soprattutto per segnalarti che il link della patch è sbagliato x’ hai messo 2 volte http://🙂
    te lo dico x’ capita spesso anche a me!
    ciao
    pao

  2. Pingback: Openbiblio: guida all’importazione tramite Z39.50 « Cultural Heritage E-Libraries and Archives

  3. Ciao,
    c’è un errore nel codice, infatti mi dice:

    Parse error: syntax error, unexpected ‘;’ in /var/www/openbiblio/catalog/lookup_z3950_search.php on line 18

    Non capisco però dove sia il punto e virgola in più

  4. Cosi’ a naso, potrebbero essere sbagliati gli apostrofi del primo pezzoche wordpress cambia….

    ma dovrei controllarli, attualmente sono a Londra, lo faro appena di ritorno

  5. Grazie. In questo momento forse non c’è differenza fra le due porte: da yaz-client vedo

    Z> list_all
    Connected to         : http://opac.sbn.it:2100
    auto_reconnect       : off
    auto_wait            : on
    Authentication       : none
    Bases                : nopac 
    CCL file             : default.bib
    CQL file             : /usr/local/share/yaz/etc/pqf.properties
    Query type           : CQL (CQL sent to server)
    Named Result Sets    : off
    ssub/lslb/mspn       : 0/1/0
    Format               : usmarc
    Schema               : not set
    Elements             : 
    APDU log             : off
    Record log           : off
    Other Info:
    

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s