[Koha-de] Zwei Fragen zu Templates für MARC-Modifikationen

Christoph Holzapfel holzapfel at borromaeusverein.de
Mo Mär 30 17:09:07 CEST 2020


Hallo allerseits,

ich möchte meine Antwort von Sonntag noch ergänzen bzw. korrigieren, weil ich inzwischen festgestellt habe, dass Koha importierte Daten immer im xml-Format (in der Tabelle biblio_metadata) ablegt). Also ist das, was ich über *.mrc-Dateien gesagt habe, überflüssig.

Danke auch an Katrin Fischer für die Ergänzung von heute!

Viele Grüße
Christoph Holzapfel
 
Borromäusverein Bonn e.V.
Lektorat
Wittelsbacherring 9
53115 Bonn
 
Tel.: 02 28/72 58 -403
Fax: 02 28/72 58 -412
 
E-Mail: holzapfel at borromaeusverein.de 
 
www.borromaeusverein.de
www.medienprofile.de

Vereinsregister Bonn VR 1924
UStINr. 122 122 735
 
Finanzamt Bonn Innenstadt
Steuer Nr. 205/5783/1190 



-----Ursprüngliche Nachricht-----
Von: Christoph Holzapfel 
Gesendet: Sonntag, 29. März 2020 12:44
An: Christoph Holzapfel
Betreff: AW: Zwei Fragen zu Templates für MARC-Modifikationen

Hallo Anke,

ich habe im Archiv der allgemeinen Koha-Mailingliste (http://koha.1045719.n5.nabble.com/ - koha at lists.katipo.co.nz) nachgelesen. Die MARC modification templates sprechen weder den Leader noch die Kontrollfelder an bzw. können diese ändern. D.h. Du musst entweder ein Template entwickeln, dass sich auf andere MARC-Felder bezieht (IMD z.B.) oder den von mir vorgeschlagenen Weg mit der Auswahl der zu ändernden Titel über einen SQL-Report gehen.

Herzliche Grüße, gutes Gelingen und Durchhaltevermögen für die C-Einschränkungen!
Christoph Holzapfel

Borromäusverein e.V.
Lektorat
________________________________________
Von: Koha-de [koha-de-bounces at lists.koha-community.org]" im Auftrag von "Christoph Holzapfel [holzapfel at borromaeusverein.de]
Gesendet: Samstag, 28. März 2020 16:25
An: koha-de at lists.koha-community.org
Betreff: [Koha-de] WG: Zwei Fragen zu Templates für MARC-Modifikationen

Hallo Liste,

ich habe die E-Mail aus versehen erst nur an Anke Bruns geschrieben, aber die Antwort ist natürlich für alle gedacht.

Viele Grüße
Christoph Holzapfel
________________________________________
Von: Christoph Holzapfel
Gesendet: Samstag, 28. März 2020 16:23
An: Bruns, Anke
Betreff: AW: Zwei Fragen zu Templates für MARC-Modifikationen

Hallo Anke (ich hoffe, das "Du" ist okay?),

Du hast mir mit deinen Fragen sehr geholfen - und ich hoffe, ich kann dir mit meinen Tipps auch helfen ;-).

Grundsätzlich zu Feld 942$c. Wenn ich das richtig verstehe, steuert Koha darüber a) die Anzeige von Symbolen im OPAC (siehe das Menü Administration -> Basic Parameters -> Item Types) und b) alle ausleihrelevaten Informationen wie Dauer der Leihfrist (für DVDs z.B. kürzer als für Bücher), diverse Gebühren und Altersbeschränkungen. Deshalb ist das in Koha ein Pflichtfeld.

Für deine beiden Fragen habe ich einen gemeinsamen Lösungsvorschlag:

