Overzicht van alle afleveringen

De Circulaire #144: de sparqelende editie ✨

Verzonden: 27-09-2021

Waarom staan er geen plaatjes op deze pagina?
Logo van De Circulaire

Hoi! Talloze trouwe lezers (ok, het waren er twee) schreven me afgelopen week dat ze graag meer wilden over weten over SPARQL. U vraagt, ik tik, dus dat leest u in deze editie. Als u dat nou erg saai vindt (ik geef u geen ongelijk) heb ik ook nog een lezerstekening van Barrie, biggetjes in de zee en een site waar je met behulp van AI een muzikale mashup kunt maken. Ik zou maar snel gaan lezen als ik u was!


Zo werken SPARQL-queries op Wikidata

Deze afbeelding is niet beschikbaar

Vorige keer schreef ik over Depictor . Dat is mijn tooltje om foto's te taggen op Wikimedia Commons , de mediabank van de Wikimedia-projecten zoals Wikipedia. Ik schreef toen over één van de opties in dat tooltje: het toevoegen van een SPARQL-query als zoekvraag. Én ik schreef dat het te ingewikkeld was om snel uit te leggen wat SPARQL is.

Nou, dat heb ik geweten. Trouwe lezers mailden me: kun je het misschien tóch uitleggen, en dan iets minder snel? Ik stuurde die mensen een uitleg terug, maar het leek me eigenlijk wel handig om dat toch ook maar in De Circulaire te schrijven. Dan kunnen mensen het ook lezen die me niet mailen. Zoals jij!

Samengevat is SPARQL een taal waar je zoekvragen mee kan schrijven om gelinkte data uit een systeem (zoals Wikidata) te halen. Eigenlijk dus een soort van Google, maar dan voor gevorderden.

Laat ik een voorbeeld geven. Koning Willem-Alexander heeft een plekje op Wikidata. Alleen dan niet met een artikel maar met een item . Alle items (dat zijn er op het moment van schrijven 95 miljoen) hebben een uniek nummer. Voor de koning is dat nummer Q154952 .

Prinses Beatrix, zijn moeder, heeft ook een nummer: Q29574 . Beatrix en Willem-Alexander hebben een relatie: Beatrix is de moeder van Willem-Alexander. Je zegt daarom op Wikidata: item Q29574 (Beatrix) heeft als kind item Q154952 (Willem-Alexander).

Alle soorten relaties (dat zijn er meer dan 9.000) hebben óók een uniek nummer. Het nummer wat hoort bij de relatie 'heeft kind' is P40 . Hier zie je een patroon: nummers voor items (zoals de koning en zijn moeder) beginnen altijd met een 'Q'. Nummers voor relaties (zoals 'heeft kind') beginnen met een 'P'. Die 'P' staat trouwens voor property , want dat is hoe je een soort relatie noemt op Wikidata.

U vraagt zich wellicht af: waarom al dat gedoe met die nummers? Waarom heet Beatrix niet gewoon Beatrix? Helaas zijn namen alleen niet uniek genoeg. Er is bijvoorbeeld óók een item voor Beatrix (de voornaam, Q1096551), Beatrix (het cruiseschip, Q70114554) en Beatrix (een asteroïde, Q109927). En de persoon Beatrix zélf heeft meerdere namen. Vòòr haar abdicatie in 2013 hadden we het over 'Koningin Beatrix', nu over 'Prinses Beatrix'. In het Bulgaars hebben ze het over 'Беатрикс'. Namen veranderen en kunnen verschillen. Nummers veranderen nooit.

Terug naar de band tussen Beatrix en Willem-Alexander. De relatie ‘Beatrix heeft als kind Willem-Alexander’ zou je in SPARQL schrijven als:

wd:Q29574 wdt:P40 wd:Q154952

Je ziet dat er voor de items Q29574 (Beatrix) en Q154952 (Willem-Alexander) 'wd:' staat, en voor P40 (heeft kind) 'wdt:'. Dat noem je een prefix en geeft aan dat je alleen zoekt binnen Wikidata. Je kan met SPARQL namelijk ook door meerdere databases tegelijk zoeken. Dan moet wel duidelijk zijn over welke database je het hebt in je zoekvraag.

Stel dat je niet alleen Willem-Alexander zou willen vinden, maar alle kinderen van Beatrix. Dan zou je dit kunnen schrijven in SPARQL:

select ?child where { wd:Q29574 wdt:P40 ?child }

