Openbiblio: guida all’importazione tramite Z39.50

Soundtrack per il post: Back on earth – Ozzy Osbourne

A distanza di oltre un mese dall’ultimo post (ma nell’ultimo mese ho continuato a scandagliare, usare, modificare progetti open source e liberi per gli archivi e le biblioteche) riprendo da openbiblio.

Openbiblio è uno degli ILS (Integrated Library System) open source più noti e apprezzati (a mio avviso secondo solo a Koha e Evergreen).

Openbiblio necessita di php4 e mysql4 o superiori e l’istallazione è estremamente semplice.

Nella sua versione base Openbiblio non permette l’interrogazione e l’importazione da altri cataloghi. A questo ha posto rimedio Fred LaPlante con la sua lookup patch.

Per installare la patch, supponendo di avere un’installazione funzionante di openbiblio, è necesario:

  • installare l’estensione php yaz. Questo può essere un po’ complicato a seconda del sistema usato (cercherò a giorni di scrivere un post con istruzioni per ogni sistema operativo e versione di php) assumendo abbiate installato apache php5 e mysql su un sistema *nix, ad esempio su ubuntu feisty basterà:
    • installare php-pear
      sudo apt-get install php-pear
    • scaricare il sorgente di yaz (contiene libyaz3 e libyaz3-dev(, decomprimerlo entrare nella directory e lanciaarsi nella danza magica della compilazione (./configure make sudo make install)
    • scaricare e installare tramite pecl yaz (notare che serve phpize, se ottenete phpize not found dovete installare il pacchetto php5-dev
      sudo pecl install yaz
    • modificare php.ini aggiungendo nelle sezione dynamic extension extension=”yaz.so”
    • caricare sul proprio server un file info.php con all’interno la stringa (nota. lo spazio fra < ? non deve esserci, è necessario, altrimenti wordpress
      <?php phpinfo(); ?>
    • riavviare apache
      sudo /etc/init.d/apache2 restart
    • visualizzare il file info.php (http://localhost/info.php) e controllare che a metà pagina ci sia una sezione su yaz (con yaz support enabled)
  • scaricare la lookup patch (la versione per openbiblio 0.6 è disponibile qui)
  • decomprimere il file scaricato e copiare tutti i file php e js nella directory in cui avete copiato openbilio, sottodirectory catalog (nel mio caso /var/www/openbiblio/catalog)
  • copiare i file ‘cutter.MYD’, ‘cutter.frm’ e ‘cutter.MY’ nella directory del database mysql di openbiblio (nel mio caso /var/lib/mysql/openbilio)
  • aggiungere al fondo del file [directoryopenbiblio]/locale/en/cataloging.php (nel mio caso /var/www/openbiblio/locale/en/cataloging.php) le seguenti righe:

    #****************************************************************************
    #* Translation text for page lookup_form.php
    #****************************************************************************
    $trans["lookupZ3950Search"] = "\$text = 'Z39.50 search';";
    $trans["lookupISBN"] = "\$text = 'ISBN';";
    $trans["lookupISSN"] = "\$text = 'ISSN';";
    $trans["lookupLCCN"] = "\$text = 'LCCN';";
    $trans["lookupTitle"] = "\$text = 'Title';";
    $trans["lookupAuthor"] = "\$text = 'Author';";
    $trans["lookupKeyword"] = "\$text = 'Keyword anywhere';";
    $trans["lookupPublisher"] = "\$text = 'Name of Publisher';";
    $trans["lookupPubLoc"] = "\$text = 'Place of Publication';";
    $trans["lookupPubDate"] = "\$text = 'Date of Publication';";
    $trans["lookupSearch"] = "\$text = 'Search';";
    $trans["lookupRepository"] = "\$text = 'Repository';";
    $trans["lookup_yaz_setup_failed"] = "\$text = 'yaz setup failed for host: !';";
    $trans["lookup_badQuery"] = "\$text = 'Bad Query';";
    $trans["lookup_YAZerror"] = "\$text = 'Lookup YAZ Error: ';";
    $trans["lookup_NothingFound"] = "\$text = 'Nothing found for ';";
    $trans["lookup_TooManyHits"] = "\$text = 'Too many hits to display, ';";
    $trans["lookup_RefineSearch"] = "\$text = 'Please refine the search and try again.';";
    $trans["lookup_Success"] = "\$text = 'Success! Z39.50 search data is shown below!';";
    $trans["lookup_hits"] = "\$text = ' hits, please select one.';";
    $trans["lookup_callNmbrType"] = "\$text = 'Your my_callNmbrType is invalid!';";
    #****************************************************************************
  • aggiungere al fondo del file [directoryopenbiblio]/locale/en/navbars.php (nel mio caso /var/www/openbiblio/locale/en/navbars.php) le seguenti righe:

    #****************************************************************************
    #* Translation text for page lookup_form.php
    #****************************************************************************
    $trans["z3950search"] = "\$text = 'Z39.50 Search';";
  • editare la parte finale del file [directoryopenbiblio]/navbars.cataloging.php (nel mio caso /var/www/openbiblio/navbars/cataloging.php) in modo che sia:
    <?php if ($nav == "upload_usmarc") { ?>
    û <?php echo $navLoc->getText("Upload Marc Data");?><br>
    <?php } else { ?>
    <a href="../catalog/upload_usmarc_form.php" mce_href="../catalog/upload_usmarc_form.php" class="alt1"><?php echo $navLoc->getText("Upload Marc Data");?></a><br>
    <?php } ?><!-- ---------------------------------------- --->
    <!-- added for Fred LaPlante's Lookup Function -->
    <?php if ($nav == "search_z3950") { ?>
    û <?php echo $navLoc->getText("z3950search");?><br>
    <?php } else { ?>
    <a href="../catalog/lookup_form.php" mce_href="../catalog/lookup_form.php" class="alt1"><?php echo $navLoc->getText("z3950search");?></a><br>
    <?php } ?>
    <!-- ---------------------------------------- --->
    <!-- ---------------------------------------- --->
    &lt;!-- da questo punto in poi si lascia invariato con <a href="javascript:popSecondary( etc... --->
    &lt;a href="javascript:popSecondary(.....................
    
  • Editare il file [directoryopenbiblio]/catalog/lookup_conf.php (nel mio caso /var/www/openbiblio/catalog/lookup_conf.php) inserendo i database che si vogliono interrogare via Z39.50. Ad esempio nel caso di sbn i parametri sarebbero:

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

Risultato e Problemi

Ricerca tramite z39.50 di “art of” come titolo e “mitnick” come autore. Una volta selezionato uno dei record trovati nella LoC i campi verranno automaticamente importati nella scheda per la catalogazione del libro

I problemi riguardano l’importazione nei casi in cui il server utilizzi sutrs o xml come sintassi del record.

Infatti quando lookup richiam il record con:

$ar = yaz_record($id[$host],$hit,"array");

ci troveremo con un bell’array vuoto dato che il type array non supporta sutrs o xml…

Il problema non è da poco perché proprio SBN (non a caso nell’indicare i parametri di SBN ho utilizzato il condizionale) utilizza sutrs, ma ho contatto Fred LaPlante per vedere se si può trovare una soluzione, sperando che venga in supporto alle mie limitate capacità in php :)

Soluzione del problema

About these ads

26 thoughts on “Openbiblio: guida all’importazione tramite Z39.50

  1. Ciao Shaitan
    ho scoperto il tuo blog grazie a quello di Bonaria Biancu.

    Innanzitutto ti devo fare i complimenti per la colonna sonora \m/ !!!

    Poi volevo chiederti un parere spassionato su OpenBiblio – io l’ho provato molto in fretta sul mio pc locale, e non mi soddisfa molto. Mi sembra molto primitivo, in primo luogo il fatto che titoli e autori sono su un’unica tabella, senza possibilità di incrocio fra un authority file e i titoli (con la possibilità di duplicare le forme del nome e causare appesantimento nella base, ecc.)

    Scopro invece adesso, leggendoti, di Koha – una prima vista sul sito mi sembra molto promettente. Sai qualcosa di più? Quando avrò tempo darò un’occhiata. A presto!
    Enrico

  2. Ciao Enrico, Openbiblio è esattamente come lo dipingi, molto “spartano” e con alcuni problemi strutturali.
    Non ultimo quello che la scheda catalografica corrisponde sostanzialmente a una sola tabella (lo stesso problema dell’autore si riflette, ad esempio, sui subject in questo modo non puoi avere una lista dei più usati mentre cataloghi, sapere se il soggetto che usi è stato già inserito, se non tramite query unpo’ inutili e noiose, che comunque openbiblio non fa ecc.)
    Probabilmente risente di un disegno vecchio di anni (5 o più).
    Tuttavia per uso casalingo, o, anche per piccole biblioteche, lo prefirirei alla banca datai sviluppata in casa o (accade anche questo) al foglio di calcolo, non fosse altro per avere un OPAC subito disponibile.
    Anche i vari addons, la lookup patch (per l’interrogazione z39.50), l’aggiunta di feed su una ricerca ecc. non modificano radicalmente la situazione.
    Koha invece è un’altra cosa, probabilmente ho anche sbagliato (al limite dell’essere offensivo) ad averli inseriti nella stessa frase.
    Koha, per quel poco che ho visto, è un prodotto professionale (tra l’altro è supportato commercialmente, anche se non so se e chi in Italia lo tratti) che nulla ha da invidiare ai giganti dl mondo degli ILS.
    Non so quanto possa essere amministrato come una procedura avanti avanti fine (al contrario di openbiblio), l’ho appena reinstallato (insieme ai 22[mila] moduli di perl che mi ha richiesto) e lo proverò un po’ (usandolo un po’ più a lungo del solito e non solo dando una scorsa ai vari menù) :)
    Altri software open tratti dal bolletino aib n°3 2004 http://www.aib.it/aib/boll/2004/0403257.htm
    2004… sono passati tre anni e in effetti qualcosa va aggiunto, di sicuro evergreen http://www.open-ils.org/

  3. Buongiorno Shaitan: ti faccio anch’io i miei complimenti più sentiti (eh, che formalismi ;-) non solo per la colonna sonora ma anche per i post sempre più interessanti e approfonditi… Sei veramente un grande! E poi, uno che collabora con la Biblioteca di Bicocca non poteva che essere tale ;-P

    Mi interessano molto i tuoi esperimenti sugli ILS open-source. Da notare che spesso la concorrenza (competizione sleale?) esiste non solo tra vendor tradizionali e chiusi e vendor open ma anche tra gli stessi open: dai un’occhiata al blog di Evergreen

    Certo, ciò non implica che si possano mettere tutti sullo stesso piano però mi chiedo che impatto avrebbe un sw open al quale lavorassero tutti i migliori cervelli, piuttosto che costruirsi ognuno il proprio…

    Questo aspetto mi ha sempre provocato dilemmi: meglio tanti sw open, tarati sulle particolari esigenze di ognuno oppure un unico sw, sempre open, magari adattabile, localizzabile e personalizzabile, ma unico, dunque in grado di far convergere tutti gli sforzi verso un unico punto (e obiettivo)…?

    P.S. qui un elenco di ILS free (non necessariamente open). Qui invece solo OSS.

    Ciao, buona giornata!

    Bonaria

  4. ah fantastico, il flame koha vs evergreen mi mancava alla collezione :-D
    Tornando alla tua domanda non sono convinto che un software unico (pur modulare) e un obiettivo comune sia il nirvana (penso anche solo al software open e al software libero, dalla stessa parte del campo, ma giocano una partita diversa), tuttavia pur in presenza di progetti diversi la chiave è la collaborazione…
    A tal proposito il tema è stato trattato recentemente da Mark Shuttleworth

    http://www.markshuttleworth.com/archives/126

    P.S. grazie dei link :-)

  5. Pingback: Cultural Heritage E-Libraries and Archives

  6. Vi segnalo anche PMB (http://www.sigb.net/), un software free per la gestione integrata delle biblioteche, con “free” alla Stallman (= libero): è rilasciato sotto licenza CeCILL, una licenza francese compatibile GNU GPL.

    Si tratta di un interessante prodotto che sto adottando per la biblioteca della mia parrocchia. La scelta è stata un po’ obbligata, ma credo che non me ne pentirò: volevo un software libero e ricco di funzionalità, e alla fine ero in dubbio tra Koha e PMB; ho scartato Koha perché necessitava del Perl, del quale il mio Host è sprovvisto.

    L’unica pecca è l’interfaccia grafica non esattamente accattivante, ma io e (soprattutto) un mio amico ci stiamo lavorando per integrarlo al meglio nel sito che abbiamo realizzato. Questo è il bello del software libero!

    Infine una cosa non da poco: è stato già quasi interamente tradotto in italiano.

    Saluti

    Carlo

    • Ciao Carlo,

      ho installato PMB x fare un sistema per una piccola scuola media.
      Ho dei problemi soprattutto per utilizzare l’importazione con Z39.50.
      Mi dai una mano?

      Non ho trovato un forum su PMB.

      Antonio

  7. grazie Stemby della segnalazione che proprio non conoscevo, lo guarderò subito.

    Se poi, quando finito, puoi girare il link del sito a cui lavorate…. :)

    Infatti uno degli aspetti a cui, a mio avviso (ma non solo :-D), i cataloghi attuali devono rispondere è proprio quello di integrarsi con il sito della biblioteca facendo scivolare l’utente nel catalogo, spingendolo ad usarlo interrogarlo etc senza che sia avvertito come uno strumento a sé stante

  8. Salve, per realizzare un OPAC per fini didattici ho deciso di utilizzare OpenBiblio.
    Qualcuno sa dirmi se esiste una guida (se possibile anche in italiano) ?

  9. Mi rendo conto di essere un po’ in ritardo rispetto alla data dell’ultimo post ma avrei bisogno di una informazione.
    Sto provando il software PMB nella versione 3.2.2 ed ho difficoltà a far funzionare la ricerca con il protocollo Z39.50. Il programma non riesce a contattare i server.
    Ho provato sia dietro un proxy che con una connessione diretta.
    C’è forse bisogno di impostare qualche parametro?

    Grazie.

    • Ciao, ho dei grossi problemi ad interrogare lo Z39.50 di Sbn tramite un software che sfrutta le API di Yaz, passando tramite un server proxy aziendale. Con la connessione diretta senza proxy non ci sono problemi.

      Qualcuno sa dirmi se le librerie di YAZ prevedono l’uso di un proxy per uscire su internet ??
      Grazie !!

  10. Allora:
    1) I parametri usati per connettermi al server sono:
    Nome: SBN – Sistema Bibliotecario Nazionale
    Uso: CATALOG
    Database: nopac
    URL: opac.sbn.it
    Formato: SUTRS

    2) Per quanto riguarda yaz sono partito dal presupposto che PMB avesse già le libreire installate. Comunque ho installato in localhost il server, quest’ultimo dovrebbe servire solo per rendere fruibili le info presenti dalla mia libreria, o no?

    Se hai qualche dritta in proposito o qualche how to da consigliarmi…

    Grazie per la disponibilià.

  11. purtroppo per attivare il client z39.50 è necessario compilare yaz come indica la guida pmb http://www.sigb.net/doc/en_US/html-install/ch08.html

    l’indicazione in quel caso è piuttosto vecchia, ma sostanzialmente quello che si deve fare l’ho indicato in questo post da “installare l’estensione php yaz” in poi… al posto però della versione all’epoca segnalata la 3.0.6, adesso c’è la 3.0.38 http://ftp.indexdata.dk/pub/yaz/yaz-3.0.38.tar.gz

    Questo se si tratta di un server linux (se si usa xampp però bisogna cambiare qualcosa).

    Per le impostazioni invece è quasi tutto corretto: bisogna aggiungere la porta 2100 e la lingua del formato sutrs (che è sbnsutrs)
    Questo perché sutrs risponde con un record a “bandiera” del tipo
    Autore: Jeni Tennison
    Titolo: Beginning XSLT 2.0

    etc.
    e bisogna sviluppare un interprete che associ quello che segue l’etichetta “autore:” a un determinato campo…
    Ciò, purtroppo, può dipendere dalla lingua e dal singolo server z39.50… nel caso di sbn è già stato fatto e viene richiamato da sbnsutrs… Per curiosità i due “profili” definiti (sebina e sbnsutrs) si trovano in pmb/includes/sutrs_zserver

  12. Ho fatto varie prove. Ma niente da fare.
    L’ambiente con cui sto lavorando è xampp 1.6.8:
    1. Ho attivato l’estensione php_yaz in php.ini rebootando Apache;
    2. Ho provato a mettere la path di yaz.dll nel percorso di ricerca si sistema;
    3. anche a copiare la dll direttamente sotto windows\system32 (come dicono loro nel manuale!);
    Infine ho installato yaz nell’ultima versione provando con la sua shell a connettermi ad un server ma niente da fare…

    Ci vorrebbe qualcuno che ha già installato il tutto sotto windows con xampp…

    Qualche idea?

    Ri-grazie

    • purtroppo conosco male xampp per windows, o meglio, lo conosco per i problemi che (in altri casi) mi ha creato.

      Proverò a installare il tutto su windows, se riesco, invio la procedura alla mail indicato nei commenti

  13. Shaitan,
    appena ho avuto un po’ di tempo ho rimesso le mani su yaz & company … ed ho trovato la soluzione.

    Il problema di xampp è che ha una versione di yaz.dll obsoleta (la 1.9.1).
    Finalmente lo hanno scritto sulla documentazione di php, alla pagina:

    http://www.php.net/manual/en/yaz.installation.php

    In pratica bisogna usare yaz.dll almeno nella versione 2.0.13.
    Basta scaricare da qui il pacchetto di installazione:

    http://ftp.indexdata.dk/pub/yaz/win32/

    p.e. la versione 2.0.14, installarla e quindi prelevare yaz.dll e metterlo nelle cartelle di xampp sostituendo quello vecchio.

    Adesso PMB funziona p-e-r-f-e-t-t-a-m-e-n-t-e.

    … Magari può servire a qualcuno.

    Adesso voglio provare a far funzionare il tutto anche su un Macbook Pro con Mac Osx Leopard …

  14. sto impazzendo… con XAMPP installato la patch, ma non funziona! OpenBiblio non da errori, ma se provo a cercare un ISBN (esistente!) da SBN, mi dà:

    trying 1 host(s)
    using host: SBN – Sistema Bibliotecario Nazionale

    per caso devo inserire dei parametri di connessione particolari?
    Io ho inserito i seguenti in lookup_conf.php:

    $host[0] = ‘opac.sbn.it:3950′; ##–
    $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

  15. Hai seguito le indicazioni di Roberto per abilitare yaz su xampp per windows?

    Il problema con SBN è che la lookup patch cancella gli score prima di cercare l’isbn (invece in SBN il codice isbn10 è registrato segmentato) si dovrebbe risolvere così

    http://culturalheritage.wordpress.com/2007/06/21/openbiblio-e-interrogazione-di-sbn-tramite-z3950-soluzione/

    in ogni caso potresti prima fare un rapido test per verificare che yaz funzioni, provando questo script php

    <?php
    
    $connOK= yaz_connect('opac.sbn.it:3950', array("user"=>"","password"=>""));
    
    if (! $connOK) {
    	echo "C'e' qualche problema nella connesione! <br />";
    }
    else {
    	echo "Ok connesso! <br />";
    	yaz_database($connOK, 'nopac');
    	yaz_syntax($connOK, 'sutrs');
    	yaz_element($connOK, "F");
    	$qry = '@attr 1=7 9788843021741';
    	yaz_search($connOK, "rpn", $qry);
    	yaz_wait();
    	echo yaz_record($connOK, 1, "string");
    	}
    ?>
    

    ps io darei uno sguardo a pmb, con più caratteristiche di openbiblio (che mi pare poco sviluppato ultimamente)

  16. Innanzitutto grazie 1000 per la risposta Shaitan.
    Le istruzioni di roberto per l’installazione di yaz mi sembrano osolete in quanto yaz è arrivato alla versione 3.x.x e la dll ha cambiato nome in yaz3.dll
    Ho seguito istruzioni per l’installazione da un altro sito in inglese ma eseguendo il test che gentilmente hai scritto, pare che YAZ non sia installato correttamente, infatti eseguendolo ottengo:
    Fatal error: Call to undefined function yaz_connect() in C:\xampp\htdocs\test.php on line 3

    Per quanto riguarda PMB lo sto installando in questo WE per vedere come va… ma, sinceramente, openBiblio mi sembra + semplice da usare per gli utilizzatori finali, tenendo presente che la biblioteca è una circoscrizionale.

    Cmq, farò oro del tuo test dello yaz, fin quando esso non funziona. Grazie infinite per la risposta.

  17. Ciao, mi chiamo Marco e vivo in Sierra Leone. Nella Universita` in cui insegno (University of Makeny http://www.unimak.edu.sl) abbiamo bisogno di un programma semplice per la biblioteca, fai conto che non abbiamo fino a questo momento una connessione internet in biblioteca.
    Quello che ci servirebbe sarebbe un programma che tenesse d’occhio i prestiti, qui nessuno riporta libri, e tutto dalla lista dei libri al prestito e` segnato su grandi quadernoni che poi nessuno va piu` a consultare.
    Sto usando Ubuntu 12.04 pensi che open biblio vada bene per il mio caso o e` meglio usare un altro programma? Nel caso potresti indicarmene uno adatto al nostro caso?
    Grazie dell’aiuto.
    Marco

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