Wikidata:Tools/OpenRefine/Editing/Tutorials/Inverse Listeria/nl

This page is a translated version of the page Wikidata:Tools/OpenRefine/Editing/Tutorials/Inverse Listeria and the translation is 100% complete.

Listeria is een krachtig hulpmiddel om wiki tabellen te genereren uit SPARQL-queries en ze in synchronisatie te houden met Wikidata. Veel Wikipedia's gebruiken het om uitgebreide tabellen te tonen die alleen centraal moeten worden onderhouden in plaats van het werk in elke Wikipedia te dupliceren. De gegevens die nodig zijn om deze tabellen te genereren zijn echter vaak nog niet in Wikidata: we moeten ze eerst importeren. Deze handleiding legt uit hoe een handmatig onderhouden tabel van Wikipedia in Wikidata te importeren.

Waarschuwingen

Het moet worden opgemerkt dat niet alle Wikipedia-tabelen geschikt zijn voor het importeren. Niet alle zijn betrouwbaar en actueel. Het is belangrijk te controleren of de in de tabel vermelde informatie betrouwbaar is en niet tijdens de invoer vervalst is.

De tabel importeren

In deze tutorial gaan we gegevens over metrosystemen importeren. De Engelstalige Wikipedia heeft een indrukwekkende tabel met dergelijke systemen en dit is het voorbeeld dat we zullen gebruiken.

Een manier om een gevonden tabel te importeren, is eenvoudig door het met uw muis te selecteren, te kopiëren en te plakken in het clipboard van OpenRefine. Dit werkt verrassend goed in veel gevallen, en we kunnen dit hier doen. In het geval van Wikipedia heeft dit echter het nadeel van het verlies van waardevolle informatie:

  • de wikilinks die in de tabel zijn opgenomen, geven ons gratis afgestemde waarden, omdat de wikipagina's waarnaar ze linken zijn gekoppeld aan Wikidata-items. Bijvoorbeeld, de naam "SkyTrain" zou normaal gesproken dubbelzinnig zijn (omdat het kan verwijzen naar veel verschillende Wikidata-items), maar in dit geval is het gekoppeld aan SkyTrain (Vancouver), een Wikipedia-pagina die is gekoppeld aan SkyTrain (Q876780). We moeten deze informatie dus hergebruiken;
  • de referenties in elke celwaarde geven aan waar de informatie vandaan komt: we willen deze bronnen niet weggooien, maar in plaats daarvan importeren in Wikidata.
 
De wikicode van een tabel uit een Wikipedia artikel kopiëren.