Nach festen Positionen kann man in MARC modification templates mit der Option "RegEx" im "AddAction"-Schritt suchen (Screenshot über diesen Link: https://wolke.die-holzapfels.de/index.php/s/yje4EtqtldB2vYy). Reguläre Ausdrücke (regular expressions) sind ein sehr mächtiges Werkzeug, in das man sich ein bisschen einarbeiten muss. Infos gibt es hier: https://danielfett.de/2006/03/20/regulaere-ausdruecke-tutorial/, englisch mit noch mehr Beispielen: https://medium.com/factory-mind/regex-tutorial-a-simple-cheatsheet-by-examples-649dc1c3f285. Ausprobieren kann man seine Ausdrücke hier: https://regex101.com/.

Der reguläre Ausdruck für ein "m" an Position 6 im Leader wäre: ^(m) - das bedeutet: Finde vom Anfang der Zeichenkette (^) das erste "m" (Lt. Feldbeschreibung des Leaders bei der LOC gibt es vor Pos. 6 kein "m"). Allerdings hat die Sache einen grundsätzlichen Haken. Denn die MARC modification templates scheinen nicht auf den Leader zugreifen zu können. Jedenfalls ist es mir nicht gelungen ...

Also muss es einen anderen Weg geben.

Damit die MARC modification templates etwas bewirken, musst Du ja ohnehin eine "Batch record modification" anstoßen (wie z.B. hier: http://blog.l2c2.co.in/index.php/2016/06/21/koha-marc-modification-templates/ beschrieben). D.h. sie wirken sich ohnehin nur auf gezielt ausgewählte Datensätze aus. Das Menü der "Batch record modification" bietet dazu die Möglichkeit, entweder eine Datei hochzuladen, die Datensatz-Nummern enthält, oder "biblionumbers" (also die Koha-Nummer des Datensatzes, die z.B. auch am Ende des Links zu einem Titel steht) in ein Feld (Enter a list of record numbers) einzutragen. Das kann sehr mühsam werden.

Einfacher ist es, wenn man sich dafür einen Report zusammenbaut, der die gewünschten "biblionumbers" zusammenträgt. Das kommt mir sehr entgegen, mit SQL und Datenbanken kenne ich mich aus (ich weiß, das gilt nicht für jede/n). Also habe ich einen Report gebaut, der die "biblionumbers" zusammenstellt, bei denen im MARC-Leader ein bestimmtes Merkmal vorhanden ist. Da Du eBOOKS und eJOURNALS unterscheiden willst, brauchst Du zwei Reports und zwei Templates. Denn so weit ich das sehe, kann man keine Templates mit durch UND verknüpften Bedingungen erstellen. Man kann nur mehrere "actions" nacheinander schalten, aber das scheint mir hier nicht sinnvoll zu sein.

Für die Reports gehst Du ins Reports Menü und klickst unter "Guided Reports" auf "+ Create from SQL". Dort gibst Du einen Namen ein und dann für die eBOOKs folgendes SQL:

SELECT biblionumber FROM [name_deiner_datenbank].biblio_metadata WHERE substr(extractvalue(metadata, '//leader'), 7, 2) = 'ma';

Damit die SQL-Abfrage funktioniert, musst Du die Datenbanktabellen (deren Namen Du über das Koha-MARC-Mapping oder schema.koha-community.org herausfinden kannst) nach dem Muster DATENBANKNAME.TABELLE ansprechen. Den Datenbanknamen hast Du oder hat dein Admin beim Setup von Koha vergeben.

Um im Leader nach einem Wert zu suchen, muss man die Tabelle biblio_metadata ansprechen, wo (zumindest in meinem Fall, weil ich xml-Datensätze importiert habe) der gesamte Datensatz als xml hinterlegt ist. Zu mrc-Datensätzen siehe unten. Die "Buchstabenketten" ;-) nach dem WHERE enthalten die Bedingung, nach der die biblionumber gesucht werden soll. "substr" ist eine Funktion, mit der Teile einer Zeichenkette herausoperiert werden können. Die gefragte Zeichenkette ist hier mit der Funktion extractvalue(metadata, '//leader') angegeben, weil der Leader in meinem Fall als xml-Zeichenkette vorliegt (also: <leader>...</leader>), nach der öffnenden Klammer steht die Bezeichnung der Tabellenspalte, in der die Zeichenkette gesucht werden soll und die Bezeichnung des xml-Tags (ohne spitze Klammern). Dann folgt eine schließende Klamme, ein Komma und dann die Zeichenposition des ersten Zeichens, das gesucht wird. Das von dir gesuchte "m" steht an 7. Stelle (weil in MARC von Position 0 aus gezählt wird). Da wir auch noch Pos. 7 benötigen um eBOOKS und eJOURNALs zu unterscheiden, brauche wir eine 2 Zeichen lange Zeichenkette, deshalb steht nach der 7 ein Komma und eine 2. Und da die Bedingung als Werte-Vergleich formuliert ist, folgt auf die schließende Klammer des substr-Ausdrucks ein Gleichheitszeichen und der Vergleichswert.

Wenn Du den Report speicherst und ausführst, bekommst Du alle biblionumbers, die an Pos. 6 ein 'm'  und an Pos. 7 ein a haben. Da ich keine eBooks im Datenpool habe, habe ich es mit mp3-CDs gemacht (Screenshot: https://wolke.die-holzapfels.de/index.php/s/2OKA01XYSdOqsAx).

Koha bietet über der Ergebnisliste gleich die Option "Batch operations with n visible records" an. Damit wird die biblionumber in das Menü "Batch record modification" übernommen. Dort kannst Du dann das entsprechende Template auswählen und laufen lassen. D.h. Du brauchst nur noch ein Template, dass das MARC-Feld 942$c mit dem gewünschten Feldwert ergänzt.

Für das eJOURNAL muss dann nach dem Gleichheitszeichen logischerweise 'ms' stehen.

Ob das so funktioniert, kannst Du ganz gefahrlos ausprobieren, indem Du den Report ausführst und dir über die Option "Batch operations with n visible records" zunächst die Titel anzeigen lässt, die durch das Template verändert würden.

Falls Du deine Daten als *.mrc-Daten importierst (was Koha macht, wenn man selbst eine Titelaufnahme produziert, weiß ich (noch) nicht, aber dann MUSS man ja 942$c belegen, also wird das bei dir nicht der Fall sein), musst Du das SQL für den Report wie folgt abändern:

(Das konnte ich nicht testen, sollte aber funktionieren - sonst gerne melden.)

SELECT biblionumber FROM [name_deiner_datenbank].biblio_metadata WHERE substr(metadata, 7, 2) = 'ma';

Ich habe gerade entdeckt Ich bin doch ein Frischling ;-)), dass man auch beim Datenimport schon so ein Template auswählen kann. Da wäre es natürlich das einfachste, in dem MARC modification template auch für den Leader Bedingungen per Regulärem Ausdruck formulieren zu können. Ich versuche mal, über die internationale Mailingliste herauszufinden, ob bzw. wie man den Leader ansprechen kann.

