Event-driven digital object architecture for natural science collection

Why Event?

Imagine building a system to understand events related to global changes? Biodiversity data is just one aspect. Image source: https://cleanet.org/clean/literacy/tools/UGC/infographic.html

Event-first analog: I walk into a room, generate an “entered room” event and the light turns on. This is a reaction to an event.

Event-command analog: I walk into a room, flip the light switch and the light turns on. This is a command.

What is an Event?

What is an Entity?

Entity-> verb ->targetEntity with “some extra information/properties”. Example: Scientist collects/identifies species. The user views digital specimen information.

Let’s create some entities

{
"id": "test/b0ac8fc9596372bc3c97",
"name": "Thirteenth Doctor"
}
{
"id": "test/cae42177c14a8fcdeb14",
"scientificName": "Homunculus Loxodontus"
}
{
"id": "test/a49a51ac540d68915229",
"InstName": "Museum of Broken Relationships",
"website": "https://en.wikipedia.org/wiki/Museum_of_Broken_Relationships"
}

Let’s create some events

{
"id": "test/98499997ff0a30ab444d",
"timestamp": "2019-11-05T11:22:03.524Z",
"event": "collection",
"entityType": "scientist",
"entityID": "test/b0ac8fc9596372bc3c97",
"targetEntityType": "specimen",
"targetEntityId": "test/b0ac8fc9596372bc3c97",
}
{
"id": "test/c4942d87a9f89d8929c1",
"timestamp": "2019-11-05T13:22:03.524Z",
"event": "deposit",
"entityType": "scientist",
"entityID": "test/b0ac8fc9596372bc3c97",
"objectType": "specimen",
"objectID": "ABC-123-445",
"targetEntityType": "museum",
"targetEntityId": "test/a49a51ac540d68915229",
"depositDate": "11/29/2010"
}
{
"id": "test/bexo841bce6ef0116d5",
"timestamp": "2019-11-05T14:22:03.524Z",
"event": "creteDS",
"entityType": "scientist",
"entityID: "test/b0ac8fc9596372bc3c97",
"targetEntityType": "digitalspecimen",
"targetEntityID": "test/db44501292f3e4c35f8e"
}
{
"id": "test/db44501292f3e4c35f8e",
"scientificName": "Homunculus Loxodontus",
"physicalSpecimenId": "ABC-123-445",
"depositedIn": "test/a49a51ac540d68915229",
"collectedBy": "test/b0ac8fc9596372bc3c97",
"depositedBy": "test/b0ac8fc9596372bc3c97",
"dscreatedBy: "test/b0ac8fc9596372bc3c97"
}

How did we get here?

Conclusion

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Sharif Islam

Sharif Islam

Data Architect@Distributed System of Scientific Collections (https://dissco.eu). PhD in Sociology. Bachelor's in Math and CS from the University of Illinois.