noah/README.md

140 lines
4.2 KiB
Markdown
Raw Normal View History

2021-01-14 16:51:39 +01:00
# Datenintegration für noah.nrw
Harvesting von OAI-PMH-Schnittstellen und Transformation in METS/MODS für das Portal [noah.nrw](https://noah.nrw/)
2021-01-15 15:53:58 +01:00
**:warning: Dies ist ein Prototyp für die Beta-Version des Portals.**
2021-01-14 16:51:39 +01:00
## Datenfluss
2021-01-14 16:54:03 +01:00
![Datenflussdiagramm](flowchart.svg)
2021-01-14 16:51:39 +01:00
## Verwendete Tools
* Harvesting (mit Cache): [metha](https://github.com/miku/metha/)
* Transformation: [OpenRefine](https://github.com/OpenRefine/OpenRefine) und [openrefine-client](https://github.com/opencultureconsulting/openrefine-client)
2021-01-15 15:53:58 +01:00
* :warning: Für den Produktivbetrieb ist der Einsatz von [metafacture](https://github.com/metafacture) geplant.
2021-01-14 16:51:39 +01:00
* Task Runner: [Task](https://github.com/go-task/task)
## Systemvoraussetzungen
* GNU/Linux (getestet mit Fedora 32)
* JAVA 8+
## Installation
1. Git Repository klonen
```sh
git clone https://github.com/opencultureconsulting/noah.git
cd noah
```
2. [OpenRefine 3.4.1](https://github.com/OpenRefine/OpenRefine/releases/tag/3.4.1) (benötigt JAVA 8+)
```sh
# in Unterverzeichnis openrefine installieren
2021-01-14 16:51:39 +01:00
wget -O openrefine.tar.gz https://github.com/OpenRefine/OpenRefine/releases/download/3.4.1/openrefine-linux-3.4.1.tar.gz
mkdir -p openrefine
tar -xzf openrefine.tar.gz -C openrefine --strip 1 && rm openrefine.tar.gz
# automatisches Starten des Browsers abschalten
2021-01-14 16:51:39 +01:00
sed -i '$ a JAVA_OPTIONS=-Drefine.headless=true' "openrefine/refine.ini"
# Zeitraum für automatisches Speichern von 5 Minuten auf 25 Stunden erhöhen
2021-01-14 16:51:39 +01:00
sed -i 's/#REFINE_AUTOSAVE_PERIOD=60/REFINE_AUTOSAVE_PERIOD=1440/' "openrefine/refine.ini"
```
2021-01-15 15:53:58 +01:00
2021-01-14 16:51:39 +01:00
3. [openrefine-client 0.3.10](https://github.com/opencultureconsulting/openrefine-client/releases/tag/v0.3.10)
```sh
# in Unterverzeichnis openrefine installieren
2021-01-14 16:51:39 +01:00
mkdir -p openrefine
wget -O openrefine/openrefine-client https://github.com/opencultureconsulting/openrefine-client/releases/download/v0.3.10/openrefine-client_0-3-10_linux
chmod +x openrefine/openrefine-client
```
2021-01-15 15:53:58 +01:00
2021-01-14 16:51:39 +01:00
4. [metha 0.2.20](https://github.com/miku/metha/releases/tag/v0.2.20)
2021-01-15 15:53:58 +01:00
a) RPM-basiert (Fedora, CentOS, SLES, etc.)
2021-01-14 16:51:39 +01:00
```sh
wget https://github.com/miku/metha/releases/download/v0.2.20/metha-0.2.20-0.x86_64.rpm
sudo dnf install ./metha-0.2.20-0.x86_64.rpm && rm metha-0.2.20-0.x86_64.rpm
```
2021-01-15 15:53:58 +01:00
b) DEB-basiert (Debian, Ubuntu etc.)
```sh
2021-01-14 16:51:39 +01:00
wget https://github.com/miku/metha/releases/download/v0.2.20/metha_0.2.20_amd64.deb
sudo apt install ./metha_0.2.20_amd64.deb && rm metha_0.2.20_amd64.deb
```
2021-01-15 15:53:58 +01:00
2021-01-14 16:51:39 +01:00
5. [Task 3.2.2](https://github.com/go-task/task/releases/tag/v3.2.2)
2021-01-15 15:53:58 +01:00
a) RPM-basiert (Fedora, CentOS, SLES, etc.)
2021-01-14 16:51:39 +01:00
```sh
wget https://github.com/go-task/task/releases/download/v3.2.2/task_linux_amd64.rpm
sudo dnf install ./task_linux_amd64.rpm && rm task_linux_amd64.rpm
```
2021-01-15 15:53:58 +01:00
b) DEB-basiert (Debian, Ubuntu etc.)
```sh
2021-01-14 16:51:39 +01:00
wget https://github.com/go-task/task/releases/download/v3.2.2/task_linux_amd64.deb
sudo apt install ./task_linux_amd64.deb && rm task_linux_amd64.deb
```
## Nutzung
* Vorab ggf. ulimit erhöhen, um Abbruch durch "too many open files" zu vermeiden
```
ulimit -n 10000
```
* Alle Datenquellen harvesten, transformieren und validieren (parallelisiert)
2021-01-14 16:51:39 +01:00
2021-01-15 15:53:58 +01:00
```
task
2021-01-15 15:53:58 +01:00
```
2021-01-14 16:51:39 +01:00
* Eine Datenquelle harvesten, transformieren und validieren
2021-01-14 16:51:39 +01:00
2021-01-15 15:53:58 +01:00
```
task siegen:default
```
2021-01-14 16:51:39 +01:00
* Zwei Datenquellen harvesten, transformieren und validieren (parallelisiert)
```
task --parallel siegen:default wuppertal:default
```
* Links einer Datenquelle überprüfen
```
task siegen:linkcheck
```
2021-01-14 16:51:39 +01:00
* Cache einer Datenquelle löschen
2021-01-15 15:53:58 +01:00
```
task siegen:delete
```
2021-01-14 16:51:39 +01:00
* Verfügbare Tasks auflisten
2021-01-15 15:53:58 +01:00
```
task --list
```
2021-01-14 16:51:39 +01:00
## Konfiguration
* Workflow für die jeweilige Datenquelle in [tasks](tasks)
2021-01-14 16:51:39 +01:00
* Beispiel: [tasks/siegen.yml](tasks/siegen.yml)
* OpenRefine-Transformationsregeln in [rules](rules)
2021-01-14 16:51:39 +01:00
* Beispiel: [rules/siegen/hbz.json](rules/siegen/hbz.json)
* Allgemeine Tasks (z.B. Validierung) in [Taskfile.yml](Taskfile.yml)
2021-01-14 16:51:39 +01:00
## OAI-PMH Data Provider
2021-01-14 16:54:03 +01:00
Für die Bereitstellung der transformierten Daten wird der dateibasierte OAI-PMH Data Provider [oai_pmh](https://github.com/opencultureconsulting/oai_pmh) genutzt. Installations- und Nutzungshinweise sind dort zu finden.