Dokumentation: Spezialimport in der Vorlassdomain

Vorbereitung und Upload

  • Ein Verzeichnis mit Subverzeichnissen und darin befindlichen Ressourcen gemäß der folgenden Spezifikation erstellen und verzippen. Dieses ZIP per SFTP in /upload/wbrvor, also im Domain-Uploadverzeichnis des VL-Servers, hochladen.

Grundlegende Struktur

Der Importprozess beginnt mit einem einzelnen Stammverzeichnis (sourcePath).

  • Namenskonvention des Stammverzeichnisses: Der Name des Stammverzeichnisses (idn) muss mit dem Präfix AC beginnen (z.B. AC12345). Andernfalls wird der Import mit einem Fehler abgebrochen.
  • Zentrale Steuerdateien: Direkt im Stammverzeichnis müssen sich zwei entscheidende Dateien befinden:
    1. <ID>.index: Eine XML-Datei, die Metadaten zu den einzelnen Dateien enthält (optional, empfohlen).
    2. <ID>.inventory: Eine Textdatei, die eine logische Gliederungsstruktur (Findbuch) definiert (optional).
    3. Optional zusätzlich: <Verzeichnisname>.index in beliebigen Unterverzeichnissen (siehe unten).

Beispiel-Struktur (Root-Index optional, Subdir-Index möglich):

AC12345/
├── AC12345.index *(optional, empfohlen)*
├── AC12345.inventory
├── Unterverzeichnis_1-1/
│   ├── Unterverzeichnis_1-1.index *(optional)*
│   ├── ...
├── Dokument_A.pdf
├── Bild_B.jpg
└── ...

Die .index-Datei (optional / empfohlen)

Diese XML-Datei ist die Quelle für Metadaten wie Erstellungsdatum und Dateigröße.

  • Optional: Eine .index-Datei ist nicht mehr zwingend im Stammverzeichnis erforderlich.
  • Konsequenz ohne passende Index-Einträge: Für Dateien, für die kein Datum/keine Größe aus einer .index-Datei ermittelt werden kann, wird kein item erzeugt (das Verzeichnis-Strukturelement wird weiterhin angelegt).
  • Index-Vererbung: Eine .index-Datei in einem Unterverzeichnis überschreibt die Metadaten-Quelle für diesen Teilbaum (Subtree) und wird statt der übergeordneten .index verwendet.

  • Format: Die Datei enthält ein Wurzel-Element mit mehreren <File>-Einträgen. Jeder <File>-Eintrag muss folgende Kind-Elemente haben:

    • <RelativePath>: Der relative Pfad zur Datei aus Sicht der jeweiligen .index-Datei (d.h. relativ zum Verzeichnis, in dem die .index liegt). Pfadtrenner müssen Slashes (/) sein.
    • <FirstSavedDate>: Das Erstellungsdatum der Datei.
    • <Size>: Die Dateigröße in Bytes.

Beispiel (AC12345.index):

Die .inventory-Datei (optional)

Aus dieser Textdatei erstellt der Import eine bereits extern definierte hierarchische Gliederung (Findbuch). Wenn vorhanden, versucht das Skript, die Unterverzeichnisse im Stammverzeichnis dieser Gliederung zuzuordnen.

  • Format: Eine einfache Textdatei, bei der jede Zeile einen Gliederungspunkt darstellt.
    • Jede Zeile hat das Format: <Identifier>:<Titel>
    • Der <Identifier> ist eine eindeutige Kennung, die eine Punkt-Notation verwendet (z.B. AC12345:1.1.2).
    • Der <Titel> ist die Bezeichnung für diesen Gliederungspunkt.

Beispiel (AC12345.inventory):

AC12345:1:Hauptkapitel 1 AC12345:1.1:Korrespondenz AC12345:1.2:Manuskripte AC12345:2:Hauptkapitel 2

Verzeichnis-Regeln

