summerschool-openrefine/weitere-anwendungsfalle/nachlasse-aus-kalliope-via-...

90 lines
4.8 KiB
Markdown
Raw Permalink Normal View History

2017-07-28 19:05:18 +02:00
# Nachlässe aus Kalliope via SRU
In Kalliope sind Nachlässe katalogisiert, die auch im SLUB-Katalog angezeigt werden sollen. Hierzu sollen die Metadaten mittels der von Kalliope bereitgestellten SRU-Schnittstelle prozessiert werden.
Ausgangsdaten: MODS/XML über SRU-Schnittstelle
Ziel: Transformation in TSV mit Spaltenbezeichnungen gemäß [finc-Schema](https://github.com/finc/index/blob/master/schema.xml)
## Abfrage über die SRU-Schnittstelle
Die URL zur Abfrage der SRU-Schnittstelle lautet:
```
http://kalliope-verbund.info/sru?version=1.2&operation=searchRetrieve&query=ead.genre="Nachlass"+AND+ead.repository.isil="DE-14"&recordSchema=mods
```
Die Software MarcEdit bietet mit dem Tool "Z39.50/SRU Client" eine Möglichkeit Daten von SRU-Schnittstellen herunterzuladen.
Schritt 1: Datenbank anlegen
* Modify Databases / Add Database / Add SRU Server
* Name: Kalliope
* URL: http://kalliope-verbund.info/sru
* Metadata Schema: MODS
* Search Profile: Custom
Schritt 2: Records abfagen
* Search Mode
* Search: ead.genre="Nachlass"+AND+ead.repository.isil="DE-14"
* Im Pulldown statt "Title" den Wert "Raw (Adv.)" auswählen
* startRecord: 0
* maximumRecords: 1000
* grünen Pfeil drücken
* Rechte Maustaste in Trefferliste und "Download all Records wählen"
Schritt 3: Die von MarcEdit produzierte XML-Datei enthält alle Records ohne umrahmendes XML-Element. Das ist nicht standardkonform und kann von OpenRefine daher nicht korrekt gelesen werden. Damit der Import klappt, muss die Datei manuell bearbeitet werden:
* Zu Beginn des Dokuments einfügen: ```<records>``` (der Name des Elements ist beliebig)
* Am Ende des Dokuments einfügen: ```</records>```
## Hinweise zur Verarbeitung in OpenRefine
Import:
* Beim Import der XML-Daten auf das Element <mods ...> klicken
Leere Zeilen identifizieren:
* Auf beliebiger Spalte Facet / custom text facet... / isBlank(forEach(row.columnNames,cn,if(isNull(cells[cn]),"",cells[cn].value.trim())).join("")) / true
* All / Edit rows / Remove all matching rows
Folgende Spalten entstammen der Mods-Struktur, sind (weitgehend) inhaltsleer und können gelöscht werden:
* mods
* mods - version
* mods - xsi:schemaLocation
* mods - recordInfo
* mods - recordInfo - recordCreationDate - encoding
* mods - recordInfo - recordContentSource - authority
* mods - recordInfo - languageOfCataloging
* mods - recordInfo - languageOfCataloging - languageTerm
* mods - recordInfo - languageOfCataloging - languageTerm - type
* mods - recordInfo - languageOfCataloging - languageTerm - authority
* mods - name
* mods - name - role
* mods - location
* mods - titleInfo
* mods - physicalDescription
* mods - relatedItem
* mods - relatedItem - titleInfo
* mods - originInfo
Platzhalter einfügen:
* Beim Zusammenfassen von Zeilen zu einem Record ist zu beachten, dass zwischen manchen Spalten wichtige Beziehungen bestehen, wie beispielsweise zwischen Person (mods - name - namePart) und GND-ID (mods - name - valueURI). Wenn nicht allen Personen eine ID zugeordnet ist, könnte beim Zusammenfassen die Zuordnung durcheinandergeraten. In diesem Fall ist es sinnvoll vorher Platzhalter einzufügen.
* Als Trennzeichen ```␞``` verwenden (das Trennzeichen [Record Separator ␟](https://unicode-table.com/en/241E/) aus dem Unicode-Zeichensatz kommt mit Sicherheit nicht in den Daten vor, daher ist dieses gut geeignet. Das Zeichen ist am einfachsten per copy & paste einzufügen).
* mods - name - namePart / Facet / Customized facets / Facet by blank / false
* mods - name - valueURI / Facet / Customized facets / Facet by blank / true
* mods - name - valueURI / Edit cells / Transform... / "␞"
Mehrfachbelegungen zusammenfassen:
* Spalte auswählen / Edit cells / Join multi-valued cells...
* Als Trennzeichen ```␟``` angeben (das Trennzeichen [Unit Separator ␟](http://unicode-table.com/en/241F/) aus dem Unicode-Zeichensatz kommt mit Sicherheit nicht in den Daten vor, daher ist dieses gut geeignet. Das Zeichen ist am einfachsten per copy & paste einzufügen).
* mods - location - url / Edit cells / Join multi-valued cells... / ␟
* mods - name - namePart / Edit cells / Join multi-valued cells... / ␟
* mods - name - valueURI / Edit cells / Join multi-valued cells... / ␟
Überflüssige Zeilen löschen:
* mods - recordInfo - recordIdentifier / Facet / Customized facets / Facet by blank / true
* All / Edit rows / Remove all matching rows
Zwischenstand:
* OpenRefine-Projekt mit Änderungshistorie: [kalliope-slub-nachlaesse-2017-07-28.openrefine.tar.gz](https://www.felixlohmeier.de/slub/kalliope/kalliope-slub-nachlaesse-2017-07-28.openrefine.tar.gz) (aus Lizenzgründen zugriffsgeschützt)
## Mapping zum finc-Schema
Eine Zuordnung der Daten zum [finc-Schema](https://github.com/finc/index/blob/master/schema.xml) kann nun vorrangig über das Umbenennen der Spalten sowie dem Entfernen von Steuerzeichen erfolgen.