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/ )
## Datenfluss
![Datenflussdiagramm ](/home/felix/git/noah/flowchart.svg )
## 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 )
* 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
# download OpenRefine
wget -O openrefine.tar.gz https://github.com/OpenRefine/OpenRefine/releases/download/3.4.1/openrefine-linux-3.4.1.tar.gz
# install OpenRefine in subdirectory openrefine
mkdir -p openrefine
tar -xzf openrefine.tar.gz -C openrefine --strip 1 & & rm openrefine.tar.gz
# do not try to open OpenRefine in browser
sed -i '$ a JAVA_OPTIONS=-Drefine.headless=true' "openrefine/refine.ini"
# set autosave period from 5 minutes to 25 hours
sed -i 's/#REFINE_AUTOSAVE_PERIOD=60/REFINE_AUTOSAVE_PERIOD=1440/' "openrefine/refine.ini"
```
3. [openrefine-client 0.3.10 ](https://github.com/opencultureconsulting/openrefine-client/releases/tag/v0.3.10 )
```sh
# install openrefine-client in subdirectory openrefine
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
```
4. [metha 0.2.20 ](https://github.com/miku/metha/releases/tag/v0.2.20 )
a) RPM-basiert (Fedora, CentOS, SLES, etc.)
```sh
# download and install rpm package
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
```
b) DEB-basiert (Debian, Ubuntu etc.)
```sh
# download and install deb package
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
```
5. [Task 3.2.2 ](https://github.com/go-task/task/releases/tag/v3.2.2 )
a) RPM-basiert (Fedora, CentOS, SLES, etc.)
```sh
# download and install rpm package
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
```
b) DEB-basiert (Debian, Ubuntu etc.)
```sh
# download and install deb package
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
* Alle Datenquellen harvesten und transformieren (parallelisiert)
```
task default
```
* Eine Datenquelle harvesten und transformieren
```
task siegen:default
```
* Cache einer Datenquelle löschen
```
task siegen:delete
```
* Verfügbare Tasks auflisten
```
task --list
```
## Konfiguration
* Umgebungsvariablen in [Taskfile.yml ](Taskfile.yml )
* Workflow für die Datenquellen in [tasks ](tasks )
* Beispiel: [tasks/siegen.yml ](tasks/siegen.yml )
* Transformationsregeln in [rules ](rules )
* Beispiel: [rules/siegen/hbz.json ](rules/siegen/hbz.json )
## OAI-PMH Data Provider
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.