Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Temporal ORE Aggregations #147
Exploring how to use ore:Aggregations to model sets of objects of various different types has led to a question about the underlying model. For many of the use cases, it works pretty much seamlessly and as expected. For example, the set of objects in an exhibition is a perfectly lovely Aggregation and we can associate exhibition specific information with the Proxy. The set of objects in an Auction lot ... equally lovely. Europeana and DPLA have demonstrated Aggregations for museum objects. All good.
However when trying to model an art dealer's inventory as an Aggregation, where the membership of the inventory is constantly changing, we run into an issue. Similarly, though at a much lower rate, museum collections themselves.
Is the semantics of ore:aggregates "current member" or is it "current or former member"?
In other words, if I add something to an Aggregation, make an assertion about it with a Proxy, and then remove it from the Aggregation, what happens? Can I even remove something from an Aggregation, once added?
We can see two possible routes:
In either scenario, we would need to have Aggregating and Disaggregating activities, whereby Aggregated Resources join and leave Aggregations. This would allow the computation of the current set of members of the Aggregation ... which could be cached on the Aggregation somehow. These activities can refer to the Proxy, given a nice linking mechanism. They can also express more domain semantics of why the resource as aggregated -- e.g. the painting was acquired by the dealer, or the painting was added to the exhibition.
Our current preference is option 2. If it's not, then we would need something like option 1b to be true to avoid losing the information.
It would result in something like:
To provide an example of Option 1b:
Noting (from slack discussion) that the set of objects which are currently "on view" is a good example of this, especially given the same object can be on view at one point, taken off view, then put back on view with a different label. Meaning multiple proxies for the same object in the same aggregation.