# YAML schema
### Lint checklist
- `entity.id` is a **stable CURIE** (`GENE:`, `PROT:`, `PATHWAY:`, `DISEASE:`, `DRUG:` …).
- `title` matches the canonical label; put synonyms in `aliases`.
- `summary` ≤ 200 chars, single sentence.
- `relations[*].predicate` is from the allowed set; `target` uses a CURIE.
- All IDs containing `:` are **quoted**.
- Evidence lists are arrays of `{pmid|doi: "…"}` maps (not bare strings).
- `learning` fields present for cards you want to auto-generate.
## Module 1 - Entity: - Frontmatter template for any “entity” note
```yaml
---
id: "GENE:IGF1R" # stable, never changes
title: IGF1R
type: gene # gene | protein | drug | concept | pathway | disease | evidence | study
aliases: ["IGF-1R", "CD221"]
summary: "Insulin-like growth factor 1 receptor; key growth signaling node."
hallmarks: [proliferative_signaling, metabolism]
dsrct_evidence: Moderate # Strong | Moderate | Weak | Unknown
ews_evidence: Strong
cancer_evidence: Strong
confidence: 4 # 1–5 (your confidence in the rating)
druggability: High # High | Medium | Low
options: ["IGF1R mAbs", "PI3K/mTOR inhibitors", "IGF + DDR combos"]
links:
uniprot: "P08069"
ncbi_gene: "3480"
papers:
- { pmid: "20332245" }
- { doi: "10.1038/nn.12345" }
relations:
- predicate: activates # from a small verb set (see schema)
target: "PATHWAY:PI3K_AKT"
evidence: [{ pmid: "20332245" }]
- predicate: implicated_in
target: "DISEASE:DSRCT"
evidence: [{ pmid: "XXXXX" }]
---
```
Reading mode clearer syntax screenshot
![[Pasted image 20250922162952.png]]
## Module 2 - Learning:
# Current YAML combined
```yaml
---
# === Meta ===
schema:
version: 0.1
profile: "onco-entity+learning"
updated: 2025-09-22
# === Shared anchors (re-use with <<: *anchor) ===
anchors:
ratings: &ratings
confidence: 3 # 1–5
evidence_strength: Unknown # Strong | Moderate | Weak | Unknown
links_base: &links_base
uniprot: null
ncbi_gene: null
ensembl: null
doi: []
pmid: []
learning_base: &learning_base
difficulty: 2 # 1=recall | 2=recall+apply | 3=what-if
target_latency_sec: 20
objective_metric: "≤20s, ≥85% accuracy (last 5)"
error_tags: []
# === Entity module (knowledge graph node) ===
entity:
id: "GENE:IGF1R" # CURIE-like; stable
title: "IGF1R"
type: gene # gene | protein | drug | concept | pathway | disease | evidence | study
aliases: ["IGF-1R", "CD221"]
summary: "Insulin-like growth factor 1 receptor; key growth signaling node."
hallmarks: [proliferative_signaling, metabolism]
attributes:
druggability: High # High | Medium | Low
<<: *ratings # adds confidence, evidence_strength
disease_evidence:
dsrct: Moderate
ewing: Strong
pan_cancer: Strong
links:
<<: *links_base
uniprot: "P08069"
ncbi_gene: "3480"
pmid: ["20332245"]
doi: ["10.1038/nn.12345"]
# Allowed predicates (keep small & crisp):
# activates | inhibits | upregulates | downregulates | binds | phosphorylates | demethylates |
# recruits | part_of | interacts_with | involved_in | expressed_in | essential_for |
# synthetic_lethal_with | implicated_in
relations:
- predicate: activates
target: "PATHWAY:PI3K_AKT"
evidence: [{ pmid: "20332245" }]
note: "IGF1R→IRS1→PI3K"
confidence: 4
- predicate: implicated_in
target: "DISEASE:DSRCT"
evidence: [{ pmid: "XXXXX" }]
confidence: 3
# === Learning module (drill card that this page should generate) ===
learning:
<<: *learning_base
skill_id: "pathways.pi3k.igf1r_edge"
prompt: "Trace IGF1R→PI3K activation in 2 steps."
answer: "IGF1 binds IGF1R → IRS1 recruits PI3K p85/p110 → PIP3."
source_refs: ["pmid:20332245"]
last_adjustment: "Added IRS1 cue to reduce hesitation."
# === Free-form notes that won’t be parsed but are preserved ===
_notes: |
Anything explanatory for future-you. Use this instead of giant comment blocks.
---
```
YAML Tips:
- Use **2 spaces** for indentation; never tabs.
- **Quote values that contain `:`** or look like IDs/DOIs (`"GENE:IGF1R"`, `"10.1038/..."`).
- Lists: every item must start with `-` and be indented under the key.
# How this maps to what you’re building
- **Front-matter fences** wrap your structured data so Obsidian (and plugins like Dataview/Bases) can read it.
- **`entity:` block** = the graph node (ids, labels, links, relations).
- **`relations:` list** = edges to other nodes; each item has `predicate`, `target`, and `evidence`.
- **`learning:` block** = the deliberate-practice metadata for generating a card (prompt, answer, difficulty, target latency).
- **Anchors/merge** keep defaults consistent across notes (e.g., rating defaults, learning defaults).
```yaml
entity: # key (mapping)
id: "GENE:IGF1R" # string (quoted because of colon)
aliases: ["IGF-1R", "CD221"] # inline list of strings
links: # nested mapping
uniprot: "P08069"
pmid: ["20332245"] # list with one string
relations: # list (sequence)
- predicate: activates # first item is a mapping
target: "PATHWAY:PI3K_AKT"
evidence: [{ pmid: "20332245" }] # list of tiny mappings
learning:
prompt: "Trace IGF1R→PI3K in 2 steps." # string
difficulty: 2 # number
_notes: | # multi-line literal string
This explanation keeps line breaks.
```
Brainstorming categories:
Epistemic Status: Dubious | Strong Evidence |
Investigation Level: Justified | Warranted
Litigated Level: Thoroughly Investigated | Unknown etc
Personal Knowledge Level:
Institutional Knowledge Level: Unknown | High |
Mechanism of Action