Herzliche Grüße
Christoph Holzapfel
Borromäusverein e.V.
Lektorat
holzapfel at borromaeusverein.de

________________________________________
Von: Koha-de [koha-de-bounces at lists.koha-community.org]" im Auftrag von "Bruns, Anke [Anke.Bruns at gwdg.de]
Gesendet: Freitag, 27. März 2020 11:19
An: koha-de at lists.koha-community.org
Betreff: [Koha-de] Zwei Fragen zu Templates für MARC-Modifikationen

Guten Tag,

zu den Templates hätte ich folgende Fragen und würde mich freuen, wenn mir
jemand einen Tipp geben oder mich auf eine relevante Anleitung verweisen
könnte:

1. Wie kann ich eine Wenn-Bedingung auf einem Feld mit festen Positionen
statt Unterfeldern aufbauen?

Ich habe versucht, die Positions-Nr. in das Eingabefeld für das Unterfeld
einzugeben, aber das funktioniert nicht.

Beispiel: Pflichtfeld 942$c (Koha-Materialart) soll mit dem Inhalt EBOOK
aufgebaut werden, wenn der importierte Satz in Feld 000 an Position 6 ein m
enthält.

2. Gibt es die Möglichkeit, das Template so zu erweitern, dass ich mehr als
eine Wenn-Bedingung angeben kann?

Beispiel: Wenn der importierte Satz in Feld 000 an Position 6 ein m
(Computer File) enthält _und_ in Position 7 ein s, soll EJOURN in Feld 942$c
eingetragen werden.

Alternativ habe ich versucht, zwei aufeinanderfolgende Aktionen einzutragen
und damit zu erreichen, dass zunächst die erste Bedingung herangezogen und
das Feld aufgebaut wird und im zweiten Schritt das Feld anhand der zweiten
Bedingung geändert wird.

Das scheint mir jedoch nicht sehr elegant und außerdem recht aufwändig zu
sein.

Alternativ könnte man auch 942$c als Nicht-Pflichtfeld definieren und somit
die ganze Aktion einsparen - aber hätte das evtl. unerwünschte Auswirkungen
auf das Funktionieren von Koha? Es wird ja einen Grund geben, warum im
Standard-MARC-Template 942$c Pflichtfeld ist?

Falls jemand eine Idee hat, vielen Dank im voraus!

Viele Grüße und ein schönes Wochenende und allen in der Runde gute
Gesundheit!

Anke Bruns



--
Anke Bruns M.A. (LIS)
Arbeitsgruppe "Anwendungs- und Informationssysteme"
Tel.: +49 551 201-1519, E-Mail: anke.bruns at gwdg.de
---------------------------------------
Gesellschaft für wissenschaftliche Datenverarbeitung mbH Göttingen (GWDG) Am
Fassberg 11, 37077 Göttingen, URL: http://www.gwdg.de, E-Mail:
gwdg at gwdg.de
Tel.: +49 (0)551 201-1510, Fax: +49 (0)551 201-2150
Service-Hotline: Tel.: +49 551 201-1523, E-Mail: support at gwdg.de

Geschäftsführer: Prof. Dr. Ramin Yahyapour
Aufsichtsratsvorsitzender: Prof. Dr. Christian Griesinger Sitz der
Gesellschaft: Göttingen
Registergericht: Göttingen, Handelsregister-Nr. B 598
---------------------------------------
Zertifiziert nach ISO 9001
---------------------------------------


_______________________________________________
Koha-de mailing list
Koha-de at lists.koha-community.org
https://lists.koha-community.org/cgi-bin/mailman/listinfo/koha-de


Mehr Informationen über die Mailingliste Koha-de