Wie bereits in Teil 1 dieser kleinen Serie angekündigt, möchte ich heute beschreiben, wie wir neben unserer Lehrmittelbibliothek auch mit unserer Schulbibliothek von LITTERA zu Koha umgestiegen sind.
Backup der Daten aus LITTERA
LITTERA macht es einem nicht gerade leicht die aufgenommen Titel und Exemplare zu exportieren, sodass man neben den allgemeinen Angaben zum Titel auch die entsprechenden Schlagworte, Systematik oder die Barcodes in irgendeiner lesbaren Form hat. Die Backupfunktion von LITTERA legt alle Daten in einer Microsoft Access Datenbank ab, in der wiederum alle Daten in Tabellen liegen. Unter Windows ist diese mit einem Passwort geschützt, doch mit Hilfe der mdb-tools (aus den Paketquellen von z.B. Ubuntu) kann man sich ohne Probleme den Inhalt dieser Datenbank anschauen.
Mit mdb-tables littera.mdb kann man sich die einzelnen Tabellen innerhalb der Datenbank anschauen und mit mdb-export littera.mdb tabellenname den Inhalt einer Tabelle. Wenn man das ganze noch mit sed verknüpft kann man mit folgendem Befehl alle Tabellen in eine CSV-Datei exportieren:
$ mdb-tables littera.mdb | sed "s/ /\n/g" | while read in; do mdb-export littera.mdb "$in" > "$in".csv; done
Nun hat man alle Daten in einer Form, dass man sie weiterverarbeiten kann. Folgende Tabellen sind interessant. Die Spalte „Buchungsnummer“ dient dabei als ID in anderen Tabellen.
- Verlag → Liste mit allen Verlagen und Ortsangabe
- Schlagworte → Liste aller Schlagworte
- Schlag_zuord → Zuordnung der Schlagworte zu einem Titel
- Medienart → alle Medientypen
- Interessenkreise → Liste der Interessenskreise
- IntzuMed → Zuordnung Interessenkreise zu Titel
- Systematik_OG / Systematik_UG → Ober- und Untergruppen der Systematik
- Systematik_Zuordnung → Zuordnung der Systematik zu Titel
- Sprache → Liste der verwendeten Sprachen
- Reihe → Informationen über Reihen
- Exemplar → Liste aller Exemplare
- Titel → Liste aller Titel
Vorbereiten der Daten
Mit Hilfe eines Python-Skripts habe ich diese Tabellen ausgelesen und in einem großen Dictionary zusammengefasst, sodass ich zu jedem Titel alle nötigen Daten hatte (inkl. Exemplardaten).
#read publisher data with open('Verlag.csv') as exemplarfile: reader = csv.DictReader(exemplarfile) tmpItem = {} for row in reader: tmpItem = {} tmpItem["name"] = row["Verlag"] tmpItem["city"] = row["Ort"] publishers[row["Buchungsnummer"]] = tmpItem
Eine weitere Schwierigkeit war der Barcode. Erst nach einiger Recherche habe ich einen Hinweis auf die Zusammenstellung des Barcodes gefunden. Ein Beispiel:
Barcode eines Exemplars: 1456000089443
Das Muster ist folgendes: Exemplarnummer + Nullen + Bibliotheksnummer + Länge der Exemplarnummer + Prüfziffer (EAN13).
Im obigen Bespiel wäre als 1456 die Nummer unsere Exemplars, gefolgt von Nullen. 894 ist die Nummer der Bibliothek gefolgt von der 4, da unsere Exemplarnummer 4stellig ist. 3 ist die Prüfnummer des Barcodes (die sich Über Division mit Rest berechnen lässt – einfach mal das weite Netz danach durchsuchen).
MAB zu MARC21
LITTERA verwendet MAB als Format für alle Titel und Exemplare und Koha dagegen MARC21. Die Daten, die nun mit Hilfe des Python-Skripts vorbereitet sind, müssen nun noch in MARC21 „umgewandelt“ werden. Wie ich schon in Teil 1 erwähnte, ist MARC21 nicht gerade einsteigerfreundlich und relativ komplex. Es dauert etwas bis man die Struktur verstanden hat. Mir hat an dieser Stelle in Website „Understanding MARC“ geholfen.
In MARC21 gibt es verschiedene Felder mit Unterfeldern, die dazu noch bis zu 2 Indikatoren haben. In Koha wird z.B. das Fled 952 für alle Exemplardaten verwendet. im Unterfeld „p“, also 952$p befindet sich z.B. der Barcode. Im Feld 245$a und 245$b werden der Titel und der Untertitel festgehalten usw. Eine genaue Auflistung in deutsch gibt es bei der Deutschen Nationalbibliothek.
Mehr oder weniger zufällig bin ich auf pymarc gestoßen, eine Python-Bibliothek zum Bearbeiten von MARC21 Daten. Diese Bibliothek nimmt einem viel Arbeit ab. Ich habe also aus den vorbereiteten Daten die einzelen Einträge der MARC21-Felder erstellt und am Ende als MARC21XML exportiert. Hier ein Auszug aus dem Skript:
if "ISBN" in titles[recordID] and titles[recordID]["ISBN"] != "": record.add_field( Field( tag = '020', indicators = ['',''], subfields = [ 'a', titles[recordID]["ISBN"] ] ) )
Die Felder 000 bis 008 sind besondere Felder in MARC21, deren Bedeutung ich noch nicht 100%ig verstanden habe. Auf jeden Fall ist der „Leader“ ein sehr wichtiges Feld, weil in ihm wichtige Daten über z.B. die Medienart festgehalten sind. Deshalb hier noch ein Auszug, wie ich den Leader konstrukiert habe (anhand des Medientyps):
l = list(record.leader)
l[5] = ’n‘ l[6] = ‚a‘ l[7] = ‚m‘ l[9] = ‚a‘ l[17] = ‚7‘ l[18] = ‚a‘ if titles[recordID][„type“][„short“] in („BU“, „ZS“): l[6] = ‚a‘ l[7] = ‚m‘ if titles[recordID][„type“][„short“] in („CD“, „TC“, „HB“): l[6] = ‚j‘ if titles[recordID][„type“][„short“] in („KA“): l[6] = ‚e‘ if titles[recordID][„type“][„short“] in („VI“, „DV“, „DI“, „FI“, „OV“): l[6] = ‚g‘ if titles[recordID][„type“][„short“] in („CR“, „FD“): l[6] = ‚m‘ if titles[recordID][„type“][„short“] in („SP“, „SO“): l[6] = ‚o‘ record.leader = „“.join(l)
Ein korrekter Leader ist wichtig, da ansonsten in Koha kein Medientyp bei der Suche oder in den Details angezeigt werden.
Nun müssen die Daten noch von MARC21XML nach MARC21 umgewandelt werden. Koha kann zwar auch MARC21XML importieren, aber da hatte ich immer Probleme mit der Kodierung, was sich in Problemen mit Umlauten und Sonderzeichen gezeigt hat. Also habe ich mit Hilfe von MarcEdit die Daten vom einem Format in das nächste gebracht.
Soweit so gut. Jetzt können die Daten in Koha importiert werden. Allerdings möchte ich gern, dass man bei einer Suche oder in der Detailansicht sieht, ob ein Buch bei Antolin verfügbar ist oder nicht. Antolin ist eine Leseplatform für Kinder, wo man zu einem gelesenen Buch ein Quiz machen kann und dafür Punkte bekommt. Ungefähr so soll es am Ende aussehen:
Wie Antolin integriert werden kann und wie man die Ansicht der Ergebnisse anpassen kann, darüber werde ich im dritten Teil berichten.
[…] ersten und im zweiten Teil dieser kleinen Serie habe ich bereits berichtet, wie wir an unserer Schule von LITTERA zu Koha […]
[…] Nach der erfolgreichen Schulbuchrückgabe haben wir uns kurz zusammengesetzt und überlegt, ob wir nicht auch unsere eigentliche Schulbibliothek auf Koha umstellen sollten. Der Aufwand für so eine Umstellung ist natürlich um einiges größer, da eine Schulbibliothek ganz andere Anforderungen hat, als eine Lehrmittelbibliothek. Wir wollten auch den Bestand nicht neu etikettieren müssen, sondern – falls möglich – die vorhandene Struktur und Barcodes übernehmen können. Dazu kommen dann noch Ausleihkonditionen, Mahngebühren, E-Mail-Benachrichtigungen, Antolin-Integration usw. In den letzten zwei Wochen habe ich mich mal an dieses Projekt gewagt. Davon möchte ich euch bald in einem weiteren Artikel berichten (Update: Teil 2). […]