1. Introduction
The goal of the ErfgoedPod demo is to illustrate the components and architecture of the decentralized artefact exchange network in combination with the the collection registration system Solid CRS, developed by Digita for the "Solid for small heritage institutions" project.
2. Scenario
2.1. Pre-conditions
2.1.1. Maintainers
Bob: collection maintainer at a cultural heritage institution
-
Bob has a WebID
-
Bob has the URI of his Institution’s Pod
2.1.2. Solid Pods
Institution’s Pod: data pod containing all digital heritage files of Bob's institution
-
contains an inbox for Bob
2.1.3. Orchestrators
Institution’s Orchestrator: takes care of the communication (sending notifications) on behalf of Bob.
-
it has an personal inbox as API (eg. to control the Orchestrator)
-
it knows the location of Institution’s Pod and its inbox
2.1.4. Solid Apps
Solid CRS: collection management system for small digital heritage organizations
-
creates and manages the artefacts (collections of digital heritage objects) in the Institution’s Pod
Demo Dashboard: demo frontend to illustrate communication between different pods and services
-
demo hosted at http://bellow2.ugent.be/public/
-
create, send and receive notifications
-
illustrate the network toplogy and the performed interactions between actors
-
introspect the event logs of artefacts (what happened when)
2.1.5. Service hubs
Registry Service Hub
-
wrapper service for the NDE Dataset Registry
Archival Service Hub
-
wrapper service for the meemoo UGent GREB archive or a stub
2.2. Part 1: artefact creation
-
Bob logs into Solid CRS with his Web ID
-
Bob chooses the Institution’s Pod
-
-
Bob creates a new Collection "Utrecht WOII" about Utrecht in WOII.
-
He adds an object with the following metadata
-
image: https://images.memorix.nl/niod/thumb/1000x1000/9236648b-6507-e27b-f3fa-68a5227efc18.jpg
-
license: unknown
-
object number: 74541
-
type: Bevrijding Utrecht
-
title: "Bevrijding Utrecht."
-
description: "Bevrijding Utrecht. Overweg Burgemeester Reigerstraat."
-
collection: "Nieuwe collectie"
-
Location: Utrecht
-
Date: 1945-05-07
-
-
This results in a new artefact https://pod.inrupt.com/mvs/heritage-collections/catalog#collection-d241c975-42fa-41ab-9ff9-3918ee22085a of type
schema:Dataset
:
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix schema: <http://schema.org/> . @prefix collections: <https://pod.inrupt.com/mvs/heritage-collections/catalog#> . @prefix objects: <https://pod.inrupt.com/mvs/heritage-objects/> . collections:collection-d241c975-42fa-41ab-9ff9-3918ee22085a schema:name "Utrecht WOII"@nl ; schema:description "Utrecht in WOII"@nl ; schema:distribution collections:distribution-16008f15-9f8e-4acc-9e9a-f60f53e1a8a2 ; rdf:type schema:Dataset . collections:distribution-d92aeb56-5f23-44ca-afd9-ec46ed0c6ee3 rdf:type schema:DataDownload ; schema:contentUrl objects:data-bbc0118e-7ba8-47ab-a532-fae62e2281fb . objects:data-bbc0118e-7ba8-47ab-a532-fae62e2281fb#object-214e970e-48f2-48a1-a90f-add11f31a64a schema:height objects:data-bbc0118e-7ba8-47ab-a532-fae62e2281fb#object-214e970e-48f2-48a1-a90f-add11f31a64a-height ; schema:isPartOf collections:collection-d241c975-42fa-41ab-9ff9-3918ee22085a ; schema:weight objects:data-bbc0118e-7ba8-47ab-a532-fae62e2281fb#object-214e970e-48f2-48a1-a90f-add11f31a64a-weight ; schema:locationCreated <http://www.wikidata.org/entity/Q39297398> ; schema:dateCreated "1945-05-07" ; schema:name "Bevrijding Utrecht."@nl ; schema:description "Bevrijding Utrecht. Overweg Burgemeester Reigerstraat."@nl ; rdf:type schema:CreativeWork ; schema:mainEntityOfPage objects:data-bbc0118e-7ba8-47ab-a532-fae62e2281fb#object-214e970e-48f2-48a1-a90f-add11f31a64a-digital ; schema:additionalType <https://data.niod.nl/WO2_Thesaurus/events/9314> ; schema:depth objects:data-bbc0118e-7ba8-47ab-a532-fae62e2281fb#object-214e970e-48f2-48a1-a90f-add11f31a64a-depth ; schema:identifier "1" ; schema:width objects:data-bbc0118e-7ba8-47ab-a532-fae62e2281fb#object-214e970e-48f2-48a1-a90f-add11f31a64a-width .
-
Solid CRS stores the artefact in the Institution’s Pod.
-
The new artefact triggers an
as:Create
activity about the artefact. -
A Linked Data Notification containing the activity is posted to Institution’s Pod's inbox.
2.3. Part 2: requesting services
2.3.1. Invoking the registration service
-
Bob turns to the demo dashboard of the artefact exchange network and logs in with his WebID.
-
The demo dashboard connects the Institution’s Pod for the first time
-
The demo dashboard prepares the Institution’s Pod for network participation by creating an event log resource. This log tracks all lifecycle events of an artefact.
-
Bob can view the artefact + inbox and event log
-
Bob enters the inbox URI of the Institution’s Orchestrator in the demo dashboard
-
The demo dashboard connects to the Institution’s Orchestrator by informing it about the Institution’s Pod's inbox.
-
The Institution’s Orchestrator reads the
as:Create
activity from the Institution’s Pod's inbox-
appends the creation event to the event log
-
-
The Institution’s Orchestrator suggests to Bob that he should offer the artefact metadata to the Registry Service Hub.
-
Bob sees the suggestions in the demo dashboard and decides to follow through.
-
In the demo dashboard, Bob selects the object from § 2.2 Part 1: artefact creation as artefact.
-
Bob selects the Registry Service Hub as target from the list.
-
Bob initializes the offer.
-
demo dashboard creates a new notification with an
as:Offer
-
adds a short note
-
-
The Institution’s Orchestrator forwards the notification to the Registry Service Hub.
-
The Registry Service Hub receives the notification
-
posts the metadata to the Dataset Registry API
-
-
The Registry Service Hub sends a notification with
as:Announce
to the Institution’s Pod's inbox. -
The Institution’s Orchestrator reads the
as:Announce
activity from the inbox. -
Institution’s Orchestrator appends the registration event (ie. the
as:Announce
) to the event log in the Institution’s Pod. -
Bob sees in the event log with the demo dashboard that the registration is complete
2.3.2. Invoking the archival service
-
Bob turns to the demo dashboard of the artefact exchange network.
-
Institution’s Orchestrator suggests to Bob that he should offer the image artefact with metadata to the Archival Service Hub.
-
-
Bob sees the suggestions in the demo dashboard and decides to follow through.
-
In the demo dashboard, Bob selects the Archival Service Hub as target from the list
-
Bob initializes the offer.
-
demo dashboard creates a new notification with an
as:Offer
activity-
Add a short note
-
-
The Institution’s Orchestrator forwards the notification to the Archival Service Hub.
-
The Archival Service Hub receives the notification
-
downloads the artefact
-
wraps the image artefact in a bagit and adds it to meemoo’s SFTP
-
-
The meemoo archival process starts.
-
The Archival Service Hub polls meemoo’s Mediahaven API for
ARCHIVED_ON_DISK
premis event -
When found, it sends a notification with
as:Announce
to the Institution’s Pod's inbox. -
The Institution’s Orchestrator reads the
as:Announce
activity from the inbox. -
Institution’s Orchestrator appends the archival event (ie. the
as:Announce
) to the event log in the Institution’s Pod. -
Bob sees in the event log with the demo dashboard that the registration is complete