Draft v0.1 — open for comment
Negative-Results Record, schema sketch v0.1
This is a draft, published for comment, not a released specification. Field names, vocabularies, and cardinalities will change. Send comments to contact@portolansoft.com.
Overview
The core record is domain-agnostic. Domain profiles supply the identifiers, vocabularies, and evidence rules for a field. Two profiles are drafted: materials and biology.
One record equals one attempt on one path. A record is distilled, not raw: raw trajectories, logs, and instrument files may be attached, but the record is legible and useful without them.
The serialization is an RO-Crate 1.2 profile whose activity structure follows W3C PROV. Records are signed, immutable, and versioned: a correction produces a new version that points at the one it supersedes. Records are private by default, with an embargo the depositor sets, and become citable on release. Version and retraction status of everything a record cites is re-checked at read time, not frozen at write time.
Field names below are working names. Type is given as the JSON-LD range. Cardinality: 1 required, 0..1 optional, 0..n repeatable.
Core record (sections A to H)
These eight sections apply to every record, in every field. A profile may require more; it may not contradict what is here.
A. Identity and provenance
Who or what produced this record, with what software, and under whose authority.
| Field | Type | Card. | Notes |
|---|---|---|---|
| @id | URI | 1 | Persistent identifier for the record. DataCite DOI on release; content address before release. |
| version | Text | 1 | Monotonic. A correction is a new version, never an edit in place. |
| dateCreated | DateTime | 1 | UTC, ISO 8601. |
| agent | prov:SoftwareAgent | 1..n | Model or system name, version, and provider. Aligns with OpenTelemetry gen_ai attributes. |
| operator | Person / Organization | 1 | The accountable depositor. ORCID and ROR where available. |
| softwareStack | SoftwareApplication | 0..n | Name, version, and commit for each component that produced the result. |
| runIdentifier | Text | 0..1 | W3C Trace Context trace_id of the originating run, if one exists. |
| license | URI | 1 | Terms under which the released record may be reused. |
B. Question
What the attempt was trying to establish, stated well enough that another agent can decide whether this record is about its question.
| Field | Type | Card. | Notes |
|---|---|---|---|
| question | Text | 1 | One sentence, in the domain’s own terms. |
| target | URI | 0..n | The object of the attempt: a composition, structure, compound, claim, or theorem. Identifier, not prose, where one exists. |
| hypothesis | Text | 0..1 | The proposition under test, if the attempt had one. |
| successCriteria | Text | 1 | What would have counted as a positive result. Required: without it, “negative” has no meaning. |
| pathType | Enum | 1 | literature, computation, experiment, mixed. |
C. Path
What was actually done, in the stages that apply. Every stage is a PROV activity with start and end times.
C1. Literature stage (follows PRISMA-S)
| Field | Type | Card. | Notes |
|---|---|---|---|
| sourcesSearched | Text / URI | 1..n | Each database or index, with platform and coverage dates. PRISMA-S items 1–4. |
| query | Text | 1..n | Full query string as run, per source. Verbatim, not paraphrased. |
| searchDate | DateTime | 1..n | Date each search was executed. |
| limits | Text | 0..n | Filters, language and date restrictions. PRISMA-S item 9. |
| supplementaryMethods | Text | 0..n | Citation chasing, contact with authors, preprint servers. PRISMA-S items 10–12. |
| recordsFound | Integer | 1 | Before deduplication. |
| deduplication | Text | 0..1 | Method and resulting count. PRISMA-S item 16. |
C2. Computation stage
| Field | Type | Card. | Notes |
|---|---|---|---|
| method | Text / URI | 1 | Level of theory, model, or algorithm. |
| code | SoftwareApplication | 1..n | Name, version, commit, and build environment. |
| inputs | URI | 1..n | Structures and datasets by identifier: OPTIMADE, Materials Project, ICSD, PubChem. |
| parameters | Object | 1 | Cutoffs, k-points, functionals, seeds, tolerances. |
| convergence | Object | 0..1 | Criteria and whether they were met. |
| resources | Object | 0..1 | Core-hours, GPU-hours, wall time. |
C3. Experiment stage
| Field | Type | Card. | Notes |
|---|---|---|---|
| protocol | URI / Text | 1 | Reference to a protocol record where one exists. |
| instrument | Text | 0..n | Platform, make, model; autonomous or human-run. |
| precursors | URI / Text | 0..n | Materials with supplier, lot, and purity where relevant. |
| conditions | Object | 1 | Temperature, atmosphere, duration, ramp rates, stoichiometry. |
| characterization | Object | 0..n | Technique, instrument, and result summary; raw files attachable. |
| replicates | Integer | 0..1 | Number of attempts under these conditions. |
| conditionsCommitment | Object | 0..1 | Hash-commitment option for withheld conditions: alg, digest over the canonicalized condition set plus a salt, and revealBy. Lets a depositor register a dead end now and disclose the exact conditions later without allowing a rewrite. |
D. Screened items
One row per candidate considered and set aside: papers, structures, compounds, or prior results. This is the part a later agent queries first.
| Field | Type | Card. | Notes |
|---|---|---|---|
| identifier | URI | 1 | DOI, arXiv id, OPTIMADE, Materials Project, ICSD, PubChem. |
| decision | Enum | 1 | included, excluded, deferred. |
| reason | Enum | 1 | From the exclusion-reason vocabulary below. Free text is an error, not a fallback. |
| evidence | Text / URI | 0..n | The quotation, figure, value, or record that supports the decision. |
| statusAtCheck.version | Enum | 1 | NISO RP-8-2008: AO, SMUR, AM, P, VoR, CVoR, EVoR. |
| statusAtCheck.integrity | Enum | 1 | NISO RP-45-2024 (CREC): none, correction, expression-of-concern, retraction, removal. |
| statusAtCheck.assertedBy | Text / URI | 1 | Who said so: crossref-relation, retraction-watch, publisher, manual. |
| statusAtCheck.checkedAt | DateTime | 1 | When. The registry re-checks on every read and flags drift. |
E. Outcome
| Field | Type | Card. | Notes |
|---|---|---|---|
| outcomeClass | Enum | 1 | negative-not-novel, negative-not-achievable, negative-not-reproducible, refuted, inconclusive, abandoned. |
| failureMode | Enum | 0..n | From the domain vocabularies below. |
| evidence | Text / URI | 1..n | What establishes the outcome: measurement, diffraction pattern, energy above hull, prior publication. |
| nearestPriorResult | URI | 0..n | The closest existing result found. Required when outcomeClass is negative-not-novel. |
| confidence | Enum / Number | 1 | How strongly the evidence supports the outcome, with the basis stated. |
F. Reuse guidance
The fields that make a dead end actionable instead of merely discouraging.
| Field | Type | Card. | Notes |
|---|---|---|---|
| applicabilityConditions | Text / Object | 1 | The envelope within which this dead end holds. A negative result outside its envelope is not a negative result. |
| invalidators | Text | 0..n | What would overturn this record. Stated by the depositor, in advance. |
| untriedBranches | Text | 0..n | Paths visible from here that were not taken, and why. |
| cost | Object | 1 | What the attempt consumed: wetLabRuns, agentSeconds, gpuHours, instrumentHours, usd. The unit of value the registry reports back is cost avoided. |
G. Relations
| Field | Type | Card. | Notes |
|---|---|---|---|
| isNewVersionOf | URI | 0..1 | DataCite relation type. The record this one supersedes. |
| isDerivedFrom | URI | 0..n | Records or datasets this attempt built on. |
| references | URI | 0..n | Literature cited, each carrying its own statusAtCheck. |
| isSupplementTo | URI | 0..n | A publication or preprint this record supports. |
| refutes / confirms | URI | 0..n | Claims or records this attempt bears on. Directional and signed. |
| reusedBy | URI | 0..n | Populated by the registry when a later record cites this one as avoided cost. |
H. Integrity
| Field | Type | Card. | Notes |
|---|---|---|---|
| contentAddress | Text | 1 | Multihash over the canonicalized crate. The record’s identity before it has a DOI. |
| signature | Object | 1 | Nanopublication-style detached signature: algorithm, public key, signed digest. |
| signer | URI | 1 | Key holder, bound to the operator in section A. |
| timestamp | Object | 0..1 | Third-party attestation of existence at a time. |
| visibility | Enum | 1 | private, embargoed, public. Default private. |
| embargoUntil | Date | 0..1 | Set by the depositor. Release is automatic; extension is an explicit act with a reason. |
Materials profile v0.1
The materials and chemistry profile. Records link to Materials Project, OPTIMADE, and ICSD identifiers, not only to papers, so that a novelty claim is checked against structured data rather than prose.
Starter vocabularies
Controlled and deliberately small. Additions go through the same review as the schema; a term nobody uses is removed.
Exclusion reasons (section D)
- out-of-scope
- duplicate
- superseded-by-newer-version
- retracted
- expression-of-concern
- corrected-materially
- preprint-not-peer-reviewed
- insufficient-detail-to-reproduce
- wrong-composition
- wrong-conditions
- no-full-text-available
- language-not-supported
- evidence-not-verifiable
Failure modes, materials and chemistry (section E)
- known-disordered-variant
- phase-separation
- decomposition-at-temperature
- precursor-impurity
- no-crystalline-product
- moisture-or-air-sensitive
- yield-below-threshold
- characterization-inconclusive
- irreproducible-across-replicates
Failure modes, computation (section E)
- unconverged
- unstable-above-hull
- imaginary-phonon-modes
- functional-inadequate
- cell-or-supercell-too-small
- basis-set-insufficient
- numerical-instability
- resource-exhausted
- input-structure-invalid
Example record (abridged)
Illustrative only. Identifiers are placeholders.
{
"@context": ["https://w3id.org/ro/crate/1.2/context", {"prov": "http://www.w3.org/ns/prov#"}],
"@graph": [
{"@id": "ro-crate-metadata.json", "@type": "CreativeWork",
"conformsTo": {"@id": "https://portolansoft.com/profile/nrr/0.1"}, "about": {"@id": "./"}},
{"@id": "./", "@type": "Dataset", "name": "NRR: Li3MnCoO5 solid-state synthesis attempt",
"datePublished": "2026-11-03", "visibility": "embargoed", "embargoUntil": "2027-11-03",
"hasPart": [{"@id": "#attempt"}, {"@id": "#lit-search"}]},
{"@id": "#lit-search", "@type": "SearchAction", "query": "(Li3MnCoO5 OR \"Li-Mn-Co oxide\") AND synthesis",
"startTime": "2026-11-02T14:10:00Z", "result": [{"@id": "#cand-1"}]},
{"@id": "#cand-1", "@type": "ScholarlyArticle", "identifier": "doi:10.1000/example",
"decision": "excluded", "reason": "superseded-by-newer-version",
"statusAtCheck": {"version": "AM", "integrity": "none", "assertedBy": "crossref-relation",
"checkedAt": "2026-11-02T14:11:30Z"}},
{"@id": "#attempt", "@type": "CreateAction", "actionStatus": "FailedActionStatus",
"object": {"@id": "optimade:mp/mp-000000"},
"outcomeClass": "negative-not-novel", "failureMode": "known-disordered-variant",
"nearestPriorResult": {"@id": "icsd:000000"},
"applicabilityConditions": "solid-state route, 800-950 C, air",
"invalidators": "a refinement showing cation ordering at these conditions",
"cost": {"wetLabRuns": 3, "agentSeconds": 5400}}
]
}
Biology profile v0.1
A failed synthesis is a fact about a compound. A biological negative result is a claim that an effect was looked for and not found, and it is only informative if the assay could have detected the effect. The biology profile therefore adds three things the core record does not require: controls and sensitivity; persistent identity for reagents, strains, and cell lines; and evidence-synthesis screening decisions as first-class records. Four attempt types are recognized: wet-lab, computational, evidence-synthesis, hypothesis-generation.
Identifiers
| Class | Identifier systems |
|---|---|
| Organism and strain | NCBI Taxonomy id; stock-center strain ids (Chlamydomonas Resource Center CC-####, Bloomington, CGC, ZIRC, JAX/MGI); mutant-library ids such as CLiP for Chlamydomonas. |
| Gene and protein | Ensembl, NCBI Gene, HGNC, UniProt; model-organism ids (Phytozome, FlyBase, WormBase, ZFIN, SGD, TAIR). |
| Reagents | RRID (AB_ antibodies, CVCL_ cell lines via Cellosaurus, SCR_ software), Addgene ids, lot numbers. |
| Compounds | ChEMBL, PubChem, DrugBank. |
| Targets, diseases, phenotypes | Open Targets; MONDO, DOID, HPO; GO; Cell Ontology; Uberon. |
| Assays and methods | OBI terms; EDAM; protocols.io DOI. |
| Data | GEO, SRA, ENA, PRIDE, PDB, EMDB, BioImage Archive, IDR, Zenodo. |
| Trials and reviews | ClinicalTrials.gov; PROSPERO; OSF and AsPredicted; Registered Report stage. |
Version and integrity status, extended
Beyond the core version terms, the biology profile adds preprint-v{n}; reviewed-preprint, with eLife assessment terms carried as structured fields (significance: landmark, fundamental, important, valuable, useful; strength of evidence: exceptional, compelling, convincing, solid, incomplete, inadequate); registered-report-stage1 and registered-report-stage2; trial-registered and trial-results-posted. Integrity adds post-publication-comment, with a PubPeer pointer carried as a signal, never a verdict. Every status carries assertedBy and checkedAt.
Outcome classes
- negative-no-phenotype
- negative-no-effect
- negative-no-association
- negative-not-replicated
- negative-not-novel
- negative-contradicted-by-vor
- inconclusive-controls-failed
- inconclusive-underpowered
- inconclusive-reagent-failed
- partial
- positive
Informativeness rule. A negative is informative only if the positive control passed, the negative control was clean, and a power analysis or detection limit is stated. Otherwise the record is uninformative and must use an inconclusive outcome class. This is the absence-of-evidence versus evidence-of-absence distinction, made machine-checkable.
Failure modes, wet-lab
- no-phenotype-single-allele
- lethal-or-sick-mutant
- off-target
- strain-background-effect
- reagent-nonspecific
- cell-line-misidentified
- contamination
- construct-failed
- transformation-failed
- no-expression
- dose-no-response
- batch-effect
- assay-out-of-range
- toxicity
- not-replicated-second-model
Failure modes, computational
- no-differential-signal
- not-significant-after-correction
- confounded
- model-did-not-generalize
- low-confidence-structure
- benchmark-contamination
Failure modes, evidence synthesis
- wrong-population
- wrong-intervention
- wrong-comparator
- wrong-outcome
- wrong-study-design
- duplicate-publication
- insufficient-data
- not-retrievable
- retracted
- preprint-superseded
- claim-not-supported-by-cited-source
Evidence block for experimental negatives
| Field | Contents |
|---|---|
| controls.positive | Reagent or genotype, expected result, observed result, pass or fail. |
| controls.negative | Reagent or genotype, expected result, observed result, pass or fail. |
| sensitivity | Detection limit, or the minimum resolvable effect. |
| power | Power-analysis reference, or none. |
| replicates | Biological, technical, independent labs. |
| statistics | Test, effect size, confidence interval, n. |
| blinding, randomization | Whether used, and how. |
| preregistration | Registration identifier, or none. |
| reportingGuideline | ARRIVE 2.0, CONSORT, MIAME, MINSEQE, or none. |
Applicability conditions
For a biological record the envelope is: organism and strain; genotype and allele; cell type and passage; developmental stage; sex; growth conditions; assay and readout; reagent lot; time point; dose range.
Governance rules specific to biology
- No human-subject data in records, only accessions. Human-derived records are embargoed by default, and outcomes are aggregate-only.
- Compliance identifiers (IACUC, IRB) are committed by hash and revealed only to authorized readers.
- A restricted visibility tier for select-agent or dual-use work, never public regardless of embargo.
- Reagent lot identifiers are public by default, because they are the most diagnostic field in the record.
Example: a Chlamydomonas ciliary-assembly negative
Placeholder identifiers.
{
"@type": "CreateAction", "actionStatus": "FailedActionStatus",
"attemptType": "wet-lab",
"question": "Does loss of Cre00.g000000 shorten flagella or delay regeneration after deflagellation?",
"organism": {"taxon": "NCBITaxon:3055", "strain": "CC-4533", "mutant": "LMJ.RY0402.000000"},
"gene": {"id": "Cre00.g000000", "source": "Phytozome"},
"assay": {"obi": "OBI:0000000", "protocol": "doi:10.17504/protocols.io.example",
"readout": "flagellar length, DIC microscopy, 60 min post-deflagellation"},
"controls": {"positive": {"genotype": "shf1", "expected": "short flagella", "observed": "short flagella", "pass": true},
"negative": {"genotype": "CC-4533 parental", "observed": "wild-type length", "pass": true}},
"sensitivity": "resolves 1.0 um difference in mean length at n=100 cells",
"power": "80% for d=0.4 at n=100 per genotype",
"replicates": {"biological": 3, "technical": 2},
"statistics": {"test": "Welch t-test", "effect": "0.2 um", "ci95": [-0.3, 0.7], "n": 300},
"outcomeClass": "negative-no-phenotype", "informativeness": "informative",
"failureMode": "no-phenotype-single-allele",
"applicabilityConditions": "TAP medium, 22 C, continuous light, single CLiP allele, steady-state and regeneration",
"invalidators": "a second independent allele; complementation; a different readout such as IFT particle velocity",
"untriedBranches": ["second allele", "double mutant with known IFT component", "proteomics of isolated flagella"],
"screened": [{"identifier": "doi:10.1101/2026.00.00.000000v2", "decision": "included",
"statusAtCheck": {"version": "reviewed-preprint", "eLifeStrength": "solid",
"assertedBy": "eLife", "checkedAt": "2026-09-13T17:00:00Z"}}],
"cost": {"wetLabDays": 6, "agentSeconds": 3200},
"visibility": "embargoed", "embargoUntil": "2027-03-13"
}
Example: an evidence-synthesis exclusion
{
"@type": "SearchAction", "attemptType": "evidence-synthesis",
"question": "Systematic review: efficacy of intervention X in population Y (PROSPERO CRD0000000)",
"sources": [{"name": "PubMed", "query": "(X[tiab]) AND (Y[MeSH]) AND randomized", "date": "2026-09-10", "retrieved": 412}],
"screened": [{"identifier": "doi:10.1000/example", "decision": "excluded", "reason": "retracted",
"statusAtCheck": {"version": "VoR", "integrity": "retracted", "assertedBy": "retraction-watch",
"checkedAt": "2026-09-10T09:12:00Z"}}],
"outcomeClass": "partial", "prismaCounts": {"identified": 412, "screened": 380, "excluded": 351, "included": 29}
}
Open questions for biologists
- Is the informativeness rule the right minimum, or too strict for exploratory work?
- Should a single-allele no-phenotype ever be informative, or always
partialuntil a second allele or complementation? - Which reagent fields must be public for the record to be useful, and which will labs refuse to share?
- Should each screening decision be its own record, or a review one record with many screened items?
- What would make a lab deposit these at all?
Mapping to standards
Nothing here is a new standard. Each part of the record is carried by something that already exists.
| Part of the record | Standard | How it is used |
|---|---|---|
| Whole record, packaging | RO-Crate 1.2 (JSON-LD, schema.org) | A profile with conformsTo pointing at the NRR profile URI. |
| Activities and agents (A, C) | W3C PROV | Each stage is an activity with agents, entities, and times. |
| Literature stage (C1) | PRISMA-S | Reporting fields mapped one-to-one, so a literature path is auditable. |
| Version status (D) | NISO RP-8-2008 | Controlled version terms: AO, SMUR, AM, P, VoR, CVoR, EVoR. |
| Integrity status (D) | NISO RP-45-2024 (CREC); Crossref / Retraction Watch | Retraction, correction, and concern states, with assertion source and check time. |
| Identifiers and relations (B, D, G) | DataCite; DOI, arXiv, Materials Project, OPTIMADE, ICSD, PubChem | Relation types taken from DataCite; domain objects referenced by native identifier. |
| Agent runs (A) | OpenTelemetry gen_ai; W3C Trace Context | Model, provider, and trace identifiers carried through from the run. |
| Signing and addressing (H) | Nanopublication practice; multihash | Detached signature over a canonicalized crate; content address as pre-DOI identity. |
| Reagents and cell lines (biology) | RRID; Cellosaurus | Antibodies, cell lines, and software identified by resource identifier, with lot numbers. |
| Reagent reporting (biology) | STAR Methods Key Resources Table | Field set for the reagent block, so a record maps onto what labs already compile. |
| JSON-LD typing (biology) | Bioschemas profiles: Gene, Protein, Taxon, LabProtocol, Sample | Types for biological entities inside the RO-Crate graph. |
| Assays, methods, statistics | OBI; EDAM; STATO | Controlled terms for the assay, the computational method, and the statistical test. |
| Experiment reporting | ARRIVE 2.0; CONSORT; MIAME; MINSEQE | Named in the evidence block, so a reader knows which guideline the attempt followed. |
| Review registration | PROSPERO | Evidence-synthesis records carry their registration identifier. |
| Preregistration | OSF Registries; AsPredicted | Preregistration identifier, or an explicit none. |
| Preprint and review status | Europe PMC preprint links; Sciety; eLife assessment vocabulary | Reviewed-preprint status and assessment terms carried as structured fields. |
Open questions
These are the decisions the draft does not make. Comments on any of them are the most useful thing a reader can send.
- Granularity. Is one record one attempt, one campaign, or one decision point? Too fine and the registry is a log; too coarse and the applicability conditions stop being true.
- Identity and keys. What identifies “the same path” across depositors, so that two labs failing the same way can be recognized as such?
- Default embargo. What is the right default hold period, and should it differ for computation and wet-lab records?
- Redaction. How are withheld conditions handled beyond hash commitment, and what is the minimum a redacted record must still disclose to be admissible?
- Minimum record. What is the smallest set of required fields that is still worth depositing, given that capture must stay automatic?
- Where the profile lives. Which body should hold the profile and its vocabularies long term, and under what governance? The draft assumes an operator independent of publishers and content platforms; whether that is a nonprofit, a consortium, or a national facility is open.
Comment on this draft
This document is draft v0.1 and open for comment. Corrections, objections, and field-level suggestions to contact@portolansoft.com.