Collections hold objects. Objects are expressed as JSON
and stored as JSON documents. Each document must have
a unique ID in the collection. The minimum object dataset
supports is one holding a ._Key
attribute and value.
The ._Key
reflects the unique id in the collection. The
minimum And/Or object holds a ._Key
and ._State
attributes. The later is used to map an object to a workflow
and apply the capabilities expressed in And/Or's roles.
And/Or is based on Caltech Library's dataset tool. dataset is a simple JSON object store organized as a directory containing a pairtree1. Each branch of the pair tree contains an object. You can think of this is Fedora extra-light2. The dataset tool provides some basic CRUD3 operations as well as a few extended concepts like key lists and data frames. Not all of dataset's features have been mapped into And/Or at this time. And/Or is intended to be a light weight web service on top of dataset's collection(s). Where the dataset tool is single user And/Or provides multi-user support because it is a web service and using the dataset package as if it web server were a single user. In effect it is a proxy of many users behaving as a single coordated user from the point of view of the dataset collection.
A limitation of this approach is operating on a dataset collection by the dataset CLI while it also is being use by And/Or is likely to cause problems for everyone do the lack of lock enforcement.