1. Introductie
Dit document beschrijft de plannen en ideeën van het project Inside Out Time Machines (IOTM). Het is bedoeld om discussie te stimuleren en kan op elk moment veranderen. Het wordt samengesteld op basis van content in de Design repository.
2. Salespitch voor het Jottem platform
Voor organisaties (historische verenigingen, erfgoedhuizen en archieforganisaties) is er een niet-technische salespitch als losse pagina: Jottem voor organisaties - wat het platform oplevert en wat het vraagt (jaarlijkse bijdrage, communicatie en moderatie).
2.1. Hoofdboodschap
Jottem: Maak erfgoed van iedereen, door iedereen
Jottem is het participatieve digitale erfgoedplatform dat gemeenschappen in staat stelt hun eigen lokale geschiedenis te verzamelen, te delen en te verrijken. Van de homepage van je huis tot de verhalen van je buurt – Jottem brengt erfgoed terug waar het thuishoort: midden in de samenleving.
2.2. Het probleem
Mensen voelen zich sterk verbonden met hun leefomgeving en willen graag hun verhalen delen. Maar traditionele erfgoedzorg is:
-
Eenrichtingsverkeer: Instellingen bepalen wat erfgoed is en hoe het ontsloten wordt
-
Ontoegankelijk: Te veel technische en mentale drempels voor burgers om bij te dragen
-
Gefragmenteerd: Iedereen deelt via Facebook, WhatsApp of in eigen systemen – erfgoed verdwijnt
-
Niet duurzaam: Foto’s en verhalen gaan verloren omdat er geen beheersbare oplossing is
2.3. De oplossing: het Jottem platform
Jottem draait het perspectief om: niet de collectie staat centraal, maar de gemeenschap.
2.3.1. Kernfunctionaliteiten
Voor burgers (uploaders & annoteerders):
-
Upload eigen foto’s met metadata (wie, wat, waar, wanneer)
-
Verrijk bestaande erfgoedmateriaal met herinneringen en kennis
-
Annoteer foto’s: identificeer personen, gebouwen, bedrijven op afbeeldingen
-
Markeer locaties op kaarten en koppel gebeurtenissen
-
Reageer op elkaars bijdragen en bouw samen aan verhalen
Voor organisaties (historische verenigingen, Time Machines, archieven):
-
Laagdrempelige moderatieomgeving voor kwaliteitscontrole
-
Duurzaam bewaard met open exportstrategie (externe preserveringskopie via Internet Archive in een latere fase)
-
Bestaande collecties eenvoudig importeren (IIIF-ondersteuning, fase 2)
-
Statistieken en community management tools (dashboards in fase 2)
Voor hergebruik (API’s):
-
IIIF Collection & Manifest ondersteuning
-
W3C Web Annotation Protocol
-
RSS feeds en harvesting mogelijkheden
-
Elasticsearch zoekfunctionaliteit
-
Schema.org conforme datasets
2.4. Onderscheidende kenmerken
2.4.1. Participatie in de volle breedte
Van expert tot buurtbewoner – iedereen kan bijdragen op zijn eigen niveau. De visueel aantrekkelijke, laagdrempelige interface maakt meedoen makkelijk en leuk.2.4.2. Duurzaam en betrouwbaar
-
Duurzame permanente link per bijdrage (ARK-identifiers in een latere fase)
-
Externe preserveringskopie via Internet Archive (latere fase)
-
Professionele moderatie en kwaliteitscontrole
-
Privacy en auteursrecht geborgd
2.4.3. Open en herbruikbaar
-
Open source technologie
-
Linked Data en standaarden (IIIF, W3C Annotations)
-
Naadloze integratie met bestaande systemen
-
Data harvesting voor aggregators (bijv. Netwerk Digitaal Erfgoed)
2.4.4. Bewezen concept
Ontwikkeld vanuit concrete behoefte van vier Time Machines:-
Amsterdam Time Machine (RingA10: "homepage van je huis")
-
Utrecht (OUD Utrecht, Museum Van Zuilen)
-
Hilversum (grafisch atelier, ontwerpers)
-
Gouda (historische vereniging) – met Smaak van Gouda als eerste concrete pilot
2.4.5. Van aanbod naar vraag
Niet: "Wat kunnen wij ontsluiten?" Maar: "Wat willen mensen delen, bewaren en doorgeven?"2.5. Wat levert het op?
2.5.1. Voor gemeenschappen:
-
Meer verbondenheid met de leefomgeving
-
Gedeeld eigenaarschap van lokaal erfgoed
-
Intergenerationele samenwerking: jong helpt oud met digitaliseren, oud deelt kennis
-
Zingeving: erfgoed als bron van identiteit en welzijn
2.5.2. Voor organisaties:
-
Rijkere collecties door burgerparticipatie
-
Grotere betrokkenheid van de lokale gemeenschap
-
Lagere beheerslast door slimme workflows
-
Schaalvoordeel door herbruikbare componenten
2.5.3. Voor de erfgoedsector:
-
Democratisering van erfgoed
-
Nieuwe coalities tussen instellingen, vrijwilligers en burgers
-
Innovatie door kennisdeling en open source
-
Structurele verandering: van bewaren naar samen maken
2.6. Oproep tot actie
Voor organisaties: Wil jouw historische vereniging, archief of Time Machine ook participatiever worden? Sluit je aan bij Jottem en geef je gemeenschap de tools om zelf erfgoed te maken.
Voor gemeenschappen: Heb je verhalen, foto’s of herinneringen over je buurt? Word deel van een groeiende beweging die lokale geschiedenis levend houdt.
2.7. Slogan opties
-
"Verbindt inwoners, verhalen en erfgoed"
-
"Jottem: Jouw verhaal, onze geschiedenis"
-
"Maak erfgoed van iedereen, door iedereen"
-
"Van de homepage van je huis tot het verhaal van je stad"
-
"Samen bouwen aan lokale geschiedenis"
-
"Erfgoed dat leeft, door mensen die delen"
3. Activiteitenplan
Dit deel komt uit het activiteitenplan (versie 31 augustus 2025, opgesteld door Ingeborg Verheul, Bob Coret, Toine Pieters, Elsbeth Kwant) dat onderdeel was van de aanvraag voor de Subsidieregeling Uitvoeringsagenda Faro. De oorspronkelijke tekst is intact gelaten; waar van toepassing staat onder een deelactiviteit een statusnoot (augustus 2026) met de inmiddels opgeleverde producten en genomen besluiten.
3.1. Hoofdactiviteit en doel
Mensen voelen zich vaak sterk verbonden met de omgeving waarin ze wonen en de geschiedenis daarvan. Ze vinden het interessant om erover te leren, maar ook om hun eigen verhalen te vertellen. De vier Time Machines die actief zijn in hun stad, ervaren deze behoefte regelmatig. Zo vertelde de Amsterdam Time Machine bij een event op de RingA10 (tijdens het jubileumjaar Amsterdam 750) over de ‘homepage van je huis’ en vroegen mensen of ze ook hun eigen foto’s daaraan konden toevoegen. In Hilversum is er een groep vrijwilligers die een grafisch atelier runt, dat allerlei erfgoedmateriaal van ontwerpers en drukkerijen bezit en dat graag zou digitaliseren op een makkelijke manier. In Utrecht zijn de vrijwilligers van OUD Utrecht, Museum Van Zuilen en het Utrechts Geveltekenfonds geïnteresseerd om zo bij te dragen en in Gouda deelt de historische vereniging momenteel vooral informatie via Facebook. Zij zouden graag bereid zijn dat in samenwerking met de Time Machine aan te leveren als het daarmee duurzamer toegankelijk is.
De Time machines willen geschiedenis relevant maken voor de inwoners van hun steden / omgevingen. We willen bestaande tijdmachines participatiever maken door de mogelijkheid te creëren foto’s, verhalen en informatie te delen of bestaande informatie te verrijken. Dit project creëert een publieksvriendelijke en visueel aantrekkelijke interactie-omgeving (we denken aan een annotatieomgeving, zoals die nu in demo door het Netwerk Digitaal Erfgoed wordt gehost). We verkennen in dit project wat de meest laagdrempelige en beheersbare oplossing is, zowel aan de voor- als aan de achterkant. Ook wisselen we (open source) software uit om succesvolle applicaties van de ene Time Machine te kunnen hergebruiken in een andere. We maken het zo mogelijk dat inwoners zich meer verbinden met de geschiedenis van hun stad, wijk, straat en huis.
3.2. Beoogde eindresultaat
We maken het mogelijk dat mensen zelf informatie gaan bijdragen aan lokale time machines. Door op deze manier technologie, lokale geschiedenis en burgerparticipatie te combineren, maken we het voor inwoners makkelijker en leuker om actief betrokken te zijn bij het erfgoed van hun eigen leefomgeving. Daarmee dragen we bij aan het gevoel van verbondenheid met die leefomgeving.
3.3. Deelactiviteiten
3.3.1. Uitvraag behoefte
Aard & wijze van uitvoering:
Uitvoeren van gesprekken, workshops en digitale enquêtes met belanghebbenden in de vier steden (bewoners, erfgoedinstellingen, vrijwilligers bij historische vereniging, enz.).
Onderzoek naar gebruiksbehoefte m.b.t. toevoegen van beeldmateriaal en verhalen, en het verrijken van bestaande erfgoeddata.
Parallel verkenning van auteursrechtelijke vraagstukken in samenwerking met o.a. Wikimedia Nederland.
Doelstelling:
Inzicht verkrijgen in gebruikersbehoeften en voorwaarden voor participatie.
Risico’s op auteursrechtinbreuk ondervangen via kennisdeling en samenwerking.
Resultaten/Producten:
Uitgewerkte lijst met functionele en niet-functionele requirements.
Aanpak auteursrecht & participatie.
Status (augustus 2026): de functionele en niet-functionele requirements en usecases per rol zijn uitgewerkt. Voor auteursrecht en participatie liggen er juridische conceptdocumenten (o.a. risico’s en wet- en regelgeving, algemene voorwaarden en een handreiking moderatie), nog te toetsen door een jurist.
3.3.2. Verkenning technische oplossingsrichting
Aard & wijze van uitvoering:
Technische analyse op basis van de requirements.
Verkenning bestaande oplossingen (bijv. via open source, Linked Data, crowdsourcing-tools). Gebruik maken van de kennis van het Netwerk Digitaal Erfgoed en de ervaringen van de Amsterdam Time Machine met Meaningful Memories in samenwerking met SURF.
Interviews met technische partners, leveranciers en gebruikers. Hier wordt een breed netwerk van partners ingezet in elk van de vier locaties.
Doelstelling:
Vaststellen welke (generieke of lokale) technische oplossing het meest geschikt is.
Resultaten/Producten:
-
Architectuurschets.
-
Applicatiebeschrijving per scenario (generiek of maatwerk per tijdmachine).
Status (augustus 2026): de architectuurschets is uitgegroeid tot een volwaardige systeemarchitectuur en data-architectuur. De scenario-afweging is uitgevoerd in de infrastructuuranalyse (vier richtingen); er is gekozen voor één generiek platform (Jottem) voor alle tijdmachines, in plaats van maatwerk per tijdmachine.
3.3.3. Keuze oplossingsrichting
Aard & wijze van uitvoering:
Afweging van technische en functionele varianten op basis van geschiktheid, schaalbaarheid en duurzaamheid.
Besluitvorming in overleg met lokale partners en gebruikers.
Doelstelling:
Vaststellen van een gedragen en uitvoerbare oplossingsrichting.
Resultaten/Producten:
-
Document met onderbouwing en selectie van gekozen oplossingsrichting.
Status (augustus 2026): opgeleverd als het keuzedocument: alles op de Jottem-server met een expliciete exit-/exportstrategie, een gekozen technologiestack en besliste openstaande vragen (o.a. ARK uitgesteld naar een latere fase).
3.3.4. Implementatie per tijdmachine
Aard & wijze van uitvoering:
Gefaseerde implementatie in vier steden (Amsterdam, Utrecht, Gouda, Hilversum), afhankelijk van lokale infrastructuur en partners.
Aansluiten op bestaande platforms of ontwikkelen van aanvullende modules.
Training van lokale beheerders en vrijwilligers.
Doelstelling:
Functionele toepassing waarmee gebruikers foto’s/verhalen kunnen toevoegen en/of erfgoeddata kunnen verrijken.
Resultaten/Producten:
-
Werkende participatievoorziening binnen elke tijdmachine.
Status (augustus 2026): het ontwerp voor de realisatie is gereed (usecases, API-specificaties, klikbaar prototype). De eerste implementatie start met de pilot Smaak van Gouda, als eerste project op de organisatiejottem van Streekarchief Midden-Holland. Voor het aansluiten van (meer) organisaties is er een salespitch voor organisaties (jaarlijkse bijdrage €100, inzet op communicatie en moderatie). De MVP-afbakening en fasering staan in het § 16 Realisatieplan.
3.3.5. Testen en nazorg
Aard & wijze van uitvoering:
Uitvoeren van gebruikerssessies met diverse doelgroepen (jong, oud, expert, leek)
Inrichting aanspreekpunt per Time Machine bij knelpunten.
Verzamelen van feedback via surveys en interviews.
Doelstelling:
Verbeterpunten identificeren en gebruikservaring meten.
Resultaten/Producten:
-
Gebruikersrapportage met inzichten in gebruiksgemak, barrières en kansen.
Status (augustus 2026): de aanpak voor geautomatiseerd testen en monitoring is uitgewerkt in de systeemarchitectuur; gebruikerssessies volgen tijdens de pilot.
3.3.6. Evaluatie en leerpunten
Aard & wijze van uitvoering:
Interne evaluatie met projectteam en partners.
Reflectie op aanpak, werkwijze en samenwerking.
Doelstelling:
Vastleggen van leerpunten en bepalen van vervolgscenario’s (zoals vervolg in andere steden of opschaling).
Resultaten/Producten:
-
Eindrapportage met conclusies, aanbevelingen en opschalingsopties.
3.3.7. Communicatie & kennisdeling
Aard & wijze van uitvoering:
Regelmatige updates via nieuwsbrieven, sociale media van de verschillende tijdmachines en partnersites.
Organiseren van minimaal twee kennissessies/webinars over participatief digitaal erfgoed.
Doelstelling:
Transparantie in het proces, kennisdeling en communityvorming bevorderen.
Resultaten/Producten:
-
Verspreide publicaties, presentaties en opnames van sessies.
3.3.8. Beheer & borging
Aard & wijze van uitvoering:
Afspraken maken over beheer en actualisatie van functionaliteit.
Inbedding in organisatie/partnerstructuren (bijv. via erfgoedhuizen, bibliotheken of burgerinitiatieven).
Doelstelling:
Duurzame borging van de oplossing.
Resultaten/Producten:
-
Beheersplan en samenwerkingsovereenkomsten met lokale partners.
Status (augustus 2026): er ligt een concept-samenwerkingsovereenkomst; duurzame borging is verankerd in de exit-/exportstrategie van het keuzedocument en de e-depot-export per project (BagIt + RO-Crate). Tot het duurzame beheer hoort ook de afleverbaarheid van de platformmail: vóór livegang worden SPF, DKIM en DMARC op het verzenddomein ingeregeld en krijgen de attenderingsmails one-click unsubscribe, zodat gebruikers ze makkelijk uitzetten in plaats van ze als spam te markeren; het volledige pakket maatregelen (reverse DNS, eigen MTA, bouncebeheer, reputatiemonitoring) staat in de afleverbaarheidssectie van het ontwerp.
3.4. Relatie met de Faro-kernwaarden
Participatie in de volle breedte: Door het delen en taggen van foto’s, verhalen en kennis ontstaat er een directe en laagdrempelige vorm van erfgoedparticipatie. Dit past bij het idee van “mee kunnen doen” en “mee mogen bepalen”. Door te werken aan een publieksvriendelijke, visuele annotatieomgeving verlagen we de drempel om deel te nemen – zowel technisch als mentaal. We creëren een webomgeving waarbij vrijwilligers zelf informatie kunnen toevoegen, verbeteren of kunnen linken naar andere bronnen. Niet alleen experts, maar ook buurtbewoners, jongeren of incidentele bezoekers kunnen meedoen, hun stem laten horen en hun perspectieven toevoegen. Daarmee groeit het besef dat iedereen eigenaar is van erfgoed en dat erfgoed gevormd wordt door de gemeenschap zelf.
Erfgoed midden in de samenleving: Dit initiatief plaatst erfgoed letterlijk en figuurlijk midden in de samenleving. De lokale Time Machines brengen de geschiedenis van de stad, wijk, straat of zelfs het huis dichtbij bewoners, en maken het tastbaar, zichtbaar én persoonlijk relevant. Door mensen uit te nodigen hun eigen foto’s en verhalen te delen, verandert erfgoed van iets ‘van een instelling’ in iets van en voor iedereen. Het project erkent dat erfgoed onlosmakelijk deel uitmaakt van de leefomgeving, en maakt dat zichtbaar op plekken waar mensen dagelijks zijn.
De Time Machines functioneren als platforms voor ontmoeting, herinnering en kennisdeling, en sluiten daarmee aan op de gedachte dat erfgoed bijdraagt aan identiteit, zelfbewustzijn en gemeenschapszin. Inwoners herkennen hun eigen geschiedenis in het grotere verhaal van hun stad en voelen zich daardoor meer verbonden met hun omgeving. Dit versterkt het gevoel van eigenaarschap en draagt bij aan het welzijn van mensen - erfgoed als bron van zingeving en verbondenheid.
3.5. Omschrijving hoofdthema en aanluiting bij de Uitvoeringsagenda Faro
Het Time Machine-initiatief sluit goed aan bij het kantelende perspectief op dienstverlening zoals geformuleerd in de NDE-agenda: niet de collectie of technologie staat centraal, maar de gemeenschap als belanghebbende. In dit project draait het om wat inwoners zelf belangrijk vinden in hun leefomgeving, welke verhalen ze willen vertellen en hoe ze dat digitaal willen doen. De vraag is niet: “Wat kunnen wij ontsluiten?” maar: “Wat willen mensen delen, bewaren en doorgeven?” Daarmee sluit het project direct aan op het idee om erfgoedgemeenschappen mede vorm te laten geven aan digitaal erfgoed.
Het initiatief bevordert ‘Ondersteuning erfgoedparticipatie’ doordat het de voorwaarden schept voor inwoners, vrijwilligers en erfgoedgemeenschappen om actief bij te dragen aan het zichtbaar maken van erfgoed. Mensen kunnen laagdrempelig meedoen. Het project ondersteunt erfgoedparticipatie door mensen niet alleen te betrekken als publiek, maar hen daadwerkelijk in staat te stellen zelf mede-eigenaar, bijdrager en medevormgever van het erfgoed te worden.
Tegelijkertijd is er ruimte voor intergenerationele samenwerking. Jongeren kunnen bijvoorbeeld ouderen helpen met het digitaliseren van oude foto’s, terwijl ouderen hun lokale historische kennis delen. Zo ontstaat een dynamische uitwisseling van digitale nieuwsgierigheid en historische ervaring, waarin beide groepen waardevol zijn voor het erfgoedproces.
De Time Machines maken het mogelijk dat lokale bewoners - jong en oud, digitaal vaardig of juist minder - actief bijdragen aan erfgoed door eigen foto’s te delen, deze te taggen, of verhalen toe te voegen. Er is aandacht voor een laagdrempelige en beheersbare interactieomgeving, zodat mensen eenvoudig kunnen meedoen, zonder dat technische barrières hen uitsluiten. Dit draagt bij aan digitale inclusie en erkent dat niet iedereen dezelfde toegang of vaardigheden heeft. De tools die ontwikkeld en gedeeld worden binnen dit project zijn dan ook gericht op gebruiksvriendelijkheid, herbruikbaarheid en brede toepasbaarheid, zodat ook kleinere erfgoedinitiatieven of vrijwilligersgroepen ermee aan de slag kunnen. Dit maakt dat digitaal erfgoed het hoofdthema is waarbinnen we aanvragen.
3.6. Structurele verandering ten opzichte van het huidige functioneren van de erfgoedzorg
In plaats van erfgoed slechts te bewaren en ontsluiten, draait het in de lokale Time Machines om actieve betrokkenheid, samenwerking en gedeeld eigenaarschap. Inwoners kunnen hun eigen foto’s en verhalen toevoegen en taggen, waardoor erfgoed dynamisch, persoonlijk en meervoudig wordt. Dit vraagt om een systeemaanpassing: van aanbod- naar vraaggericht werken en van erfgoed beheren naar erfgoed samen maken.
Het project ontwikkelt en test een laagdrempelige, visueel aantrekkelijke annotatieomgeving waarin burgers op toegankelijke wijze kunnen participeren. Dit instrument biedt een concrete methodiek voor participatieve digitale erfgoedzorg, die breed toepasbaar en herbruikbaar is. Door technische samenwerking en uitwisseling tussen Time Machines ontstaat bovendien een schaalsprong: succesvolle toepassingen kunnen eenvoudig elders worden ingezet. Dit maakt het mogelijk om met beperkte middelen meer gemeenschappen te bedienen.
Daarnaast stimuleert het project nieuwe coalities tussen erfgoedinstellingen, vrijwilligersorganisaties, burgerinitiatieven, ontwerpers, techpartners en educatieve instellingen. Een voorbeeld is de samenwerking in Hilversum met Hilversummers.nl, een een online platform dat zich inzet voor het versterken van de lokale gemeenschap in Hilversum; of de samenwerking in Gouda met een game-ontwikkelaar. Deze netwerken zorgen voor verankering, maar ook voor verrijking van het erfgoed met diverse perspectieven en kennisvormen. Zo wordt het erfgoedveld inclusiever, creatiever en beter verbonden met de samenleving.
Kortom, het initiatief is geen tijdelijk experiment, maar een bouwsteen voor een digitale, meer democratische en participatieve erfgoedsector. Het laat zien hoe erfgoed midden in de samenleving kan staan als iets dat mensen samen vormgeven, betekenis geven en levend houden.
3.7. Plan voor kennisontwikkeling en kennisdeling en de daarbij beoogde doelgroep(en)
Het project zet actief in op kennisdeling met erfgoedprofessionals, burgers en beleidsmakers. Dit gebeurt via twee sporen: doorlopende communicatie via online kanalen van de participerende time machines (en partnerorganisaties) en het organiseren van kennissessies.
3.7.1. Doorlopende communicatie
-
Nieuwsbrieven: Er verschijnen vier digitale nieuwsbrieven (elk kwartaal) met updates over het project, ervaringen uit de deelnemende steden, technische keuzes en leerpunten. De nieuwsbrieven worden verspreid via partnerorganisaties en netwerken in de erfgoedsector. De doelgroep wordt gevormd door erfgoedprofessionals.
-
Sociale media: Via LinkedIn, Mastodon en Bluesky delen we regelmatig korte berichten met foto’s, citaten van deelnemers en aankondigingen. Dit is afhankelijk van het onderwerp communicatie naar vrijwilligers en naar erfgoed professionals.
-
Partnersites: We maken gebruik van bestaande kanalen van partners (bijvoorbeeld historische verenigingen en erfgoedorganisaties) om nieuws en oproepen tot participatie te delen. Communicatie met vrijwilligers en bewoners vindt plaats via bestaande kanalen en social media. Naar verwachting zal deze communicatie specifiek voor het project zijn, de werkelijke uitnutting van de gecreërde participatieve mogelijkheden zal na het project plaatsvinden.
3.7.2. Kennissessies en webinars
Er worden minimaal twee kennissessies georganiseerd:-
Sessie 1 (halverwege het project): Online bijeenkomst over het betrekken van burgers bij digitale erfgoedprojecten. Hier delen we ervaringen en eerste resultaten met andere professionals.
-
Sessie 2 (aan het einde van het project): Fysieke bijeenkomst over de impact, leerpunten en toekomstmogelijkheden van participatief erfgoed. Met demonstraties en ruimte voor uitwisseling. Beide sessies worden opgenomen en gepubliceerd. Ook worden presentaties en samenvattingen online beschikbaar gesteld.
4. Pilot: Smaak van Gouda
Smaak van Gouda – Verhalen achter verdwenen restaurants in de stad is een participatief erfgoedproject over de horecageschiedenis van Gouda. Het is de eerste concrete pilot waarmee het IOTM/Jottem platform van begin tot eind wordt beproefd.
4.1. Aanleiding & doel
Restaurants, cafés, snackbars, lunchrooms, koffiehuizen, ijssalons en afhaalzaken zijn al generaties lang onderdeel van het dagelijks leven in Gouda. Veel van deze zaken zijn verdwenen, terwijl nieuwe ondernemers en keukens hun intrede deden. Het project wil de geschiedenis van de Goudse horeca documenteren, bewaren en toegankelijk maken - van koffiehuizen en melkbars tot Chinese restaurants, shoarmazaken, pizzeria’s, Surinaamse eethuizen en moderne wereldkeukens - met bijzondere aandacht voor de rol van ondernemers met verschillende culturele achtergronden en de ontwikkeling van internationale keukens. Zo ontstaat niet alleen een overzicht van eetgelegenheden, maar ook een sociaal-culturele geschiedenis van smaak, ondernemerschap, migratie en ontmoeting.
4.2. Pilot voor IOTM
De pilot draait als eerste project op de organisatiejottem van Streekarchief Midden-Holland, met een eigen projectpagina, oproep en datasetbeschrijving. Inwoners dragen bij via het Jottem platform: foto’s, menukaarten, advertenties en persoonlijke herinneringen worden verzameld, gemodereerd en duurzaam ontsloten. De pilot valideert de bestaande platformfunctionaliteit (zie § 7 Usecases per rol) en brengt een aantal eisen scherp in beeld.
4.3. Wat dit van het platform vraagt
-
Getypeerd bronmateriaal - naast foto’s ook menukaarten, advertenties, folders, krantenartikelen en vergunningen, via het materiaaltype/genre op een jottem (zie § 6.1 Functionele requirements).
-
Interactieve kaart, gekoppeld aan de Gouda Tijdmachine - bezoekers navigeren door tijd en plaats; per pand zijn de opeenvolgende eetgelegenheden zichtbaar als tijdlijn (zie § 7.8 Als bezoeker kan ik). De tijdlijn wordt afgeleid uit locatiemetadata (adres, openings-/sluitingsjaar) op de jottems; er is geen apart locatiemodel nodig.
-
Koppelingen naar archiefbronnen - per jottem kunnen verwijzingen naar externe archiefbronnen worden vastgelegd (zie § 7.6 Als gebruikers/annoteerder (binnen een organisatie) kan ik).
-
Privacy, authenticiteit & auteursrecht - zorgvuldige omgang met persoonsgegevens en herkenbare personen, en onderscheid tussen herinnering en verifieerbaar feit (zie § 6.4 Privacy, authenticiteit & auteursrecht).
-
Crowdsourcing-workflow - uploaden, aanvullen, corrigeren en reageren, met redactionele beoordeling vóór publicatie (zie § 7 Usecases per rol).
4.4. Te verzamelen materiaal
-
Foto’s van gevels, interieurs en personeel
-
Menukaarten, advertenties, folders en openings-/jubileumuitgaven
-
Krantenartikelen, vergunningen en bedrijfsdocumenten
-
Locatiegegevens: adressen, openings- en sluitingsjaren, opvolgende horecazaken
-
Herinneringen van bezoekers, medewerkers en (oud-)eigenaren - als annotaties of, bij interviews, als audio-jottems
4.5. Participatie
Het project wordt samen met inwoners opgebouwd via verzameldagen en scansessies, oproepen via lokale media en interviews met oud-horecaondernemers, in samenwerking met wijkverenigingen en erfgoedorganisaties zoals Stichting Gedeeld Verleden, Gezamenlijke Toekomst.
5. Praatplaten
5.1. Belanghebbenden
5.2. Mediaproces
5.3. Processtappen
5.4. Platformonderdelen
5.5. Annotaties
5.6. Technische onderdelen
6. Requirements
6.1. Functionele requirements
-
inloggen door gebruikers moet zeer laagdrempelig zijn, dus inclusief social login
-
inloggen door beheerders moet zijn te beveiligen via 2FA (TOTP) of een passkey
-
duurzame link per gepubliceerde jottem, in HTML weergave (die IIIF afbeelding / metadata / annotaties toont) en RDF (volgens schema.org AP NDE, annotaties via API) op basis van content-negotiation; het koppelen van een ARK (met objectname op basis van NOID of UUID) aan deze link is uitgesteld naar een latere fase (zie § 13.2 Besliste openstaande ontwerpvragen)
-
elke jottem behoort tot precies één project (een campagne op organisatieniveau, bijv. Smaak van Gouda); elke organisatie heeft minstens één project en elk project draagt een eigen datasetbeschrijving
-
elke jottem kan een materiaaltype/genre dragen (bijv. foto, menukaart, advertentie, folder, krantenartikel, vergunning), zodat divers bronmateriaal naast foto’s kan worden verzameld en gefilterd
-
het uploadformulier loopt in twee stappen (eerst de foto, dan de gegevens); bij een permalink uit een beeldbank worden titel, beschrijving, datering en vervaardiger overgenomen uit het IIIF-manifest, en bij een eigen foto stelt het platform titel, categorie en steekwoorden voor; suggesties worden altijd door de inzender bevestigd en zijn nooit blokkerend (zie § 8.6.2 Suggesties bij het uploaden)
-
elke jottem kan koppelingen naar externe archiefbronnen bevatten (label + URI)
-
twee jottems binnen hetzelfde project kunnen aan elkaar worden gekoppeld wanneer ze hetzelfde object tonen (andere periode of andere hoek); de koppeling is bij beide jottems zichtbaar en komt terug in de open data (zie § 8.5.2 Zelfde object, andere foto)
-
elke gepubliceerde jottem heeft deelknoppen naar sociale media en de HTML-weergave bevat de juiste Open Graph-metadata (
og:title,og:description,og:image,og:url), zodat een gedeelde link een nette preview toont -
elke annotatie en reactie is te rapporteren (spam, reclame, ongepast), ook zonder in te loggen; meldingen komen in de moderatieomgeving van de organisatie en de afhandeling wordt gelogd
-
ondersteunde bestandstypen in de MVP: JPG, PNG en TIFF; PDF en audio (met bijbehorende conversiepipeline) volgen in fase 2
-
bij het uploaden bevestigt de uploader de licentie van het project; die wordt op de jottem vastgelegd
-
op apparaten met een camera (met name smartphones) biedt het uploadformulier naast bestandskeuze de mogelijkheid om direct een foto te maken met de camera; de aanwezigheid van een camera wordt gedetecteerd en zonder camera verschijnt alleen de bestandskeuze
-
naast bestand en camera accepteert het uploadformulier een beeldbank-permalink (herleid tot IIIF Manifest of info.json, te beginnen met Memorix/SAMH) of een directe foto-URL (server-side gecontroleerd op een werkende afbeelding); externe beelden worden alleen verwezen, niet gekopieerd, en doorlopen dezelfde Herkenbaar-check en moderatie
-
de organisatiebeheerder stelt per project in welke van de vier uploadwijzen (bestand kiezen, foto maken met de camera, beeldbank-permalink, foto-URL) actief zijn, met altijd minstens één actieve wijze (standaard: alle vier); het uploadformulier toont alleen de actieve wijzen en de server dwingt de instelling bij het indienen af
-
uploaden gaat altijd via een project (de knoppen op de startpagina en de projectpagina’s); zonder projectkeuze leidt de uploadpagina terug naar de startpagina met het overzicht van de lopende projecten en het hoofdmenu bevat daarom geen aparte uploadlink
-
de uploader prikt de locatie als speld op de kaart (coördinaten); adres en openings-/sluitingsjaren zijn metadata
6.2. Niet-functionele requirements
Onderstaande waarden zijn richtwaarden (concept), vast te stellen door de projectgroep.
-
taal: de interface en redactionele content zijn Nederlandstalig
-
toegankelijkheid: de publieke site voldoet aan WCAG 2.2 niveau AA
-
browsers: de laatste twee versies van evergreen browsers (Chrome, Firefox, Safari, Edge) op desktop en mobiel (iOS Safari, Android Chrome); de site is responsive
-
performance: publiekspagina’s laden binnen 2 seconden (LCP); IIIF-tiles en manifests worden uit cache geserveerd; zoekresultaten binnen 1 seconde
-
capaciteit: eerste jaar orde van grootte 10.000 jottems verdeeld over 4 organisaties; uploads tot 50 MB per bestand; opslag- en verwerkingsgebruik per organisatie wordt gemonitord met alerts (harde quota per organisatie in een latere fase)
-
beschikbaarheid: richtwaarde 99,5% per maand; gepland onderhoud wordt aangekondigd
-
beveiliging: OWASP Top 10 wordt aantoonbaar afgedekt, TLS op alle verbindingen, rate limiting op publieke endpoints, verplichte 2FA (TOTP of passkey) voor beheer- en moderatorrollen; een wachtwoordreset voor een onbekend e-mailadres is niet te onderscheiden van een bekend adres (altijd dezelfde neutrale boodschap, geen accountenumeratie)
-
mail-afleverbaarheid: SPF, DKIM en DMARC (met alignment) zijn ingeregeld op het verzenddomein; attenderingsmails dragen one-click unsubscribe-headers (RFC 8058) naast de uitschakellink; zie § 11.5 Afleverbaarheid voor het volledige pakket (reverse DNS, bouncebeheer, reputatiemonitoring)
-
privacy: verwijderverzoeken worden binnen 30 dagen afgehandeld, inclusief depublicatie en cache-purge
-
back-up & herstel: nachtelijkse offsite back-ups; RPO 24 uur, RTO 1 werkdag; jaarlijkse hersteltest
-
duurzaamheid/exit: periodieke publieke datadumps en een exportstrategie, zie § 13.1 Infrastructuurrichting: alles op de Jottem-server
-
monitoring: uptime-, logging- en alertvoorzieningen conform de systeemarchitectuur
6.3. Standaarden & API’s
-
IIIF Image API (info.json)
-
IIIF Presentation API (manifest/collection)
-
AnnoRepo API (W3C Web Annotation Protocol-server)
-
Herkenbaar API (eigen dienst: detectie van herkenbare personen op afbeeldingen)
-
NDE Termennetwerk GraphQL API (term-lookups; genres via de Cultuurhistorische Thesaurus)
-
geo-annotaties (plek fotograaf, zichtveld, locatie) worden vastgelegd als WKT/GeoJSON
-
de publieke weergave kan gekoppeld worden aan een externe kaart-/tijdmachine (bijv. de Gouda Tijdmachine) om door plaats én tijd te navigeren
6.4. Privacy, authenticiteit & auteursrecht
-
persoonsgegevens worden verwerkt conform de AVG
-
recente foto’s van herkenbare personen worden alleen gepubliceerd met toestemming
-
elke upload wordt bij binnenkomst automatisch gecontroleerd op herkenbare personen via de Herkenbaar API (i.v.m. portretrecht); bij herkenbare personen wordt de uploader direct om een toestemmingsverklaring gevraagd en ziet de moderator het detectiesignaal (ja/nee + betrouwbaarheid) bij de kwaliteitscontrole; de detectie draait volledig op de eigen server, beelden verlaten het platform niet
-
inzenders kunnen verzoeken om verwijdering van hun materiaal
-
bijdragen worden waar mogelijk voorzien van bronvermelding
-
persoonlijke herinneringen worden onderscheiden van historisch verifieerbare feiten
-
het auteursrecht blijft bij de inzender; door inzending wordt toestemming gegeven voor publicatie binnen het project, hergebruik door derden alleen onder de aangegeven voorwaarden
6.5. (Sub)domeinen
-
www.iotm.nl - publieksfrontend
-
api.iotm.nl - publieke API (en beheer-API)
-
auth.iotm.nl - identity provider
-
iiif.iotm.nl - IIIF Image API
-
anno.iotm.nl - W3C annotatieserver
-
data.iotm.nl - RDF, SPARQL en datadumps
-
status.iotm.nl - status en monitoring
-
ark.iotm.nl - gereserveerd voor de ARK-resolver (latere fase, zie § 13.2 Besliste openstaande ontwerpvragen)
7. Usecases per rol
Ter ondersteuning van onderstaande usescases is er een prototype.
7.1. Als platformbeheerder kan ik
-
inloggen, profiel (naam, afbeelding, privacy instellingen, wachtwoord, 2FA/passkey) inzien en wijzigen en uitloggen
-
een organisatiejottem definiëren, deze heeft een naam (van vereniging, archiefinstelling, instituut, enz.), slug, favicon, logo, kleurenpalet (primary, secondary, background, …); het instellen van een ARK NAAN volgt in de latere ARK-fase (zie § 13.2 Besliste openstaande ontwerpvragen)
-
gebruikers (naam, e-mail) in de rol organisatiebeheerder van een organisatiejottem toevoegen, bewerken en verwijderen
-
bij toevoegen van een gebruiker ontvangt deze een e-mail bericht met de regels en bevestigingslink, de link bevat een acceptatie knop waarna een wachtwoord (en 2FA of passkey) ingesteld kan worden
-
kan ik statistieken bekijken, zoals het aantal logins per dag, het aantal geuploadde jottems/afgekeurd/goedgekeurd/annotaties per organisatie en per project
7.2. Als organisatiebeheerder kan ik
-
inloggen, profiel (naam, afbeelding, privacy instellingen, wachtwoord, 2FA/passkey) inzien en wijzigen en uitloggen
-
gebruikers (naam, e-mail) in de rol moderater binnen de organisatiejottem toevoegen, bewerken en verwijderen
-
bij toevoegen van een gebruiker ontvangt deze een e-mail bericht met de regels en bevestigingslink, de link bevat een acceptatie knop waarna een wachtwoord (en 2FA of passkey) ingesteld kan worden
-
kan ik statistieken bekijken, zoals het aantal logins per dag, het aantal geuploadde jottems/afgekeurd/goedgekeurd/annotaties, ook per project
-
kan ik projecten aanmaken en beheren (naam, slug, beschrijving, oproep, periode, afbeelding, datasetlicentie, status); elke organisatie heeft minstens één project en elke jottem hoort bij precies één project
-
kan ik per project instellen welke terminologiebronnen uit het NDE Termennetwerk beschikbaar zijn voor term-URI’s (standaard: alle bronnen)
-
kan ik per project instellen welke uploadwijzen actief zijn (bestand kiezen, foto maken met de camera, beeldbank-permalink, foto-URL), met altijd minstens één actieve wijze (standaard: alle vier)
-
kan ik een reeds bestaande collectie (met metadata en online afbeeldingen > IIIF) als project toevoegen
-
kan ik per project de datasetbeschrijving bewerken en - indien er openbare (gepubliceerde) data is - deze valideren en aanmelden bij (of afmelden van) het NDE Datasetregister
-
kan ik per project een e-depot-export (BagIt met RO-Crate-beschrijving) laten aanmaken; het aanmaken is een asynchrone job en zodra het pakket klaar is ontvang ik een e-mail met een directe downloadlink
7.3. Als moderator kan ik
-
alle jottems (afbeelding + metadata + verrijkingen) bekijken
-
de status van een jottem aanpassen van nieuw naar goedgekeurd of afgekeurd op basis van de kwaliteitscontrole op afbeelding, metadata, privacy (incl. toestemming herkenbare personen), auteursrecht en het onderscheid tussen herinnering en verifieerbaar feit
-
ik word daarbij ondersteund door het automatische detectiesignaal van de Herkenbaar API (herkenbare personen ja/nee + betrouwbaarheid) en de toestemmingsverklaring van de uploader
-
bij afkeuring ontvangt de uploader een e-mail bericht met de reden en wordt de mogelijkheid geboden om meer informatie aan te leveren
-
bij goedkeuring krijgt de jottem een duurzame link en wordt deze gepubliceerd (ARK-minting en een externe preserveringskopie volgen in een latere fase, zie § 3.3.3 Keuze oplossingsrichting) en ontvangt de uploader een e-mail bericht dat de jottem online is geplaatst en oproep om deze te delen via sociale media om reacties en aanvullende informatie bij de jottem te krijgen door annoteerders
-
gerapporteerde annotaties en reacties beoordelen: verbergen/verwijderen bij misbruik, of de melding afwijzen; de afhandeling wordt gelogd
-
kan ik statistieken bekijken, zoals het aantal geuploadde jottems/afgekeurd/goedgekeurd/annotaties
7.4. Als gebruiker (binnen een organisatie) kan ik
-
kan ik via "wachtwoord vergeten" op de loginpagina een wachtwoordreset per e-mail starten; de resetlink verloopt na korte tijd
-
inloggen ook via social login, profiel (naam, afbeelding, privacy instellingen, wachtwoord) inzien en wijzigen en uitloggen
-
kan ik lezen wat een jottem is en welke eisen hieraan gesteld worden
-
kan ik een overzicht krijgen van geuploadde afbeeldingen, status een #annotaties en deellinks
-
kan ik jottems markeren als favoriet, het overzicht van favorieten bekijken en de favoriet markering verwijderen
-
kan ik mijn favoriete jottems als openbaar instellen waardoor er een deelbare link beschikbaar komt (is geen duurzame link)
7.5. Als gebruiker/uploader (binnen een organisatie) kan ik
-
kan ik een afbeelding uploaden en voorzien van metadata (beschrijving, vervaardiger, datum, plaats, personen op afbeelding leven mogelijk nog) en steekwoorden, en kies ik daarbij het project (van de organisatie) waaraan ik bijdraag
-
bij het uploaden wordt de afbeelding automatisch gecontroleerd op herkenbare personen (Herkenbaar API); zijn die er, dan krijg ik direct de vraag of ik een toestemmingsverklaring van de afgebeelde personen kan afleggen
-
kan ik die verklaring niet afleggen, dan kies ik zelf: de upload annuleren, of tóch indienen; in dat laatste geval gaat de jottem met de vlag "herkenbaar: ja, toestemming: nee" de moderatiewachtrij in en weegt de moderator af of publicatie kan
-
bevestig ik bij het indienen de licentie van het project (vastgelegd op de jottem)
-
kan ik op een apparaat met camera (zoals mijn telefoon) direct een foto maken in plaats van een bestand te kiezen
-
kan ik in plaats van een bestand een permalink uit een beeldbank opgeven (het platform herleidt die tot een IIIF Manifest of info.json en verwijst daarnaar; herkenning start met de Memorix-beeldbank van SAMH) of een foto-URL van een website (het platform controleert dat de link een werkende afbeelding oplevert); extern materiaal wordt niet gekopieerd, alleen verwezen
-
kan ik bij het uploaden een materiaaltype/genre kiezen (bijv. foto, menukaart, advertentie, folder, krantenartikel, vergunning)
-
kan ik locatiemetadata toevoegen (adres, openings-/sluitingsjaar) en de locatie als speld op de kaart prikken (dat levert de coördinaten), zodat de jottem op de kaart en in een pand-tijdlijn kan verschijnen
-
kan ik een afgekeurde jottem aanpassen (n.a.v. de afkeurreden) en opnieuw indienen ter beoordeling
-
kan ik afgekeurdde jottems verwijderen (goedgekeurde jottems niet!)
7.6. Als gebruikers/annoteerder (binnen een organisatie) kan ik
-
kan ik een extra metadata aan de gehele jottem toevoegen, waarbij term-URI’s gezocht worden via het NDE Termennetwerk binnen de voor het project ingestelde terminologiebronnen, zoals
-
een plaatsnaam (label+URI)
-
de plek waar de fotograaf stond (op de kaart) plus zichtveld (WKT)
-
gebeurtenis (label+URI)
-
koppeling naar een externe archiefbron (label+URI)
-
vrije tekst: herinnering, aanvulling of correctie
-
kan ik een extra metadata aan een getekend vlak op de jottem toevoegen, zoals
-
identificatie van persoon, gebouw, bedrijf (naam+URI)
-
kan ik reageren op een annotatie in de vorm van vrije tekst (herinnering, aanvulling of correctie)
-
kan ik mijn eigen annotaties bewerken en verwijderen; de wijzigingsgeschiedenis blijft daarbij bewaard in de annotatieserver
Zie § 8 Verrijkingen voor de volledige catalogus van verrijkingsmogelijkheden, met per mogelijkheid de call-to-action, de technische impact en de vorm als Web Annotation.
7.7. Als API gebruiker kan ik
-
per organisatie nieuwe/bijgewerkte (=ook nieuwe annotaties) jottems harvesten via IIIF CD
-
per organisatie nieuwe jottems via RSS
-
kan ik jottems doorzoeken op basis van elasticsearch
-
kan ik annotaties zoeken
-
annotaties ophalen via het W3C Web Annotation Protocol: per jottem (AnnotationCollection uit de container) en per organisatie (aggregerende AnnotationCollection)
-
per organisatie / project een IIIF collection opvragen
-
per project een datasetbeschrijving, RSS-feed en aggregerende AnnotationCollection opvragen
-
per jottem IIIF info.json + manifest opvragen
-
per project een datasetbeschrijving (met datadump van alle jottems in RDF volgens schema.org AP NDE als distributie) ophalen; de platformbrede datacatalogus bundelt alle projectdatasets
7.8. Als bezoeker kan ik
-
lezen over het iotm platform, faq, privacy, auteursrecht
-
de organisatie- en projectpagina’s lezen met informatie over doel, oproep tot actie
-
mezelf registreren (waarmee je een gebruiker wordt)
-
gepubliceerde jottems bekijken/doorzoeken
-
favorieten van gebruikers bekijken
-
een jottem delen via de deelknoppen (sociale media, e-mail, link kopiëren); de gedeelde link toont een nette preview
-
via een interactieve kaart (gekoppeld aan de Gouda Tijdmachine) door tijd en plaats navigeren
-
per pand de opeenvolgende eetgelegenheden als tijdlijn bekijken
-
een verwijderingsverzoek indienen voor eigen of herkenbaar materiaal
-
een annotatie of reactie rapporteren (spam, reclame, ongepast); de melding komt in de moderatieomgeving van de organisatie
8. Verrijkingen
Het verrijken van geüploade afbeeldingen is cruciaal om losse foto’s en documenten om te zetten in doorzoekbare, gestructureerde en betekenisvolle historische bronnen. Dit hoofdstuk is de catalogus van verrijkingsmogelijkheden: per mogelijkheid de beschrijving, de call-to-action (B1-taalniveau) die bij een jottem wordt getoond om gebruikers te nudgen, de technische impact of standaard, en een indicatie hoe de verrijking er als W3C Web Annotation uitziet. Het sluit aan op de § 7 Usecases per rol van de annoteerder en op de opslag en ontsluiting van annotaties in de data-architectuur.
Leeswijzer bij de Web Annotation-voorbeelden. Alle voorbeelden volgen het
W3C Web Annotation Data Model. Voor de
leesbaarheid zijn @context (http://www.w3.org/ns/anno.jsonld), id, creator en
created weggelaten; het platform vult die altijd. Het target is de duurzame jottem-URI
of het IIIF-canvas; vlakken worden geselecteerd met een FragmentSelector
(xywh=pixel:x,y,w,h) of SvgSelector. De impact-indicatie: laag = past in de
bestaande annotatieflow, middel = extra UI of veld, hoog = nieuwe pipeline of
koppelvlak. Mogelijkheden gemarkeerd met (niet in MVP) volgen in fase 2 of later.
8.1. Inhoudelijke en beeldannotaties (IIIF en W3C Web Annotations)
8.1.1. Vlak-annotaties (bounding boxes)
Het selecteren van specifieke regio’s of uitsneden op een afbeelding, bijvoorbeeld een individuele persoon op een groepsfoto, een detail van een gevel of een specifiek gerecht op een menukaart.
Call-to-action: "Zie je iets bijzonders op deze foto? Teken er een vak omheen en vertel wat het is." en "Ken je iemand op deze foto? Klik op die persoon."
Techniek/standaard: W3C Web Annotation met FragmentSelector (Media Fragments,
xywh=pixel:) of SvgSelector op het IIIF-canvas; Annotorious in de frontend. Impact:
laag (kern van de bestaande annotatieflow).
Als Web Annotation:
{ "type" : "Annotation" , "motivation" : "identifying" , "target" : { "source" : "https://iiif.iotm.nl/jottem/{id}/canvas/1" , "selector" : { "type" : "FragmentSelector" , "conformsTo" : "http://www.w3.org/TR/media-frags/" , "value" : "xywh=pixel:410,220,180,260" } }, "body" : { "type" : "TextualBody" , "purpose" : "identifying" , "value" : "Wong Lee, kok" } }
8.1.2. Taggen met gecontroleerde vocabulaires
Het koppelen van gestructureerde begrippen uit het NDE Termennetwerk, de Cultuurhistorische Thesaurus (CHT) of Wikidata aan (onderdelen van) de afbeelding.
Call-to-action: "Wat zie je op deze foto? Kies een woord uit de lijst, dan kan iedereen het terugvinden."
Techniek/standaard: motivation tagging met een SpecificResource-body die naar de
term-URI wijst; termen zoeken via het NDE Termennetwerk (GraphQL), beperkt tot de
terminologiebronnen van het project. Impact: laag (bestaande Termennetwerk-integratie).
Als Web Annotation:
{ "type" : "Annotation" , "motivation" : "tagging" , "target" : "https://www.iotm.nl/jottem/{id}" , "body" : { "type" : "SpecificResource" , "purpose" : "tagging" , "source" : "https://data.cultureelerfgoed.nl/term/id/cht/{term}" } }
8.1.3. Materiaal- en genretypering
Het toekennen van het specifieke bron- of materiaaltype aan de upload, zoals foto, menukaart, advertentie, folder, krantenartikel of vergunning.
Call-to-action: "Wat voor iets is dit? Kies: foto, menukaart, advertentie of iets anders."
Techniek/standaard: in de MVP is dit metadata (Media.genre, gekoppeld aan een
CHT-term, zie de data-architectuur), geen annotatie; een correctievoorstel door een
gebruiker kan wél als annotatie. Impact: laag (bestaand veld).
Als Web Annotation (correctievoorstel):
{ "type" : "Annotation" , "motivation" : "classifying" , "target" : "https://www.iotm.nl/jottem/{id}" , "body" : { "type" : "SpecificResource" , "purpose" : "classifying" , "source" : "https://data.cultureelerfgoed.nl/term/id/cht/{menukaart}" } }
8.1.4. Crowd-solving: identificatievragen
Vragen stellen aan de gemeenschap om onbekende elementen op te lossen, zoals "Wie kent deze persoon?" of "Welke winkel was dit?".
Call-to-action: "Weet jij dit niet? Stel je vraag, misschien weet een ander het wel." en bij bestaande vragen: "Iemand vraagt: wie is dit? Weet jij het antwoord?"
Techniek/standaard: motivation questioning; antwoorden hangen er als reactie aan
(motivation replying, zie de bestaande reactieflow). Impact: laag.
Als Web Annotation:
{ "type" : "Annotation" , "motivation" : "questioning" , "target" : { "source" : "https://iiif.iotm.nl/jottem/{id}/canvas/1" , "selector" : { "type" : "FragmentSelector" , "value" : "xywh=pixel:120,80,200,300" } }, "body" : { "type" : "TextualBody" , "purpose" : "questioning" , "value" : "Wie kent deze persoon?" } }
8.2. Geografische en temporele verrijking (plaats en tijd)
8.2.1. Georeferentiëring en adreskoppeling
Het toevoegen van coördinaten, straatnamen en huisnummers waaraan de afbeelding is gerelateerd. In de MVP prikt de uploader de locatie als speld op de kaart (dat levert de coördinaten als metadata); automatische adreskoppeling (geocoding, pand-ID’s zoals BAG) is (niet in MVP).
Call-to-action: "Weet je waar dit was? Zet een speld op de kaart." en "Klopt de plek niet helemaal? Versleep de speld."
Techniek/standaard: speld = lat/lon als metadata bij de jottem (MVP); correcties en aanvullingen door anderen als annotatie met een GeoJSON-body; latere fase: PDOK Locatieserver en BAG-pand-ID’s. Impact: laag (speld), hoog (adreskoppeling).
Als Web Annotation (locatievoorstel):
{ "type" : "Annotation" , "motivation" : "identifying" , "target" : "https://www.iotm.nl/jottem/{id}" , "body" : { "type" : "TextualBody" , "purpose" : "identifying" , "format" : "application/geo+json" , "value" : "{ \"type\": \"Point\", \"coordinates\": [4.7083, 52.0115] }" } }
8.2.2. Tijdlijn en periode-aanduiding
Het vastleggen van een exacte datum, jaartal of tijdsperiode, zoals de openings- en sluitingsjaren van een horecazaak of bedrijf in een pand.
Call-to-action: "Weet je wanneer dit was? Vul het jaartal in, ook een gok helpt." en "Wanneer ging deze zaak open en dicht?"
Techniek/standaard: periodes in EDTF (Extended Date/Time Format, bijv. 1973/1996
of 196X voor "jaren zestig"); exacte datums als metadata, aanvullingen en correcties als
annotatie. Voedt de pand-tijdlijn op de kaart. Impact: laag.
Als Web Annotation:
{ "type" : "Annotation" , "motivation" : "describing" , "target" : "https://www.iotm.nl/jottem/{id}" , "body" : { "type" : "TextualBody" , "purpose" : "describing" , "value" : "Geopend 1973, gesloten 1996 (EDTF: 1973/1996)" } }
8.2.3. Geopositionering en zichtveld
Het bepalen van het camerastandpunt en de kijkrichting om de foto in te passen in een interactieve kaart of ruimtelijk-temporele omgeving, zoals de Gouda Tijdmachine.
Call-to-action: "Waar stond de fotograaf? Zet een speld en draai het pijltje in de kijkrichting."
Techniek/standaard: GeoJSON-punt met kijkrichting (bearing in graden) en zichtshoek;
sluit aan op het GTM-koppelvlak (fase 2) en op de geo-requirements (WKT/GeoJSON). Impact:
middel (extra UI op de kaart). De invoer gebruikt
Leaflet.GeotagPhoto
(L.geotagPhoto.camera), dezelfde interactie als in de Gouda Tijdmachine: versleep de
camera en het doelpunt en knijp de beeldhoek. Opgeslagen wordt een Feature met het
camerapunt als geometry en properties: { bearing, fov, target: [lon, lat] }; het
doelpunt maakt herbewerken mogelijk.
Als Web Annotation:
{ "type" : "Annotation" , "motivation" : "describing" , "target" : "https://www.iotm.nl/jottem/{id}" , "body" : { "type" : "TextualBody" , "purpose" : "describing" , "format" : "application/geo+json" , "value" : "{ \"type\": \"Point\", \"coordinates\": [4.7083, 52.0115], \"properties\": { \"bearing\": 220, \"fov\": 60 } }" } }
8.3. Tekstuele verrijking en transcriptie (OCR/HTR)
8.3.1. Handmatige en geassisteerde transcriptie (niet in MVP)
Het letterlijk uittypen van teksten die op het beeld staan, zoals opschriften op uithangborden, menukaarten, krantenartikelen of handgeschreven annotaties en brieven.
Call-to-action: "Kun je lezen wat hier staat? Typ het over, dan kan iedereen het vinden."
Techniek/standaard: motivation supplementing (de standaardvorm voor transcripties in
IIIF-omgevingen), per tekstregel of tekstblok met een vlak-selector; geassisteerd met
OCR (Tesseract) of HTR (Loghi/Transkribus) als suggestie. Impact: hoog (aparte
transcriptie-UI en, bij assistentie, een OCR/HTR-pipeline).
Als Web Annotation:
{ "type" : "Annotation" , "motivation" : "supplementing" , "target" : { "source" : "https://iiif.iotm.nl/jottem/{id}/canvas/1" , "selector" : { "type" : "FragmentSelector" , "value" : "xywh=pixel:60,340,480,60" } }, "body" : { "type" : "TextualBody" , "purpose" : "supplementing" , "value" : "Babi pangang f 8,50" } }
8.3.2. Vertaling en begrippenverklaring
Het toelichten van verouderde termen, verdwenen beroepen, dialectwoorden of historische munteenheden die op het beeld of in menukaarten en documenten voorkomen.
Call-to-action: "Weet jij wat dit woord betekent? Leg het uit voor wie het niet meer kent."
Techniek/standaard: motivation describing op een vlak of op de hele jottem;
waar mogelijk met een term-URI (Termennetwerk) als tweede body. Impact: laag.
Als Web Annotation:
{ "type" : "Annotation" , "motivation" : "describing" , "target" : { "source" : "https://iiif.iotm.nl/jottem/{id}/canvas/1" , "selector" : { "type" : "FragmentSelector" , "value" : "xywh=pixel:60,340,180,40" } }, "body" : { "type" : "TextualBody" , "purpose" : "describing" , "value" : "Een melkinrichting was een winkel waar je melk, boter en kaas kocht." } }
8.3.3. Indexering van namen en lijsten (niet in MVP)
Het specifiek doorzoekbaar maken van namen en functies op gedenkplaten, verenigingsfoto’s of officiële documenten.
Call-to-action: "Staan er namen op? Typ ze over, dan zijn ze te vinden voor familie en onderzoekers."
Techniek/standaard: reeks supplementing-annotaties met per naam een vlak-selector en
een gestructureerde body (naam, functie); de zoekindex neemt ze mee als doorzoekbare
velden. Impact: middel (lijst-invoer-UI en indexering).
Als Web Annotation:
{ "type" : "Annotation" , "motivation" : "supplementing" , "target" : { "source" : "https://iiif.iotm.nl/jottem/{id}/canvas/1" , "selector" : { "type" : "FragmentSelector" , "value" : "xywh=pixel:220,120,160,40" } }, "body" : { "type" : "TextualBody" , "purpose" : "identifying" , "value" : "J. van Dam, voorzitter" } }
8.4. Storytelling en anekdotische verrijking
8.4.1. Persoonlijke herinneringen en anekdotes
Het toevoegen van verhalen en getuigenissen bij een foto. Hierbij wordt een duidelijk onderscheid gemaakt tussen historisch verifieerbare feiten en persoonlijke herinneringen.
Call-to-action: "Was jij hier weleens? Vertel je herinnering, groot of klein." en "Wat weet jij nog van deze plek?"
Techniek/standaard: motivation commenting; het onderscheid herinnering versus feit is
een expliciet kenmerk op de annotatie (platform-extensie jottem:aard), zichtbaar in de
weergave en meegenomen in de moderatiehandreiking. Impact: laag.
Als Web Annotation:
{ "type" : "Annotation" , "motivation" : "commenting" , "target" : "https://www.iotm.nl/jottem/{id}" , "body" : { "type" : "TextualBody" , "purpose" : "commenting" , "value" : "Mijn ouders aten hier elke verjaardag." }, "jottem:aard" : "herinnering" }
8.4.2. Audio-annotaties en interviews (niet in MVP)
Het koppelen van gesproken herinneringen, mondelinge historie (oral history) of interviewfragmenten aan de afbeelding of een specifiek canvas.
Call-to-action: "Vertel je verhaal liever? Neem het op, praten mag ook."
Techniek/standaard: annotatie met een audio-body (opname via de browser, opslag in de
audio-bucket); hangt samen met de audio-ondersteuning uit fase 2 (transcodering,
IIIF-audio-canvas). Impact: hoog (opname-UI en audio-pipeline).
Als Web Annotation:
{ "type" : "Annotation" , "motivation" : "commenting" , "target" : "https://www.iotm.nl/jottem/{id}" , "body" : { "type" : "Sound" , "id" : "https://media.iotm.nl/audio/{opname}.mp3" , "format" : "audio/mpeg" } }
8.4.3. Externe bronverwijzingen
Het toevoegen van URI-koppelingen naar externe archiefsystemen, kadasterkaarten of krantenbanken zoals Delpher.
Call-to-action: "Ken je een krantenbericht of archiefstuk over deze plek? Plak de link erbij."
Techniek/standaard: motivation linking met de externe URI als body; label en
bronvermelding erbij. Sluit aan op het bestaande requirement voor archiefbron-koppelingen
(label + URI). Impact: laag.
Als Web Annotation:
{ "type" : "Annotation" , "motivation" : "linking" , "target" : "https://www.iotm.nl/jottem/{id}" , "body" : { "type" : "SpecificResource" , "purpose" : "linking" , "source" : "https://resolver.kb.nl/resolve?urn=ddd:110577489:mpeg21" } }
8.5. Relatieve en vergelijkende activiteiten
8.5.1. "Toen en nu" (herfotografie) (niet in MVP)
Het toevoegen van een hedendaagse foto vanaf exact dezelfde locatie en invalshoek om verandering in de leefomgeving in beeld te brengen.
Call-to-action: "Woon je in de buurt? Maak dezelfde foto zoals het er nu uitziet en zet hem ernaast."
Techniek/standaard: de nu-foto is zelf een jottem (met eigen moderatie); de koppeling
loopt via dezelfde structurele relatie als bij § 8.5.2 Zelfde object, andere foto, met de
linking-annotatie als afgeleide; weergave als voor/na-schuif in de viewer (IIIF Choice of
twee canvassen). Impact: middel (upload-koppelflow en vergelijkingsweergave).
Als Web Annotation:
{ "type" : "Annotation" , "motivation" : "linking" , "target" : "https://www.iotm.nl/jottem/{toen}" , "body" : { "type" : "SpecificResource" , "purpose" : "linking" , "source" : "https://www.iotm.nl/jottem/{nu}" } }
8.5.2. Zelfde object, andere foto
Iemand herkent het onderwerp van een jottem en heeft er zelf een foto van: dezelfde gevel tien jaar later, hetzelfde interieur vanuit een andere hoek, dezelfde zaak op een ansichtkaart. Anders dan de andere verrijkingen levert dit geen uitspraak óver de bestaande jottem op, maar een nieuwe jottem plus een koppeling tussen de twee.
Call-to-action: "Heb je zelf een foto van hetzelfde, maar uit een andere tijd of vanuit een andere hoek? Voeg hem toe."
Techniek/standaard: de call-to-action opent een uitleg en leidt daarna naar het
uploadformulier, met de jottem van herkomst in beeld; de nieuwe foto is zelf een jottem met
eigen moderatie. De koppeling is een structurele relatie in de database (MediaRelatie,
binnen hetzelfde project) en is daarmee de bron van waarheid; daaruit worden een
linking-annotatie in de container van beide jottems en dcterms:relation in de RDF van
beide jottems afgeleid, zodra allebei gepubliceerd zijn. Weergave: bij beide jottems een
kaartje met thumbnail en link. Impact: middel (uploadkoppelflow en weergave aan twee
kanten).
Als Web Annotation:
{ "type" : "Annotation" , "motivation" : "linking" , "target" : "https://www.iotm.nl/jottem/{deze}" , "body" : { "type" : "SpecificResource" , "purpose" : "linking" , "source" : "https://www.iotm.nl/jottem/{andere}" }, "jottem:verrijking" : "zelfde-object" }
8.5.3. Chronologische reeksen
Het onderling koppelen van afbeeldingen om een tijdlijn van één specifieke locatie, familie of evenement door de jaren heen op te bouwen.
Call-to-action: "Hoort deze foto bij dezelfde plek als een andere? Koppel ze aan elkaar."
Techniek/standaard: in de MVP ontstaat de pand-tijdlijn automatisch uit adres en
openings-/sluitingsjaren (metadata); handmatige koppelingen zijn structurele relaties zoals
bij § 8.5.2 Zelfde object, andere foto, met de linking-annotatie als afgeleide; gepubliceerde
reeksen als IIIF Collection of Range. Impact: laag (automatisch), middel (handmatig
koppelen met UI).
Als Web Annotation:
{ "type" : "Annotation" , "motivation" : "linking" , "target" : "https://www.iotm.nl/jottem/{id}" , "body" : { "type" : "SpecificResource" , "purpose" : "linking" , "source" : "https://www.iotm.nl/jottem/{ander}" } }
8.5.4. Multimediale bundeling (niet in MVP)
Een krantenartikel, menukaart, interieurfoto en personeelsfoto van hetzelfde pand of bedrijf aan elkaar koppelen.
Call-to-action: "Heb je meer over deze zaak? Voeg het samen tot één verhaal."
Techniek/standaard: IIIF Collection per pand of bedrijf, gevuld met
linking-annotaties tussen de jottems; de bundel krijgt een eigen pagina. Impact: middel.
Als Web Annotation: zoals bij § 8.5.3 Chronologische reeksen; de bundel zelf is een IIIF Collection, geen annotatie.
8.6. Geautomatiseerde en AI-ondersteunde verrijking
8.6.1. Automatische beeldherkenning (niet in MVP)
AI-gebaseerde detectie van objecten, architectuurstijlen, voertuigen of kledingstijlen als suggestie voor de gebruiker.
Call-to-action: "De computer denkt dat hier een bakfiets staat. Klopt dat? Ja / Nee."
Techniek/standaard: eigen dienst naast de Herkenbaar API; suggesties zijn annotaties
met een generator (software) en een betrouwbaarheidsscore; een gebruiker of moderator
bevestigt voordat de suggestie definitief wordt. Impact: hoog (ML-pipeline en
bevestigingsflow).
Als Web Annotation:
{ "type" : "Annotation" , "motivation" : "tagging" , "generator" : { "type" : "Software" , "name" : "jottem-beeldherkenning" }, "jottem:betrouwbaarheid" : 0.87 , "target" : { "source" : "https://iiif.iotm.nl/jottem/{id}/canvas/1" , "selector" : { "type" : "FragmentSelector" , "value" : "xywh=pixel:40,300,220,180" } }, "body" : { "type" : "TextualBody" , "purpose" : "tagging" , "value" : "bakfiets" } }
8.6.2. Suggesties bij het uploaden
Het uploadformulier loopt in twee stappen: eerst de foto, dan de gegevens erbij. Tussen die twee stappen is het beeld al bekend, en dat is het moment waarop het platform kan meedenken. Anders dan de overige verrijkingen gebeurt dit niet ná publicatie maar ervóór, en het resultaat is geen annotatie maar een voorgevuld formulierveld dat de inzender bevestigt of overschrijft.
Bij een beeldbank-permalink komt de eerste vulling gratis: het IIIF-manifest bevat titel, beschrijving, datering en vervaardiger. Bij een eigen foto komt hij van een interne dienst.
Call-to-action: geen knop; de velden staan voorgevuld met een regel eronder waar het voorstel vandaan komt. Is de dienst nog bezig wanneer de inzender aan de gegevens toe is, dan overbrugt een wachtscherm dat moment: een vis, getekend naar het beeldmerk, die rustig deint tot de voorstellen er zijn. Dat scherm knippert niet bij een snelle dienst, houdt niemand langer dan vijftien seconden op, en is altijd over te slaan.
Techniek/standaard: één interne dienst naast de Herkenbaar API, met één endpoint dat titel, categorie en steekwoorden teruggeeft, elk met een betrouwbaarheidsscore. Dezelfde semantiek als het Herkenbaar-signaal: een hulpsignaal, geen poortwachter. Ligt de dienst plat of duurt hij te lang, dan opent stap 2 met lege velden en merkt de inzender daar niets van. Impact: hoog (nieuwe dienst met twee modellen).
*Gerealiseerd in augustus 2026 als de Suggesties
API (EUPL-1.2). Gemeten op de
ontwikkelmachine (24 kernen, geen videokaart): 3,5 tot 5,4 seconde per foto en 2,7 GB
geheugen. Een aanvaard steekwoord uit de thesaurus draagt zijn term-URI mee en komt in de
RDF terug als schema:about met label en URI, niet als los woord in schema:keywords.*
Steekproef van 22 archiefbeelden (zeven foto’s uit de SAMH-beeldbank, de rest historisch drukwerk uit Wikimedia Commons, verdeeld over de zeven categorieën):
| Veld | Uitkomst |
|---|---|
| titel | 16 van de 22 direct bruikbaar, 4 zwak of vaag ("Een oud gebouw in een stad"), 2 fout ("Een man met een masker" bij een kledingstuk op een paspop). De beste zijn opvallend precies: "Een menukaart voor een hotel du cheval blanc", "Twee mannen in militaire uniformen poseren", "Een groot gebouw met rode luiken op de voorkant". |
| categorie | 20 van de 22 kregen een voorstel, waarvan 17 juist. Twee keer geen voorstel bij een beeld waar het model geen signaal vond, en dat is de bedoeling. Eén echte misser: een bronzen gedenkplaat werd "folder" genoemd. |
| steekwoorden | 19 voorstellen over 10 beelden, waarvan 14 raak. Rake voorbeelden: "stadhuizen" en "marktplaatsen" bij het Goudse stadhuis, "bruggen" en "grachten" bij een brug over een gracht, en drie treffers bij een reclamewagen. Misslagen zijn van het type "postkantoren" bij een marktplein: verwant maar onjuist. De helft van de beelden kreeg geen enkel steekwoord. |
De steekproef legde één instelfout bloot die met redeneren niet te vinden was: de ondergrens voor de categorie stond op een absolute waarde, en juist gewone historische foto’s scoren absoluut laag. Vijf van de zeven echte foto’s werden daardoor overgeslagen terwijl "foto" wel met ruime voorsprong won. Bij een keuze uit een gesloten lijst zegt de verhouding tot de nummer twee alles en de absolute waarde niets; na die correctie gingen de vijf gemiste foto’s alsnog goed.
Let wel: 22 beelden is een indruk, geen maat. Voor de livegang hoort dit herhaald te worden op materiaal dat de pilot zelf oplevert.
8.6.2.1. Afweging: één dienst of drie
| Optie | Voordelen | Nadelen |
|---|---|---|
| Eén nieuwe dienst met één endpoint (gekozen) | De foto gaat één keer over de lijn en wordt één keer gedecodeerd; beide modellen delen dezelfde voorbewerking; één container, één health-check, één plek voor het AI-label; permissief gelicentieerde modellen, dus de dienst kan EUPL-1.2 zijn zoals het platform | Twee modellen in één proces, dus het geheugengebruik van beide tegelijk; een storing raakt alle drie de suggesties tegelijk |
| Erbij in de Herkenbaar API | Geen extra container; het beeld is daar al in het geheugen | Die repo is AGPL-3.0 omdat ultralytics/YOLO dat afdwingt, en die grens valt bewust samen met de repogrens; bovendien zou één dienst twee ongelijksoortige dingen doen (portretrecht tegenover metadata) |
| Drie losse diensten | Maximaal modulair; per taak apart te schalen of te vervangen | Drie containers, drie modelladingen en drie keer hetzelfde beeld over de lijn, zonder dat het iets oplevert op de schaal van dit platform |
Besluit. Eén nieuwe dienst in een eigen repo, naast de Herkenbaar API. Doorslaggevend is dat de licentiegrens hier ánders ligt: Florence-2 is MIT en SigLIP 2 is Apache-2.0, dus deze dienst hoeft niet AGPL te worden en kan dezelfde licentie dragen als het platform. De prijs is een tweede container die modelgewichten in het geheugen houdt.
Herzien wanneer. De inferentie zo zwaar wordt dat hij een eigen machine of videokaart verdient; dan is het ook het moment om per taak te splitsen.
8.6.2.2. Afweging: het model voor de titel
| Optie | Voordelen | Nadelen |
|---|---|---|
| **Florence-2-base plus een vertaalmodel** (gekozen) | MIT; 0,23 miljard parameters, dus bescheiden geheugen; onderschrijven is precies waarvoor het model gemaakt is; het vertaalmodel (opus-mt-en-nl) is ongeveer 300 MB en klaar binnen een seconde; twee kleine, voorspelbare stappen die los te beproeven zijn | Twee modellen in plaats van één; gemeten 3,7 seconde per foto op onze machine (de schatting was vijf tot tien); de vertaalstap voegt een foutbron toe en Engelse woordvolgorde schemert soms door |
| Florence-2-large | Merkbaar betere onderschriften, vooral op rommelige historische foto’s | 0,77 miljard parameters en ongeveer drie keer zo traag; op onze machine tegen de dertig seconden per foto |
| Een meertalig VLM zoals Qwen2.5-VL | Praat direct Nederlands, dus geen vertaalstap; kan in één prompt titel, categorie én steekwoorden geven | Fors trager en zwaarder zonder videokaart; een generatief model verzint eerder details die niet op de foto staan, en bij erfgoed is een verzonnen detail schadelijker dan een ontbrekend |
| BLIP of BLIP-2 | Beproefd en veel gebruikt, ruime documentatie | Ouder; kortere en vlakkere onderschriften; nog steeds Engels, dus de vertaalstap blijft |
| Geen titelsuggestie | Nul risico op verzonnen tekst; de inzender weet zelf wat erop staat | Het lege titelveld is juist de plek waar mensen afhaken of "scan001" invullen |
Besluit. Florence-2-base met een vertaalstap. Een onderschrift is nog geen titel, dus er gaat een korte regel overheen die "een zwart-witfoto van een winkelpui met een uithangbord" terugbrengt tot "Winkelpui met uithangbord". De prijs is de vertaalstap en de wachttijd, en die valt weg achter het invullen van stap 2.
Herzien wanneer. Er een klein meertalig model verschijnt dat op enkel CPU binnen een paar seconden Nederlands onderschrijft; dan vervalt de vertaalstap.
Gemeten les bij het inrichten. Meer rekenkernen maakte de dienst dramatisch tráger: dezelfde foto kostte 3,7 seconde met zes threads, 4,5 met acht, twintig met twaalf en drieënvijftig met vierentwintig. PyTorch pakt standaard de helft van de kernen en zit daarmee ver in het verkeerde gebied, zeker op een machine die de rest van de stack ook draait. Het aantal threads is daarom instelbaar en staat op zes; op een andere machine ligt het optimum elders en moet het opnieuw gemeten worden.
8.6.2.3. Afweging: het model voor de categorie
De categorie is een keuze uit zeven vaste waarden (foto, menukaart, advertentie, folder, krantenartikel, vergunning, overig). Dat is het schoolvoorbeeld van zero-shot-classificatie: je geeft het model de kandidaatlabels als tekst en het kiest de best passende.
| Optie | Voordelen | Nadelen |
|---|---|---|
| **SigLIP 2 base zero-shot** (gekozen) | Apache-2.0; 0,4 miljard parameters; meertalig, dus Nederlandse labels werken direct zonder vertaling; onder de seconde per foto; dezelfde modelfamilie doet ook de steekwoorden, dus één set gewichten voor twee taken | De labels moeten zorgvuldig geformuleerd worden ("een menukaart van een restaurant" werkt beter dan "menukaart"); folder en advertentie lijken op elkaar en worden matig onderscheiden |
| CLIP (ViT-L/14) | De bekendste; veel voorbeeldcode en artikelen | Engelstalige tekstencoder, dus de labels moeten vertaald; ouder en zwakker op zero-shot dan SigLIP 2 |
| RAKE op de tekst | Licht, geen model nodig, geen rekentijd | Werkt hier niet: RAKE haalt sleutelwoorden uit tekst, en een geüploade foto bevat geen tekst. Het levert bovendien losse woorden op, geen keuze uit zeven categorieën |
| Een eigen getraind classificatiemodel | Het scherpst op precies deze zeven categorieën | Vraagt een gelabelde verzameling die er niet is, en onderhoud bij elke wijziging van de lijst |
Besluit. SigLIP 2 zero-shot met Nederlandse labels. Onder een drempel stellen we niets voor, en "overig" is nooit een suggestie: dat brengt niemand verder.
RAKE valt hier af omdat er geen tekst is, maar krijgt later wél een zinnige plek: op de beschrijving die de inzender zelf typt, en op getranscribeerde tekst van een menukaart of krantenartikel zodra transcriptie bestaat. Dan is er tekst om uit te putten.
Herzien wanneer. De verwarring tussen folder en advertentie in de praktijk hindert; dan is een fijnmaziger labelformulering of een klein bijgetraind model de volgende stap.
8.6.2.4. Afweging: de bron van de steekwoorden
| Optie | Voordelen | Nadelen |
|---|---|---|
| SigLIP 2 tegen een woordenlijst met term-URI’s (gekozen) | De voorstellen dragen meteen een term-URI, precies wat schema:about en schema:keywords willen; hetzelfde model als bij de categorie, dus geen extra gewichten; de lijst is per project in te perken, net als de terminologiebronnen nu al
| Wat niet in de lijst staat wordt nooit voorgesteld; de lijst moet samengesteld en onderhouden worden |
| Vrije labels uit het beeldmodel | Breder bereik, geen lijst nodig | Engels en zonder URI; de labels zijn bovendien algemeen ("building", "person") waar erfgoed juist om specifieke termen vraagt |
| Kandidaten opvragen bij het Termennetwerk | Altijd actueel, geen eigen lijst te onderhouden | Het Termennetwerk zoekt op tekst, niet op beeld; er is dus eerst een zoekterm nodig, en die is er op dat moment nog niet |
| Geen steekwoordsuggesties | Geen risico op verkeerde termen in de open data | Steekwoorden maken een foto vindbaar, en met de hand doet bijna niemand het |
Besluit. Zero-shot scoren tegen een lijst erfgoedtermen en de drie tot vijf best scorende voorstellen, boven een drempel. Zero-shot heeft hoe dan ook een kandidatenlijst nodig, en dat komt hier goed uit: de RDF wil term-URI’s en geen losse woorden. De inzender kan altijd zelf typen; de bestaande term-zoeker levert dan alsnog een URI.
Herzien wanneer. De woordenlijst te krap blijkt voor een project met een ander onderwerp; de lijst is dan per project uit te breiden zonder de dienst te wijzigen.
8.6.3. Digitale restauratie en inkleuring (niet in MVP)
Het toevoegen van een digitaal ingekleurde of herstelde variant van een beschadigde of zwart-witfoto als secundaire weergave.
Call-to-action: "Bekijk deze foto in kleur." (weergave-optie, geen invoer van de gebruiker)
Techniek/standaard: de variant is een afgeleide (nooit het origineel vervangend), aangeboden als IIIF Choice op hetzelfde canvas; herkomst en methode worden vastgelegd. De ingekleurde of gerestaureerde weergave krijgt in de viewer een zichtbaar AI-label ("Deze weergave is met AI bewerkt"), conform de transparantieverplichting voor AI-gegenereerde en AI-bewerkte beelden uit de AI Act (Verordening (EU) 2024/1689, art. 50); het label wordt ook als metadata bij de afgeleide vastgelegd, zodat het bij hergebruik en in de API’s behouden blijft. Impact: hoog (beeldpipeline).
Als Web Annotation (variant als painting-alternatief op het canvas):
{ "type" : "Annotation" , "motivation" : "painting" , "target" : "https://iiif.iotm.nl/jottem/{id}/canvas/1" , "body" : { "type" : "Choice" , "items" : [ { "type" : "Image" , "id" : "https://iiif.iotm.nl/{origineel}/full/max/0/default.jpg" }, { "type" : "Image" , "id" : "https://iiif.iotm.nl/{ingekleurd}/full/max/0/default.jpg" } ] } }
8.7. Collectievorming en community-validatie
8.7.1. Feitencontrole en moderatie door de gemeenschap (niet in MVP)
Het controleren, aanvullen en goedkeuren van ingevoerde metadata door medegebruikers of moderatoren.
Call-to-action: "Klopt deze informatie? Bevestig het of stel een verbetering voor."
Techniek/standaard: motivation assessing op een bestaande annotatie of op de
metadata; bevestigingen tellen op tot een betrouwbaarheidsindicatie. De reguliere moderatie
door moderatoren en de meldingenflow bestaan al in de MVP; dit betreft de bredere
community-validatie. Impact: middel.
Als Web Annotation:
{ "type" : "Annotation" , "motivation" : "assessing" , "target" : "https://anno.iotm.nl/annotation/{bestaande-annotatie}" , "body" : { "type" : "TextualBody" , "purpose" : "assessing" , "value" : "Klopt, zie de bouwvergunning uit 1972." } }
8.7.2. Thematische collecties en favorieten (niet in MVP)
Het groeperen van verrijkte afbeeldingen in openbare thema-albums (bijvoorbeeld "Verdwenen ijssalons" of "Gevelstenen") of persoonlijke favorietenlijsten. Persoonlijke favorieten met openbare deellink bestaan al in de MVP; de openbare thema-albums zijn de uitbreiding.
Call-to-action: "Mooi gevonden? Bewaar deze foto in je eigen lijst." en "Maak je eigen album over een onderwerp dat jou raakt."
Techniek/standaard: favorieten via het bestaande Favoriet-model; thema-albums als
IIIF Collection met eigen pagina; opname in een album als bookmarking-annotatie. Impact:
middel (albumbeheer-UI).
Als Web Annotation:
{ "type" : "Annotation" , "motivation" : "bookmarking" , "target" : "https://www.iotm.nl/jottem/{id}" , "body" : { "type" : "TextualBody" , "purpose" : "tagging" , "value" : "Album: Verdwenen ijssalons" } }
8.8. Instelbaar per project
De organisatiebeheerder bepaalt per project welke verrijkingsmogelijkheden beschikbaar zijn, net zoals de terminologiebronnen per project worden ingesteld. Alleen ingeschakelde verrijkingen tonen hun call-to-action op de jottem-pagina; de rest blijft verborgen. Zo kan een fotoproject inzetten op herinneringen en identificatie, en een documentenproject op transcriptie en begrippenverklaring, zonder gebruikers te overladen met knoppen.
8.9. Aanvullende requirements
*Status (augustus 2026): de MVP-verrijkingen uit dit hoofdstuk zijn gerealiseerd,
inclusief V-1 t/m V-4, V-7, V-8 en V-9 (per project instelbaar, CTA’s op de jottem-pagina,
W3C-opslag in AnnoRepo, jottem:aard, meldingen/moderatie, de eigen JSON-LD-context
/ns/jottem.jsonld en de koppeling tussen twee jottems). Het uploadformulier loopt sinds
augustus 2026 in twee stappen en vult bij een beeldbank-permalink titel, beschrijving,
datering en vervaardiger voor uit het IIIF-manifest; de suggestiedienst uit
§ 8.6.2 Suggesties bij het uploaden volgt daarna. V-5, V-6 en V-10 blijven van kracht voor de
fase 2-verrijkingen.*
-
V-1 De organisatiebeheerder kan per project instellen welke verrijkingsmogelijkheden beschikbaar zijn; standaard staan de MVP-verrijkingen uit dit hoofdstuk aan.
-
V-2 Alleen ingeschakelde verrijkingsmogelijkheden tonen hun call-to-action op de jottem-pagina; call-to-actions zijn kort, activerend en op B1-taalniveau, met de teksten uit dit hoofdstuk als uitgangspunt.
-
V-3 Elke verrijking wordt opgeslagen als W3C Web Annotation met de motivation en purpose uit dit hoofdstuk; uitzonderingen zijn genre en locatiespeld, die in de MVP metadata zijn.
-
V-4 Het onderscheid tussen herinnering en verifieerbaar feit (
jottem:aard) is bij weergave altijd zichtbaar en wordt bij invoer expliciet uitgevraagd. -
V-5 Verrijkingsmogelijkheden die niet in de MVP zitten, staan achter een feature-flag, zodat ze per omgeving en fase geactiveerd kunnen worden zonder herontwerp.
-
V-6 AI-suggesties zijn altijd herleidbaar (annotatie met
generatoren betrouwbaarheidsscore) en worden pas definitief na bevestiging door een gebruiker of moderator. Alle AI-gegenereerde of AI-bewerkte content (zoals ingekleurde weergaven en beeldherkenning-output) draagt een zichtbaar AI-label in de weergave én als metadata, conform de transparantieverplichting uit de AI Act (Verordening (EU) 2024/1689, art. 50). -
V-7 Voor alle verrijkingen gelden de bestaande meldingen- en moderatieflow en de bestaande autorisatie (eigen bijdragen bewerken en verwijderen).
-
V-10 Suggesties bij het uploaden vullen formuliervelden voor die de inzender bevestigt of overschrijft; ze worden nooit zonder tussenkomst opgeslagen. Bij elk voorgevuld veld staat waar het voorstel vandaan komt. Valt de suggestiedienst uit, dan opent stap 2 met lege velden en merkt de inzender daar niets van: een hulpsignaal, geen poortwachter, net als het Herkenbaar-signaal. Wachten op de suggesties mag nooit blokkeren: het wachtscherm is over te slaan en geeft na vijftien seconden vanzelf op.
-
V-9 Een koppeling tussen twee jottems is een structurele relatie in de database, binnen hetzelfde project; de
linking-annotatie endcterms:relationin de RDF zijn daarvan afgeleid en verschijnen pas wanneer beide jottems gepubliceerd zijn. Verdwijnt een van de twee uit publicatie, dan verdwijnt ook de koppeling uit de publieke uitvoer. -
V-8 Platform-extensies op het Web Annotation-model (zoals
jottem:aardenjottem:betrouwbaarheid) worden gedefinieerd in een eigen JSON-LD-context, zodat de annotaties standaardconform blijven.
9. Deelbaarheid
Jottem leeft niet alleen op het platform zelf. De gemeenschap zit op sociale media, op de website van de historische vereniging, in nieuwsbrieven en op buurtplatforms. Dit hoofdstuk beschrijft hoe jottems en projecten buiten het platform zichtbaar en deelbaar zijn, met als doel de participatie via andere websites en platforms te bevorderen. De keten is steeds dezelfde: iemand ziet een jottem of project op een ander kanaal, klikt door naar het platform en draagt bij via de verrijkingsmogelijkheden uit § 8 Verrijkingen. De deel-nudge in de publicatiemail (zie § 11 Notificaties) en de open data-uitgangen (RSS, IIIF; zie data-architectuur) zijn onderdelen van dezelfde beweging: het platform brengt de inhoud naar de mensen toe, niet andersom.
9.1. Social login
Wie via een ander kanaal binnenkomt, moet zonder drempel kunnen meedoen. Daarom is inloggen laagdrempelig, inclusief social login via federatie: in de MVP Google, Microsoft en Facebook; Apple en Instagram volgen in fase 2 vanwege de aanvraag- en reviewdoorlooptijd. Authentik doet uitsluitend authenticatie; rollen komen uit de database. Zie de systeemarchitectuur voor de inrichting. Status (augustus 2026): gerealiseerd.
9.2. Deelknoppen en Open Graph
Elke gepubliceerde jottem-pagina heeft een Delen-knop die het deelmenu van het apparaat opent via de Web Share API, en elke publiekspagina draagt Open Graph-metadata zodat een gedeelde link een nette preview toont. De volledige uitwerking (knopplaatsing, OG-elementen en hun bronnen, canonical-beleid) staat in de data-architectuur. Status (augustus 2026): gerealiseerd.
Nieuw in deze iteratie: de og:title en de Web Share-deeltekst van een jottem gebruiken
niet langer de vaste oproep "weet jij hier meer van?", maar een willekeurige, binnen
het project actieve verrijkings-call-to-action uit § 8 Verrijkingen. Een gedeelde
link vraagt zo meteen om een concrete bijdrage ("Weet je wanneer dit was? Vul het
jaartal in, ook een gok helpt.") en varieert per deelmoment, wat de kans vergroot dat
één van de oproepen de ontvanger raakt. Heeft een project geen actieve verrijkingen,
dan valt de titel terug op de vaste oproep.
9.3. Widgets
Organisaties willen hun Jottem-project tonen op de eigen website: de historische vereniging op haar WordPress-site, het archief op de collectiepagina. Daarvoor levert het platform widgets: dynamisch gegenereerde, zelfstandige HTML-fragmenten die met een iframe of een klein script worden ingebed.
| Widget | URI-patroon | Inhoud |
|---|---|---|
| Projectinfo | https://www.iotm.nl/widget/{organisatieSlug}/{projectSlug}
| logo, titel en beschrijving/oproep van het project, de algemene oproep "Help mee op Jottem" met het Jottem-beeldmerk, en een link naar de projectpagina |
| Recente jottems | https://www.iotm.nl/widget/{organisatieSlug}/{projectSlug}/recent/{n}
| de {n} meest recent gepubliceerde jottems als thumbnails naast elkaar, elk een link naar de jottem-pagina; eronder een willekeurige actieve verrijkings-call-to-action met link naar de projectpagina |
| Willekeurige jottems | https://www.iotm.nl/widget/{organisatieSlug}/{projectSlug}/willekeurig/{n}
| als hierboven, maar {n} willekeurig gekozen gepubliceerde jottems; elke weergave toont andere beelden, wat de widget levend houdt |
Het aantal {n} is begrensd op 1 tot en met 12; daarbuiten weigert de route. Alleen goedgekeurde (gepubliceerde) jottems verschijnen in de widgets.
9.3.1. Vormgeving en gedrag
-
De widget is zelfstandige HTML met minimale inline CSS: alleen lay-out (flexbox, maten, witruimte), geen kleuren en geen fonts, zodat de widget de opmaak van de omringende website erft en daar nooit mee botst.
-
De stijl is instelbaar met de queryparameter
?stijl=: standaardaccent(de primaire kleur van de organisatie als bovenlijn en linkkleur, het projectlogo zichtbaar) ofneutraal(nul kleuren; identiteit alleen via logo, titel en tekst). -
Alle links openen met
target="_top"buiten het iframe, met volledige URL’s naar de publiekspagina’s. -
Thumbnails komen uit de IIIF Image API en zijn dus duurzaam en gecachet; de widget-HTML zelf is kort cachebaar (korter dan de levensduur van tijdelijke logo-URL’s uit de objectopslag).
-
De widget toont een nette lege staat ("Nog geen jottems") en verwijst ook dan naar het project.
9.3.2. Inbedden
Twee inbedvormen, allebei met voorbeeldcode in het projectbeheer:
Iframe: werkt overal waar HTML mag, ook in het "Aangepaste HTML"-blok van WordPress
en in de meeste andere CMS’en. De widget-routes sturen daarvoor géén X-Frame-Options
en een Content Security Policy met frame-ancestors *; de rest van het platform blijft
frame-ancestors 'none' sturen.
< iframe src = "https://www.iotm.nl/widget/samh/smaak-van-gouda/recent/3" style = "width:100%; height:220px; border:0" title = "Jottem: Smaak van Gouda" ></ iframe >
Script: een klein laadscript (widget.js) haalt dezelfde HTML op en plaatst die
direct in de pagina, zodat de widget het lettertype en de kleuren van de site zelf erft.
De widget-routes sturen daarvoor Access-Control-Allow-Origin: *.
< div id = "jottem-widget" ></ div > < script async src = "https://www.iotm.nl/widget.js" data-doel = "#jottem-widget" data-src = "https://www.iotm.nl/widget/samh/smaak-van-gouda/recent/3" ></ script >
Voor WordPress is het iframe de eenvoudigste route (plakken in een "Aangepaste HTML"-blok); het script is het mooiste resultaat op sites die externe scripts toestaan. Een eigen WordPress-plugin of Gutenberg-block is bewust géén onderdeel van het ontwerp: het "Aangepaste HTML"-blok volstaat, en met het oEmbed-endpoint uit § 9.5 Fase 2 wordt zelfs dat plakken van code overbodig.
9.3.3. Widgetlinks in het projectbeheer
De organisatiebeheerder ziet op de projectbeheerpagina een blok Widgets met de drie widget-URL’s, de voorbeeldcode voor beide inbedvormen (kopieerbaar) en een levend voorbeeld van de widgets, zodat de beheerder zonder technische hulp de code op de eigen site kan plakken.
9.4. oEmbed
Platforms met oEmbed-ondersteuning (WordPress, Mastodon, diverse
CMS’en) tonen een geplakte Jottem-URL automatisch als embed; plakken van voorbeeldcode
is dan niet nodig. Het endpoint is GET /oembed op de publiekssite, en elke project- en
jottem-pagina draagt een discovery-link
(<link rel="alternate" type="application/json+oembed" href="…">) zodat consumers het
endpoint zelf vinden. Status (augustus 2026): gerealiseerd.
| Parameter | Betekenis |
|---|---|
url
| de geplakte pagina-URL; alleen project- en jottem-pagina’s van het platform zelf, anders 404 |
format
| alleen json; xml geeft 501 (toegestaan volgens de spec voor een niet-ondersteund formaat)
|
maxwidth, maxheight
| bovengrens die de consumer meegeeft; het antwoord blijft eronder |
Het antwoord hangt af van het soort URL:
-
Projectpagina → type
rich: de recente-jottems-widget uit § 9.3 Widgets als iframe (standaard 600×240), met projectnaam en organisatienaam als titel. -
Jottem-pagina → type
photo: de duurzame IIIF-afbeelding (dezelfde geen-presigned-regel als bijog:image), met als titel de jottem-titel plus een willekeurige actieve verrijkings-call-to-action, en de inzendernaam alsauthor_namewanneer die publiek is. Alleen goedgekeurde jottems; een jottem zonder duurzame beeld-URL geeft 404. De rijkere enkele-jottem-embed (widget met CTA-knop) blijft fase 2.
9.5. Fase 2
-
Jottem-badge. Een klein "Bekijk op Jottem"-knopje in huisstijl (vergelijkbaar met social-badges) dat organisaties naast hun eigen collectie-items zetten; levert herkenbaarheid van het merk op andere sites.
-
Enkele-jottem-embed. Een widget-variant voor één specifieke jottem (afbeelding, titel en call-to-action), bijvoorbeeld bij een nieuwsbericht over die ene vondst.
9.6. Aanvullende requirements
Status (augustus 2026): social login en deelknoppen/Open Graph waren al gerealiseerd; D-1 t/m D-7 zijn in de huidige iteratie gerealiseerd, D-8 is fase 2.
-
D-1 Het platform levert per project drie widget-routes (projectinfo, recente jottems, willekeurige jottems) als zelfstandige HTML met minimale inline CSS zonder kleuren en fonts; het aantal jottems is begrensd op 1 tot en met 12.
-
D-2 De widgets zijn inbedbaar via iframe (geen
X-Frame-Options,frame-ancestors *) én via een laadscript (Access-Control-Allow-Origin: *); de overige platformpagina’s blijven inbedden weigeren. -
D-3 De widgetstijl is instelbaar via
?stijl=accent|neutraal, standaardaccentmet de primaire organisatiekleur als enige kleuraccent. -
D-4 Alle links in een widget verwijzen met volledige URL’s en
target="_top"naar de publiekspagina’s; de jottems-widgets tonen onder de thumbnails een willekeurige actieve verrijkings-call-to-action van het project. -
D-5 De
og:titleen de Web Share-deeltekst van een jottem gebruiken een willekeurige actieve verrijkings-call-to-action van het project, met de vaste oproep "weet jij hier meer van?" als terugval. -
D-6 De organisatiebeheerder ziet op de projectbeheerpagina de widget-URL’s, kopieerbare voorbeeldcode voor beide inbedvormen en een levend voorbeeld.
-
D-7 Het platform biedt een oEmbed-endpoint met discovery-links op project- en jottem-pagina’s: projectpagina’s leveren type
rich(de jottems-widget als iframe), jottem-pagina’s typephoto(de duurzame IIIF-afbeelding met de verrijkings-CTA in de titel);maxwidth/maxheightworden gerespecteerd. -
D-8 (fase 2) Er is een Jottem-badge in huisstijl die naar een project of jottem verwijst.
10. Acceptatiecriteria
Per usecase (zie § 7 Usecases per rol) de testbare criteria voor oplevering; ze vormen de basis voor de end-to-end-testsuite uit de systeemarchitectuur en de livegang-criteria in het § 16 Realisatieplan. De niet-functionele eisen (§ 6.2 Niet-functionele requirements) gelden daarbovenop voor alle schermen en API’s. Criteria bij fase 2-functionaliteit zijn gemarkeerd met (fase 2).
10.1. Platformbeheerder
-
PB-1 Ik kan inloggen met wachtwoord + verplichte 2FA (TOTP of passkey); zonder geldige sterke factor weigert de backend elk beheer-endpoint (
amr-controle). -
PB-2 Ik kan een organisatiejottem definiëren (naam, slug, favicon, logo, kleurenpalet); de huisstijl is direct zichtbaar op de organisatiepagina’s en in de notificatiemails; bij het aanmaken ontstaat automatisch een eerste project.
-
PB-3 Ik kan een organisatiebeheerder uitnodigen; de uitgenodigde ontvangt de uitnodigingsmail, doorloopt de Authentik-enrollment (wachtwoord + verplichte tweede factor: TOTP of passkey) en heeft bij eerste login de klaargezette rol.
-
PB-4 (fase 2) Ik zie platformstatistieken per organisatie en per project, gevoed uit het Gebeurtenislog.
10.2. Organisatiebeheerder
-
OB-1 Ik kan moderatoren uitnodigen, bewerken en verwijderen; de uitnodigingsflow werkt zoals PB-3 (incl. handreiking-link in de mail).
-
OB-2 Ik kan projecten aanmaken en bewerken met alle metadata (naam, slug, beschrijving, oproep, periode, afbeelding, datasetlicentie, status); een project verwijderen kan alleen als het leeg is én er minstens één ander project resteert (anders 409).
-
OB-3 Ik kan per project de beschikbare terminologiebronnen instellen uit de lijst van het NDE Termennetwerk; upload- en annotatieschermen bieden daarna alléén die bronnen aan.
-
OB-4 Ik kan per project de datasetbeschrijving bewerken en - uitsluitend als het project gepubliceerde jottems heeft - valideren en aanmelden bij het NDE Datasetregister; een SHACL-validatiefout toont de details (422), zonder openbare data volgt 409.
-
OB-5 (fase 2) Ik kan een bestaande collectie via IIIF importeren in een project; geïmporteerde jottems doorlopen de reguliere moderatie.
-
OB-6 (fase 2) Ik kan per project een e-depot-export starten (202); na afronding ontvang ik de export-gereed-mail en is de download een valide BagIt (checksums kloppen) met
ro-crate-metadata.json.
10.3. Moderator
-
MO-1 Ik zie alle jottems van mijn organisatie met status; ik kan filteren op nieuw/goedgekeurd/afgekeurd/gedepubliceerd; jottems van andere organisaties zijn onbereikbaar (403).
-
MO-1b Ik kan een wachtende bijdrage openen en zien waarover ik beslis: de foto zelf, alle metadata die de inzender opgaf, de herkomst, wie het inzond en of diens naam straks in de open data komt, plus het signaal over herkenbare personen met de verklaring van de inzender over toestemming. Goedkeuren en afkeuren gebeurt vanaf datzelfde scherm. De publiekspagina kan die rol niet vervullen: die bestaat pas na goedkeuring.
-
MO-2 Bij goedkeuren krijgt de jottem een duurzame link, wordt hij zichtbaar in het project én verschijnt hij in zoekindex, RDF, IIIF Collection, Change Discovery en RSS; de uploader ontvangt de goedgekeurd-mail.
-
MO-3 Afkeuren zonder reden is onmogelijk; bij afkeuren ontvangt de uploader de afgekeurd-mail met de reden en een werkende herindien-link.
-
MO-4 Als er jottems wachten ontvang ik maximaal één digest-mail per dag; zonder wachtende jottems geen mail.
-
MO-5 Bij een gehonoreerd verwijderverzoek krijgt de jottem status gedepubliceerd: de duurzame link toont een tombstone en de jottem is verdwenen uit zoekindex, RDF, feeds en datadump. Ook het beeld zelf verdwijnt: het derivaat gaat uit de objectopslag en de IIIF-URL’s worden in dezelfde beweging uit de cache gegooid, zodat een bezoeker die de URL kent binnen seconden een 404 krijgt in plaats van dagenlang de foto. Het origineel blijft als archiefexemplaar bewaard, alleen bereikbaar via de API. De indiener ontvangt de uitkomst-mail; bij afwijzing is een toelichting verplicht.
-
MO-6 Gerapporteerde annotaties en reacties verschijnen in mijn moderatieoverzicht; ik kan de bijdrage verbergen/verwijderen of de melding afwijzen; de afhandeling is terug te vinden in het Gebeurtenislog.
10.4. Gebruiker
-
GE-1 Ik kan registreren en inloggen, ook via social login; bij eerste login bestaat mijn profiel (koppeling via
sub). -
GE-2 Ik kan in mijn profiel mijn naam, afbeelding,
naamPublieken de attenderingen (aan/uit) beheren; metnaamPubliekaan staan mijn naam en profielfoto bij mijn jottems, annotaties en reacties ("naam heeft dit gisteren geplaatst"), metnaamPubliekuit verschijnen naam noch foto publiek (dan een geanonimiseerde vermelding met een neutraal poppetje). -
GE-3 Ik zie een overzicht van mijn uploads met status, aantal annotaties en deellinks.
-
GE-4 Ik kan jottems als favoriet markeren/ontmarkeren en mijn favorieten openbaar maken; de deellink toont mijn favorieten zonder inloggen en is géén duurzame link.
10.5. Uploader
-
UP-1 Ik kan een bestand uploaden (JPG/PNG/TIFF, tot 50 MB; daarboven of ander type: duidelijke weigering; PDF en audio volgen in fase 2) met titel/beschrijving, genre (CHT-lijst), metadata, steekwoorden en locatie (speld op de kaart); ik bevestig de projectlicentie; de projectkeuze is verplicht - zonder project geen upload. Op een apparaat met camera kan ik in plaats van een bestand te kiezen direct een foto maken; op een apparaat zonder camera verschijnt die optie niet.
-
UP-1b Het uploadformulier loopt in twee stappen: eerst kies ik mijn foto, daarna vul ik de gegevens in. Bij een permalink uit een beeldbank staan titel, beschrijving, datering en vervaardiger al voorgevuld, met vermelding waar ze vandaan komen; ik kan ze aanpassen. Terug naar stap 1 kan zonder mijn invoer kwijt te raken.
-
UP-2 Meteen na het kiezen van mijn foto, en dus vóórdat ik gegevens invul, zie ik het resultaat van de Herkenbaar-check; bij "herkenbaar: ja" word ik om een toestemmingsverklaring gevraagd en wordt die vastgelegd; zonder verklaring kies ik zelf: annuleren of tóch verdergaan (vlag "toestemming: nee"); de moderator ziet signaal én verklaring of vlag.
-
UP-3 Een afgekeurde jottem kan ik aanpassen en opnieuw indienen (status terug naar nieuw); een goedgekeurde jottem kan ik niet bewerken of verwijderen (403), een afgekeurde wél verwijderen.
10.6. Annoteerder
-
AN-1 Ik kan een annotatie op de hele jottem plaatsen (plaats, gebeurtenis, archiefbron, vrije tekst) waarbij term-URI’s gezocht worden via het Termennetwerk, beperkt tot de projectbronnen (OB-3).
-
AN-2 Ik kan een vlak tekenen en daaraan een identificatie (persoon/gebouw/bedrijf, naam + URI) koppelen; het vlak is terug te zien op de jottem-detailpagina.
-
AN-3 Ik kan reageren op een annotatie; de reactie hangt als W3C-annotatie aan de oorspronkelijke annotatie.
-
AN-4 Ik kan mijn eigen annotaties bewerken en verwijderen (andermans niet: 403); de versiegeschiedenis blijft bewaard in de annotatieserver; elke mutatie werkt
Media.wijzigingsDatumbij (zichtbaar in Change Discovery).
10.7. API-gebruiker
-
AP-1 De Change Discovery-feed per organisatie toont Create bij publicatie en Update bij metadata- én annotatiemutaties, in valide ActivityStreams-paginering.
-
AP-2 RSS-feeds (platform, organisatie, project) valideren tegen RSS 2.0 en tonen nieuwe jottems met duurzame link en thumbnail.
-
AP-3
/jottem/searchaccepteert uitsluitend de gedefinieerde zoek-DSL en levert resultaten mét facetten; een rauwe Elasticsearch-query wordt geweigerd (422). -
AP-4 Annotaties zijn opvraagbaar per annotatie, per jottem (container), per project en per organisatie - telkens als valide W3C
AnnotationCollection/Annotation. -
AP-5 IIIF
info.json, Manifests en Collections (organisatie én project) passeren de IIIF-validators; (fase 2) audio-jottems hebben een canvas metduration. -
AP-6 De datasetbeschrijving per project valideert tegen het SHACL-shape van het Datasetregister; de datadump (N-Triples) valideert tegen schema.org AP NDE;
/datacatalogbundelt alle projectdatasets. -
AP-7 De duurzame jottem-URL levert HTML bij
Accept: text/htmlen JSON-LD/Turtle bij RDF-accept-headers (303); een gedepubliceerde jottem geeft een tombstone (410).
10.8. Bezoeker
-
BE-1 Ik kan zonder account de platforminformatie (FAQ, privacy, auteursrecht), organisatie- en projectpagina’s (doel, oproep) lezen.
-
BE-2 Ik kan gepubliceerde jottems verkennen: zoeken met facetten, en per jottem de detailpagina zien met IIIF-viewer (zoom), metadata en annotaties.
-
BE-3 Ik kan via de interactieve kaart navigeren en per pand de opeenvolgende zaken als tijdlijn zien (afgeleid uit adres + openings-/sluitingsjaren).
-
BE-4 Ik kan een verwijderverzoek indienen en ontvang direct de ontvangstbevestiging per mail; de moderatoren ontvangen de melding (MO-5 dekt de afhandeling).
-
BE-5 Openbare favorietenpagina’s van gebruikers zijn bereikbaar via hun deellink (GE-4).
-
BE-6 Elke gepubliceerde jottem-pagina heeft een Delen-knop die het deelmenu van het apparaat opent (Web Share API: sociale media, e-mail, link kopiëren; zonder ondersteuning verschijnt de knop niet) en bevat correcte Open Graph-metadata (
og:title/description/image/url); een gedeelde link toont titel, beschrijving en afbeelding in de preview (gecontroleerd met een OG-validator). -
BE-7 Ik kan bij elke annotatie en reactie een melding doen (rapporteren, ook zonder account, met rate limiting); ik krijg een bevestiging en de melding verschijnt in de moderatieomgeving (MO-6 dekt de afhandeling).
11. Notificaties
Alle notificatiemails op een rij: trigger, ontvanger en doel. Mails worden asynchroon verstuurd door de Celery-workers via de eigen mailserver (MTA, zie de systeemarchitectuur en § 11.5 Afleverbaarheid), zijn Nederlandstalig en dragen de huisstijl (logo, kleuren) van de betreffende organisatiejottem.
11.1. Overzicht
| # | Trigger | Ontvanger | Inhoud / doel |
|---|---|---|---|
| 1 | Platformbeheerder voegt een organisatiebeheerder toe | uitgenodigde | spelregels + bevestigingslink naar de Authentik-enrollment (wachtwoord + verplichte 2FA: TOTP of passkey); de klaargezette rol wordt bij eerste login gekoppeld |
| 2 | Organisatiebeheerder voegt een moderator toe | uitgenodigde | idem als 1 |
| 3 | Moderator keurt een jottem goed | uploader | "je jottem staat online": duurzame link + oproep om te delen via sociale media (reacties en annotaties uitlokken) |
| 4 | Moderator keurt een jottem af | uploader | afkeurreden + directe link om de jottem aan te passen en opnieuw in te dienen |
| 5 | Er staan jottems in de moderatiewachtrij en/of er zijn onafgehandelde meldingen op annotaties/reacties | moderatoren van de organisatie | dagelijkse samenvatting (alleen verstuurd als er iets wacht) - voorkomt mail per upload of melding |
| 6 | Verwijderverzoek ingediend | indiener | ontvangstbevestiging + verwachte afhandeltermijn (30 dagen, zie de niet-functionele requirements) |
| 7 | Verwijderverzoek ingediend | moderatoren van de organisatie | directe melding (juridische termijn loopt) met link naar de afhandelpagina |
| 8 | Verwijderverzoek afgehandeld | indiener | uitkomst: gehonoreerd (jottem gedepubliceerd) of afgewezen met toelichting |
| 9 | E-depot-export gereed | organisatiebeheerder (aanvrager) | directe downloadlink naar het BagIt-pakket + de beperkte bewaartermijn |
| 10 | Nieuwe annotatie of reactie op jouw jottem | uploader | instelbaar in het profiel (standaard aan); gebundeld tot maximaal één mail per dag |
| 11 | Reactie op jouw annotatie | annoteerder | instelbaar in het profiel (standaard aan); gebundeld tot maximaal één mail per dag |
11.2. Afbakening
-
Accountmails (e-mailverificatie bij registratie, wachtwoord-reset, 2FA-/passkey-herstel) worden door Authentik zelf verstuurd, niet door de backend. De opmaak en tekst wijken daarbij niet af van de rest van het platform: de Authentik-mailtemplates worden via een template-override (mount op
/templates) vervangen door Nederlandstalige versies in de huisstijl, visueel gelijk aan de platformnotificaties hierboven. -
Datasetregister-aanmelding geeft het resultaat (gevalideerd/aangemeld of foutmelding) synchroon terug in de beheer-UI; daar hoort geen mail bij.
-
Operationele alerts (endpoint down, backlog, gefaalde back-ups) lopen via Alertmanager naar de platformbeheerders - zie de systeemarchitectuur; dat is monitoring, geen platformnotificatie.
11.3. Templates
Alle mails zijn template-gebaseerd; de sjablonen leven in het monorepo onder
api/templates/mail/
zodat ze onder versiebeheer en review vallen. Per notificatie zijn er drie sjablonen:
| Bestand | Rol |
|---|---|
nl/<slug>.mjml
| de HTML-mail, geschreven in MJML - een buildstap (MJML-CLI) compileert dit naar robuuste, responsive e-mail-HTML in dist/ (gegenereerd, niet in git)
|
nl/<slug>.subject.j2
| de onderwerpregel |
nl/<slug>.txt.j2
| de platte-tekstversie |
De mailworker vult de sjablonen met Jinja2 en verstuurt ze als
multipart/alternative (HTML + tekst - beste afleverbaarheid en toegankelijkheid).
Gedeelde partials leveren de kop (logo en kleur van de organisatiejottem) en de voet;
de voet toont automatisch een uitschakellink wanneer uitschakelUrl is meegegeven
(attenderingen 10 en 11). Variabelenconventie: organisatie.* (naam, logoUrl,
kleurPrimair), ontvangerNaam, en …Url voor alle links; de variabelen per template staan
gedocumenteerd in de README bij de sjablonen. De mapstructuur is per taal (nl/), zodat
meertaligheid later zonder verbouwing kan.
11.4. Regels
-
Afzender is het platform (bijv.
noreply@iotm.nl) met de organisatienaam in de weergavenaam. -
Transactionele mails (1 t/m 9) zijn niet uitschakelbaar; attenderingsmails (10, 11) zijn instelbaar in het profiel en bevatten een directe uitschakellink én one-click unsubscribe-headers (zie § 11.5 Afleverbaarheid).
-
Mails bevatten zo min mogelijk persoonsgegevens (AVG): geen inhoudelijke kopie van bijdragen, wel links naar de betreffende pagina’s.
-
Elke verzending wordt als type in het
Gebeurtenisloggeregistreerd (voor statistiek en foutopsporing), zonder de mailinhoud op te slaan.
11.5. Afleverbaarheid
Mail heeft alleen waarde als hij aankomt, en aankomen blíjft. De grote providers (Gmail, Yahoo, Microsoft) handhaven sinds 2024-2026 harde afzendereisen; onderstaande maatregelen zorgen dat Jottem-mail daaraan voldoet en een goede verzendreputatie opbouwt en behoudt.
*Status (augustus 2026): de ontwikkelomgeving verstuurt echt, via een bestaande
exim-relay met gevestigde reputatie (SPF, DKIM met een 2048-bit sleutel op selector
jottem, DMARC p=none met rapportage, kloppende PTR/HELO); de attenderingsmails
dragen de RFC 8058-headers. De eigen MTA in de stack blijft het productiedoel
hieronder; bouncebeheer en DMARC-aanscherping volgen richting livegang.*
Authenticatie (verplicht). Op het verzenddomein staan drie DNS-records ingeregeld:
-
SPF: het verzendende IP is geautoriseerd voor het domein;
-
DKIM: elke mail is ondertekend met een sleutel van minimaal 2048 bits;
-
DMARC: met alignment op het
From:-domein (het domein dat de ontvanger ziet is hetzelfde als het domein waarop SPF/DKIM slagen). Het beleid start opp=nonemetrua-rapportage om de stroom te observeren, en groeit vóór de livegang door naarp=quarantineen uiteindelijkp=reject.
Daarnaast: een kloppende reverse DNS (PTR-record) op het verzendende IP, een HELO-naam die daarmee consistent is, en TLS op de verzendverbinding.
Makkelijk uitschrijven. Wie een attenderingsmail (10, 11) niet meer wil, moet er
zonder moeite vanaf kunnen; anders wordt de spamknop het uitschrijfmechanisme en die
klachten beschadigen de reputatie van het hele platform. Daarom dragen attenderingsmails
naast de uitschakellink in de voettekst de headers List-Unsubscribe (mailto én https)
en List-Unsubscribe-Post: List-Unsubscribe=One-Click (RFC 8058),
zodat mailclients een eigen "Uitschrijven"-knop tonen. Uitschrijven werkt direct en
zonder inloggen (de uitschakellink bevat een token) en wordt binnen 48 uur verwerkt
(in de praktijk: meteen). Transactionele mails (1 t/m 9) vallen hier bewust buiten;
die horen bij een handeling van de gebruiker zelf.
Verzendroute: eigen MTA. De platformmail loopt via een eigen MTA (Postfix met DKIM-ondertekening, bijv. via rspamd of OpenDKIM) als container in de stack; een externe (betaalde) verzenddienst is op deze schaal niet nodig. Randvoorwaarden: een vast IPv4-adres met instelbare PTR, uitgaande poort 25 open bij de hostingprovider, en consistente HELO-/PTR-/A-records.
Reputatie. Het platform schrijft alleen geverifieerde adressen aan (e-mailverificatie bij registratie is al verplicht). Bounces worden verwerkt: hard bounces gaan op een suppressielijst en worden niet opnieuw aangeschreven. Bij livegang wordt het volume rustig opgebouwd in plaats van in één keer bulk te versturen. De attenderingen zijn gebundeld tot maximaal één mail per dag (zie het overzicht), wat het volume en de irritatie laag houdt.
Monitoring. De DMARC-rapporten (rua) worden periodiek bekeken; het platform is
aangemeld bij Google Postmaster Tools en Microsoft SNDS/JMRP zodat reputatie en
spamklachtratio zichtbaar zijn. De spamklachtratio blijft onder de 0,3% (de harde grens
van de grote providers), met minder dan 0,1% als streefwaarde. De adressen postmaster@
en abuse@ op het verzenddomein bestaan en worden gelezen (RFC 2142).
12. Infrastructuurkeuze
-
IOTM and the Wikimedia ecosystem: Commons and Wikidata as shared infrastructure
-
IOTM and the Internet Archive: durable preservation, IIIF and access as shared infrastructure
13. Keuze oplossingsrichting
Dit document legt de gekozen oplossingsrichting en technologiestack vast en is het resultaat van de deelactiviteit "Keuze oplossingsrichting" uit het § 3 Activiteitenplan. Het bouwt voort op de analyse van vier infrastructuurrichtingen en de systeemarchitectuur. Status: concept, augustus 2026 - vast te stellen door de projectgroep.
13.1. Infrastructuurrichting: alles op de Jottem-server
Van de vier onderzochte richtingen (Wikimedia, Internet Archive, e-Depot, eigen server) is gekozen voor richting 4: alles op de Jottem-server - afbeeldingen, metadata en annotaties in één geïntegreerd systeem in eigen beheer.
Onderbouwing:
-
maximale functionaliteit en laagste drempel voor de participatieve kern (uploaden, annoteren, reageren);
-
volledige regie over het rechtenmodel: auteursrecht blijft bij de inzender, hergebruik onder aangegeven voorwaarden;
-
AVG: verwijderverzoeken zijn eenvoudig en volledig uitvoerbaar; dataresidentie in de EU;
-
geen afhankelijkheid van acceptatiecriteria of continuïteit van externe partijen.
Beheersmaatregelen - de analyse benoemt duurzaamheid als zwakte van deze richting; die wordt als volgt ondervangen:
-
een expliciete exit- en exportstrategie: nachtelijkse offsite back-ups, periodieke publieke datadumps (RDF plus originelen) en een jaarlijkse hersteltest van de export;
-
afspraken in de samenwerkingsovereenkomst over voortzetting of overdracht van data en diensten bij einde van het project;
-
de gelaagde aanpak blijft als uitbreiding mogelijk: een externe preserveringskopie (Internet Archive/IAE of e-Depot) en een Wikimedia-doorzetting van de vrij-gelicentieerde subset kunnen in een latere fase worden toegevoegd; de moderatiestap blijft daarvoor het natuurlijke doorzetmoment. De Internet Archive-integratie maakt daarmee geen deel uit van de MVP.
13.2. Besliste openstaande ontwerpvragen
ARK: uitgesteld naar een latere fase. De MVP mint geen ARK’s. Elke gepubliceerde jottem krijgt
een duurzame platform-URL (met content negotiation naar HTML en RDF, zoals in
§ 6.1 Functionele requirements). Het subdomein ark.iotm.nl blijft gereserveerd; een NAAN-aanvraag,
minter en resolver volgen zodra ARK wordt geactiveerd. URL’s worden zo gekozen dat latere
ARK-koppeling zonder linkbreuk kan.
Annotaties: bewerken en verwijderen door de annoteerder zelf. Annoteerders kunnen hun eigen
annotaties bewerken én verwijderen. De versiegeschiedenis wordt met volledige payload vastgelegd in het
Gebeurtenislog van het platform, zodat herinneringen, aanvullingen en correcties herleidbaar
blijven.
13.3. Technologiestack
Per component is uit de in de systeemarchitectuur genoemde kandidaten de volgende keuze gemaakt:
| Component | Keuze |
|---|---|
Webfrontend (www.iotm.nl)
| Next.js (React) met OpenSeadragon/Mirador (IIIF-viewer), Annotorious (annoteren) en MapLibre GL (kaart) |
Backend-API (api.iotm.nl)
| FastAPI (Python) met iiif-prezi3 |
| Async workers | Celery met Valkey als broker |
Identity provider (auth.iotm.nl)
| Authentik (OIDC, social login, 2FA via TOTP of passkey/WebAuthn) - afwijkend van de architectuursuggestie (Keycloak): lichter in beheer bij gelijkwaardige functionaliteit (identity brokering, 2FA-afdwinging per rol, uitnodigingsflows) |
IIIF Image API (iiif.iotm.nl)
| Cantaloupe achter Varnish |
Annotatieserver (anno.iotm.nl)
| AnnoRepo (KNAW HuC) met MongoDB - *afwijkend van de architectuursuggestie (miiify): dat is read-only geworden, zie de afweging in de systeemarchitectuur* |
RDF-publicatie (data.iotm.nl)
| Apache Jena Fuseki |
| Zoekmachine | Elasticsearch |
| Relationele database | PostgreSQL |
| Cache en taakwachtrij | Valkey - afwijkend van de architectuursuggestie (Redis): drop-in compatibel, maar volledig open source (Linux Foundation) |
| Mediaopslag (S3) | Externe Object Storage (S3) - herziene keuze (aug 2026): extern in plaats van zelf-gehost MinIO; geen eigen opslagbeheer en de opslag groeit mee zonder serverwijziging. Alle componenten spreken S3, dus MinIO blijft het zelf-gehoste alternatief; de leverancierskeuze is een exploitatiebesluit en blijft buiten het ontwerp |
| Suggesties bij het uploaden | Suggesties API (eigen dienst: FastAPI + Florence-2 + SigLIP 2), interne container, aangeroepen tussen de twee stappen van het uploadformulier; EUPL-1.2 want de modellen zijn permissief gelicentieerd |
| Detectie herkenbare personen | Herkenbaar API (eigen dienst: FastAPI + YOLO-pose), interne container, synchroon aangeroepen door de backend bij upload |
| Reverse proxy, TLS | Traefik |
| Monitoring, logging, alerting | Prometheus, Grafana, Loki, Alertmanager (conform systeemarchitectuur) |
ARK-resolver (ark.iotm.nl)
| vervalt in de MVP - latere fase, zie § 13.2 Besliste openstaande ontwerpvragen |
13.4. Open source: licenties en repostructuur
De salespitch belooft open source; de volgende besluiten maken dat concreet (augustus 2026):
-
Platformcode: EUPL-1.2. De backend, frontend en workers verschijnen onder de European Union Public Licence 1.2 - rechtsgeldig in het Nederlands, copyleft (verbeteringen blijven open) zonder de afschrikkende werking van AGPL, en de conventie in het NDE-ecosysteem: het Datasetregister en het Termennetwerk waar Jottem op aansluit zijn zelf EUPL-1.2.
-
Herkenbaar API: AGPL-3.0. De dienst gebruikt ultralytics/YOLO (AGPL-3.0), waardoor de eerdere Apache-2.0-licentie strijdig was; de repo is omgezet naar AGPL-3.0. Doordat het een losse netwerkdienst is, stopt de AGPL bij de API-grens: het platform zelf blijft EUPL-1.2.
-
Monorepo
jottem. Backend, frontend, workers, docker-compose en contracttests leven in één repository (inside-out-time-machines/jottem): API-contractwijzigingen zijn atomair, één CI en issue-tracker. De Herkenbaar API blijft bewust een aparte repo - de licentiegrens valt samen met de repogrens. Secrets komen nooit in git (.env buiten de repo); de deploy-configuratie zelf is publiek. -
Ontwerpdocumenten: CC BY-SA 4.0; overige documentatie: CC BY 4.0. De design-repo staat onder CC BY-SA 4.0 (aangescherpt, augustus 2026): hergebruik met naamsvermelding én share-alike, zodat bewerkingen van het ontwerp onder dezelfde open licentie beschikbaar blijven - dezelfde copyleft-gedachte als de EUPL voor de platformcode. De repo’s prototype, website en brand houden CC BY 4.0 - hergebruik met naamsvermelding, passend bij de kennisdelingsbelofte uit het § 3 Activiteitenplan.
Samengevat, het licentiebeeld van het Jottem-ecosysteem:
| Onderdeel | Licentie |
|---|---|
| Platformcode (jottem) | EUPL-1.2 |
| Herkenbaar API | AGPL-3.0 |
| Ontwerpdocumenten (design) | CC BY-SA 4.0 |
| Prototype, website en merkgids | CC BY 4.0 |
| Lettertypes Fraunces en Albert Sans (huisstijl) | SIL OFL 1.1 |
13.5. Consequenties voor de ontwerpdocumenten
-
§ 6.1 Functionele requirements: het ARK-requirement is gemarkeerd als latere fase; de (sub)domeinenlijst is uitgebreid en gecorrigeerd; niet-functionele requirements zijn toegevoegd.
-
ERD: moderatiestatus en afkeurreden op Media, rollen via een aparte koppeltabel (meerdere rollen per gebruiker mogelijk), projecten (voorheen "albums") als campagnes op organisatieniveau, huisstijlvelden op Organisatie.
-
§ 7 Usecases per rol: publicatieflow bij goedkeuring aangepast (duurzame platform-URL; ARK en externe preserveringskopie in latere fase); annoteerders kunnen eigen annotaties bewerken en verwijderen.
-
API-beschrijvingen: gesplitst in een publieke lees-API (
openapi.yaml) en een beheer-API (openapi-beheer.yaml). -
Systeemarchitectuur: de Internet Archive-worker en de ARK-componenten behoren niet tot de MVP-scope. De architectuur is bijgewerkt naar de gekozen Authentik en Valkey, inclusief het autorisatiebesluit: de database (
GebruikerRol) is de leidende bron voor rollen, Authentik doet uitsluitend authenticatie.
14. Systeemarchitectuur
De systeemarchitectuur van Jottem beschrijft een op Docker gebaseerde systeemarchitectuur voor het Jottem-platform: een participatief digitaal erfgoedplatform waarin gebruikers media (jottems) uploaden, moderatoren deze beoordelen en publiceren, en annoteerders verrijkingen toevoegen. Het geheel wordt via subdomeinen onder iotm.nl ontsloten en implementeert de in het designdocument genoemde standaarden: IIIF Image API 3.0, IIIF Presentation API 3.0, IIIF Change Discovery, W3C Web Annotations, schema.org AP NDE, ARK en RSS.
(klik op bovenstaand contextdiagram voor het gehele architectuurdocument)
15. Data-architectuur
De data-architectuur van Jottem beschrijft het datamodel (ERD), de URI-strategie en alle data-outputs van het platform: IIIF (Image API v3, Presentation API v3, Change Discovery v1), W3C Web Annotations (incl. Annotation Protocol en Miifi API), RDF/datadump conform schema.org AP NDE met datasetbeschrijving conform de NDE-requirements, de publieke en beheer-API’s, RSS, vocabulaires en de zoekindex.
Per output bevat het document een veld→bron-tabel als outputcontrole: is alle data die aan de outputkant nodig is beschikbaar in de eerdere lagen (PostgreSQL, Object Storage, annotatieserver)? De daarbij gevonden hiaten zijn verwerkt in het ERD.
16. Realisatieplan
Dit plan bakent de MVP af en geeft de fasering richting de livegang van de pilot Smaak van Gouda: MVP live vóór eind 2026, fase 2 in het voorjaar van 2027. Het bouwt voort op het § 3.3.3 Keuze oplossingsrichting en de systeemarchitectuur en data-architectuur.
16.1. MVP-scope (livegang pilot, eind 2026)
De MVP omvat alles wat nodig is om de pilot van begin tot eind te laten draaien:
-
Accounts & rollen - registratie en (social) login via Authentik, 2FA/passkeys voor beheer- en moderatierollen, uitnodigingsflows; autorisatie vanuit de database (GebruikerRol leidend)
-
Organisatie & project - organisatiejottem in eigen huisstijl (SAMH), projectbeheer (Smaak van Gouda als eerste project), terminologiebronnen per project
-
Uploaden - upload (JPG/PNG/TIFF) met metadata, genre (CHT), locatie (speld op de kaart) en licentiebevestiging; automatische Herkenbaar-check met toestemmingsverklaring
-
Moderatie - wachtrij, goedkeuren/afkeuren met reden, bewerken en opnieuw indienen door de uploader, depubliceren via verwijderverzoeken, afhandelen van meldingen (gerapporteerde annotaties en reacties)
-
Publicatie - duurzame link met content negotiation, jottem-detailpagina (IIIF-viewer + metadata + annotaties), publiceren binnen het project
-
Annoteren - jottem-brede en vlak-annotaties, term-URI’s via het NDE Termennetwerk, reacties, eigen annotaties bewerken/verwijderen
-
Verkennen - zoeken met facetten (afgebakende zoek-DSL), interactieve kaart met pand-tijdlijn (eigen kaart; GTM-koppeling in fase 2), favorieten incl. openbare deellink
-
Open data-outputs - IIIF Image/Presentation/Change Discovery, W3C Annotation Protocol (AnnotationCollections), RSS, RDF/SPARQL, datasetbeschrijving + dump per project, datacatalogus en aanmelding bij het NDE Datasetregister, plus de open-data-landingspagina op de data-host (per project alle uitgangen, Swagger UI van de publieke API en de broncoderepo’s; eigen repo
data, in deze fase op data.dev.iotm.nl) -
Vorm van de JSON-LD - per kernentiteit een vastgelegd JSON-LD-frame (data-architectuur); de schema.org-namespace en de annotatieprefix zijn over alle serialisaties gelijkgetrokken; ondersteuning van het framed-profiel (
Accept: application/ld+json;profile="http://www.w3.org/ns/json-ld#framed") op de duurzame URL’s staat nog open -
Fundament - e-mailnotificaties, back-ups, monitoring/alerting en de contracttests uit de systeemarchitectuur (de basis-monitoringstack draait op dev: Prometheus/Grafana met exporters, overzichtsdashboard en basisalerts; Grafana achter Authentik-OIDC, alleen voor platformbeheerders)
16.2. Fase 2 (voorjaar 2027)
-
Social login via Apple en Instagram (MVP: Google, Microsoft en Facebook; de Apple-aanvraag start eerder vanwege de doorlooptijd)
-
IIIF-collectie-import (bestaande collecties toevoegen; ontwerp-uitwerking gaat vooraf)
-
PDF- en audio-ondersteuning met conversiepipeline (multi-canvas Manifests, audio-canvas met
duration) -
E-depot-export per project (BagIt + RO-Crate)
-
Statistieken-dashboards voor beheerders en moderatoren
-
Koppelvlak met externe tijdmachines (Gouda Tijdmachine) - interfacebeschrijving eerst
-
Uitrol naar de overige tijdmachines (Amsterdam, Utrecht, Hilversum)
Latere fase (reeds besloten in § 13.2 Besliste openstaande ontwerpvragen): ARK-minting/resolving, externe preserveringskopie (Internet Archive/e-depot), Wikimedia-doorzetting van de vrije subset, harde opslagquota per organisatie (MVP: monitoring met alerts).
16.3. Mijlpalen 2026
| Periode | Mijlpaal |
|---|---|
| september | Fundament staat: docker-compose-stack op de ontwikkelomgeving (Authentik, PostgreSQL, Valkey, externe Object Storage (S3), backend-skelet), datamodel geïmplementeerd, upload→moderatie→publicatie-keten end-to-end werkend (kaal); huisstijl Jottem ontworpen en vastgesteld (zie § 16.5 Huisstijl Jottem-platform) |
| oktober | Publieksomgeving: jottem-detailpagina met IIIF-viewer, annoteren met Termennetwerk, zoeken met facetten, kaart + pand-tijdlijn, huisstijl SAMH, Herkenbaar-integratie |
| november | Open data & toetsing: IIIF/RSS/RDF-outputs, datasetbeschrijving + Datasetregister-validatie (NDE-compatibel), gebruikerssessie met SAMH-vrijwilligers, juridische toetsing gestart, alle notificatiemails werkend (zie § 11 Notificaties) |
| december | Hardening & livegang: securitytoets, monitoring/back-ups aantoonbaar werkend, mail-afleverbaarheid ingeregeld (SPF/DKIM/DMARC, one-click unsubscribe, zie § 11.5 Afleverbaarheid), DPIA en juridische toetsing afgerond, moderatoren getraind, verzameldag/oproep → pilot live |
16.4. Livegang-criteria
De pilot gaat live wanneer aantoonbaar:
-
de kritieke keten (registratie → upload → moderatie → publicatie → annotatie → zoeken) end-to-end werkt en de § 10 Acceptatiecriteria van de MVP-usecases zijn aangetoond, incl. de e2e-test uit de systeemarchitectuur;
-
de outputcontrole uit de data-architectuur klopt en de datasetbeschrijving valideert tegen het NDE Datasetregister;
-
de juridische documenten door een jurist zijn getoetst en de DPIA is afgerond;
-
moderatie is ingericht (getrainde moderatoren, handreiking);
-
back-ups, monitoring en alerting draaien en de hersteltest is uitgevoerd;
-
SPF, DKIM en DMARC staan op het productie-verzenddomein en een testmail bereikt de inbox van de grote providers (Gmail, Outlook) zonder spammarkering (zie § 11.5 Afleverbaarheid).
16.5. Huisstijl Jottem-platform
Naast de huisstijl per organisatiejottem (logo, kleurenpalet, favicon op Organisatie) heeft
het platform zelf een huisstijl. Die is uitgewerkt in de merkgids op
brand.iotm.nl, met de projectgroep vast te stellen in de
septembermijlpaal. De merkgids omvat:
-
merkverhaal en tone of voice - positionering, kernwaarden en schrijfregels (heel begrijpelijk, taalniveau B1);
-
logo/woordmerk - het onderstaande woordmerk met alle varianten (negatief, zwart/wit, compacte spraakwolk-O), gebruiksregels en downloadbaar logopack;
-
kleurenpalet en typografie (Fraunces voor koppen, Albert Sans voor tekst - altijd lokaal gehost) als basislaag, waar de organisatiekleuren per organisatiejottem óverheen komen;
-
CSS-basis (design tokens/stylesheet, te downloaden via de merkgids) die deze basislaag én de organisatie-overrides draagt, hergebruikt in de e-mailtemplates;
-
vormtaal, beeldgebruik en motion-principes met live voorbeelden;
-
favicon van het platform (voor www/design/prototype en als standaard voor organisaties zonder eigen favicon);
-
slogan - gekozen uit de opties in de § 2 Salespitch voor het Jottem platform: "Maak erfgoed van iedereen, door iedereen".
16.6. Openstaand ontwerp tijdens de bouw
Uit de gap-analyse resteert ontwerpwerk dat ter voorbereiding op fase 2 wordt opgepakt: de interfacebeschrijving van de tijdmachine-koppeling en de uitwerking van de IIIF-import. De huisstijl van het platform is uitgewerkt in de merkgids en wacht op vaststelling door de projectgroep (§ 16.5 Huisstijl Jottem-platform, septembermijlpaal). Het notificatie-overzicht (§ 11 Notificaties) en de acceptatiecriteria per usecase (§ 10 Acceptatiecriteria) zijn uitgewerkt. De open-sourcelicenties en repostructuur zijn inmiddels besloten, zie § 13.4 Open source: licenties en repostructuur: EUPL-1.2 voor de platformcode in het monorepo jottem, AGPL-3.0 voor de Herkenbaar API, CC BY-SA 4.0 voor de ontwerpdocumenten (design-repo) en CC BY 4.0 voor de overige documentatie (prototype, website, brand).
17. Juridisch
Een platform als Jottem levert risico’s op en dient te voldoen aan (inter)nationale wet- en regelgeving. Een eerste overzicht hiervan is opgenomen in het document Risico’s en wet- en regelgeving.
De voornoemde documenten en de volgende documenten dienen om de risico’s te beheersen.
-
Samenwerkingsovereenkomst, met als bijlage de Dienstenbijlage (SLA)
-
AI-toets Suggesties bij het uploaden - wat de suggestiedienst doet en niet doet, welke modellen erin zitten, hoe vaak die ernaast zitten, en onder welke voorwaarden de dienst aan mag
Ter verantwoording (AVG) horen daar de volgende documenten bij:
-
Verwerkingsregister en DPIA - registers van platformbeheerder en organisaties (artikel 30 AVG) en de gegevensbeschermingseffectbeoordeling (artikel 35 AVG)
-
Doorgifte-memo - onderbouwing en transfer impact assessment voor de opslag bij het Internet Archive (VS): primaire opslag binnen de EER, VS alleen als extra kopie zonder persoonsgegevens van levenden of met uitdrukkelijke toestemming
Let op: alle concept documenten zijn gemaakt door een niet-jurist en dienen we vóór gebruik te laten controleren door een jurist.