2021-01-14 16:51:39 +01:00
# https://taskfile.dev
version : '3'
tasks :
default :
2021-01-19 12:30:46 +01:00
desc : OPUS Siegen
2021-01-14 16:51:39 +01:00
deps : [ harvest]
cmds :
- task : refine
2021-01-19 13:32:45 +01:00
- task : check
- task : split
- task : validate
- task : zip
- task : diff
2021-01-14 16:51:39 +01:00
harvest :
dir : data/siegen/harvest
cmds :
- METHA_DIR=$PWD metha-sync --format xMetaDissPlus https://dspace.ub.uni-siegen.de/oai/request
- METHA_DIR=$PWD metha-cat --format xMetaDissPlus https://dspace.ub.uni-siegen.de/oai/request > siegen.xml
refine :
dir : data/siegen/refine
2021-01-19 10:50:55 +01:00
ignore_error : true # provisorisch verwaisten Java-Prozess bei Exit vermeiden https://github.com/go-task/task/issues/141
2021-01-14 16:51:39 +01:00
env :
PORT : 3334
2021-01-19 10:50:55 +01:00
RAM : 4G
2021-01-14 16:51:39 +01:00
PROJECT : siegen
cmds :
2021-01-15 14:04:04 +01:00
# OpenRefine starten
2021-01-14 16:51:39 +01:00
- $OPENREFINE -v warn -p $PORT -m $RAM -d $PWD > openrefine.log 2>&1 &
- timeout 30s bash -c "until curl -s http://localhost:$PORT | cat | grep -q -o OpenRefine ; do sleep 1; done"
# Import (erfordert absoluten Pfad zur XML-Datei)
- $OPENREFINE_CLIENT -P $PORT --create "$(readlink -e ../harvest/siegen.xml)" --recordPath Records --recordPath Record --storeEmptyStrings false --trimStrings true --projectName $PROJECT
2021-01-15 14:04:04 +01:00
# Vorverarbeitung: Identifier in erste Spalte; nicht benötigte Spalten (ohne differenzierende Merkmale) löschen; verbleibende Spalten umbenennen (Pfad entfernen)
2021-01-14 16:51:39 +01:00
- $OPENREFINE_CLIENT -P $PORT --apply ../../../rules/siegen/vorverarbeitung.json $PROJECT
# URNs extrahieren: Dubletten entfernen und verschiedene URNs zusammenführen
- $OPENREFINE_CLIENT -P $PORT --apply ../../../rules/siegen/urn.json $PROJECT
2021-01-15 14:04:04 +01:00
# Fehlende Direktlinks aus Format METS ergänzen: Wenn keine Angabe in ddb:transfer, dann zusätzlich METS Format abfragen und daraus METS Flocat extrahieren
2021-01-14 16:51:39 +01:00
- $OPENREFINE_CLIENT -P $PORT --apply ../../../rules/siegen/direktlinks.json $PROJECT
# Datensätze ohne Direktlink auf ein PDF löschen
- $OPENREFINE_CLIENT -P $PORT --apply ../../../rules/siegen/nur-mit-pdf.json $PROJECT
# Aufteilung dc:subject in ddc und topic
- $OPENREFINE_CLIENT -P $PORT --apply ../../../rules/siegen/ddc-topic.json $PROJECT
# Standardisierte Rechteangaben (Canonical Name aus CC Links in dc:rights)
- $OPENREFINE_CLIENT -P $PORT --apply ../../../rules/siegen/cc.json $PROJECT
2021-01-15 14:04:04 +01:00
# Internet Media Type aus ddb:transfer ableiten: Mapping manuell nach Apache http://svn.apache.org/viewvc/httpd/httpd/trunk/docs/conf/mime.types?view=markup
2021-01-14 16:51:39 +01:00
- $OPENREFINE_CLIENT -P $PORT --apply ../../../rules/siegen/mime.json $PROJECT
2021-01-15 14:04:04 +01:00
# DOIs aus Format OAI_DC ergänzen: Für alle Datensätze zusätzlich DC Format abfragen und daraus dc:identifier mit Typ doi extrahieren
2021-01-14 16:51:39 +01:00
- $OPENREFINE_CLIENT -P $PORT --apply ../../../rules/siegen/doi.json $PROJECT
2021-01-15 14:04:04 +01:00
# Anreicherung HT-Nummer via lobid-resources: Bei mehreren URNs ODER-Suche; bei mehreren Treffern wird nur der erste übernommen
2021-01-14 16:51:39 +01:00
- $OPENREFINE_CLIENT -P $PORT --apply ../../../rules/siegen/hbz.json $PROJECT
2021-01-15 14:04:04 +01:00
# Sortierung mods:nonSort für das erste Element in dc:title
2021-01-14 16:51:39 +01:00
- $OPENREFINE_CLIENT -P $PORT --apply ../../../rules/siegen/nonsort.json $PROJECT
# DINI Publikationstypen aus dc:type extrahieren
- $OPENREFINE_CLIENT -P $PORT --apply ../../../rules/siegen/dini.json $PROJECT
2021-01-15 14:04:04 +01:00
# Visual Library doctype aus dc:type: Wenn thesis:level == thesis.habilitation dann doctype oaHabil
2021-01-14 16:51:39 +01:00
- $OPENREFINE_CLIENT -P $PORT --apply ../../../rules/siegen/doctype.json $PROJECT
2021-01-15 14:04:04 +01:00
# Datenstruktur für Templating vorbereiten: Pro Zeile ein Datensatz und leere Zeilen löschen
2021-01-14 16:51:39 +01:00
- $OPENREFINE_CLIENT -P $PORT --apply ../../../rules/siegen/join.json $PROJECT
2021-01-15 14:04:04 +01:00
# Export in METS:MODS mit Templating
2021-01-14 16:51:39 +01:00
- |
$OPENREFINE_CLIENT -P $PORT --export --template "$(< ../../../rules/siegen/template.txt)" --rowSeparator "
<!-- SPLIT -->
" --output siegen.txt $PROJECT
2021-01-19 17:29:00 +01:00
# Statistik zu Laufzeit und Ressourcenverbrauch
- ps -o start,etime,%mem,%cpu,rss -p $(lsof -t -i:$PORT)
2021-01-15 14:04:04 +01:00
# OpenRefine beenden
2021-01-19 17:29:00 +01:00
- PID=$(lsof -t -i:$PORT); kill $PID; while ps -p $PID > /dev/null; do sleep 1; done
# OpenRefine-Projekt für Debugging archivieren
- tar cfz siegen.openrefine.tar.gz -C $(grep -l siegen *.project/metadata.json | cut -d '/' -f 1) .
# Temporäre Dateien löschen
- rm -rf ./*.project* && rm -f workspace.json
2021-01-14 16:51:39 +01:00
sources :
2021-01-19 13:32:45 +01:00
# wenn "dir:" für task gesetzt ist, dann relative Links ausgehend von dir
2021-01-14 16:51:39 +01:00
- ../harvest/siegen.xml
- ../../../rules/siegen/*.json
- ../../../rules/siegen/template.txt
2021-01-19 17:29:00 +01:00
#TODO - ../../../rules/common/*.json
2021-01-14 16:51:39 +01:00
generates :
2021-01-19 17:29:00 +01:00
- openrefine.log
2021-01-14 16:51:39 +01:00
- siegen.txt
2021-01-19 17:29:00 +01:00
- siegen.openrefine.tar.gz
2021-01-14 16:51:39 +01:00
2021-01-19 13:32:45 +01:00
check :
cmds :
# Tasks mit ":" sind für alle Datenquellen gleich in Taskfile.yml definiert
- task : : check
vars : {PROJECT : "siegen" , MINIMUM : "1250" }
sources :
# wenn "dir:" für task nicht gesetzt ist, dann relative Links ausgehend von Taskfile.yml
- data/siegen/refine/openrefine.log
- data/siegen/refine/siegen.txt
split :
cmds :
- task : : split
vars : {PROJECT : "siegen" }
sources :
- data/siegen/refine/siegen.txt
generates :
- data/siegen/split/*.xml
validate :
cmds :
- task : : validate
vars : {PROJECT : "siegen" }
sources :
- data/siegen/split/*.xml
generates :
- data/siegen/validate.log
zip :
cmds :
- task : : zip
vars : {PROJECT : "siegen" }
sources :
- data/siegen/split/*.xml
generates :
- data/siegen/siegen_{{.DATE}}.zip
diff :
cmds :
- task : : diff
vars : {PROJECT : "siegen" }
sources :
- data/siegen/split/*.xml
generates :
- data/siegen/diff.log
2021-01-18 19:59:44 +01:00
linkcheck :
2021-01-19 12:30:46 +01:00
desc : OPUS Siegen links überprüfen
2021-01-18 19:59:44 +01:00
cmds :
2021-01-19 12:30:46 +01:00
- task : : linkcheck
vars : {PROJECT : "siegen" }
2021-01-19 13:32:45 +01:00
sources :
- data/siegen/split/*.xml
generates :
- data/siegen/linkcheck.log
2021-01-18 19:59:44 +01:00
2021-01-14 16:51:39 +01:00
delete :
2021-01-19 12:30:46 +01:00
desc : OPUS Siegen cache löschen
2021-01-14 16:51:39 +01:00
cmds :
2021-01-19 12:30:46 +01:00
- task : : delete
vars : {PROJECT : "siegen" }