# Schema Reference — Knowledge Work

Vertical schema for `businessType: "knowledge-work"` — the Real Agent brand's knowledge workers: strategists, founders, operators, researchers, analysts.

This reference extends the base schema. All base node types remain valid. Load `schema-base.md` first.

When loading this reference, confirm: "Using schema-base + schema-knowledge-work".

---

## Reuse the base — this vertical adds only the gaps

Most of knowledge work is already in the base schema. Use the base labels, do not duplicate them:

- People and orgs: `Person`, `Organization`, `Position`, `Credential`. Reporting lines are the `REPORTS_TO` edge below, not a node.
- Work: `Task` (a `schema:Action`), `Project`, `Meeting`, `Event`, `Workflow`.
- Concepts and content: `DefinedTerm` (concepts, skills, glossary, learnings), `Concept`, `Idea`, `CreativeWork`, `KnowledgeDocument` and `Section`.

The gaps this vertical fills are: goals and OKRs, decision records, risk, and the research / citation / evidence layer. It adds those seven labels and nothing else.

---

## Additional Node Types

| Entity | Neo4j Label | Schema.org Type | Required Properties |
|--------|-------------|-----------------|---------------------|
| Objective | `Objective` | platform-native | `accountId`, `title`, `framework` (OKR/OGSM/V2MOM/Hoshin), `timeframe`, `status` (draft/active/achieved/missed/abandoned) |
| KeyResult | `KeyResult` | platform-native | `accountId`, `title`, `target`, `current`, `unit`, `status` (on-track/at-risk/missed/achieved) |
| Decision | `Decision` | `schema:CreativeWork` | `accountId`, `title`, `status` (proposed/accepted/superseded/rejected), `decision` |
| Risk | `Risk` | platform-native | `accountId`, `statement`, `probability` (low/medium/high), `impact` (low/medium/high), `status` (open/mitigated/accepted/closed) |
| Source | `Source` | `schema:CreativeWork` | `accountId`, `title`, `sourceType` (article/book/web/dataset/report) |
| Finding | `Finding` | platform-native | `accountId`, `statement`, `status` (draft/validated/retracted) |
| Hypothesis | `Hypothesis` | platform-native | `accountId`, `statement`, `status` (open/supported/refuted/assumed) |

`Objective` carries the strategy framework on a `framework` discriminator rather than proliferating one label per framework: OGSM and V2MOM strategy/method tiers are `Objective` nodes distinguished by `framework`. A North-Star metric is an `Objective`-level `KeyResult`, not a separate label. A `Source` is a referenced work (a citation target), distinct from an ingested `KnowledgeDocument` whose full text lives on disk. Both carry authorship, by node kind: an ingested `KnowledgeDocument` is attributed to its author with `(:Person)-[:AUTHORED]->(:KnowledgeDocument)`, while a `Source` is attributed with `(:Source)-[:AUTHORED_BY]->(:Person)`. The two shapes coexist; they are not alternatives. An open research question is a `Hypothesis {status:'open'}`; an assumption is a `Hypothesis {status:'assumed'}` — the base `Question` label stays reserved for `schema:Question` FAQ content.

Optional properties seen in practice: `Decision` — `context`, `consequences`, `decidedAt`; `Source` — `url`, `doi`, `datePublished`; `Finding` — `confidence`.

---

## Idempotency contracts

MERGE keys per label:

- `:Objective` — `(accountId, title)`
- `:KeyResult` — `(accountId, objectiveTitle, title)` — child of the `:Objective` it measures
- `:Decision` — `(accountId, title)`
- `:Risk` — `(accountId, statement)`
- `:Source` — `(accountId, title)`
- `:Finding` — `(accountId, statement)`
- `:Hypothesis` — `(accountId, statement)`

---

## Relationship Patterns

```
(:Objective)-[:MEASURED_BY]->(:KeyResult)
(:Project)-[:ADVANCES]->(:Objective)
(:Project)-[:ADVANCES]->(:KeyResult)
(:Task)-[:ADVANCES]->(:Objective)
(:Task)-[:ADVANCES]->(:KeyResult)
(:Decision)-[:SUPERSEDES]->(:Decision)
(:Risk)-[:THREATENS]->(:Objective)
(:Risk)-[:THREATENS]->(:Project)
(:Source)-[:AUTHORED_BY]->(:Person)
(:Person)-[:AUTHORED]->(:KnowledgeDocument)
(:Source)-[:CITES]->(:Source)
(:Source)-[:SUPPORTS]->(:Source)
(:Source)-[:REFUTES]->(:Source)
(:Finding)-[:DERIVED_FROM]->(:Source)
(:Finding)-[:DERIVED_FROM]->(:KnowledgeDocument)
(:Finding)-[:SUPPORTS]->(:Hypothesis)
(:Finding)-[:REFUTES]->(:Hypothesis)
(:Task)-[:DEPENDS_ON]->(:Task)
(:Person)-[:REPORTS_TO]->(:Person)
(:Person)-[:RESPONSIBLE_FOR]->(:Task)
(:Person)-[:ACCOUNTABLE_FOR]->(:Decision)
```

A `Decision` records what it decided through a `DECIDES` edge to the entity it governs (an `Objective`, a `Project`, a `Task`, or any base entity), and supersedes the decision it replaces. `Source`-to-`Source` citation uses CiTO verbs (`CITES`, `SUPPORTS`, `REFUTES`); a `Finding` is derived from its evidence (`DERIVED_FROM`, the PROV `wasDerivedFrom` relation) and bears on a `Hypothesis` (`SUPPORTS`/`REFUTES`). Task precedence uses `DEPENDS_ON` with an optional `type` property in `{FS, SS, FF, SF}` (the project-management precedence kinds). Responsibility is an edge, never a node: reporting lines are `REPORTS_TO`, and RACI assignment is `RESPONSIBLE_FOR` / `ACCOUNTABLE_FOR` / `CONSULTED_ON` / `INFORMED_OF` from a `Person` to a `Task` or `Decision` — consistent with the base doctrine that responsibility is a property of an edge, not its own node.
