Schema Reference
Knowledge-graph schema
The knowledge graph is part of a federated composite (graphomics) with discipline-specific constituents. Discover the live schema at runtime with the get_schema and list_databases MCP tools.
The primary constituent, micromap, uses these node labels:
Analysis, Assertion, BodySite, Compound, Disease, Drug, DrugClass,
Experiment, Gene, Metabolite, Paper, Pathway, Protein, Study, TaxonMetabolites are stored under the
Compoundlabel — query:Compound.
Relationship types:
ABOUT, ASSERTED, ASSOCIATED_WITH_DISEASE, BELONGS_TO_CLASS, EFFECTIVE_AGAINST,
ENCODED_BY, ENGAGES, HAS_ANALYSIS, HAS_PARENT, IMPLICATED_IN, INVESTIGATED_FOR,
LINKED_TO_DISEASE, MENTIONED_IN, OBJECT, PARTICIPATES_IN, PROCESSES, PRODUCES,
SUBJECT, SUPERSEDED_BY, TARGETS, UTILIZESProvenance contracts
See Provenance & write-back for how these fit together.
Assertion
An Assertion is a subject → predicate → object claim with a confidence and an organization scope. Fields:
| Field | Type | Notes |
|---|---|---|
predicate |
string | The relationship being asserted. |
subject |
{label, key_field, value} |
The subject entity reference. |
object |
{label, key_field, value} |
The object entity reference. |
confidence |
float | Confidence in the claim. |
direction |
string | Optional direction/sign. |
evidence_refs |
string[] | Evidence pointers (workflow ids, citations, statistics). |
asserted_at |
datetime | When the assertion was made. |
valid_from |
datetime | Start of validity window. |
valid_to |
datetime | null | End of validity window (open if null). |
organization_id |
string | Owning organization. |
analysis_id |
string | The Analysis that produced it. |
supersedes |
string[] | Assertion ids this one replaces. |
The Assertion id is deterministic — sha256(analysis_id | subject | predicate | object) — so recording the same finding twice is idempotent.
Decision
A Decision records the action that produced a finding. Fields: id, tool, action_type, occurred_at, summary, rationale, evidence_refs, actor_user, actor_org, role, organization_id, and resolution counts (resolved_count, unresolved_count, ambiguous_count).
DecisionEvent (ingest contract)
Ingest a decision over REST at POST /api/v1/provenance/decisions:
DecisionEvent {
id string (required)
tool string (nexus | workbench | mapforge)
action_type string (target_rationale | committee_gate |
pipeline_run | hypothesis_verdict | data_contribution)
decision_outcome string (supported | refuted | pass | fail | approved | merged)
occurred_at string (ISO-8601, required)
summary string (required)
rationale string
evidence_refs string[]
actor_user string
actor_org string
role string (ceo | scientist | service)
entity_tags string[] (Disease name_normalized or Taxon taxon_id)
supersedes string[]
recorded_by_analysis_ids string[]
context_snapshot object?
source_native_id string
}
organization_idis not a request field — it is derived from your API key.
Ingest returns:
{
"id": "...",
"organization_id": "...",
"entity_tags_matched": [],
"entity_tags_unmatched": [],
"supersedes_linked": [],
"recorded_links_created": []
}record-finding payload (MCP)
provenance_record_finding writes a full Experiment → Analysis → Assertion chain in one call:
experiment { id, title?, nexus_ref?, started_at?, actor_user?, actor_org? }
analysis { id, method?, occurred_at, summary?, model?, confidence? }
assertions [ { subject:{label,key_field,value}, predicate, object:{label,key_field,value},
confidence, direction?, asserted_at?, valid_from?, valid_to?,
evidence_refs?, supersedes? } ]
organization_id
decision_ids?Lineage response
POST /api/v1/provenance/lineage (and the provenance_lineage MCP tool) return:
{
"entity": "...",
"as_of": null,
"paths": [
{
"experiment": {},
"analysis": {},
"assertion": {},
"subject": {},
"object": {},
"decisions": []
}
],
"count": 0
}