Publicatie:Open Refine handleiding voor cultureel erfgoed collecties
Deze pagina is een verzameling van handelingen, tips en tricks, formules en GREL-expressions waarmee men data in Open Refine kan normaliseren en verrijken. Deze pagina is een work-in-progress en wordt systematisch aangevuld.
Titel | Collectiedata normaliseren met Open Refine (Voorkeurstitel) |
Locatie | |
Uitgever | |
Jaar van uitgave | 2016 |
Rechten | CC-BY-SA |
Persistent ID |
Auteur(s)
- Alina Saenko (meemoo)
Handleidingen
Meemoo Open Refine screencast, 2020
- Open Refine screencast video, 2020
- Data_schonen_met_Open_Refine_Presentatie, 2020
- Testbestand 1_CSV_open_refine, 2020
- Testbestand 2_Barok_vervaardigers, 2020
Andere
- https://openrefine.org/documentation.html
- Library Carpentry: "OpenRefine Lessons for Librarians." 2016, https://librarycarpentry.github.io/lc-open-refine/
- Boek 'Using OpenRefine' van Ruben Verborgh, Max De Wilde
- Presentatie Data Cleaning met Open Refine, PACKED, 2015
- Handout Open refine, PACKED, 2015
- 20160525_import_Open_refine_naar_Adlib.docx
- https://programminghistorian.org/lessons/fetch-and-parse-data-with-openrefine
Normalisering en verrijking
- Reconcilable Data Sources
- Reconciliation service van Termennetwerk (NL)
- Wikidata reconciliation service:
- VIAF reconciliation service:
- Getty reconciliation services (AAT, ULAN, TGN)
- https://www.getty.edu/research/tools/vocabularies/obtain/getty_vocabularies_openrefine_tutorial.pdf
- AAT Nederlandstalige term toevoegen
- stap 1. gebruik de reconciliation service van Getty om de AAT-id in je data op te nemen. let op! de de waarde die je moet overhouden is alleen de id (dus ‘300078925’ en niet aat/300078925)
- stap 2. gebruik een query om de Getty SPARQL API aan te spreken:
- Edit column > Add column by fetching URLs >
"http://vocab.getty.edu/sparql.json?query="+escape("select ?lab_id ?lab {aat:",'url')+ value + escape(" xl:prefLabel ?lab_id.?lab_id dct:language aat:300388256; xl:literalForm ?lab}", 'url')
- Edit column > Add column based on this column >
value.parseJson().results.bindings[0].lab.value
- Edit column > Add column by fetching URLs >
- NDE Termennetwerk (work-in-progress?)
- Geonames API
'http://api.geonames.org/countryCode?lat=' + cells["lat"].value + '&lng=' + cells["lng"].value + '&username=alinasaenko'
Export
Een import-bestand voor Adlib genereren
- Test templating Export uit Open Refine voor Adlib
- Blogpost Using Open Refine to create XML Records for Wikimedia Batch Upload Tool
- handleiding pagina 6: Bestand:20150430 Handout Open Refine workshop.pdf
- gedetailleerde beschrijving: Bestand:20160525 import Open refine naar Adlib.docx
Open Refine extensions
- Wikidata extension (augustus 2018): OpenRefine V3.0: Wikidata Extensie en URL services
- VIB-Bits extension: hier te downloaden. Zie ook deze handleiding bij de VIB-Bits extension voor OpenRefine.
GREL functies
Open Refine Manuel
Parsing Wikidata JSON
1. Haal ahv Q-nummers de volledige Wikidata-record in json binnen: bij de kolom met Q-nummers kies ‘add colomn by fetching URL' met GREL
"https://www.wikidata.org/wiki/Special:EntityData/" + value + ".json?"
2. Haal de Engelstalige wikipedia link uit de json-record: bij de kolom met de json-record kies ‘add colomn based on this colomn’ met GREL
value.replace(/\{"entities":\{"Q\d+?":/, '').parseJson().sitelinks.enwiki.url
3. Haal de Wikimedia Commons category uit de json-record: bij de kolom met de json-record kies ‘add colomn based on this colomn’ met GREL
value.replace(/\{"entities":\{"Q\d+?":/, '').parseJson().sitelinks.commonswiki.url
4. Haal de link naar het beeld op Wikimedia Commons uit de json-record in drie stappen:
- bij de kolom met de json-record kies ‘add colomn based on this colomn’, geef die een naam met GREL
value.replace(/\{"entities":\{"Q\d+?":/, '').parseJson().claims.P18
value.replace('[', '').parseJson().mainsnak.datavalue.value
'https://commons.wikimedia.org/wiki/File:' + value.replace(' ','_')
Moet nog uitgetest worden: (For the sake of completeness, here is an alternative method using Python/Jython :)
import json
data = json.loads(value)
for id, element in data['entities'].items():
return element['sitelinks']['enwiki']['url']
Other
cell.cross('groeninge data csv', 'workPid').cells['objectNumber'].value[0]
cells["wp"].value
value.replace(/\\/,"")
cells["PID"].value + ";" + cells["pid2"].value
Aan de slag met MARC-bestanden in OpenRefine
Wat zijn MARC XML-bestanden?
MARC XML is een representatie van het ISO 2709 MARC-formaat in XML-syntax. MARC XML is ontworpen om volledig uitwisselbaar te zijn met MARC21, de veelgebruikte standaard voor bibliografische data. Records kunnen zonder gegevensverlies tussen beide formaten worden omgezet.
MARC XML is het aanbevolen uitwisselingsformaat voor MARC21-records. Om een MARC XML-bestand succesvol te importeren in OpenRefine met het oog op verdere bewerking of upload naar Wikidata is het echter noodzakelijk om het om te zetten naar een tabulair formaat. In een TSV worden de waarden van MARC21-records door tabs van elkaar gescheiden. Op die manier kan OpenRefine de informatie correct inlezen.
MARC XML omzetten naar TSV
Hoe maak je een tsv bestand van een MARC XML? MarcEdit is software die je toelaat om MARC-bestanden te bewerken, om te zetten, te valideren,... Om dit probleem op te lossen hebben we dus maar een klein en eenvoudig stukje van de functionaliteit van de software nodig.
Om te beginnen moet je MarcEdit downloaden. Op https://marcedit.reeset.net/downloads zijn downloads beschikbaar voor zowel Windows, MacOS als Linux. Hou er in het geval van Linux rekening mee dat er een aantal dependencies zijn die je best eerst installeert om alles goed te laten werken (zie de installatie-instructies).
Eens je MarcEdit hebt geïnstalleerd en geopend kies je voor “OpenRefine Data Transfer” Dat is de functionaliteit die je nodig hebt om je MARC XML om te zetten naar een TSV.
Als je de optie niet meteen ziet staan, ga je via Tools \ OpenRefine \ Export:
Eerst en vooral geef je aan welk bronbestand je wil ophalen. Dat zal dus een bestand met de extensie .mrc zijn:
Vervolgens kies je de map en bestandsnaam waar het exportbestand in TSV-formaat terecht moet komen. Selecteer bij “Save as type” de optie “Tabbed Delimited File (*.tsv) om het bestand om te zetten naar een TSV-bestand:
Klik vervolgens op “Process” om de omzetting te starten:
TSV verder bewerken in OpenRefine
Een TSV kan je nu zonder problemen importeren in OpenRefine via de standaard import procedure tijdens het aanmaken van een nieuw project.
De manier waarop data in een MARC bestand is gestructureerd, zorgt echter voor een uitdaging om de verschillende functionaliteiten van OpenRefine toe te passen. Alle data wordt namelijk in twee kolommen bijgehouden. In een kolom worden de codes voor verschillende type data opgenomen en in de andere kolom worden de eigenlijke waarden weergegeven. Bijvoorbeeld tegenover de code ‘001’ - het recordnummer - staat de waarde ‘000000002’, tegenover de code ‘100’ - de naam - de waarde ‘’$a2Pac$d1971-1996’, tegenover de code ‘400’ staan de verschillende naamsvarianten. Deze code komt dan ook drie keer voor in dit record.
Om deze data te cleanen met behulp van Open Refine, dien je deze data op een andere vorm te structureren. Het doel is om te komen tot een structuur waarbij er soortgelijke informatie per kolom staat en waarbij per record de informatie overzichtelijk in één rij staat. Dit kan men doen met de functie Columnize by key-value columns:
- klik op het pijltje bij de kolom met codes ‘Tags’
- kies de functie ‘Columnize by key-value columns’
- kies vervolgens de Key column (‘Tags’) en de Value column (‘Content’) en klik op OK
Als resultaat krijg je een nieuwe tabel waarin alle mogelijk codes uit kolom ‘Tags’ een eigen kolom hebben gekregen met de bijbehorende waardes erin.
Zo kan men verder aan de slag met de data mbv OpenRefine-functionaliteiten.
Contactgegevens
Alina Saenko
meemoo, Vlaams instituut voor het archief
Ham 175, 9000 Gent
E: alina.saenko@meemoo.be
T: ++32 (0)9 298 05 01