Publicatie:Open Refine handleiding voor cultureel erfgoed collecties

Uit Cultureel Erfgoed Standaardentoolbox
Ga naar: navigatie, zoeken


Samenvatting

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.


Referentie
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

Andere

Normalisering en verrijking



Export

Een import-bestand voor Adlib genereren

Open Refine extensions

GREL functies

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.

Startscherm MarcEdit

Als je de optie niet meteen ziet staan, ga je via Tools \ OpenRefine \ Export:

Keuze van doelbestand in MarcEdit

Eerst en vooral geef je aan welk bronbestand je wil ophalen. Dat zal dus een bestand met de extensie .mrc zijn:

Keuze van bronbestand in MarcEdit

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:

Keuze van doelbestand in MarcEdit

Klik vervolgens op “Process” om de omzetting te starten:

MarcEdit OpenRefine Data Transfer Tool - klaar voor de omzetting

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.

Bestandsstructuur in OpenRefine

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:

  1. klik op het pijltje bij de kolom met codes ‘Tags’
  2. kies de functie ‘Columnize by key-value columns’
  3. kies vervolgens de Key column (‘Tags’) en de Value column (‘Content’) en klik op OK

OpenRefine-functie "Columnize by key-value columns"

Als resultaat krijg je een nieuwe tabel waarin alle mogelijk codes uit kolom ‘Tags’ een eigen kolom hebben gekregen met de bijbehorende waardes erin.

Resultaat van gebruik OpenRefine-functie "Columnize by key-value columns"

Zo kan men verder aan de slag met de data mbv OpenRefine-functionaliteiten.

Contactgegevens


Alina Saenko
meemoo, Vlaams instituut voor het archief
Kleindokkaai 9a, 9000 Gent
E: alina.saenko@meemoo.be
T: ++32 (0)9 298 05 01