Vorbereitung Seminar 18.11.

This commit is contained in:
Felix Lohmeier 2016-11-17 19:04:18 +01:00
parent b953a8f069
commit 2aa315afec
2 changed files with 55 additions and 2 deletions

View File

@ -17,5 +17,5 @@ Inhalte:
Beiträge der Studierenden in den Lerntagebüchern:
* [Noch ein paar kleine Übungen zum warm werden mit OpenRefine](https://dennislerntnichtaus.wordpress.com/2016/11/08/noch-ein-paar-kleine-uebungen-zum-warm-werden-mit-openrefine/)
* [Datentransformation mit OpenRefine Teil 0](https://xyopendiscovery.wordpress.com/2016/11/08/datentransformation-mit-openrefine-teil-0/) und [Datentransformation: Transform… // Remove // Move column to …](https://xyopendiscovery.wordpress.com/2016/11/14/datentransformation-transform-remove-move-column-to/)
* [Datentransformation mit OpenRefine Teil 0](https://xyopendiscovery.wordpress.com/2016/11/08/datentransformation-mit-openrefine-teil-0/) und [Datentransformation: Transform… // Remove // Move column to …](https://xyopendiscovery.wordpress.com/2016/11/14/datentransformation-transform-remove-move-column-to/) und [Praxis “ yi-壹 ” ♥ Records bilden](https://xyopendiscovery.wordpress.com/2016/11/15/1-praxis-%e5%a3%b9-%e2%99%a5/)
* [Zwischenstand Bibliothekskatalog](https://lenaentdeckt.wordpress.com/2016/11/13/zwischenstand-bibliothekskatalog/) und [Datentransformation mit OpenRefine](https://lenaentdeckt.wordpress.com/2016/11/13/datentransformation-mit-openrefine/)

View File

@ -1 +1,54 @@
# 7.9 Automatisierung
# 7.9 Automatisierung
Die Systemarchitektur von OpenRefine macht es möglich, die Anwendung nicht nur über die grafische Oberfläche, sondern auch über eine API "fernzusteuern". Im Punkt zur Systemarchitektur in der [Dokumentation für Entwickler](https://github.com/OpenRefine/OpenRefine/wiki/Documentation-For-Developers) heißt es:
>"And it's possible to make the server-side scriptable from the command line."
Das machen wir uns zunutze. Die [HTTP-API von OpenRefine](https://github.com/OpenRefine/OpenRefine/wiki/OpenRefine-API) kann theoretisch auch direkt angesprochen werden, aber da sie nur rudimentär dokumentiert ist, nutzen wir einen der verschiedenen Clients, die andere schon für OpenRefine entwickelt haben. Es gibt Clients in Python, Ruby, node.js und für R. Am ausgereiftesten ist der [Python-Client von Paul Makepeace](https://github.com/PaulMakepeace/refine-client-py/).
Der Client kann ebenso wie OpenRefine lokal installiert werden. Um die Installation und Bedienung zu vereinfachen, habe ich einen Docker-Container gebaut (vgl. [Repository felixlohmeier/openrefine in Docker Hub](https://hub.docker.com/r/felixlohmeier/openrefine/)).
## Aufgabe 1: Starten Sie den Python-Client und geben Sie eine Liste der Projekte aus
Hinweise:
* Die Bedienung ist im Abschnitt "**batch processing with python-client**" im [Repository in Docker Hub](https://hub.docker.com/r/felixlohmeier/openrefine/)) beschrieben. Schauen Sie sich die dort gelisteten Docker-Startbefehle an und wandeln Sie diese so ab, dass diese mit dem in [Kapitel 6.3](https://felixlohmeier.gitbooks.io/seminar-wir-bauen-uns-einen-bibliothekskatalog/content/06_3_openrefine_starten_und_daten_laden.html) beschriebenen Docker-Startbefehl zusammen passen.
## Lösung
* Server starten: {%s%}sudo docker run --rm --name=refine-server -p 8888:3333 -v /home/stud/refine:/data felixlohmeier/openrefine:2.6rc1 -i 0.0.0.0 -m 3G -d /data{%ends%}
* Python-Client starten: {%s%}docker run --rm --link refine-server -v stud/refine:/data felixlohmeier/openrefine-client-py{%ends%}
## Aufgabe 2: Wenden Sie die in Kap. 7.3 gespeicherten Transformationsregeln auf ein neues Projekt an
Hinweise:
* Erstellen Sie ein neues Projekt auf gewohnte Weise (vgl. [Kapitel 6.3](https://felixlohmeier.gitbooks.io/seminar-wir-bauen-uns-einen-bibliothekskatalog/content/06_3_openrefine_starten_und_daten_laden.html), Aufgabe 2)
* Nutzen Sie entweder Ihre selbst gespeicherten Transformationsregeln aus [Kapitel 7.3](https://felixlohmeier.gitbooks.io/seminar-wir-bauen-uns-einen-bibliothekskatalog/content/07_3_fuer_jedes_marc-feld_eine_spalte.html) oder die aus der Datei [07_3.json](https://felixlohmeier.gitbooks.io/seminar-wir-bauen-uns-einen-bibliothekskatalog/content/openrefine/07_3.json). Speichern Sie die Transformationsregeln in einer Datei auf dem Webserver, z.B. mit ```nano``` (vgl. [Kapitel 3.5](https://felixlohmeier.gitbooks.io/seminar-wir-bauen-uns-einen-bibliothekskatalog/content/03_5_uebung_text_ueber_die_konsole_erstellen.html))
## Lösung
...
## Aufgabe 3: Exportieren Sie mit dem Python-Client die Daten aus einem Projekt als TSV
Hinweise:
* Auch der dafür notwendige Befehl ist im [Repository in Docker Hub](https://hub.docker.com/r/felixlohmeier/openrefine/)) beschrieben.
## Lösung
..
## Aufgabe 4: Schreiben Sie ein Shell-Script, dass Server und Client startet, die Transformation durchführt und dann die Daten als TSV exportiert
Hinweise:
* Schauen Sie sich die Grundlagen für Shell-Scripte in [Kapitel 4.4](https://felixlohmeier.gitbooks.io/seminar-wir-bauen-uns-einen-bibliothekskatalog/content/04_4_download_der_metadaten.html), Aufgabe 3 nochmal an.
* Der Docker-Container mit dem Server muss vollständig gestartet sein, bevor Sie den Client starten können. Daher sollten Sie eine gewisse Wartezeit einbauen, z.B. mit dem Befehl ```sleep 15```
* Verwenden Sie ein neues Projekt für Ihre Tests. Wenn Sie Transformationsregeln ein zweites Mal auf ein Projekt anwenden, dann laufen die Transformationen auf den bereits transformierten Daten ab. Das führt bestimmt zu unerwünschten Ergebnissen.
## Lösung
...