KOST Koordinationsstelle für die dauerhafte Archivierung elektronischer Unterlagen Ein Gemeinschaftsunternehmen von Schweizer Archiven Spezifikation SIARD-Val Release 1 Inhalt 1 Einleitung .................................................................................................................. 2 1.1 Zweck des Dokuments ..................................................................................... 2 1.2 Referenzierte und mitgeltende Dokumente ..................................................... 2 1.3 Begriffe und Abkürzungen ............................................................................... 2 2 Allgemeine Anforderungen ....................................................................................... 2 2.1 Funktionale Anforderungen .............................................................................. 2 2.2 Nicht-funktionale Anforderungen ..................................................................... 3 2.3 Die Validierungsschritte ................................................................................... 4 2.3.1 Die Validierungsschritte welche zu einem Abbruch führen .................. 4 2.3.2 Die Validierungsschritte welche zu einem Fehler führen ..................... 4 2.3.3 Übersicht Validierungsschritte .............................................................. 5 3 Detailanforderungen ................................................................................................. 6 3.1 Programmaufbau ............................................................................................. 6 3.3 Die Ausgaben der Validierungsschritte ............................................................ 7 3.4 Textausgabe via message.properties .............................................................. 7 3.5 Command-Line Parameter ............................................................................... 8 3.5.1 Definitionen .......................................................................................... 8 3.5.2 Format .................................................................................................. 8 3.5.3 Beispiele ............................................................................................... 8 3.6 Konsolenausgabe ............................................................................................ 9 3.6.1 Definitionen .......................................................................................... 9 3.6.2 Format ................................................................................................ 10 3.6.3 Beispiele Konsolenausgabe ............................................................... 10 3.7 Log-Ausgabe .................................................................................................. 11 3.7.1 Definitionen ........................................................................................ 11 3.7.2 Format ................................................................................................ 11 3.7.3 Beispiele Log-Ausgabe ...................................................................... 12 4 Urheberrecht ........................................................................................................... 13 5 Systemvoraussetzungen ........................................................................................ 13 SIARD-Val_Spezifikation_v0.4.docx Bg/Km/Rc, 14.06.2012 Seite 1/13 1 Einleitung Für die Archivierung von relationalen Datenbanken hat das Schweizerische Bundesarchiv (BAR) das offene Format SIARD (Software Independent Archiving of Relational Databases) entwickelt. Die Spezifikation ist auf der Website des Bundesarchivs publiziert 1 und kann kostenlos heruntergeladen werden. Für die Validierung dieser SIARD-Datei soll eine Anwendung entwickelt werden, welche überprüft ob die Datei den inhaltlichen Vorgaben der Spezifikation entspricht. 1.1 Zweck des Dokuments Diese Spezifikation beschreibt und strukturiert die Anforderungen an die Applikation SIARD-Val und die für zur Nutzung erforderliche Voraussetzungen. Diese Spezifikation wird vom Auftraggeber und Auftragnehmer beidseitig als Grundlage für die Realisierung und Abnahme des zukünftigen Systems akzeptiert. 1.2 Nr. [1] [3] 1.3 Referenzierte und mitgeltende Dokumente Bezeichnung SIARD Formatspezifikation (Quelle: http://www.bar.admin.ch) SIARD-Val Anwendungshandbuch SIARD Allgemeine Anforderungen 2.1 Funktionale Anforderungen • • Status Bezeichnung Koordinationsstelle für die dauerhafte Archivierung elektronischer Unterlagen Software Independent Archiving of Relational Databases 2 • Datum Begriffe und Abkürzungen Abkürzung KOST • Version 1.? SIARD-Val liest eine SIARD-Datei und validiert die folgenden Einzelpunkte aus der SIARD Spezifikation. Die Resultate (inklusive Meldungen zu Inkonsistenzen oder Fehler) werden pro Schritt ausgegeben und in eine Validierungs-Logdatei geschrieben. Das Ergebnis der Gesamtvalidierung (korrekte/fehlerhafte SIARD-Datei) wird ebenfalls ausgegeben und im exit Status des Programms sichtbar, sodass die Validierung in eine automatisierte Verarbeitungskette eingebunden werden kann. Ausgabe exit Status: • 0 alles OK • 1 Fehlerhafte Angaben • 2 Validierung nicht bestanden Die einzelnen Validierungsschritte / Prüfungen werden nacheinander ausgeführt. Wo möglich, wird die Validierung auch bei Fehlern weiter fortgesetzt, um die Anzahl von Korrekturzyklen zu reduzieren. Es werden, auch bei Fehlern in einzelnen 1 Alle Informationen zum SIARD-Format sind auf http://www.bar.admin.ch/dienstleistungen/00823/00825/index.html?lang=de ersichtlich. SIARD-Val_Spezifikation_v0.4.docx Bg/Km/Rc, 14.06.2012 Seite 2/13 • 2.2 • • • • • • • • • Validierungsschritten, möglichst alle Validierungsschritte bis zum Ende durchlaufen. Nur die Prüfungen A) bis D) sind Fehler, die direkt zum Programmabbruch führen. Die Validierungsschritte / Prüfungen sind im Kapitel 0 (Die Validierungsschritte) ausführlich beschrieben. Nicht-funktionale Anforderungen SIARD-Val ist ein Command-Line (Konsolen) Tool. SIARD-Val ist in Java entwickelt. Die KOST verpflichtet sich, den Quellcode als Open Source unter die GPL3+Lizenz zu stellen und den SIP-Val damit der Öffentlichkeit quelloffen zur Verfügung zu stellen. Das Tool wird für die Microsoft Windows Umgebung entwickelt. Eine spätere Adaption an andere Betriebssysteme ist durch die Verwendung von Java möglich. Für besondere Aufgaben (ZIP-Entpacken, XML-Validierung) werden Externe Programme oder entsprechende Java-Frameworks eingesetzt. Diese Programme werden in Kapitel 4 (Urheberrecht) aufgeführt und müssen mit der GPL3-Lizenz kompatibel sein. Das Tool ist modular aufgebaut, damit ohne viel Aufwand ein oder mehrere weitere Validierungsmodule eingebaut werden können. Zur Schemavalidierung wird einerseits das in der SIARD-Datei hinterlegte Schema verwendet (dynamische Schemavalidierung). Anderseits wird auch das original xsd verwendet welches in SIARD-Val enthalten ist. Die Log-/Programmausgabe erlaubt die Verwendung des Tools in einer Prozesskette, d.h. das Ergebnis der einzelnen Validierung kann einfach ermittelt werden können. Die Konsolenausgabe begrenzt sich auf die Bezeichnung der Validierungsschritte (inklusive zugehöriges Testmodul), die Ergebnisse valid oder invalid, das Gesamtergebnis sowie die Pfade zum SIP und zur generierten Log-Datei. Alle zusätzlichen Informationen werden in der Log-Datei aufgeführt. SIARD-Val_Spezifikation_v0.4.docx Bg/Km/Rc, 14.06.2012 Seite 3/13 2.3 Die Validierungsschritte 2.3.1 Die Validierungsschritte welche zu einem Abbruch führen A Lesbarkeit Kann die SIARD-Datei gelesen werden? lesbare und nicht passwortgeschützte ZIP-Datei oder ZIP64-Datei unkomprimierte ZIP-Datei oder ZIP64-Datei B primäre Verzeichnisstruktur Besteht eine korrekte primäre Verzeichnisstruktur? [Name].siard/header und [Name].siard/content [Name].siard/[Name]/header und [Name].siard/[Name]/content Andere Ordner oder Dateien sind im Toplevel-Ordner verboten C Header-Validierung Ist der header-Ordner valid? metadata.xml valid zu metadata.xsd und beide vorhanden metadata.xml valid zu original metadata.xsd (zusätzliche Ordner oder Dateien wie z.B. metadata.xls sind im headerOrdner erlaubt) D Struktur-Validierung Stimmt die Struktur aus metadata.xml (folder) mit der Datei-Struktur von content überein? gleiche Struktur (z.B. schema0/table3 schema0/table3/tabe3.xsd und table3.xml) 2.3.2 Die Validierungsschritte welche zu einem Fehler führen E Spalten-Validierung Wurden die Angaben aus metadata.xml korrekt in die tableZ.xsd-Dateien übertragen? gleiche Spaltendefinitionen (Reihenfolge, Anzahl, Type, Nullable) F Zeilen-Validierung Wurden die Angaben aus metadata.xml korrekt in die tableZ.xsd-Dateien übertragen? gleiche Zeilenzahl (rows in metadata.xml = max = minOccurs in tableZ.xsd) 2 Wenn 0 bis ∞: Enthält tableZ.xml die gleiche Anzahl Zeilen wie in metadata.xml definiert? gleiche Zeilenzahl (rows in metadata.xml = Anzahl row in tableZ.xml) G Prüfsummen-Validierung Stimmt die Prüfsumme 3 in (messageDigest) mit jener über den Ordner content überein? Prüfalorithmus = MD5 oder Prüfalorithmus = SHA-1 content vor header im ZIP wenn nur Platzhalter MD5 steht 2 0 bis ∞ ist auch erlaubt, benötigt jedoch einen weiteren Validierungsschritt. 3 Bei alten SIARD-Dateien ist die Prüfsumme nicht korrekt enthalten; es steht lediglich "MD5" im Feld. SIARD-Val_Spezifikation_v0.4.docx Bg/Km/Rc, 14.06.2012 Seite 4/13 H Content-Validierung Sind die XML-Dateien im content valid zu ihrer Schema-Definition (XSDDateien)? tableZ.xml valid zu tableZ.xsd I SIARD-Erkennung Wird die SIARD-Datei als SIARD erkannt? Extension = .siard J Zusätzliche Primärdateien Enthält der content-Ordner Dateien oder Ordner die nicht in metadata.xml beschrieben sind 4? Andere Ordner oder Dateien sind im content-Ordner verboten K Constraint-Validierung Sind die vorgegebenen Constraints valid? Constraint-Verletzung 5 ausgeben 2.3.3 Übersicht Validierungsschritte ID A B C D E F G H I J K Modulname Lesbarkeit primäre Verzeichnisstruktur Header-Validierung Struktur-Validierung Spalten-Validierung Zeilen-Validierung Prüfsummen-Validierung Content-Validierung SIARD-Erkennung Zusätzliche Primärdateien Constraint-Validierung Wenn Resultat n.i.O. Abbruch Abbruch Abbruch Abbruch Fehler Fehler Fehler Fehler Fehler Fehler Fehler 4 Mit Ausnahme der recordZ.txt und recordZ.bin Dateien in den lobZ-Ordnern. 5 In Planung. Ziel ist es im 2013 erste Constraints validieren zu können. SIARD-Val_Spezifikation_v0.4.docx Bg/Km/Rc, 14.06.2012 Seite 5/13 3 Detailanforderungen 3.1 Programmaufbau Programmaufbau vonSIARD-Val als ch.kostceco.tools.siardval: Benutzer SIARD-Val Controller ruft die einzelnen Validierungsmodule in der entsprechenden Priorität auf und erstellt die Auswertung Alle Initialtests wie z.B. Java-Version ValidationAzip resources Modul A (Lesbarkeit) z.B. messages.properties ValidationBrimaryStructure logging Modul B (prim. Verzeichnisstruktur) z.B. Logger & messageConstants ValidationCheader service Modul C (Header-Validierung) allfällige Drittprogramme ValidationDstructure Modul D (Struktur-Validierung) die einzelnen Validierungsmodule rufen bei Bedarf diese Bundels direkt auf ValidationEcolumn Modul E (Spalten-Validierung) ValidationFrow Modul F (Zeilen-Validierung) ValidationGchecksum Modul G (Prüfsummen-Validierung) ValidationHcontent Modul H (Content-Validierung) ValidationIrecognition Modul I (SIARD-Erkennung) ValidationJsurplusFiles Modul J (Zusätzliche Primärdateien) ValidationKconstraint Modul K (Constraint-Validierung) SIARD-Val_Spezifikation_v0.4.docx Bg/Km/Rc, 14.06.2012 Seite 6/13 3.3 Die Ausgaben der Validierungsschritte Validierungsschritt A Lesbarkeit B primäre Verzeichnisstruktur C HeaderValidierung Konsole Log-Datei-Zusatz <stepergebnis> Kein zusätzlicher Output wenn valid ansonsten Fehlermeldung. Kein zusätzlicher Output wenn valid ansonsten Fehlermeldung. D StrukturValidierung E SpaltenValidierung F ZeilenValidierung G PrüfsummenValidierung H ContentValidierung I SIARDErkennung J Zusätzliche Primärdateien K ConstraintValidierung <stepergebnis> 3.4 <stepergebnis> <stepergebnis> <stepergebnis> <stepergebnis> <stepergebnis> <stepergebnis> <stepergebnis> <stepergebnis> <stepergebnis> Kein zusätzlicher Output wenn valid ansonsten Auflistung der Zeilennummer des jeweils übergeordneten Struktur-Elements in metadata.xml respektive der fehlenden Datei. Kein zusätzlicher Output wenn valid ansonsten Auflistung der betroffenen Dateinamen (inklusive Pfadangabe). Kein zusätzlicher Output wenn valid ansonsten Auflistung der betroffenen Spalten (inklusive Spaltendefinition). Kein zusätzlicher Output wenn valid ansonsten Auflistung der betroffenen Tabelle (inklusive Zeilen Differenz). Kein zusätzlicher Output wenn valid ansonsten Fehlermeldung. Kein zusätzlicher Output wenn valid ansonsten Auflistung der Zeilennummer des jeweils übergeordneten Struktur-Elements in tableZ.xml. Kein zusätzlicher Output wenn valid ansonsten Ausgabe der Extension. Kein zusätzlicher Output wenn valid ansonsten Auflistung der betroffenen Dateinamen (inklusive Pfadangabe). Kein zusätzlicher Output wenn valid ansonsten Auflistung der betroffenen Constraints (inklusive Detailangabe). Textausgabe via message.properties Da SIARD-Val bereits von der Alpha-Version an zweisprachig herausgegeben wird, sind folgende Punkte bei der Entwicklung von SIARD-Val zu beachten: • Text für die Ausgabe der Konsole und für die Log-Datei dürfen nicht direkt im Code stehen • MessageConstants ist das Bindeglied von Code zu messages.properties • messages.properties enthält allen Text in deutscher Sprache 6 • die Französische Übersetzung von messages.properties ist in fr_messages.properties 7 enthalten 6 Ausgabetexte dürfen nicht an anderen Orten definiert sein. 7 Die Französische Übersetzung wird erst kurz vor Veröffentlichung der Alpha-Version durch die KOST-Geschäftsstelle erstellt. SIARD-Val_Spezifikation_v0.4.docx Bg/Km/Rc, 14.06.2012 Seite 7/13 3.5 Command-Line Parameter 3.5.1 Definitionen Bestandteil <QUELLE> <DESTINATION> <PROGFOLDER> <PROGNAME> <siard> <log> 3.5.2 Beschreibung Pfadangabe der zu validierenden SIARD-Datei einschliesslich <siard> Pfadangabe zum Zielverzeichnis von <log> Pfadangabe zum Ordner, der den SIARD-Val (.java-File) enthält. siard-val Dateiname der SIARD-Datei. Beispiel: Northwind.siard Dateiname der generierten Log-Datei. Format: <siard>.validationlog.log. Beispiel: Northwind.siard.validationlog.log Format Java_? -jar <PROGFOLDER><PROGNAME>.jar_<QUELLE>_<DESTINATION> Anmerkung: • _ bedeutet Leerzeichen. • Die Parameter dürfen nur einmal auftreten. • Die Reihenfolge der Parameter darf nicht vertauscht werden. • ? bedeutet: der folgende Parameter oder die folgende Gruppierung ist optional. 3.5.3 Beispiele java –jar siard-val.jar c:/temp/Northwind.siard c:/logs/ SIARD-Val_Spezifikation_v0.4.docx Bg/Km/Rc, 14.06.2012 Seite 8/13 3.6 Konsolenausgabe 3.6.1 Definitionen Ausdruck <OUT> <TITEL> <FEHLER> <RESULTAT> <TOTAL> <QUELLE> <DESTINATION> <END> <valstep> <stepergebnis> <stepname> <siardpfad> <siard> <logpfad> <log> Beschreibung Ausgabe (auf Konsole oder in Log-Datei) SIARD-Validierung -> <siard> Ausgabe von Fehlermeldungen bei fehlerhaften Eingaben. Mögliche Werte: • Das Konfigurations-Verzeichnis konnte nicht erstellt werden. • Der als Logging-Ordner angegebene Pfad ist kein Verzeichnis oder existiert nicht. • In das als Logging-Ordner angegebene Verzeichnis kann nicht geschrieben werden (ev. fehlende Berechtigungen?). • Ein unbekannter Fehler ist aufgetreten. Details siehe LogDatei. • … Beinhaltet alle ermittelten Resultate der durchgeführten Validierungsschritte. Format: [<valstep>] = <stepergebnis> Gesamtergebnis der Validierung. Mögliche Werte: • TOTAL = Valid (wenn alle durchgeführten Validierungsschritte valid waren) • TOTAL = Invalid (andernfalls) Pfadangabe der zu validierenden SIARD-Datei einschliesslich der Datei. Format: SIARD = <siardpfad><siard>. Pfadangabe zum Zielverzeichnis der Log-Datei einschliesslich der Log-Datei. Format: Log = <logpfad><log>. Rückgabewert bei abgeschlossenen oder abgebrochenen Programmdurchlauf. Mögliche Werte: • Wenn <FEHLER> Rückgabe erfolgt oder <stepergebnis> von A, B, C oder D Invalid ergibt): Validierung abgebrochen. • Ansonsten: Validierung beendet. Bezeichnung eines Validierungsschrittes (zur Zeit A – K). Mögliche Werte: • Valid • Invalid (Test „<stepname>“ nicht bestanden) Siehe Kapitel 2.3.3, Spalte Bezeichnung (Modulname). Pfad zur SIARD-Datei. Beispiel: c:/temp/ Dateiname der SIARD-Datei. Beispiel: Northwind.siard Pfad zu der zu generierenden Log-Datei. Beispiel: c:/logs/ Dateiname der generierten Log-Datei. Format: <siard>.validationlog.log. Beispiel: c:/logs/Northwind.siard.validationlog.log SIARD-Val_Spezifikation_v0.4.docx Bg/Km/Rc, 14.06.2012 Seite 9/13 3.6.2 Format <OUT> = <TITEL>/*<FEHLER>/?(*(<RESULTAT>/)/<TOTAL>// <QUELLE>/<DESTINATION>)/<END> Anmerkung: • = bedeutet: Besteht aus… • / bedeutet: Zeilenumbruch. • * bedeutet: der folgende Parameter kann nicht oder mehrfach eingegeben werden. • ? bedeutet: der folgende Parameter oder die folgende Gruppierung ist optional. • Eine Gruppierung besteht aus mit () eingeklammerten Parametern. 3.6.3 Beispiele Konsolenausgabe Beispiel Programm-Abbruch (der Prüfungsschritt B in ergab Fehler) SIARD Validierung -> Northwind.siard [A] = Valid [B] = Invalid (Test "primaere Verzeichnisstruktur" nicht bestanden) TOTAL = Invalid SIARD C:\temp\Northwind.siard Log = C:\logs\Northwind.siard.validationlog.log Validierung abgebrochen. Beispiel Programm komplett durchgeführt SIARD Validierung -> Northwind.siard [A] = Valid [B] = Valid [C] = Valid [D] = Valid [E] = Valid [F] = Valid [G] = Valid [H] = Valid [I] = Invalid (Test "SIARD-Erkennung" nicht bestanden) [J] = Valid [K] = Valid TOTAL = Invalid SIARD C:\temp\Northwind.siard Log = C:\logs\Northwind.siard.validationlog.log Validierung beendet. SIARD-Val_Spezifikation_v0.4.docx Bg/Km/Rc, 14.06.2012 Seite 10/13 3.7 Log-Ausgabe Die Log-Ausgabe (der Inhalt der generierten Log-Datei) ist analog zur Konsolenausgabe mit der im Folgenden beschriebenen Erweiterung <LOGRESULTAT> strukturiert. 3.7.1 Definitionen Die Definitionen entsprechen derjenigen von Kapitel 3.5.1 (Definitionen). Einzig die zusätzlichen Ausdrücke sind nachfolgend definiert. Ausdruck Beschreibung <DETAILS> Liste der Test-Rückgabewerte. Mögliche Werte siehe Kapitel 3.3 (Die Ausgaben der Validierungsschritte). 3.7.2 Format <OUT> = <TITEL>/*<FEHLER>/?(*(<LOGRESULTAT>/)/<TOTAL>// <QUELLE>/<DESTINATION>)/<END> <LOGRESULTAT> = <RESULTAT>/*([<valstep>]--<DETAILS>/) Anmerkung: • = bedeutet: Besteht aus… • / bedeutet: Zeilenumbruch. • * bedeutet: der folgende Parameter kann nicht oder mehrfach eingegeben werden. • ? bedeutet: der folgende Parameter oder die folgende Gruppierung ist optional. • Eine Gruppierung besteht aus mit () eingeklammerten Parametern. SIARD-Val_Spezifikation_v0.4.docx Bg/Km/Rc, 14.06.2012 Seite 11/13 3.7.3 Beispiele Log-Ausgabe Beispiel Programm komplett durchgeführt SIARD Validierung -> Northwind.siart [A] = Valid [B] = Valid [C] = Valid [D] = Valid [E] = Valid [F] = Valid [G] = Valid [H] = Valid [I] = Invalid (Test "SIARD-Erkennung" nicht bestanden) [I] -- Die SIARD-Datei wurde nicht als solche erkannt, weil sie keine .siard Extension hat. [J] = Valid [K] = Valid TOTAL = Invalid SIARD C:\temp\Northwind.siart Log = C:\logs\Northwind.siart.validationlog.log Validierung beendet. SIARD-Val_Spezifikation_v0.4.docx Bg/Km/Rc, 14.06.2012 Seite 12/13 4 Urheberrecht SIARD-Val ist eine Entwicklung der KOST. Alle Rechte liegen bei der KOST. SIARDVal wurde im 2012 durch die KOST unter der GNU General Public License v3+ veröffentlicht. Notice: This product includes software developed by the Apache Software Foundation (http://www.apache.org/). SIARD-Val stützt sich auf folgende unveränderte Komponenten anderer Hersteller, welche direkt im Quellcode von SIARD-Val eingebunden sind: Drittprogramm / -Komponente Version Apache Commons http://commons.apache.org/ - commons-collections-3.2.1.jar - commons-configuration-1.6.jar - commons-digester-1.8.jar - commons-lang-2.4.jar - commons-logging-1.1.1.jar Apache log4j Apache Xalan-Java Apache Xerces Lizenz Apache License 2.0 3.2.1 1.6 1.8 2.4 1.1.1 http://logging.apache.org/log4j/ 1.2.12 Apache License 2.0 http://xml.apache.org/xalan-j/ 2.7.0 Apache License 2.0 http://xerces.apache.org/ 2.7.1 Apache License 2.0 Junit 4.4 http://www.junit.org/ 4.4 CPL v1.0 Spring Framework API http://static.springsource.org/spring/docs/3.0.x/api/ 3.0.0 Apache License 2.0 zip64 GPL v2+ Lizenz http://sourceforge.net/projects/zip64file/ 1.02 Die Benutzer von SIARD-Val sind gehalten, die Lizenzbestimmungen all dieser Komponenten zu befolgen, welche im SIARD-Val-Verzeichnis license vorliegen. 5 Systemvoraussetzungen Microsoft Windows 98, ME, NT, 2000, XP, VISTA oder Windows 7 Mindestens 128 MB RAM (512 MB oder mehr empfohlen) Mindestens 20 GB Festplattenspeicher Java Runtime Environment (JRE) Version 6 oder neuer (Download: http://www.java.com) SIARD-Val_Spezifikation_v0.4.docx Bg/Km/Rc, 14.06.2012 Seite 13/13