Hier staat dus zoiets als: "selecteer alle items die de relatie 'kind van Beatrix' hebben'". Als je deze query (zo noem je zo'n zoekvraag) draait op de SPARQL query service van Wikidata krijg je een tabel met de nummers die horen bij Willem-Alexander, Constantijn en Friso.

Wat als je ook alle kleinkinderen van Beatrix wilt hebben? Dus de kinderen van de kinderen?

select ?child ?grandChild where {

wd:Q29574 wdt:P40 ?child.

?child wdt:P40 ?grandChild.

}

Oftewel: "selecteer alle kinderen van Beatrix, en geef me ook de kinderen van die kinderen". Let op de punt aan het einde van elke regel om aan te geven dat je klaar bent met een triple.

Het resultaat is een lijst met 8 items: alle kleinkinderen van Beatrix mét hun vader. Voeg er nog wat extra dingen aan toe om ook de namen te krijgen (anders krijg je alleen de ID’s) en zet de netwerk-visualisatie-optie aan en je krijgt dit :

Deze afbeelding is niet beschikbaar

Misschien ontgaat je een beetje wat hier het praktisch nut van is . Want even googelen op 'kleinkinderen beatrix' levert hetzelfde op. Maar het aardige is dat je in die query alleen maar het nummer van 'Beatrix' hoeft te veranderen in dat van een willekeurig ander iemand (die op Wikidata een item heeft) en je krijgt dáár de complete lijst van kinderen en kleinkinderen van. Handig toch? [HIER MOET NOG EEN LEUKER EINDE]

PS: Depictor werd een paar weken geleden ook uitgebreid besproken en getest in de Wikipedia Weekly .

Leer podcasts maken bij de Podcastakademie (gesponsord)

Deze afbeelding is niet beschikbaar

Dank aan het Podcastnetwerk, die deze editie sponsort.

Wil je podcasts leren maken? Dat kan dit najaar in de online cursussen van de Podcastakademie van het Podcastnetwerk! In oktober start de basiscursus waarin verschillende docenten lesgeven (o.a. Mila-Marie Bleeksma, producer bij NRC Vandaag en trouwe lezer Lieven Heeremans van de Kaas podcast). In november en december volgen twee verdiepende workshops: montagevaardigheden van Daniel van de Poppe (o.a. DAMN, HONEY! en Polititia) en Oral History interviewen van Annegriet Wietsma (De Deventer Mediazaak). Ben je ZZPer? Dan kan je tegemoetkoming voor 50% van de kosten aanvragen bij het Werktuig PPO fonds. Vrienden van het Podcastnetwerk krijgen €50 korting.

Schrijf je snel in voor het vol zit!

Fanpost

Deze afbeelding is niet beschikbaar

Trouwe lezer Annika stuurde me een zelfgetekend portret van Barrie :

Ik hoop dat ik hem of jou er niet mee beledig - ik priegel af en toe met een animatie app - het is natuurlijk verre van realistisch of flatterend - excusez, ook aan B. ;)

Gelukkig kan Barrie niet praten en mogelijk ongenoegen uiten. Bedankt Annika!

De beste linkjes

Deze afbeelding is niet beschikbaar
Deze afbeelding is niet beschikbaar
Deze afbeelding is niet beschikbaar

De beste gifjes

Wisten jullie dat Lotte Belice, mijn lieve chef kattengifjes, al jaren wekelijkse boodschappen doet voor een 92-jarige mevrouw? Die mevrouw is heel aardig, behalve als de chef K. per ongeluk Pickwick Earl Grey-thee koopt voor potten in plaats van kopjes (de verpakkingen lijken nogal veel op elkaar). Die oudere mevrouw kijkt dan zoals deze hond:

Deze afbeelding is niet beschikbaar

Deze hond is van mening dat-ie beter in het asiel had kunnen blijven.

Deze afbeelding is niet beschikbaar

En deze biggetjes laten zien hoe de hemel er uitziet.

Deze afbeelding is niet beschikbaar

En dit biggetje vertelt jou dat deze Circulaire er weer opzit!

Heeft ú innovatieve oplossingen rondom waterstof en 'maritiem'? Én wilt u graag met de minister voor ontwikkelingssamenwerking op handelsmissie naar het Verenigd Koninkrijk (wist u misschien nog niet: dat is Engeland, Schotland, Wales en Noord-Ierland)? Dat kan! En helemaal virtueel (u hoeft niet zelf op reis). Vooral als u een vrouw bent is het fijn als u kunt aansluiten. U betaalt wel €250, maar dat is inclusief "vrije matchmaking" (🍆 ?).

Maar mocht ú toch niet kunnen op maandag 11 oktober dan kunt u ook gewoon de volgende editie van De Circulaire lezen, die dan stipt om 20:00 in uw mailbox wordt gematchmaket.

Tot dan!

Één anonieme donateur deed de vorige keer een, eh, donatie. Hartelijk dank! Wil jij ook doneren aan de best gelezen nieuwsbrief van Nederland (als je geen enkele andere nieuwsbrief meetelt)? Dat kan! Doneer hier aan De Circulaire en ontvang gratis een setje stickers, een al dan niet anonieme vermelding op deze plek en mijn hartelijke dank.