Jedes Unterverzeichnis innerhalb der Struktur wird zu einem eigenen Strukturelement (doctype='digital_inventory') in der Import-Datei.

  • Titel: Der Name des Verzeichnisses wird als Titel für das Strukturelement verwendet.
  • Zuordnung zur Gliederung: Unterverzeichnisse, die sich direkt im Stammverzeichnis befinden, können mit Einträgen aus der .inventory-Datei verknüpft werden. Die Zuordnung erfolgt über den Verzeichnisnamen:
    • Ein Verzeichnisname wie AC12345_1-2 wird zum Gliederungspunkt AC12345:1.2 zugeordnet. Das Skript wandelt dabei die Bindestriche (-) im Namen in Punkte (.) um.
  • Spezialdateien innerhalb eines Verzeichnisses:
    • <verzeichnisname>.iso: Wenn eine ISO-Datei mit dem gleichen Namen wie das Verzeichnis existiert, wird sie als isoimage diesem Strukturelement zugeordnet.
    • <verzeichnisname>.content: Der Inhalt dieser Textdatei wird als Beschreibung (Abstract) für das Strukturelement verwendet.

Datei-Regeln und -Gruppierung

Dateien werden zu digitalen Objekten (doctype='item') in der Import-Struktur zusammengefasst.

  • Dateigruppierung: Das Skript gruppiert Dateien, die den gleichen Basisnamen (Dateiname ohne Erweiterung) haben.
    • Beispiel: MeinDokument.doc, MeinDokument.pdf und MeinDokument.jpg werden als ein einziges Objekt behandelt. Auch Derivate, die die originale Dateierweiterung zusätzlich im Namen tragen, werden diesem Objekt zugeschlagen, zum Beispiel MeinDokument.doc.pdf.
  • Objekt-Titel: Der Basisname (MeinDokument) wird zum Titel des Objekts.
  • Primärdatei und Metadaten: Die Datei mit dem kürzesten Namen innerhalb einer Gruppe gilt als "Primärdatei". Ihr relativer Pfad wird verwendet, um Datum und Größe aus der .index-Datei abzurufen.
    • Wenn im aktuellen Verzeichnis oder einem Elternverzeichnis eine .index existiert, wird diese verwendet.
    • Wenn im aktuellen Verzeichnis eine <verzeichnisname>.index existiert, hat diese Vorrang für diesen Teilbaum.
  • Behandlung von Dateitypen:
    • Bekannte Formate: Dateien mit den folgenden Erweiterungen werden als zugehörige Dateien (ImportFile) zum Objekt hinzugefügt: .pdf, .mp3, .mp4, .zip, .eml, .musicxml, .txt.
    • Bildformate (.jpg, .png, .tif, .tiff): Diese werden gesondert behandelt, um ein "Archiv-Masterbild" zu bestimmen, das als digitalisierte Seite (Page) in die METS-Datei eingebettet wird. Die Auswahl-Logik ist:
      1. Wenn bild.jpg und bild.jpg.tif existieren, wird bild.jpg bevorzugt (da das TIFF als Derivat angesehen wird). Dasselbe gilt für PNG.
      2. Ansonsten gilt die Priorität: TIFF > PNG > JPG.
    • Unbekannte Formate: Wenn mehrere Dateien mit unbekannten Erweiterungen in einer Gruppe sind, wird nur die erste angetroffene als generische Datei (generic file) berücksichtigt.
  • Ignorierte Dateien: Dateien, deren Name mit einem Unterstrich __ beginnt, werden vom Importprozess ignoriert (nützlich für temporäre oder interne Dateien).

Aktualisierungen

Für Erweiterungen des ursprünglichen Imports wird ein Stammverzeichnis mit derselben AC-Nummer hochgeladen.-Nummer hochgeladen werden. Dieselben Verzeichnisnamen und Dateinamen, die sich am selben hierarchischen Ort befinden wie beim Erstimport, matchen den bisherigen VL-Datensatz und überschreiben ihn. Änderungen, die an dem Datensatz in VL vorgenommen worden sind, werden grundsätzlich ebenfalls überschrieben.

Erweiterungen

Wenn die bisherige Einspielung unabhängig vom aktuellen neuen Import erhalten bleiben soll, wird ein Stammverzeichnis mit einer fingierten IDN, am besten einem Zeitstempel, hochgeladen. Dieses und seine Unterverzeichnisse werden in VL als eigener neuer Ast im Baum angelegt.

Dabei werden neue idn generiert. Es entstehen dann neue Metadatenobjekte, die per Verschiebeaktion im Baum ggf. an die bisherige Stelle verschoben werden können.