SBAT: Sistema Bibliotecario di Ateneo Toolbar, un’altra personalizzazione di LibXITA

Attualmente in Italia gli utilizzi di LibX sono sostanzialmente nulli (cfr LibX in Italia), che io sappia l’unica barra che mi sembra in “produzione” è la Bibliobar della Biblioteca dell’Università di Milano Bicocca (oltre alla Sbarra dell’Università di Padova, ma questa non è basata su LibX con i suoi vari strumenti come l’autolink, il collegamento all’OpenUrl Resolver, etc).

Orbitando intorno a Pavia ho creato, “just for me”, una versione per interrogare i cataloghi dell’Università di Pavia.

Non utilizzando un ILS e un OPAC diffuso e conosciuto all’estero, ma utilizzando easycat (easyweb lato OPAC) è stato necessario costruire un catalogo personalizzato (cfr. Libx e i cataloghi personalizzati).

Un ulteriore problema da affrontare è stata l’interrogazione via ISBN: in easycat (o almeno a Pavia) il codice ISBN (10 e 13) è memorizzato in maniera segmentata con gli score “-“.

A mio modo di vedere questa è la peggiore soluzione possibile (una delle classiche scelte per chi ama cercare e non trovare, per citare Roy Tennant, visto che si presuppone che l’utente sappia in quale diabolico modo si sia salvato il codice ISBN).
La soluzione ottimale sarebbe avere i codici ISBN memorizzati privi di spazi o altri segni divisori, in fase di ricerca, poi, si potrebbe lasciare ampia libertà all’utente di utilizzare qualsivoglia punteggiatura per separare i vari segmenti ISBN, tanto si potrebbe facilmente ricondurre il tutto a una stringa solo numerica con un “replace” e opportuni controlli sull’ultima cifra (ci sono migliaia di script in giro a riguardo, anche all’interno di LibX stessa).

Per sopperire a questa scelta implementativa “infausta” ho dovuto modificare il codice di LibX per evitare che siano cancellati i vari score “-“… questo permette di ricercare (ad esempio via autolink) 88-515-2159-X, ma non se il codice ISBN è scritto 885152159X. E questo non è un bene poiché tutti i vari cue messi a disposizione da LibX (es amazon & company) si basano su ISBN non segmentati, per cui non funzioneranno con easyweb.

In aggiunta l’Università di Pavia non dispone di un OpenUrl link resolver (sospendo ogni commento a riguardo), per cui ho definito un catalogo per pubmed permettendo di interrogare direttamente per vari campi (compreso il pub med id). Tuttavia l’autolink e la ricerca via menù contestuale di LibX si attendono per il Pub Med ID un OpenUrl resolver, non un catalogo e quindi non funzionerà. E’ sicuramente possibile modificare il comportamento, ma temo richieda modifiche piuttosto profonde (anche poi noiose da manutenere).

Bisognerà vedere se ci sarà interesse a diffondere o a migliorare questo esperimento, tuttavia, con rammarico, devo constatare che è evidente la disparità di strumenti disponibili rispetto a quelli presenti nell’altra barra di cui mi sono occupato, soprattutto perché questa disparità non credo sia giustificata da minor risorse, anzi (piccolo, perdonabile, “grido” di dolore nei confronti di un ateneo che mi ha dato tanto).

Per chi volesse provare, può scaricare SBAT.xpi e installarla in Firefox da file->apri.
Se però siete interessati solo a LibX o LibXITA e volete testarne le funzionalità, vi consiglio di installare la ben più ricca Bibliobar.

Wine e Sesamo, tutto semplice

Rinverdiamo un po’ i vecchi post.

E’ passato diverso tempo dall’ultima volta che ho usato Sesamo 4.1 per inventariare un archivio.

Per puro caso ho ritrovato il CD e ho pensato di installarlo su Lilith.

Tutto molto semplice, considerando che con l’arrivo alla versione 1.0 WINE sembra aver risolto il problema con MDAC 2.8 di cui parlavo nel vecchio post.

La cosa più semplice è utilizzare winetricks per installare MDAC e JET.

wget http://kegel.com/wine/winetricks
sh winetricks fakeie6 mdac28 mfc40 jet40

E poi installare Sesamo

wine Setup_SesamoPro.exe

Aggiornare sesamo all’ultima versione:

