You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Implement the deposition upload workflow end-to-end — from ontology and schema definitions through to published records — with spreadsheet-based metadata entry (template generation + upload/validation).
Execute validators against submissions; emit structured metrics/metadata
Curation (existing)
—
Human/auto approval gate
Record (existing)
Record
Immutable published records, with validator-emitted metrics attached
Semantics Domain
New domain: osa/domain/semantics/
Ontology
Replaces the spec's "Vocabulary" concept. A versioned collection of Terms with optional hierarchical relationships. Can be imported from external sources (UBERON, Mondo, NCBI Taxonomy) or created within OSA.
Note: The existing VocabSRN type will be removed and replaced with OntologySRN. We are pre-launch so no deprecation is needed.
parent_ids: optional is_a / part_of relationships (empty for flat ontologies)
definition: optional description
deprecated: whether the term is deprecated
A flat ontology (like osa:sex with 4 terms) and a deep hierarchy (like UBERON with 16k terms) use the same abstraction. Flat is just "no parent relationships."
Baseline ontologies (for initial testing — real ontology imports like UBERON/NCBI Taxonomy are a future issue):
osa:sex — male, female, mixed, unknown
osa:boolean — true, false
osa:data-format — common scientific file formats
osa:license — open data licenses
Schema
Defines the metadata structure for a class of depositions. A list of typed fields where categorical data is ontology-backed.
SRN: urn:osa:{node}:schema:{id}@{version}
Field types:
Type
Purpose
Constraints
text
Free text (title, description)
Optional min/max length, regex
number
Numeric (sample count, age)
Optional unit, range, integer_only
date
Temporal (collection date)
ISO format
boolean
Flag
—
term
Ontology-backed categorical value
References an Ontology SRN; optional root_term constraint
url
Links (DOI, ORCID)
Valid URL, optional pattern
Each field specifies: name, type, type-specific config, required (bool), cardinality (exactly_one, one_or_more, zero_or_more), description.
Validators are OCI containers referenced by a Convention. When a deposition is submitted, the validators defined in its Convention are executed. Validators emit structured results (metrics, metadata, checks) which are attached to the published Record.
This means:
No separate "Trait" abstraction is needed — validator results are the searchable surface
Records carry rich, queryable validator output (e.g. "cell_viability: 94.2%") rather than binary stamps
Search can filter over validator-emitted metrics directly (e.g. "show me records where cell_viability > 90%")
A boolean "all checks passed" can be derived at query time without baking it into the model
Design note: The Trait concept from the spec is deferred. If a formal Trait registry is needed later, it can be layered on top of the validator→metrics model without breaking changes.
Record Versioning — Out of Scope
Record versioning (updating existing records via new depositions, rec:abc123@2) is deferred to a future issue. All published records will be @1 for now.
Spreadsheet-Based Metadata
Template generation
Server generates .xlsx from a Convention's Schema:
Column headers = field names
Description row = field descriptions, type info, requirements
For small ontology-backed fields (sex, license, boolean): Excel data validation dropdowns
For large ontology-backed fields (tissue, disease): column header includes ontology name + instructions to enter term IDs
Implement the deposition upload workflow end-to-end — from ontology and schema definitions through to published records — with spreadsheet-based metadata entry (template generation + upload/validation).
Frontend pages are tracked separately in #57.
Architecture Overview
Domain boundaries
Semantics Domain
New domain:
osa/domain/semantics/Ontology
Replaces the spec's "Vocabulary" concept. A versioned collection of Terms with optional hierarchical relationships. Can be imported from external sources (UBERON, Mondo, NCBI Taxonomy) or created within OSA.
Each Term has:
UBERON:0001950)is_a/part_ofrelationships (empty for flat ontologies)A flat ontology (like
osa:sexwith 4 terms) and a deep hierarchy (like UBERON with 16k terms) use the same abstraction. Flat is just "no parent relationships."Baseline ontologies (for initial testing — real ontology imports like UBERON/NCBI Taxonomy are a future issue):
osa:sex— male, female, mixed, unknownosa:boolean— true, falseosa:data-format— common scientific file formatsosa:license— open data licensesSchema
Defines the metadata structure for a class of depositions. A list of typed fields where categorical data is ontology-backed.
Field types:
textnumberdatebooleantermurlEach field specifies:
name,type, type-specific config,required(bool),cardinality(exactly_one, one_or_more, zero_or_more),description.Example schema:
{ "srn": "urn:osa:localhost:schema:scrnaseq-metadata@1", "title": "scRNA-seq Metadata", "fields": [ { "name": "title", "type": "text", "required": true, "cardinality": "exactly_one", "description": "Dataset title" }, { "name": "tissue", "type": "term", "ontology": "urn:osa:localhost:onto:uberon@1", "root_term": "UBERON:0000479", "required": true, "cardinality": "one_or_more" }, { "name": "organism", "type": "term", "ontology": "urn:osa:localhost:onto:ncbi-taxonomy@1", "required": true, "cardinality": "exactly_one" }, { "name": "sex", "type": "term", "ontology": "urn:osa:localhost:onto:sex@1", "required": true, "cardinality": "exactly_one" }, { "name": "sample_count", "type": "number", "integer_only": true, "range": [1, null], "required": true, "cardinality": "exactly_one" }, { "name": "collection_date", "type": "date", "required": false, "cardinality": "exactly_one" }, { "name": "doi", "type": "url", "pattern": "^https://doi.org/", "required": false, "cardinality": "exactly_one" } ] }Deposition Domain (enhanced)
Convention
Lives in the Deposition domain. The user-facing "submission template" — what a depositor selects to know what's expected.
A Convention bundles:
Deposition lifecycle
Validators and Record Metrics
Validators are OCI containers referenced by a Convention. When a deposition is submitted, the validators defined in its Convention are executed. Validators emit structured results (metrics, metadata, checks) which are attached to the published Record.
This means:
Record Versioning — Out of Scope
Record versioning (updating existing records via new depositions,
rec:abc123@2) is deferred to a future issue. All published records will be@1for now.Spreadsheet-Based Metadata
Template generation
Server generates .xlsx from a Convention's Schema:
Upload and validation
File Storage
Out of Scope (future issues)
Dependencies
Acceptance Criteria