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-15 14:04:04 +01:00
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+
2021-03-02 13:32:12 +01:00
* [cURL ](https://curl.se ), xmllint
2021-01-14 16:51:39 +01:00
## Installation
1. Git Repository klonen
```sh
git clone https://github.com/opencultureconsulting/noah.git
cd noah
```
2021-03-02 13:32:12 +01:00
2. [metha 0.2.20 ](https://github.com/miku/metha/releases/tag/v0.2.20 )
2021-01-14 16:51:39 +01:00
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-03-02 13:32:12 +01:00
3. [Task 3.2.2 ](https://github.com/go-task/task/releases/tag/v3.2.2 )
2021-01-14 16:51:39 +01:00
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
```
2021-03-02 13:32:12 +01:00
4. Install task ausführen, um [OpenRefine 3.4.1 ](https://github.com/OpenRefine/OpenRefine/releases/tag/3.4.1 ) und [openrefine-client 0.3.10 ](https://github.com/opencultureconsulting/openrefine-client/releases/tag/v0.3.10 ) herunterzuladen
```sh
task install
```
2021-01-14 16:51:39 +01:00
## Nutzung
2021-01-20 15:48:54 +01:00
* Vorab ggf. ulimit erhöhen, um Abbruch durch "too many open files" zu vermeiden
```
2021-03-02 13:32:12 +01:00
ulimit -n 20000
2021-01-20 15:48:54 +01:00
```
2021-03-02 13:32:12 +01:00
* Alle Datenquellen (parallelisiert)
2021-01-14 16:51:39 +01:00
2021-01-15 15:53:58 +01:00
```
2021-01-19 10:50:55 +01:00
task
2021-01-15 15:53:58 +01:00
```
2021-01-14 16:51:39 +01:00
2021-03-02 13:32:12 +01:00
* Eine Datenquelle
```
task siegen:main
```
* Zwei Datenquellen (parallelisiert)
2021-01-14 16:51:39 +01:00
2021-01-15 15:53:58 +01:00
```
2021-03-02 13:32:12 +01:00
task --parallel siegen:main wuppertal:main
2021-01-15 15:53:58 +01:00
```
2021-01-14 16:51:39 +01:00
2021-03-02 13:32:12 +01:00
* Trotzdem Verarbeitung starten, auch wenn Checksummenprüfung ergibt, dass nichts zu tun wäre
2021-01-19 10:50:55 +01:00
2021-03-02 13:32:12 +01:00
```sh
task siegen:main --force
2021-01-19 10:50:55 +01:00
```
2021-03-02 13:32:12 +01:00
* Zur Fehlerbehebung: Befehle ausgeben, aber nicht ausführen
```sh
task siegen:main --dry --verbose --force
2021-01-19 10:50:55 +01:00
```
2021-03-02 13:32:12 +01:00
2021-01-18 19:59:44 +01:00
* 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
2021-03-02 13:32:12 +01:00
* Der Workflow einer Datenquelle wird im jeweiligen spezifischen `Taskfile.yml` definiert
* Beispiel: [siegen/Taskfile.yml ](siegen/Taskfile.yml )
* Die im Workflow verwendeten OpenRefine-Transformationsregeln liegen im Unterordner `config` der jeweiligen Datenquelle
* Beispiel: [siegen/config/hbz.json ](siegen/config/hbz.json )
* Allgemeine Tasks (z.B. Validierung) werden im [Taskfile.yml ](Taskfile.yml ) des Hauptordners definiert.
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.