wget http://www.lombardiacultura.it/lib/2016/Desco.zip
wget http://www.lombardiacultura.it/lib/2016/SESAMO.zip
wget http://www.lombardiacultura.it/redazionale/CC/libreria/Vuoto.zip
wget http://www.lombardiacultura.it/redazionale/CC/libreria/Titolario_comune.zip
wget http://www.lombardiacultura.it/redazionale/CC/libreria/Titolario_comunita.zip
unzip -Cu Desco.zip -d ~/.wine/drive_c/Programmi/SesamoPro/DescoPro
unzip -Cu SESAMO.zip -d ~/.wine/drive_c/Programmi/SesamoPro/
unzip -Cu Vuoto.zip -d ~/.wine/drive_c/Programmi/SesamoPro/
mv ~/.wine/drive_c/Programmi/SesamoPro/vuoto/vuoto.mdb ~/.wine/drive_c/Programmi/SesamoPro/Vuoto
unzip -Cu Titolario_comune.zip -d ~/.wine/drive_c/Programmi/SesamoPro/Titolari
unzip -Cu Titolario_comunita.zip -d ~/.wine/drive_c/Programmi/SesamoPro/Titolari

Siccome recentemente sto utilizzando spesso puppy linux con qemu, mi sta venendo in mente un’idea malsana…

This kernel requires the following features not present on the CPU

This kernel requires the following features not present on the CPU:
0:6
Unable to boot – please use a kernel appropriate for you CPU.

Questo il messaggio che a volte si ottiene installando ubuntu 8.04 server su un portatile (almeno sul mio).

E’ del tutto simile al problema di CPU is too old di cui avevo parlato.

E’ un messaggio che può capitare anche se si usa virtual box, in tal caso basta abilitare il supporto a PAE sulla virtual machine.

Altrimenti (o se non si usa virtual box) stessa procedura della volta precedente:

Una possibile soluzione è installare il kernel generic.
Per fare questo bisogna avviare con il cd inserito e scegliere “Rescue a broken system”
Alla fine del caricamento scegliere di aprire una shell nella partizione dove il sistema è installato (nel mio caso /dev/sda1)
Controllaimo se siamo all’interno del sistema o del cd:
cd /boot
ls
se il kernel generic è presente, siamo all’interno del cd: umount e mount per montare /boot del server
apt-get install linux-generic

Una volta installato il kernel generic possiamo riavviare e da grub selezionarlo (poi in /boot/grub/menu.lst si potrà indicarlo come avvio di default)

LibX e i cataloghi personalizzati

In passato (cfr. LibXITA: costruire una barra di ricerca per la propria biblioteca) ho già parlato di LibX la “meta” barra di ricerca per biblioteche firefox (e in parte per internet explorer).

LibX supporta diversi tipi di cataloghi e OPAC dei più diffusi vendor (Aleph, Voyager, Millenium etc.), ma permette anche di dichiarare cataloghi personalizzati, sostanzialmente in due modi.

The easy way – dichiarare un bookmarklet

Nel wiki dedicato a LibXITA, la personalizzazione per le biblioteche italiane di LibX, è indicato come costruire il file config.xml dove vengono dichiarati i vari cataloghi. Tra questi c’è la possibilità di indicare un catalogo generico (bookmarklet, vedi la guida).

Bookmarklet supporta sia il metodo GET sia POST.

Sicuramente se il catalogo che si vuole inserire supporta il metodo GET tutto è molto più semplice poiché basta indicare dove inserire le variabili nella stringa che il modulo di ricerca genera.

Ad esempio se si volesse inserire Worldcat si potrebbe usare

<bookmarklet name="OpenWorldCat" url="http://www.worldcat.org/search?qt=worldcat_org&q=%searchterms&submit=Search" options="searchterms"/>

Dove searchterms sarà la stringa di ricerca.

Un altro esempio è tratto dalla Bibliobar, la versione di LibXITA usata dalla Biblioteca dell’Università Bicocca di Milano. In questo caso la ricerca in “Risorse elettroniche” per titolo della rivista e per issn (vedi i codici usati da libx) è gestita come catalogo generico:

<bookmarklet name="Riviste Elettroniche" sid="sfxit.com:libx" url="http://sfx.cilea.it:9003/sfxbic3/azlist/bicocca?param_lang_save=ita&param_letter_group_save=&param_perform_save=locate&param_letter_group_script_save=&param_chinese_checkbox_save=0&param_services2filter_save=getFullTxt&param_services2filter_save=getSelectedFullTxt&param_current_view_save=table&param_jumpToPage_save=1&param_type_save=textSearch&param_textSearchType_save=contains&param_jumpToPagevalue=&param_patternvalue=%jt&param_textSearchTypevalue=contains&param_issnvalue=%is&param_vendor_active=1&param_vendorvalue=&param_locate_category_active=1&param_locate_categoryvalue=" options="jt,i" contextmenuoptions="jt;i"/>

Lo stesso SBN è stato dichiarato come catalogo generico all’interno della Bibliobar.

