# Specifikace microon

> Otevřená specifikace · v0.1 draft · 2026-07 · živý dokument
> Canonical (HTML): https://microon.org/cs/spec/ · This file: https://microon.org/cs/spec/index.md


## Abstrakt

microon je otevřená specifikace záznamu znalostí o fyzických systémech — budovách, továrnách, energetice, infrastruktuře — a o každé doméně, kde fakty dávají smysl jen v rámci časového okna, řetězce důvěry a definovaného druhu.

Jednotkou znalosti je **quad**: subjekt, predikát, objekt a **kontext**. Kontext není metadata přilepená k faktu; je součástí faktu.

microon je navržen tak, aby ho četli a zapisovali AI agenti stejně jako lidé: zda je fakt aktuální, kdo ho tvrdí a kdo ho smí měnit, jsou dotazy nad stejným úložištěm — a sama specifikace vychází ve strojově čitelné podobě.

## Stav dokumentu

Toto je **verze 0.1, živý draft**; správcem je [PDAT](https://pdat.cz). Pět principů (§ Pět principů) je normativních a stabilních; jejich změna se neočekává. Všechny ostatní sekce jsou nenormativní a budou se vyvíjet s implementacemi a doménami.

Kanonická URL: `https://microon.org/spec/` (anglické znění je rozhodné). Strojově čitelné kopie: [`/cs/spec/index.md`](/cs/spec/index.md) (tento dokument jako čistý Markdown), [`/llms.txt`](/llms.txt) (index webu pro jazykové modely).

## Konformance

Systém je **microon systém** právě tehdy, když splňuje principy P1–P5. Neexistuje konformance suite, registrace ani komise. Klíčová slova MUSÍ a NESMÍ se vykládají ve smyslu RFC 2119. Všechno mimo pět principů je implementation-defined; sekce Konvence dokumentuje ověřené volby, aniž by je vyžadovala.

## Quad

```
(subjekt, predikát, objekt, kontext)
```

| Prvek | Co to je | Příklad |
|---|---|---|
| subjekt | popisovaná věc | `sensor-fcu01-st01` |
| predikát | vlastnost nebo vztah | `currentValue` |
| objekt | hodnota, nebo jiná věc | `22.5` |
| kontext | podmínky pravdivosti faktu — vrstva, časové okno, původ | viz níže |

Kontext je strukturovaný. Nese rozměry, za kterých trojice platí:

```
sensor-fcu01-st01  currentValue  22.5
  kontext:
    vrstva:   state                    (jaký druh faktu — P4)
    platí od: 2026-04-05T14:30:00Z     (kdy začal platit — P2)
    platí do: —                        (stále pravda)
    původ:    pda-fieldbus             (kdo ho tvrdí — P3)
```

Implementace mohou přidat další prvky kontextu na stejné úrovni — jistotu („měřeno“ vs. „odvozeno“), nebo přístupový prvek jako viditelnost či omezení. Přesné kódování — sloupce, strukturovaný záznam, řetězec — je implementační volba. To, že každý fakt svůj kontext nese, volba není.

**Kontext není téma.** Čeho se fakt týká — budovy, stroje, organizace — do kontextu nepatří. Vyjadřuje se obyčejnými predikáty (`locatedIn`, `partOf`), kde zůstává dotazovatelné jako každá jiná znalost:

```
sensor-fcu01-st01  locatedIn  bld-jn1420     (fakt jako každý jiný)
```

## Pět principů

### P1 — Fakt bez kontextu neexistuje

Každý fakt se zaznamenává spolu s kontextem, který ho činí pravdivým: jaký druh faktu to je (vrstva), kdy platí (časové okno) a kdo ho tvrdí (původ). Holá trojice je neúplný fakt. Neexistuje zkratka „globální pravdy“ — i fakt, který má platit vždy a na čí slovo kohokoli, to uvádí explicitně.

Následující principy jsou rozměry kontextu: P2 je jeho čas, P3 jeho původ, P4 jeho vrstva.

### P2 — Pravda má trvání

Každý fakt má časové okno: platí **od** okamžiku **do** okamžiku (nebo je stále otevřený). Fakty se nikdy nepřepisují na místě a nikdy nemažou:

- **Assert** — zaznamenat nový fakt s otevřeným koncem.
- **Retract** — uzavřít časové okno faktu. Fakt zůstává: „platilo od X do Y.“
- **Replace** — atomicky uzavřít starý fakt a zaznamenat nový, takže se okna dotýkají hrana na hranu.

microon úložiště tak odpovídá na „co platí teď?“ i „co platilo v čase T?“ ze stejných dat, bez dalšího aparátu.

### P3 — Každý fakt má původ

Každý fakt zaznamenává, kdo nebo co ho tvrdí — zařízení, člověk, služba, AI agent. Původ je povinný: implementace musí odmítnout fakt, který přijde bez něj, a nesmí dovolit volajícím vydávat se za původ, který neumí prokázat. Míra jistoty („měřeno“ vs. „odvozeno“ vs. „deklarováno“) je volitelné zpřesnění na téže ose.

### P4 — Znalost má vrstvy

Každý fakt patří právě do jedné z pěti vrstev. Vrstvy jsou součástí samotné metodiky — stejných pět v každé doméně:

| Vrstva | Obsahuje | Mění se | Příklad |
|---|---|---|---|
| `schema` | definice — jaké druhy věcí a vlastností existují | zřídka | `fcu · type · device-type` |
| `structure` | topologie — co je kde, co je s čím spojeno | měsíčně | `fcu-01 · locatedIn · room-301` |
| `state` | živé hodnoty — čtení, polohy, žádané hodnoty | v sekundách | `sensor-7 · currentValue · 22.5` |
| `meta` | kvalita a rodokmen — kalibrace, firmware, data instalace | občas | `dev-fcu01 · calibrated · 2026-03-01` |
| `authz` | oprávnění — kdo smí které fakty číst a zapisovat | při změně politiky | `role-operator · mayWrite · state` |

Důsledky: (1) **autorizace je znalost** — oprávnění jsou obyčejné fakty ve vrstvě `authz`, s časovými okny a původem jako každý jiný fakt, takže historické otázky přístupu jsou dotazy; (2) vrstvy dávají každému konzumentovi stabilní očekávání — agent čtoucí `structure` čte topologii, v jakémkoli microon systému, v jakékoli doméně.

### P5 — Jednoduchost je závazek

microon vylučuje: inferenční stroje, reifikaci, blank nodes, deskripční logiku a povinné serializační formáty. Akceptační test každého rozšíření: model musí zůstat vysvětlitelný na jednu stránku a implementovatelný za víkend. Jedna tabulka quadů v SQLite je plnohodnotné microon úložiště.

## Operace

Minimální sada operací, kterou každý microon systém nabízí — v protokolu, jaký mu vyhovuje:

- **assert(quad)** — zaznamenat fakt.
- **retract(quad)** — uzavřít časové okno faktu.
- **replace(starý, nový)** — atomický retract + assert; kanonický „update“.
- **query(vzor, at?)** — najít fakty podle libovolné kombinace subjektu, predikátu, objektu, kontextu; volitelně k okamžiku v čase. Výchozí: fakty platné teď.
- **subscribe(vzor)** — dostávat oznámení, když jsou odpovídající fakty zaznamenány nebo uzavřeny.

## Konvence

> Všechno níže je **nenormativní**. Takhle stavíme microon systémy my. Vezměte si, co vaší doméně sedí; nahraďte, co nesedí. Systém, který ignoruje všechny zdejší konvence a drží pět principů, je plně microon.

### Seskupování a izolace

Čeho se fakt týká, je znalost — žije tedy v predikátech: `locatedIn`, `partOf`, `serves`. Dva ověřené způsoby, jak kolem toho uspořádat úložiště:

- **Jedno sdílené úložiště** — fakty o mnoha budovách či organizacích vedle sebe, seskupované a filtrované přes jejich `structure` predikáty.
- **Úložiště per vlastník či lokalita** — samostatná instance úložiště na budovu nebo organizaci. Izolace je fyzická — oddělená databáze, oddělený přístup — což je často přesně to, co vlastník chce. To, s kterým úložištěm mluvíte, říká, čí znalost čtete.

### Příklad: doména budov

Doména je malý kurátorovaný slovník: typy entit plus predikáty po vrstvách, publikované jako verzovaný dokument. Identifikátory nesou typový prefix, aby se quady četly bez dohledávání (`bld-` budova, `spc-` prostor, `dev-` zařízení, `usr-` osoba, `agt-` AI agent) — konvence, ne pravidlo. Příklad níže ukazuje všech pět vrstev v akci; kontext je zkrácen na `[vrstva · původ]`, časová okna vynechána:

```
-- schema: definice, zaznamenané jednou autorem domény
fcu               type          device-type        [schema · org-pdat]
supplyTemp        type          property           [schema · org-pdat]
supplyTemp        unit          "°C"               [schema · org-pdat]

-- structure: topologie, mění se při přestavbě či přepojení
spc-room301       partOf        bld-jn1420         [structure · usr-tom]
dev-fcu01         type          fcu                [structure · usr-tom]
dev-fcu01         installedIn   spc-room301        [structure · usr-tom]
dev-fcu01         hasSensor     sensor-fcu01-st01  [structure · usr-tom]
sensor-fcu01-st01 measures      supplyTemp         [structure · usr-tom]

-- state: aktuální hodnoty, mění se každý cyklus
sensor-fcu01-st01 currentValue  22.5               [state · pda-fieldbus]
spc-room301       setpoint      22.0               [state · usr-tom]

-- meta: kvalita zařízení a jeho faktů
dev-fcu01         calibrated    2026-03-01         [meta · svc-maintenance]

-- authz: oprávnění, sama o sobě fakty
agt-edgar         mayRead       state              [authz · usr-tom]
agt-edgar         mayWrite      state/setpoint     [authz · usr-tom]
```

Čteno odspodu, poslední dva řádky jsou pointa celého modelu: AI agent `agt-edgar` smí upravovat žádané hodnoty, protože to řekl `usr-tom` — fakt s původem a časovým oknem, odvolatelný uzavřením, dotazovatelný jako všechno ostatní.

**Rozměr času.** Každý fakt výše nese své časové okno; změna hodnoty je `replace` — starý fakt se uzavře v okamžiku, kdy se nový otevře, a historie se hromadí sama:

```
sensor-fcu01-st01 currentValue 22.1 [state · pda-fieldbus · 14:29:00 → 14:30:00]   uzavřen
sensor-fcu01-st01 currentValue 22.5 [state · pda-fieldbus · 14:30:00 → —]          aktuální
```

„Jaká byla teplota na výstupu ve 14:29:30?“ zodpovídá první řádek — stejná tabulka, žádný další aparát (P2).

**Externí reference.** Vysokofrekvenční streamy, dokumenty a záznamy v jiných databázích se do úložiště nekopírují — odkazují se predikáty s URI hodnotou, takže znalost *kde data žijí* je sama o sobě quad:

```
sensor-fcu01-st01 hasStream    nats://bld-jn1420/stream/supplytemp   [structure · org-pdat]
dev-fcu01         hasDocument  s3://docs/fcu01-manual.pdf            [meta · usr-tom]
bld-jn1420        hasSource    oltp://energy-billing/meters          [structure · org-pdat]
```

microon drží interpretovanou znalost (aktuální hodnotu, co co měří, kdo co smí); surové streamy s 1000 vzorky za sekundu zůstávají ve stream store, manuály v blob store, účetní záznamy v OLTP databázi — každé na jeden quad daleko.

### Náčrt úložiště

Stačí jedna tabulka. Kontext je jediná flexibilní hodnota, zrcadlící samotný quad:

```sql
CREATE TABLE quads (
    id        TEXT PRIMARY KEY,   -- řaditelné unikátní id (např. ULID)
    subject   TEXT NOT NULL,
    predicate TEXT NOT NULL,
    object    TEXT NOT NULL,
    context   TEXT NOT NULL       -- strukturovaná hodnota, např. JSON:
    -- {"layer":"state",
    --  "validfrom":"2026-04-05T14:30:00Z", "validto":null,
    --  "origin":"pda-fieldbus",
    --  ...libovolné další prvky: jistota, viditelnost, ...}
);
```

Principy určují, co kontext musí *obsahovat* (vrstvu, časové okno, původ — P2–P4), ne jak je uložen. Nové prvky kontextu se přidávají bez změny schématu. Implementace běžně povyšují prvky, podle kterých se dotazují — `layer`, `validfrom`/`validto`, `origin` — na indexované sloupce; to je optimalizace, stejně konformní. Append-only disciplínu (P2) lze vynutit triggery; aktuální fakty jsou ty s otevřeným `validto`.

## Co microon není

- **Není RDF.** Žádné blank nodes, žádná reifikace, žádný OWL reasoning. Kde RDF potřebuje named graphs plus PROV-O plus vlastní slovníky, aby řeklo *kdo co kde kdy naměřil* — microon to říká jedním quadem.
- **Není grafová databáze.** Quady jsou ploché fakty s kontextem, ne property graph optimalizovaný na průchody.
- **Není time-series databáze.** microon ukládá interpretovanou znalost s historií, ne vysokofrekvenční surové streamy. Na ty ukažte referencí `hasStream`.
- **Není rules engine.** Quady jsou deklarativní fakty. Logika — regulační smyčky, rozvrhy, inference — žije v konzumentech, ne v ontologii.

## Implementace

Existují dvě nezávislé implementace, postavené různými týmy na různých stacích — což je přesně smysl metodiky založené na principech:

- **pda-lore** (PDAT) — Go, pure-Go SQLite, NATS transport. Jedna instance úložiště na scope; bitemporální quady s povinným ověřeným původem; publikované doménové slovníky pro budovy, školy, účetnictví, sklady a organizace.
- **WHW MicroOn Store** — PostgreSQL, append-only tabulka quadů s grafovou autorizací vyhodnocovanou z faktů vrstvy `authz`.

Ani jedna není „ten pravý“ microon. Obě drží pět principů.

## Plánovaná práce

Stránky doménových slovníků, kuchařka srovnání (stejný scénář v RDF a microon) a strojově čitelné definice domén na stabilních URL. Zpětná vazba, dotazy i zprávy o nezávislých implementacích jsou vítány.

