SAEON / odp-server

Source code for the SAEON Open Data Platform server components.
GNU Affero General Public License v3.0
0 stars 2 forks source link

Disconnect schema from record #28

Closed marksparkza closed 5 months ago

marksparkza commented 5 months ago

All metadata can be internally represented by tags. Since each tag class has a schema, this gives us a unified and infinitely flexible metadata model.

ISO19115, DataCite, Darwin Core, etc, can be used to validate incoming package metadata from data providers. Thus we can publish an upload API based on internationally-recognised metadata standards. There is however no advantage in maintaining metadata records internally as JSON blobs.

JSON is a transport format which we are currently using as a storage format. It's difficult to make ad-hoc queries for deeply nested values, and it's impossible to track changes to individual elements, to mention a couple of challenges with this approach. Using tags to store metadata elements, we can standardise our internal model and vocabularies; we get per-client and per-user tracking of individual field changes, we can systematically model components of affiliations (for example), and we can re-use contact information.