Přeskočit na obsah

A502 — Model tvrzení

Kanonický záznam tvrzení pole po poli, včetně toho, proč má globální @id a proč musí text sedět byte na byte s přehledovou tabulkou.

A502Datový model 12 minVývojářMaintainerEditor

Po téhle lekci

  • Popíšete povinná pole záznamu tvrzení.
  • Vysvětlíte rozdíl mezi lokálním identifikátorem a globálním @id.
  • Poznáte, proč se text tvrzení nesmí lišit od řádku v přehledové tabulce.

Jeden soubor data/dossiers/<slug>/claims/clm-NN.json = jedno tvrzení.

{
  "@context": "https://vomaste.cz/context/v1.jsonld",
  "@id": "https://vomaste.cz/id/dossiers/petr-pavel/claims/CLM-01",
  "@type": "vomaste:Claim",
  "recordType": "claim",
  "identifier": "CLM-01",
  "dossier": { "@id": "https://vomaste.cz/id/dossiers/petr-pavel" },
  "text": "…",
  "status": "status-corroborated",
  "statusLabel": "CORROBORATED",
  "sources": [
    { "@id": "https://vomaste.cz/id/dossiers/petr-pavel/sources/SRC-01" },
    { "@id": "https://vomaste.cz/id/dossiers/petr-pavel/sources/SRC-02" }
  ],
  "subjects": ["pavel"],
  "order": 1
}

Dvě identity, každá k něčemu jinému

identifier (CLM-01) je lokální — v rámci jednoho dossieru. Používá ho UI, protože „CLM-01“ se v tabulce čte líp než URL.

@id je globální a je to skutečná identita záznamu. Tvar https://vomaste.cz/id/dossiers/<slug>/claims/CLM-01 dělá kolizi napříč dossiery mechanicky nemožnou — CLM-01 existuje v každém, ale globální @id je jen jedno.

Vazby jsou obousměrné

Tvrzení odkazuje na zdroje a zdroj odkazuje zpět na tvrzení. Validátor požaduje, aby obě strany souhlasily. Nedá se tedy dostat do stavu, kdy tvrzení cituje zdroj, který o něm neví.

subjects

Redakční údaj: koho se tvrzení doopravdy týká. Není odvoditelný z grafu — je to rozhodnutí. Slouží k tomu, aby entity dossiery mohly zobrazovat filtrovaný pohled na tatáž data bez jediné kopie.

Ověř si, že to sedí

Chcete opravit překlep v textu tvrzení. Kolik souborů musíte změnit?

Zobrazit odpověď

Dva — a je to jediné místo v celém datovém modelu, kde je to takhle.

  1. data/dossiers/<slug>/claims/clm-NN.json, pole text.
  2. Odpovídající řádek přehledové tabulky v dossier.json.

Když opravíte jen jedno, validátor tabulkové parity build shodí. To je záměr: kdyby se ty dvě reprezentace mohly rozejít potichu, čtenář by v tabulce viděl jiné znění než na stránce tvrzení a nikdo by nevěděl, které platí.

Zbytek — stránka tvrzení, registrový index, exporty, strukturovaná data, počty na dlaždicích — se generuje. Ty se nikdy neupravují ručně; ruční úprava se při dalším sestavení tiše přepíše.

Po opravě obou míst se pustí npm run data:build, který adaptéry přegeneruje.

Kanonické znění pojmů

Lekce pojem vysvětluje. Závazná definice je tady — když se rozejdou, platí tahle stránka.