De roar ontologie: 'Reconstructions and Observations in Archival Resources'

13-08-2019

Bij het omzetten naar RDF van zestiende-eeuwse Leidse persoonsobservaties in verschillende archiefbronnen, kon ik met bestaande vocabulaires niet helemaal uit de voeten. Wat miste was iets dat aan de ene kant één persoon, zoals die voorkwam in één specifieke bron, kon beschrijven en aan de andere kant ook een reconstructie kon maken van een persoon op basis van verschillende bronnen.

Leon van Wissen stuitte bij zijn werk voor Golden Agents op hetzelfde probleem. Dat was aanleiding om samen roar: te ontwikkelen, een breed inzetbaar vocabulaire waarmee we dergelijke beschrijvingen vorm kunnen geven. Het vocabulaire is gepresenteerd op de workshop 'Persons in Linked Data', georganiseerd door Hic Sunt Leones en Stichting Geschiedenis en Informatica.

archival resources Twee bronnen, waarin elk meerdere personen worden genoemd

Het vocabulaire is niet gemaakt om de bronnen zelf te beschrijven (al hebben we wel de class roar:Document opgenomen, zodat je bijvoorbeeld een bron die het nog zonder URI moet stellen toch kan beschrijven). Het gaat echt om observaties van personen of locaties in bronnen.

observations De vier persoonsobservaties in die bronnen

De observaties (vier persoonsobservaties in de figuur hierboven) beschrijven zo precies mogelijk de personen zoals ze voorkomen in de bron - er worden geen namen gestandaardiseerd of interpretaties losgelaten. Het is goed voorstelbaar dat je roar: alleen gebruikt om observaties te beschrijven. Als je bij een archief werkt wil je je bronnen zo goed mogelijk ontsluiten, maar reken je het maken van reconstructies misschien niet tot je taken.

Bij het beschrijven van de persoonsobservaties gebruik je daarvoor geschikte vocabulaires, bijvoorbeeld PNV, BIO of schema. Dat ziet er, als turtle, zo uit:

observatie:a
    a roar:PersonObservation;
    schema:gender schema:Male;
    rdfs:label "Gerit Adriaensz van Rooij";
    pnv:hasName [
        a pnv:PersonName;
        pnv:givenName "Gerit";
        pnv:patronym "Adriaensz";
        pnv:surname "van Rooij";
        pnv:literalName "Gerit Adriaensz van Rooij";
    ];
    roar:documentedIn <https://data.bronhouder.nl/987654321>;
    roar:onScan "https://www.bronhouder.nl/scan/1234567890";
    schema:spouse observatie:d .

observatie:b
    a roar:PersonObservation;
    schema:gender schema:Male;
    rdfs:label "Gerryt Adriaensz timmerman";
    pnv:hasName [
        a pnv:PersonName;
        pnv:givenName "Gerryt";
        pnv:patronym "Adriaensz";
        pnv:literalName "Gerryt Adriaensz" ;
    ];
    schema:hasOccupation [
        rdfs:label "timmerman";
    ];
    bio:death [
        a bio:Death;
        bio:principal observatie:b;
        sem:hasLatestTimeStamp "1667-07-17"^^xsd:date;
    ];
    roar:documentedIn <https://data.bronhouder.nl/7654321234>;
    roar:onScan "https://www.bronhouder.nl/scan/12345654321";
    schema:spouse observatie:c .

observatie:c
    a roar:PersonObservation;
    schema:gender schema:Female;
    rdfs:label "Trijntje";
    pnv:hasName [
        a pnv:PersonName;
        pnv:givenName "Trijntje";
        pnv:literalName "Trijntje";
    ];
    roar:documentedIn <https://data.bronhouder.nl/7654321234>;
    roar:onScan "https://www.bronhouder.nl/scan/12345654321";
    schema:spouse observatie:b .

observatie:d
    a roar:PersonObservation;
    schema:gender schema:Female;
    rdfs:label "Catrijn sijn huysvrou";
    pnv:hasName [
        a pnv:PersonName;
        pnv:givenName "Catrijn";
        pnv:literalName "Catrijn";
    ];
    roar:documentedIn <https://data.bronhouder.nl/987654321>;
    roar:onScan "https://www.bronhouder.nl/scan/1234567890";
    schema:spouse observatie:a .

Op basis van de observaties kan je - handmatig of met behulp van een algoritme - tot een reconstructie komen. In het voorbeeld hieronder komen we tot twee persoonsreconstructies op basis van overeenkomsten in voornaam, patronym en voornaam van de echtgenote. Je kan je een strenger algoritme voorstellen dat daarmee geen genoegen neemt. Het is legitiem om voor verschillende doelen verschillende reconstructies te maken.

reconstructions Twee persoonsreconstructies, op basis van de observaties hierboven

En als turtle:

reconstructie:1
    a roar:PersonReconstruction;
    schema:gender schema:Male;
    rdfs:label "Gerrit Adriaensz van Rooij";
    pnv:hasName [
        a pnv:PersonName;
        pnv:givenName "Gerrit";
        pnv:patronym "Adriaensz";
        pnv:surname "van Rooij";
        pnv:literalName "Gerrit Adriaensz van Rooij";
    ];
    schema:hasOccupation [
        rdfs:label "timmerman";
    ];
    bio:death [
        a bio:Death;
        bio:principal observatie:b;
        sem:hasLatestEndTimeStamp "1667-07-17"^^xsd:date;
    ];
    schema:spouse reconstructie:2;
    prov:wasDerivedFrom observatie:a, observatie:b .

reconstructie:2
    a roar:PersonReconstruction;
    schema:gender schema:Female;
    rdfs:label "Catrijn";
    pnv:hasName [
        a pnv:PersonName;
        pnv:givenName "Catrijn";
        pnv:literalName "Catrijn";
    ];
    schema:spouse reconstructie:1;
    prov:wasDerivedFrom observatie:c, observatie:d .

In deze reconstructie is er voor gekozen om de naam 'Gerrit' te standaardiseren. Via prov:wasDerivedFrom houden we altijd toegang tot de persoonsobservaties waar de reconstructie op gebaseerd is. Je kan zo dus altijd de schrijfwijzes van de voornaam in de bron opvragen.

In dit voorbeeld ging het om personen, maar roar: heeft ook specifieke classes voor roar:LocationObservation en roar:LocationReconstruction, om bijvoorbeeld een in een akte genoemd pand mee te beschrijven. De algemenere classes roar:Observation en roar:Reconstruction kan je gebruiken om andere in bronnen geobserveerde zaken (organisaties, kunstwerken, etc.) te beschrijven.