Sinopia Tech

Logo

This is a page for technical information on the Sinopia project, a RDF-native cataloging environment for LD4P.

Site Menu

View the Project on GitHub LD4P/sinopia

Sinopia Data Models & Specifications

Groups

This represents a group of people who decide to operate within the same data namespace. Members of the group have full CRUD privileges of all entities (or metadata resource[s]) within that’s groups namespace. These are equated with ldp:Container in the Sinopia Server API, and equated with institutions (e.g. Stanford, Cornell) or consortia (e.g. PCC) in the user requirements.

NB: There are ways to handle having some resources in multiple groups technically, but it is a stretch goal for this work cycle - i.e., we presume that people will edit resources within 1 group at a time.

This is serialized as JSON-LD.

Descriptive Resource(s)

This represents any entities that are specifically metadata resources created directly or indirectly by users within a group editing within a profile-driven editor interface (singleton GUI or API / bulk load). These are equated with ldp:RDFSource in the Sinopia Server API.

The majority of the key values here will be defined by the profile; and the @context node for JSON-LD (that maps keys to namespaced predicates) is expected to be an embedded graph value that contains the mappings from the profile(s) used to edit the resource. No resource is expected to be edited by a single profile; in other words, each resource can be updated or added to via multiple profiles.

This is serialized as JSON-LD.

Administrative Resources

This represents any entities that are additive administrative metadata resources created indirectly by users (via our system & CRUD API). These are equated with ldp:Resource in the Sinopia Server API.

The heart of this is fulfilling user requirements around:

  1. tracking who changed an entity, when, and how (to the statement level);
  2. what profiles were used to describe an entity (possibly to the statement level);
  3. what institutions have what “entities” (to the resource level);
  4. and other administrative data as achievable and requested.

This is serialized as JSON-LD, if appropriate.

Authorization Resources

This represents authorization resources - i.e. what users can perform what actions (CRUD) to what resources (any of the ones listed here). These are equated with ldp:Resource in the Sinopia Server API. These resources align with the Web ACL model; if the user is authenticated, we use that as the agent key to check against; if not, it is considered ‘public’ agent.

This is serialized as JSON-LD, if appropriate.

Users

This represents Users - i.e. what users can perform what actions (CRUD) to what resources (any of the ones listed here). These are equated with ldp:Resource in the Sinopia Server API. These resources align with the Web ACL model; if the user is authenticated, we use that as the agent key to check against; if not, it is considered ‘public’ agent.

This is serialized as JSON, if appropriate. It is probably stored in the end-user facing application,

Profile

This is serialized as JSON.