FID Metadaten Streaming implementiert burst mode streaming, d.h. liest ein XML-Dokument als Datenstrom von Standardeingabe und materialisiert Teilbäume des Dokuments, deren Wurzel über den Option --qname ausgewählt werden. Durch diese Technik lassen sich große XML-Dateien ohne nennenswerte Belastung des Arbeitsspeichers verarbeiten.
Die Kommandozeilenanwendung wird mit Maven übersetzt und paketiert. Der Schritt mvn package erzeugt eine .jar-Datei im Verzeichnis target/ die alle Abhängigkeiten (Saxon HE, picacli) enthält.
Stichprobe erstellen (stream-sample)
Für jeden meterialisierten Teilbaum wird anhand der als Parameter übergebenen Wahrscheinlichkeit entschieden, ob er im Datenstrom verbleibt oder nicht.
Beispiel: Stichprobe von ca. 500 aus einer Menge von 50.000 MARC21-Datensätzen ziehen
Die Wahrscheinlichkeit von 0.01 (= 500 / 50.000) sorgt dafür, dass ungefähr 500 Datensätze ausgewählt werden.
java -jar streaming-XXX.jar stream-sample --probability=0.01 --qname={http://www.loc.gov/MARC21/slim}record < /pfad/zur/eingabe > /pfad/zur/ausgabe
Transformieren (stream-transform)
Die materialisierten Teilbäume werden durch eine als Parameter übergebene XSLT Transformation transformiert und zurück in den Ausgabestrom (Standardausgabe) geschrieben.
java -jar streaming-XXX.jar stream-transform --qname={http://www.loc.gov/MARC21/slim}record stylesheet.xsl < /pfad/zur/eingabe > /pfad/zur/ausgabe
Validieren mit XML Schema (stream-validate-xsd)
Die materialisierten Teilbäume werden mit einem als Parameter übergebene XML Schema validiert. Validierungsfehler werden an das Ende des Teilbaums geschrieben.
java -jar streaming-XXX.jar stream-validate-xsd --qname={http://www.loc.gov/MARC21/slim}record MARC21slim.xsd < /pfad/zur/eingabe > /pfad/zur/ausgabe
Zählen (stream-count)
Die materialisierten Teilbäume werden gezählt.
java -jar streaming-XXX.jar stream-count --qname={http://www.loc.gov/MARC21/slim}record < /pfad/zur/eingabe