We zullen daarom een speciale importprogramma gebruiken om een OpenRefine-project te maken vanuit onze tabel. Klik op de knop om te Bewerken in de sectie van het Wikipedia artikel met de tabel. Zorg ervoor dat u de handmatige teksteditor gebruikt en niet de visuele, want we hebben de wikicode van deze tabel nodig. Kopieer de hele tabel (die begint met {| en eindigt met |} en plak deze in het importgebied van het klembord van OpenRefine (u kunt de hele subsectie Lijst kopiëren omdat deze slechts één tabel bevat: OpenRefine negeert alles buiten de tabel).

Het bekijken van de import duurt even: dit komt omdat OpenRefine queries uitvoert op Wikidata om de links tussen de wikilinks en de Wikidata-items op te lossen. Standaard negeert OpenRefine sjablonen in Wikicode, maar in ons geval worden de landen en sommige afstanden aangegeven met behulp van sjablonen, dus we kunnen Sjablonen en afbeeldingen opnemen als onbewerkte wikicode aanvinken. Het is ook nodig om aan te geven van welke Wikipedia de wikitekst is overgenomen (het veld verwijst standaard naar de Engelstalige Wikipedia, wat in ons geval prima is). Valideer ten slotte de import: het aanmaken van het project zou ook tijd moeten kosten (maar iets minder vanwege caching).

 
Wikidata editing with OpenRefine - Inverse Listeria tutorial. Importeeropties voor de wikitable.
 
De kwaliteit van de afstemming controleren met facetten.

Zodra het project is aangemaakt, zult u een paar verschillen opmerken met andere importprogramma's:

  • veel cellen zijn al samengesteld: dit zijn de cellen die een unieke wikilink bevatten, die een link naar een pagina heeft die is gekoppeld aan een Wikidata-item;
  • Er zijn nieuwe kolommen gemaakt, waarbij de URL's zijn geëxtraheerd uit de referenties in de cellen. Deze kolommen worden rechts van de inhoudskolom geplaatst waaruit ze zijn geëxtraheerd.
 
Structuur van originele waarden en hun referenties.

Zelfs als de cellen automatisch zijn afgestemd, moet u ervoor zorgen dat u de kwaliteit van deze overeenkomsten controleert. Het is bijvoorbeeld altijd mogelijk dat een wikilink naar een doorverwijspagina verwijst, in welk geval de cel onjuist wordt gekoppeld aan een doorverwijspagina. Een eenvoudige manier om een idee te krijgen van de kwaliteit van deze overeenkomsten is door simpelweg kolommen toe te voegen op basis van deze afgestemde waarden (Kolom bewerkenKolommen toevoegen aan afgestemde kolom), waarbij u eigenschappen zoals instance of (P31) ophaalt en de eigenschappen die betrekking hebben op de inhoud van uw tabel (zoals date of official opening (P1619)). Gebruik facetten om deze waarden te verkennen en een idee te krijgen van hoe de items eruit zien.

De gegevens opschonen

 
Waarden die niet overeenkomen met de reguliere expressie, geïsoleerd met het filter.

Stel dat we de kolom ridership van deze tabel willen importeren. Deze kolom bevat waarden zoals 302.8 (2016): we moeten dit eerst opschonen, waarbij we het werkelijke aantal passagiers scheiden van het jaar. We zouden dit bijvoorbeeld kunnen doen met een reguliere expressie. Het lijkt erop dat de gangbare indeling in deze kolom als volgt is: een hoeveelheid (bestaande uit cijfers en een punt), een spatie, een haakje openen, het jaar en een haakje sluiten. Dit moet overeenkomen met de reguliere expressie [\d.]+ \(\d{4}\). U hoeft dit niet vanaf het begin goed te doen: maak gewoon een Tekstfilter in deze kolom, vink Reguliere expressie aan en bouw daar uw expressie op. OpenRefine compileert in realtime uw expressie en toont u de rijen die ermee overeenkomen. Door omkeren aan te vinken kunt u ook de rijen zien die niet overeenkomen met de expressie. Dit zijn rijen waar de waarde niet is opgegeven of waar een bron ontbreekt, dus we kunnen deze rijen gewoon uitsluiten bij het importeren.

 
Hoeveelheden extraheren uit een samengestelde cel in Python.

Nu we een reguliere expressie hebben bedacht die de indeling van deze cellen vastlegt, kunnen we deze ook gebruiken om de inhoud in twee delen te splitsen.[1] We gaan eerst groepen toevoegen aan de expressie, zodat we de delen ervan kunnen extraheren: ([\d.]+) \((\d{4})\). De eerste groep legt het aantal vast, de tweede het jaartal. Nu kunnen we voor elke groep nieuwe kolommen maken. Klik op de kolom Ridership, selecteer Kolom bewerkenKolom toevoegen op basis van deze kolom. Selecteer Python / Jython als expressietaal en gebruik de volgende expressie:

import re # dit importeert de reguliere expressie module 
match = re.search(r'([\d.]+) \((\d{4})\)', value) # dit past de waarde tegen onze reguliere expressie
return match.group (1) # dit extraheert de eerste groep tekens uit de match
 
Aantallen omzetten in miljoenen.

Geef een naam aan de kolom (zoals ridership_amount) en bevestig. Herhaal de handeling, dit keer met de tweede groep om de tweede kolom ridership_year te maken. Zijn we al klaar? Niet helemaal, want zoals de kolomkop zegt, wordt het aantal passagiers uitgedrukt in miljoenen, dus we moeten onze waarden dienovereenkomstig vermenigvuldigen. Een eenvoudige manier om dit te doen is door de cellen in deze kolom te transformeren (Cellen bewerkenTransformeren) en eenvoudig "e6" samen te voegen aan het einde van de waarde (dit is de technische notatie om hoeveelheden in miljoenen uit te drukken).

Een schema aanmaken

Nu onze gegevens zijn opgeschoond, kunnen we zoals gewoonlijk een Wikidata-schema maken. De eerste stap is om erachter te komen welke eigenschappen we moeten gebruiken. Ga naar het item voor een metrosysteem, zoals Algiers Metro (Q728045), en begin met het toevoegen van een nieuwe verklaring met de eigenschap 'ridership'. Wikidata stelt patronage (P3872) voor, wat er geschikt uitziet na het bekijken van de eigenschappenpagina. De gebruiksinstructies van deze eigenschap suggereren het gebruik van de kwalificatie point in time (P585) om het kalenderjaar aan te geven waarin het aantal passagiers is gemeten.

Klik op WikidataWikidata-schema bewerken en bouw een schema met behulp van deze eigenschappen. Dankzij de wikitable-importprogramma kunnen we de referentie-URL's die in de kolom aan de rechterkant zijn geëxtraheerd, gebruiken om Wikidata-referenties te maken. Het kan ook handig zijn om vast te leggen dat we deze gegevens via Wikipedia hebben geïmporteerd: we kunnen hiervoor Wikimedia import URL (P4656) gebruiken, met een permanente link naar de revisie die we hebben gebruikt om de extractie uit te voeren (zoals https://en.wikipedia.org/w/index.php?title=List_of_metro_systems&oldid=830817609).

 
Wikidata bewerken met OpenRefine - Inverse Listeria tutorial. Eenvoudig schema om informatie over het aantal passagiers toe te voegen aan Wikidata.

Natuurlijk kunnen we een soortgelijk werk doen voor andere kolommen, en ze toevoegen aan het schema, zodat ze in één keer kunnen worden geüpload naar Wikidata. De openingsdatum kan bijvoorbeeld worden toegevoegd met date of official opening (P1619). Als u tevreden bent met uw schema, kunt u de bewerkingen zoals gewoonlijk uitvoeren, hetzij rechtstreeks vanuit OpenRefine met de bewerking Uploaden naar Wikidata', of met behulp van QuickStatements.

 
OpenRefine Wikidata Inverse Listeria tutorial, Voorbeeld van bewerkingen die rijdersinformatie toevoegen

Bewerkingsgeschiedenis

De in deze tutorial beschreven bewerkingen kunnen opnieuw worden toegepast op het project met behulp van de volgende JSON-bewerkingsgeschiedenis. Het is natuurlijk specifiek voor de structuur van deze specifieke tabel.

Opmerkingen

  1. Meer achtergrondinformatie over het gebruik van reguliere expressies in OpenRefine is hier te vinden.