# 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