The hard way – costruire un catalogo personalizzato

Quando si è nella situazione in cui la ricerca base e la ricerca avanzata generano stringhe completamente diverse e non sintetizzabili in un’unica regola, è tempo di dichiarare un catalogo custom (personalizzato).

Dal punto di vista del file config.xml è molto semplice si tratta dei soliti elementi indicati per gli altri cataloghi più l’attributo obbligatorio jsimplurl ovvero l’url dove prendere il file js relativo al catalogo personalizzato, nel caso della Bibliobar è stato definito come catalogo personalizzato BOA – Bicocca Open Access (il nuovo repository dell’Università Bicocca presentato recentemente da Bonaria Biancu in The geek librarian).

La parte XML è molto semplice

<custom jsimplurl="chrome://libx/content/catalogs/boa.js" name="BOA" url="http://surplus.cilea.it/bicocca/oa" options="all;a;t;jt;Y" contextmenuoptions="all">

Visto che nel caso di Bibliobar l’estensione viene compilata in proprio, è possibile inserire il file js all’interno dell’estensione stessa (chrome eccetera), nel caso invece si usi l’interfaccia grafica del Team LibX bisognerà ospitare il file javascript da qualche parte (preferibilmente in siti che non vadano offline di frequente).

Come creare il file javascript è presto detto, si può prendere come base di esempio worldcat.js messo a disposizione dal Team LibX.

