Beschreibung

Die Funktion datensatzAendernAutomat kann für die Datensätze einer IDN-Liste die folgenden Aktionen durchführen:

  • Ersetzen eines Feldes/Feldinhalt durch einen anderen Feldinhalt
  • Hinzufügen eines neuen Feldes bzw eines neuen Feldinhaltes
Einbinden in WinIBW
  1. WinIBW öffnen und anmelden
  2. in Menuleiste auf Optionen > Werkzeugleiste anpassen
  3. falls nicht schon ausgewählt, Reiter "Kommandos" öffnen
  4. im Auswahlfenster "Kategorien" nach ganz unten gehen und "Alle Kommandos" auswählen
  5. im Auswahlfenster "Kommandos" auf "DatensatzAendernAutomat" gehen
  6. Kommando "DatensatzAendernAutomat" per Drag&Drop auf die Menuleiste der WinIBW ziehen
  7. im sich öffnenden Dialogfenster "Text" statt "Icon" auswählen
  8. auf "Schließen" zum Schließen des Dialogfensters gehen
Ablauf

Die "Bedienung" des Skripts erfolgt in der Reihenfolge

  1. Ausfüllen Eingabemaske -> Allgemeine Angaben
  2. Ausfüllen Angaben zum 1. und 2. (optional) Feld oder: Angaben einer Konkordanz
  3. Klicken auf OK
  4. Auswahl der IDN-Liste bzw. der Konkordanz
Eingabemaske
Allgemeine Angaben

Angaben zum 1. (und eventuell 2.) Feld

In dieser Maske wird die eigentliche Aktion konfiguriert. Man kann Aktionen für zwei verschiedene Felder angeben (Reiter "1. Feld" und "2. Feld"). Mögliche Aktionen sind

Angaben zu einer Konkordanz

Falls verschiedenen Datensätzen verschiedene Inhalte hinzugefügt werden sollen bzw. verschiedene Inhalte ersetzt werden sollen, ist dies über eine Konkordanz möglich. Diese Konkordanz muss folgendermaßen aufgebaut sein:

Mögliche Aktionen:

Suche-/Ersetzungsmöglichkeiten (Angaben zu den Feldern und Inhalten)

Es gibt zwei verschiedene Suchmöglichkeiten, um die zu bearbeitenden Felder und Inhalte im Datensatz zu finden:

Auswahl der IDN-Liste bzw. der Konkordanz

Das Skript bearbeitet Datensätze nach einer IDN-Liste, pro Zeile muss dabei eine IDN stehen. Für die Konkordanzen gelten die oben gemachten Angaben. Die IDN-Liste bzw. Konkordanz wird durch den üblichen Windows-Datei-Öffnen-Dialog ausgewählt.

Logdateien

Das Skript schreibt verschiedene Logdateien, um die Ergebnisse des Laufes kontrollieren zu können. Der Name jeder Logdatei beginnt mit dem Feld, das man unter "1. Ausgangsfeld" angegeben hat. Sie werden in dem Verzeichnis abgelegt, in dem die abzuarbeitende IDN-Liste liegt. Daher ist es notwendig, dass die genutzte Windows-Kennung in dem Verzeichnis auch Schreibberechtigungen hat.

  1. <Feld>_alle_log.txt: Enthält alle bearbeiteten IDNs. Bei einem Abbruch des Skriptes (Absturz der WiniIBW o.ä.) kann man hier sehen, bis zu welcher IDN das Skript gekommen ist.
  2. <Feld>_log.txt: Enthält alle IDNs, die erfolgreich vom Skript bearbeitet wurden, bei denen es also keine Fehlermeldung im Verlauf der Bearbeitung gab.
  3. <Feld>_err.txt: Enthält alle IDNs, bei denen im Lauf der Bearbeitung ein Fehler auftrat. Diese Datensätze wurden also nicht geändert. Zusätzlich wird der Fehler mit ausgegeben:
    1. "Fehler: nicht gefunden f idn <IDN>": Die IDN konnte im CBS nicht gefunden werden
    2. "Fehler: zu ersetzende Inhalte nicht vorhanden <Ausgangsfeld> <Inhalt des Ausgangsfelds> <IDN>": Es sollte ein bestimmter Inhalt in einem bestimmten Feld ersetzt werden, aber das zu ersetzende Feld und/oder der zu ersetzende Inhalt wurde nicht gefunden
    3. "Fehler: neuer Inhalt <Ausgangsfeld> <Inhalt des Ausgangsfelds> bereits vorhanden <IDN>): Es sollte ein neuer Feldinhalt eingefügt werden, aber das Feld und der Inhalt waren bereits vorhanden
    4. "Fehler: Feld bereits mit anderem Inhalt vorhanden, Anhang-Trennzeichen wurde nicht definiert! <IDN": Es sollte ein neuer Feldinhalt in ein nicht als wiederholbar gekennzeichnetes Feld eingefügt werden, aber das Feld war bereits vorhanden. Da kein Trennzeichen angegeben wurde, konnte der neue Inhalt nicht angehängt werden.
    5. "Fehler beim Abschicken: <Meldung der WinIBW> <IDN": Der Datensatz konnte wie gewünscht geändert werden, aber beim Abschicken gab es eine Fehlermeldung der WinIBW (z. B. Validationsfehlermeldungen), so dass der geänderte Datensatz nicht gespeichert werden konnte.
  4. <Feld>_volllog.txt: Enthält alle bearbeiteten Datensätze in der Vollanzeige, und zwar "vorher - nachher". Man kann hier also schnell prüfen, ob die Änderungen so durchgeführt werden, wie gewünscht. Dies geht auch im Dummylauf, es bietet sich also immer an, mit einer reduzierten IDN-Liste erst einen Dummylauf durchzuführen, um dann in dieser Datei die Änderungen prüfen zu können.
  5. <Feld>_stat.txt: Enthält <Tagesdatum> <Anzahl der veränderten Datensätze> (Format muss noch angepasst werden, wurde im GND-Zusammenhang zu einem bestimmten Zweck genutzt)
