Tijdens de SWIB18 conferentie in Bonn presenteren we de resultaten van AdamLink. In ons project hebben we metadata uit verschillende erfgoedcollecties gecombineerd, zo bruikbaar mogelijk gemaakt en vervolgens aangeboden om door zoveel mogelijk mensen te gebruiken. Om onze dataset zo bruikbaar mogelijk te maken hebben we transformaties uitgevoerd. Zo vertalen we bijvoorbeeld allerlei veldnamen naar een aantal gemeenschappelijke properties, standaardiseren het gebruik van uri’s en hebben enkele eigen data toegevoegd. In ons stuk ‘Transformations for aggregated linked open data‘ en onze presentatie geven we een overzicht van de soorten transformaties die we denken dat noodzakelijk zijn als je data bij elkaar brengt om eenvoudig doorzoekbaar te kunnen aanbieden.
Afgelopen jaar heb ik verschillende presentaties mogen houden over het project. De vraag van een erfgoedinstelling was daarbij vaak: “Ik wil ook mijn data op deze manier beschikbaar stellen! Maar waar moet ik beginnen!?”.
Om een antwoord te geven op die vraag heb ik negen activiteiten op een rijtje gezet, gecategoriseerd in drie groepen. Ze komen terug in deze presentatie die ik voor het eerst gaf voor de leden van AdamNet in april 2018. In deze blog leg ik ze kort uit.
Voordat ik dat doe nog het volgende. Als je één van de activiteiten doet, is dat al beter dan helemaal niets. Vaak is het ook zo dat iets half kunt doen, bijvoorbeeld voor maar een deel van je collectie. Zo zijn we natuurlijk niet opgevoed. We willen het graag helemaal goed doen, maar bij het beschrijven van erfgoed zijn we nooit klaar. Er zijn altijd aanvullingen en verbeteringen te verzinnen. Dat geldt ook voor het verbeteren van je metadata om deze geschikt te maken voor publicatie als Linked Open Data (LOD). Enthousiast? Google de termen die je niet begrijpt: er is allerlei uitleg beschikbaar.
Leg rechten vast. We kunnen alleen data gebruiken waarvan duidelijk is dat er voor het gebruik geen juridische belemmeringen zijn (denk aan auteursrecht, openbaarheidsbeperkingen of privacywetgeving). Leg daarom bij objecten vast welke rechten er gelden. Als je het niet van alle objecten weet: ook goed, dan beperken we de publicatie straks tot de objecten waarvan we zeker weten dat het mag.
Introduceer URI’s. Elk object moet op het internet zijn te identificeren door een uniek webadres, dat bovendien voor altijd zal blijven werken. De uitspraken over het object (“deze ets is gemaakt door Rembrandt”) zijn aan deze zogenaamde uniform resource identifier (URI) te relateren. Een Persistent Identifier (PID) kan meestal als URI worden gebruikt.
Link de data. Je beschrijft een object door daarover uitspraken te doen: bv. “deze ets is gemaakt door Rembrandt”. In plaats van de tekst “Rembrandt” te linken, kun je beter Rembrandt kiezen uit een lijst van standaardnamen. Deze standaardnamen kunnen net als de objecten worden geidentificeerd met een URI. Dit geldt behalve voor personen ook voor bijvoorbeeld plaatsnamen en objectsoorten.
Zet de dataset online. Volgende stap hoeft niet moeilijk te zijn. Sla je data uit je database op in een bestand en zet dit bestand op je website. Iemand die op je website op het bestand klikt kan deze dan downloaden en gebruiken. Natuurlijk is het ene bestandsformaat handiger dan het andere, maar elk formaat is beter dan niets online zetten.
Zet de dataset online in RDF-formaat. Als je URI’s beschikbaar hebt en je data hebt gelinkt, kun je er voor kiezen om de data aan te bieden in een vorm van Resource Description Framework (RDF). Elke uitspraak over je object (bv. “Deze ets is gemaakt door Rembrandt”) is dan vertaald naar “triples”. Nu heb je Linked Open Data gepubliceerd!
De moeder van Rembrandt
Publiceer de data per object. Soms wil een gebruiker niet een volledige dataset met al je objecten en wil hij alleen iets weten over die ene ets. In dat geval moet je het in de website mogelijk maken om alleen die data te leveren via de URI van dat ene object. Er is dan sprake van een resolvable URI.
Bied een synchronisatie-mechanisme. Een gebruiker die je data regelmatig downloadt, wil na de eerste keer misschien alleen maar alle wijzigingen weten. Een synchronisatie-protocol zoals OAI-PMH of Resource Sync maakt dit mogelijk.
Bied een API. Een Application Programming Interface maakt het mogelijk dat een gebruiker een deel van de data opvraagt. Een API levert meestal data aan in JSON-formaat.
Bied een SPARQL-endpoint. Op een SPARQL-endpoint kan een gebruiker vragen aan de data stellen op alle manieren die hij of zij kan bedenken. Het is speciaal bedoeld voor Linked Open Data.
De laatste vier paragrafen zijn heel technisch. Dit is niet de plaats om daar verder op in te gaan. Laat je daar vooral niet door afschrikken. Het verbeteren van de data is een belangrijke stap in het beschikbaar maken van LOD en is belangrijker dan de realisatie van de techniek. En met data verbeteren kan iedereen beginnen. Actie!
De Jordaan telde vroeger honderden gangen en hofjes. Het aantal woningen dat aan die gangen lag is natuurlijk nog veel groter. Die gangen zijn nu, tenminste voor zover ze op de 19e-eeuwse buurtatlaskaarten van naam waren voorzien, opgenomen in het Adamlink stratenregister.
De geometrieën zoals die nu in het stratenregister te vinden zijn
Je komt soms fraaie namen tegen: Moddermansgang, Stille Willemsgang, Prinsenliefhebbersgang. En mijn persoonlijke favoriet: Drie Hoedjesgang. Maar als je alle namen in alfabetische volgorde bekijkt valt juist het gebrek aan originaliteit op dat de Jordanezen vaak parten speelde. In de toptien van meestvoorkomende namen staan maar liefst 46 gangen!
Kuipersgang
9
Gruttersgang
6
Pijpenbrandersgang
5
Bakkersgang
5
Slagersgang
4
Sleepersgang
4
Smidsgang
4
Slagtersgang
3
Klokkengang
3
Fortuinengang
3
Een beter argument voor het het gebruik van unieke identifiers (ha, URIs, hoor ik u al mompelen) is natuurlijk niet te vinden.
Eén van de twee Kuipersgangen aan de Egelantierstraat, aangegeven met ‘d’.
Op de Hackalod begin dit jaar kreeg u al een proeve van een geografische ontsluiting van Amsterdamse kaartmateriaal – op een kaart kon u een punt aanwijzen om historische kaarten op te halen die dat punt bevatten.
Inmiddels is er een tweede prototype, waarop daarnaast ook op andere parameters gezocht kan worden. Tijd bijvoorbeeld, of maker, of (deel-)collectie. Daarmee is het mogelijk snel en precies 19e-eeuwse buurtkaarten van een bepaalde buurt op te vragen, of een 1:1000 kaart uit de Publieke Werken reeks van 1943.
Dit smaakt duidelijk naar meer. Binnen het huidige AdamNet project, dat tot het einde van de zomer loopt, is dat niet meer in te passen. Maar er wordt al voorzichtig aan een Cartografische Collectie Amsterdam gedacht!
Op Adamlink vind je naast overzichten van Amsterdamse gebouwen en straten ook een personenlijst. Hoe ziet die lijst eruit, wie mag er op, wie moet er op en wat beogen we ermee?
Verbindingspunten
Persoonsnamen zijn ondingen. Johannes Vermeer kan net zo goed als Johannes van der Meer te boek staan, of als Jan, of als Johannes Reyniersz., of als Jan Vermeer van Delft. Omgekeerd is Jurriaan Andriessen een 20ste-eeuwse componist, maar ook een 18e-eeuwse schilder.
De personen, of liever gezegd de persoonsconcepten op de lijst fungeren als verbindingspunten. Vermeer staat er op als één concept met al z’n naamvarianten en de twee Andriessens kunnen er prima naast elkaar bestaan. Elke Andriessen krijgt daarbij z’n eigen adamlink URI. Als zowel in de Stadsarchief data als in de Rijksmuseum data die URI gebruikt wordt om naar het concept van de 18e-eeuwse Andriessen te verwijzen, dan kunnen we al zijn werk probleemloos uit de verschillende collecties halen, zonder dat die componist er opeens tussen zit.
Jurriaan Andriessen (links) en Jurriaan Andriessen (rechts)
Hub
Er worden via zo’n persoonsconcept niet alleen verbindingen tussen verschillende collecties gelegd. Het concept legt ook verbindingen naar dezelfde persoon in, onder andere, Wikidata, Ecartico, RKDartists, VIAF en het Biografisch Portaal. Sommige instellingen hebben verwijzingen naar dergelijke sets ook al opgenomen in hun metadata, wat zekerheid geeft bij het identificeren van personen.
Als toegift bevatten die sets vaak veel meer informatie over zo’n persoon – geboorteplaats, beroep, van wanneer tot wanneer een bepaald ambt bekleed werd, religie, een lidmaatschap van Arti et Amicitiae, enzovoort.
Dankzij die verbindingen kunnen we straks alle afbeeldingen van protestantse kerken door katholieke kunstenaars ophalen, en omgekeerd – misschien kunnen we daarmee iets zeggen over religieuze ruimdenkendheid (of over principes die wijken voor geld).
Of met één query alle portretten van leden van Arti et Amicitiae tonen. Of portretten van mensen met een bepaald beroep, zoals we in deze ‘sample app’ al lieten zien.
Koppelingen leggen
Die koppelingen moeten natuurlijk wel eerst gelegd worden. Hoe gaat dat in de praktijk? Zoals gezegd is koppelen op naam alleen onbetrouwbaar – het IISG heeft bij wijze van test op naam koppelingen met VIAF gelegd, en dat bleek in 75-80% van de gevallen goed te gaan. Met andere woorden, 1 op de 4 à 5 koppelingen is fout.
Gelukkig hebben we zo nu en dan iets meer aanknopingspunten. Soms zijn behalve de naam ook geboorte- en sterfdata opgenomen. Soms hanteren musea nauwgezet de schrijfwijze die het RKD ook gebruikt. Het Amsterdam Museum heeft bij personen al duizenden URIs opgenomen, meest RKDartists en Ecartico. Wikidata heeft weer links gelegd naar diezelfde RKDartists, dus in veel gevallen is het ophalen van Wikidata URIs dan vrij eenvoudig.
Wikidata legt links naar nog veel meer externe identifiers, en samen met alle andere informatie die daar al te vinden is, maakt dat Wikidata onze favoriet.
Waar die aanknopingspunten ontbreken is het handwerk niet geschuwd. Als je als naam alleen ‘Cor Witschge’ hebt, maar op de afbeelding staat Pipo de Clown, dan is een link naar Wikidata snel met zekerheid te leggen. We hebben daarbij natuurlijk wel prioriteiten gelegd: personen die het vaakst geportretteerd zijn of het meeste werk hebben gemaakt staan bovenaan de todo-lijst.
Wat als het niet lukt?
Het juist koppelen van personen lukt vaker niet dan wel. Veel collecties hebben niet meer dan een naam opgeslagen (soms is in die naamstring een aanwijzing verwerkt, bijvoorbeeld een beroep of geboorte- en sterfjaren tussen haakjes achter de naam zelf, dat moet je er dan weer uit zien te halen). In die gevallen namen we als naam alleen de string op en dat ziet er zo uit:
Carmiggelt zal vast een idee gehad hebben van wat een ‘echte Amsterdammer’ was. Binnen het AdamNet team hebben we het er ook wel eens over. Met Amsterdam als geboorte- of sterfplaats krijg je natuurlijk punten, maar een hoop mensen die van belang zijn geweest voor de Amsterdamse geschiedenis zouden zo buiten de boot vallen. Het RKD houdt bij welke mensen werkzaam zijn geweest in Amsterdam, maar beperkt zich tot kunstenaars.
Misschien kan je stellen dat mensen die als geportretteerde voorkomen in ‘echte Amsterdamse collecties’ zoals die van het Stadsarchief en Amsterdam Museum ‘echte Amsterdammers’, of toch in elk geval ‘van belang voor de Amsterdamse geschiedenis’ zijn.
Dat we ons überhaupt met dit soort vragen bezig houden is niet Amsterdams-municipalistisch gedreven, zeg ik er voor de zekerheid maar bij.
De reden om tot zo’n lijst te willen komen is dat we zo makkelijker data kunnen samenbrengen die de Amsterdamse geschiedenis betreffen. Dat is immers het thema waar Adamlink zich op richt. Van (inter)nationale collecties, zoals die van het IISG of het Rijksmuseum, nemen we het vaak alleen het Amsterdamse deel op. We hebben niks tegen een portret van Marx, Engels of Lenin, en al evenmin tegen Italiaanse landschappen, maar het is niet onze taak dergelijke objecten beter te metadateren.
Met geografische concepten gaat dat makkelijker. Het Rijksmuseum heeft bijvoorbeeld een geografische thesaurus, zodat we alles dat ‘Amsterdam’ of onderliggende concepten als onderwerp heeft kunnen binnenhalen. Grote kans dat de personen die als maker of als onderwerp van die objecten genoemd worden een relatie met Amsterdam hebben – die nemen we dus ook weer op.
Fabiola, in Duitsland geboren, in België opgegroeid, maar toch een echte Amsterdammer.
In de week van 5 tot 9 maart bivakkeren studenten van de HvA-opleiding Communication and Multimedia Design op de MaakZone van de OBA. Zij prototypen op Linked Open Data van AdamLink.
De 35 studenten ontwikkelen toepassingen op Linked Open Data en zijn de hele week in de Maakzone bezig met het ontwikkelen van prototypes op het Adamlinkproject (https://www.oba.nl/over-ons/partners/adamlink/HvAlab.html). Ook presenteren zij 35 toepassingen op basis van de data van de Amsterdamse erfgoedinstellingen.
Bijvoorbeeld: bekijk hoe het stratenplan van Amsterdam zich heeft ontwikkeld, of hoe de posters van Paradiso door de laatste 50 jaar zijn veranderd. Kom gerust langs in de Centrale OBA om de ontwikkelingen te volgen.
Wikidata items hebben elk een uniek id – een ‘Q’ gevolgd door een reeks cijfers. Zo’n Wikidata id is heel bruikbaar als unieke identifier voor het één of ander in collectie metadata. Er is een Wikidata item voor Wim T. Schippers, maar ook voor pindakaas. Als je http://www.wikidata.org/entity/ voor zo’n id plakt, dan heb je een echte URI en meteen iets om op te klikken.
En er is meer. Het opnemen van zo’n Wikidata id verbindt je metadata met allerlei achterliggende data. Zo hoef je zelf niet bij te houden dat Wim T. Schippers een man is en geboren in Groningen. Of dat pindakaas het gebruikte materiaal is voor een van zijn installaties.
Bij personen in Amsterdamse collecties proberen we zoveel mogelijk Wikidata id’s op te nemen. Om ze eenduidig te kunnen identificeren, maar ook om toegang tot die achterliggende data te krijgen.
Zo kunnen in de sample app ‘Portretten naar Beroep‘ geportretteerden waarvan we naast naam ook het Wikidata id kennen eenvoudig ingedeeld worden naar beroep. Opeens is nu te zien dat kunstschilders met afstand het meest voorkomen, maar dat er ook portretten van een juridisch dichter, een misdadiger en een brouwer zijn opgenomen.
Het overzicht van al die beroepen, die groter weergegeven worden naarmate ze vaker voorkomen, is letterlijk een kwestie van één query maken die zowel de Adamlink data als de Wikidata data bevraagt. Stel je eens voor hoe makkelijk je zo tijdens de Boekenweek alle schrijversportretten uit je collectie vist.
Bijkomend voordeel van Wikidata identifiers: als een item niet bestaat kan je het aanmaken!
Code op GitHub
Ben je benieuwd hoe het geportretteerden overzichtje is gemaakt? De code staat op GitHub.
Op Adamlink.nl vind je sinds kort een stratenregister met 6000+ bestaande en verdwenen Amsterdamse straten. Dat register maken we vooral om Amsterdamse collecties te verbinden en beter te ontsluiten.
Stratenmaker N. Genot (1897-1960), deelnemer aan de Februaristaking, tweede van links zittend op een kruk, met collega’s
Het Stadsarchief, het Amsterdam Museum, het IISG, de OBA – er zijn tientallen instellingen die foto’s, schilderijen of boeken van of over Amsterdamse straten in huis hebben. Met een beetje geluk hebben ze zo’n straatnaam dan als trefwoord opgenomen. Maar daarmee zijn we er niet. Het spellen van straatnamen blijkt lastiger dan je zou vermoeden – vraag maar eens twee mensen onafhankelijk van elkaar Sint Antoniesbreestraat op te schrijven.
Daarom is het handiger een eenduidige identifier te gebruiken. De BAG (Basisadministratie Adressen en Gebouwen) heeft goede id’s (tegenwoordig ook als URI leverbaar), maar kent geen naamvarianten of verdwenen straten. We hebben de BAG id’s bij bestaande straten opgenomen, nemen ook de verdwenen straten op en geven daarnaast nog wat extra informatie.
Welke data vind je in het register?
Elke straat heeft een eigen Adamlink identifier, en waar mogelijk ook een BAG id en een Wikidata id. De koppeling met Wikidata maakt het mogelijk vragen te stellen als ‘welke straten zijn vernoemd naar vrouwen?‘.
Geometrieën, meest lijngeometrieën uit het Nationaal Wegenbestand, bij verdwenen straten vaak zelf ingetekend. Er kunnen meerdere geometrieën – met periode van geldigheid – bij een straat gegeven worden, bijvoorbeeld wanneer een straat is verlegd, verlengd of verkort – zoals de Jodenbreestraat.
Naamvarianten, zo weten we niet alleen dat de Albert Luthulistraat voor 1987 de Louis Bothastraat heette, maar hebben we daar ook zo’n twintig schrijfwijzes van.
Periode van bestaan, bij vanaf eind 19e eeuw aangelegde straten hebben we raadsbesluiten waarin de naam vastgelegd werd als begindataum genomen.
Relaties tussen straten, zo zijn de Oude Teertuinen absorbedBy de Prins Hendrikkade, is de Marnixstraat originatedFrom de Schans en is de BloemenmarktpartOf Het Singel.
Links naar de Wikipediapagina over de betreffende straat.
Al die data stelt erfgoedinstellingen, maar ook ‘de gewone Nederlander’ in staat eigen data te standaardiseren naar BAG, Wikidata of Adamlink URIs. Al die naamvarianten helpen daar natuurlijk bij. Dankzij de geometrieën wordt het geografisch weergeven van bijvoorbeeld collectiedata een stuk eenvoudiger.
Netwerk Oorlogsbronnen heeft afgelopen jaar de administratie van Kamp Vught met hulp van een enthousiaste crowd ingevoerd, en de adressen van de Amsterdamse slachtoffers (L.Bothastr, St. Anth.Breestr) konden met hulp van de Adamlink data snel op een kaart weergegeven worden.
Hoe kom je bij de data?
Het register is natuurlijk handmatig te doorzoeken en alfabetisch door te bladeren, maar de data kan ook, in verschillende formaten, opgehaald worden:
Op https://adamlink.nl/data zijn dumps van alle straten te downloaden als csv, geojson en turtle.
Je vindt daar ook een API die je kunt gebruiken om eigen data te standaardiseren.
Op de AdamNet sparql endpoint kun je natuurlijk ook straten opvragen, en daarbij specifieke vragen stellen.
Is ’t al af?
Wat betreft identificatie hebben we de meeste straten er nu goed in zitten, maar een hoop, vooral verdwenen straten missen nog geometrie en periodisering. We blijven hier aan werken. Ook willen we nog meer historische naamvarianten toevoegen.
We zijn benieuwd naar gebruikerservaringen, horen graag vragen of suggesties en zijn altijd op zoek naar bruikbare data en hulp – laat het ons weten!