Come si può vedere bisogna definire due funzioni, makeSearch e  makeAdvancedSearch, la prima per le ricerche singole l’altra per le ricerche composite. Sostanzialmente bisogna creare l’url con i componenti per la ricerca passati con il metodo GET (qualora il catalogo in oggetto utilizzasse POST si può provare a installare la web developer toolbar e a convertire da POST a GET il metodo di invio dei dati.

Ecco il risultato, commentato, nel caso del catalogo per BOA, BOA.js su questa base può essere inserito qualunque catalogo ancora non presente in LibX e, nel caso italiano, sono diversi SBN, Sebina, EasyCat (o meglio EasyWeb) etc.

/*
 * Bicocca Open Access Catalogue
 * By Salvatore Vassallo
 * Based on worldcat example by LibX Team, see http://libx.org/catalogs/worldcat.js
 */

//definire il path a cui aggiungere le varie parti della query
thisCatalog.path = ‘/simple-search?query=’;  

// funzione per la ricerca semplice
thisCatalog.makeSearch = function(stype, sterm) {
    switch (stype) {
    // switch di tutti i case possibili, alcuni codici tipici di LibX altri aggiunti
    // sono state previsti tutti i casi supportati da Bicocca Open Access anche se poi solo in parte saranno usati in Bibliobar
    // generalmente la query semploice in BOA e data da (codicetermine + %3A + termine da ricercare)
    case ‘all’:       // tutti i termini, da inserire
        sterm = “(” + sterm + “)”;
        break;
    case ‘a’:       // author
        sterm = “(author%3A” + sterm + “)”;
        break;
    case ‘t’:       // title
        sterm = “(title%3A” + sterm + “)”;
        break;
    case ‘jt’:       // journal title
        sterm = “(journaltitle%3A” + sterm + “)”;
        break;
    case ‘miur’:       // settore disciplinare miur, da inserire
        sterm = “(subject%3A” + sterm + “)”;
        break;
    case ‘Y’:       // keyword
        sterm = “(keywords%3A” + sterm + “)”;
        break;
    case ‘language’:       // lingua codice
        sterm = “(language%3A” + sterm + “)”;
        break;
    case ‘anno’:       // anno di pubblicazione
        sterm = “(year%3A” + sterm + “)”;
        break;
    case ‘identifier’:       // identificativo
        sterm = “(identifier%3” + sterm + “)”;
        break;
    }
    // viene generata la stringa da ricercare
    return this.url + this.path + “(” + sterm + “)”;
};

// funzione per la ricerca multipla
thisCatalog.makeAdvancedSearch = function(fields) {
    var query = “”;

    // ciclo for per inserire i vari termini da ricercare, si assume che si rierca con AND
    for (var i = 0; i < fields.length; i++) {         var type = fields[i].searchType;         var term = fields[i].searchTerms;         switch (type) {     // solito swith, simile al precedente     case 'all':       // tutti i termini, da inserire         query +=  "(" + term + ")";         break;     case 'a':       // author         query += "(author%3A" + term + ")";         break;     case 't':       // title         query += "(title%3A" + term + ")";         break;     case 'jt':       // journal title         query += "(journaltitle%3A" + term + ")";         break;     case 'miur':       // settore disciplinare miur, da inserire         query += "(subject%3A" + term + ")";         break;     case 'Y':       // keyword         query += "(keywords%3A" + term + ")";         break;     case 'language':       // lingua codice         query += "(language%3A" + term + ")";         break;     case 'anno':       // anno di pubblicazione         query += "(year%3A" + term + ")";         break;     case 'identifier':       // identificativo         query += "(identifier%3" + term + ")";         break;     }     var c = i+1;     // se non è l'ultimo termine aggiunge +AND+ essenziale per costruire la query     if (c < fields.length) query +="+AND+"; }     // viene generata la stringa da ricercare     return this.url + this.path + "(" + query + ")"; }; // to add xISBN support, add // thisCatalog.xisbn.opacid = ... // read source for more information or ask. [/sourcecode]

Benvenuta in famiglia, Lilith!

« Ella disse ‘Non starò sotto di te,’ ed egli disse ‘E io non giacerò sotto di te, ma solo sopra. Per te è adatto stare solamente sotto, mentre io sono fatto per stare sopra. »

L’alfabeto di Ben-Sira (Anonimo, X secolo)

« Quindi un serpente, che non può essere incantato
fece il suo nido tra le radici dell’albero huluppu
l’uccello Anzu mise i suoi piccoli tra i rami dell’albero
e la vergine nera Lilith costruì la sua casa nel tronco. »

La famiglia, in parte demoniaca (vedi Cinque cose che (credo di sapere ma in realtà non) so di me), si arricchisce della demonessa Lilith.

Del resto si accompagna bene con Shaitan (il mio nickname), Aziel (o the Angel of Death o Azazel… che Milton, in Lost Paradise, dipinge come il portabandiera degli angeli ribelli) il portatile-server, nonché Lilith è citata nelle leggende riguardanti Gilgamesh (nome del server del dipartimento su cui lavoro).

Concludo, come si usa ultimamente, con qualche foto dello spacchettamento (o, se vogliamo, visto il nome, dell’evocazione)

Continue reading

Superare la Dewey: la Open Shelves Classification

Generalmente non inserisco nel blog segnalazioni che non includano anche un test pratico, ma può essere che sia ora di inaugurare un nuovo corso…

Circa una settimana fa, Tim Spalding (“inventore” di Librarything) sul suo blog Thingology, ha aperto la discussione su una classificazione che superasse la Decimal Classification Dewey: la Open Shelves Classification.

Pur ringraziando la Dewey di grande utilità in tutti questi anni, Tim Spalding rileva delle difficoltà in un modello di classificazione cha ha le sue radici nella fine ‘800, forse ormai superato, e, soprattutto, in una classifcazione chiusa, blindata e protetta da copyright e trademark.

I capisaldi dell’ipotizzata e futura OSC dovranno essere (traduzione e sintesi mia, si veda l’originale):

  • Libera: sia nell’utilizzo sia nella possibilità di modificarla. Sarà mantenuta presso LibraryThing solo con il comune consenso, il successo di questa classificazione potrebbe implicare lo spostamneto sotto altra “ala”.
  • Moderna: OSC dovrà mappare i moderni modelli mentali e di conoscenza
  • Modesta“: l’ottimo è spesso nemico del bene, l’obiettivo è un buon sistema per la navigazione delle collezioni, non una dissertazione sui massimi sistemi
  • Scritta collaborativamente
  • Affidata collaborativamente

In oltre Tim Spalding aggiungerebbe:

  • Sviluppo progressivo: scrittura livello per livello in un processo pubblico di discussione (e, per usare parole wikipediane, di maturazione del consenso), test, ridiscussione etc.
  • Incentrata sulle biblioteche di pubblica lettura
  • Testata statisticamente: nessuna delle classificazioni attualmente in vigore sembra essere stata testata statisticamente durante il suo sviluppo. Il test dovrebbe riguardre anche il confronto tra la OSC e le altre classificazioni, se un cluster omogeneo (nelle altre classificazione) si disperde in OSC bisogna valutare perché ciò avvenga.

Al momento si è ancora alla ricerca di un Project Leader (per evitare di essere libraything centrici), anche se l’attività è già iniziata nel gruppo di riferimento.

Dal mio punto di vista è sicuramente un’iniziativa che merita la massima attenzione, anche se, a prima vista, mi sembra più orientata al web e a eventuali biblioteche virtuali (dove si potrebbero sperimentare classificazioni multiple, con un effettivo riscontro visivo), rispetto a una biblioteca fisica a scaffale aperto (in particolare quelle universitarie, visto che il focus sembra essere verso le biblioteche di pubblica lettura).

Non ci resta che attendere sviluppi.