Anwendungsbeispiele
  1. in den Datensätzen einer IDN-Liste soll im Feld 008 der Entitätencode "kio" eingefügt werden, falls es noch keinen anderen Entitätencode gibt.
    1. Ausgangsfeld "008"
    2. Inhalt des Ausgangsfelds "kio"
    3. kein Haken bei "Feld ist wiederholbar" und "Regulärer Ausdruck"
    4. Aktion: Haken bei "oben genannten Feldinhalt neu einfügen"
    5. kein Trennzeichen angeben, da der Entitätencode nicht an einen eventuell bereits vorhanden angehängt werden soll
  2. in den Datensätzen einer IDN-Liste soll im Feld 008 der Entitätencode "kio" eingefügt werden. Falls es bereits einen anderen Entitätencode gibt, soll er hinzugefügt werden
    1. Ausgangsfeld "008"
    2. Inhalt des Ausgangsfelds "kio"
    3. kein Haken bei "Feld ist wiederholbar" und "Regulärer Ausdruck"
    4. Aktion: Haken bei "oben genannten Feldinhalt neu einfügen"
    5. als Trennzeichen ";" angeben, da der Entitätencode an einen eventuell bereits vorhanden angehängt werden soll. Laut Datenformat werden weitere Entitätencodes mit ";" angehängt.
  3. in den Datensätzen einer IDN-Liste soll das Feld 5540 gelöscht werden, wenn es mit "[GND]!989819264!" beginnt
    1. Ausgangsfeld "5540"
    2. Inhalt des Ausgangsfelds "[GND]!989819264!"
    3. Aktion: Haken bei Löschen
  4. in den Datensätzen (GND) einer IDN-Liste sollen strukturell falsche exakte Lebensdaten im Feld 548 korrigiert werden. Korrekte Struktur: "DD.MM.JJJJ", in den Daten gibt es aber oft "D.M.JJJJ"
    1. für Geburtsdatum in $a
      1. Ausgangsfeld "548"
      2. Inhalt des Ausgangsfelds: "(\d\.)(\d\.)(\d\d\d\d.*\$4datx)"
      3. Haken bei "Feld ist wiederholbar" und "Regulärer Ausdruck"
      4. Aktion: Haken bei "oben genannten Feldinhalt ersetzen durch",
      5. Feld: "548"
      6. Feldinhalt: "0$10$2$3"
    2. für Sterbedatum in $b
      1. Ausgangsfeld "548"
      2. Inhalt des Ausgangsfelds: "(.*\$b)(\d\.)(\d\.)(\d\d\d\d.*\$4datx)"
      3. Haken bei "Feld ist wiederholbar" und "Regulärer Ausdruck"
      4. Aktion: Haken bei "oben genannten Feldinhalt ersetzen durch",
      5. Feld: "548"
      6. Feldinhalt: "$10$20$3$4"
  5. in den Datensätzen des Bonner Katalogs sollen in den Personenfeldern (30XY) die dort noch vorhandenen Strings durch Verknüpfungsnummern ersetzt werden. Eine Konkordanz "Name - IDN" liegt vor, so dass man für häufig vorkommenden Namen (Mozart, Verdi, Wagner...) das Skript verwenden kann. Beispiel Grundlage: IDN-Liste des Suchsets "f (per mozart, wolfgang amadeus or per egk, werner) and bbg maxl" (so hat man in einem Suchset zwei Namen und kann gleich beide in einem Lauf abarbeiten).
    1. Ausgangsfeld (1): "(30..)"
    2. Inhalt des Ausgangsfelds (1) "Mozart, Wolfgang Amadeus"
    3. Haken bei "Feld ist wiederholbar" und "Regulärer Ausdruck" (1)
    4. Aktion: Haken bei "oben genannten Feldinhalt ersetzen durch" (1)
    5. Feld: "$1" (1)
    6. Inhalt: "!118584596!" (1)
    7. Ausgangsfeld (2): "(30..)"
    8. Inhalt des Ausgangsfelds (2) "Egk, Werner"
    9. Haken bei "Feld ist wiederholbar" und "Regulärer Ausdruck" (2)
    10. Aktion: Haken bei "oben genannten Feldinhalt ersetzen durch" (2)
    11. Feld: "$1" (2)
    12. Inhalt: "!118529129!" (2)
      Bei diesem Beispiel muss beachtet werden, dass in jedem Datensatz der IDN-Liste nach beiden Namen gesucht wird, in den meisten Fälle aber nur einer gefunden wird. Daher wird fast jeder Datensatz in der Fehlerliste auftauchen, obwohl der jeweils andere Name korrigiert werden konnte, was in diesem Fall eigentlich kein Fehler wäre.
  6. in einigen Datensätzen gibt es im Feld 4060 einen spezifischen Tippfehler: "1 Schallackplatte" statt "1 Schellackplatte". IDN-Liste: "f ufa Schallackplatte"
    1. Ausgangsfeld: "4060"
    2. Inhalt des Ausgangsfelds: "1 Schallackplatte"
    3. kein Haken bei "Feld ist wiederholbar"und "Regulärer Ausdruck"
    4. Aktion: Haken bei "oben genannten Feldinhalt ersetzen durch"
    5. Feld: "4060" 
    6. Inhalt: "1 Schellackplatte"
      Wenn der falsche Inhalt auch "2 Schallackplatten" sein könnte oder ähnliches, könnte man dies mit regulären Ausdrücken abfangen: Inhalt des Ausgangsfelds dann : "(\d) Schallackplatte(n?)"; ersetzen durch "$1 Schellackplatte$2"
  7. Für eine IDN-Liste soll in Exemplardaten jeweils das Feld 8034 hinzugefügt werden, mit jeweils anderem Inhalt. Achtung: Bei Exemplardaten gelten besonderen Bedingungen, da hier die Feldzählung im Vergleich zu den bibliographischen Angaben nicht aufsteigend ist. Beispielsweise kann es nach dem einleitenden Feld 7001 ein Feld 4801 geben. Damit kommt das Skript nicht zurecht. Lösung: Immer ein Feld mit einer höheren Nummern als die Level0-Felder als Anker benutzen (z. B. 8100) und dieses Feld inkl. Inhalt durch sich selbst und das neue gewünschte Feld + Inhalt ersetzen.
    1. Anlegen einer Konkordanz "IDN" - Tabulator - alter Inhalt, am besten RegEx: "(.*)" - Tabulator - "neues Feld/Inhalt, inkl. Bezug auf den RegEx des Inhalt des alten Feldes, damit das wieder eingefügt wird: "$1\n<neues Feld> <neuer Inhalt"
    2. Reiter "Angabe einer Konkordanz" auswählen
    3. Ausgangsfeld: "8100"
    4. Regulärer Ausdruck anhaken
    5. "obengenannten Feldinhalt ersetzen durch ...": "8100"
    Ergebnis: Eintrag der Konkordanz 
    1054371873    (.*)    $1\n8034 Seitenzählung entspricht dem Original
    erzeugt im Datensatz aus
    8100 F-1914-296156485
    ->
    8100 F-1914-296156485
    8034 Seitenzählung entspricht dem Original


Historie

Datum

geändert von

Beschreibung

2012-10-04

Mujkic

neu erstellt

2014-01-20Grundausführliche Beschreibung
2016-04-01GrundBeschreibung der Konkordanz, Beispiel 6
Scriptdatei(en)

dnb_public.js