Ç-03: Ţĥé çöñţéẋţ šţöŕé àñđ ĝŕàþĥ
Šüḿḿàŕý
À kapi þŕöĵéçţ ķééþš öñé ļöçàļ đàţàƃàšé: .kapi/work/store.db. Îţ îš ţĥé
ļöçàļ þŕöĵéçţîöñ öƒ ţĥé þŕöĵéçţ'š çöḿḿîţţéđ çöñţéẋţ, ñéṽéŕ îţš ţŕüţĥ, àñđ
ţĥé šüƃšţŕàţé öƒ ţĥé þŕöĵéçţ'š çöñţéẋţ ĝŕàþĥ.
Éṽéŕý šüƃšýšţéḿ'š ţàƃļéš šĥàŕé ţĥàţ öñé ƒîļé: ţĥé ƃļöçķ çàçĥé, ţĥé ţéŕḿš šţöŕé,
ţĥé çöñţéñţ ḿéḿöŕý, ţĥé ṽöîçé šţöŕé, ţĥé üñîţ-šţàţé ŵöŕķîñĝ šéţ, àñđ à þŕöþéŕţý
ĝŕàþĥ (graph_nodes / graph_edges) ŕéļàţîñĝ ţĥéḿ. Öñé ƒîļé, öñé çöññéçţîöñ
þööļ, öñé ḿîĝŕàţîöñ ļéđĝéŕ þéŕ šüƃšýšţéḿ.
Ţĥé þöîñţ öƒ ţĥé šîñĝļé ƒîļé îš ţĥé ĵöîñ. Ŵĥîçĥ ƃļöçķš üšé ţĥîš ţéŕḿ, îñ ŵĥîçĥ çöļļéçţîöñ, àţ ŵĥîçĥ çööŕđîñàţé, àñđ ŵĥîçĥ öƒ ţĥéḿ àŕé šîĝñéđ öƒƒ? îš öñé ǫüéŕý ĥéŕé àñđ îš üñàñšŵéŕàƃļé àçŕöšš šéþàŕàţé đàţàƃàšé ƒîļéš.
Çöñţéẋţ
Çöñţéẋţ îš ŕéļàţîöñàļ. À ţéŕḿ öççüŕš îñ ƃļöçķš; ƃļöçķš ƃéļöñĝ ţö çöļļéçţîöñš àñđ šîţ àţ à þöîñţ îñ ţĥé çöñţéẋţ šþàçé (Ç-02); à šţàţé ŕéçöŕđ ƃļéššéš à üñîţ àţ à çöñţéñţ ĥàšĥ; à ḿéḿöŕý éñţŕý ŕéçýçļéš îñţö à ƃļöçķ. Ŕéţŕîéṽàļ (Ç-06) àñđ ĝöṽéŕñàñçé (Ç-02) ƃöţĥ ţŕàṽéŕšé ţĥöšé ŕéļàţîöñš ŕàţĥéŕ ţĥàñ ŕéàđîñĝ öñé šţöŕé îñ îšöļàţîöñ.
À ĥöšţéđ ļàýéŕ àñšŵéŕš šüçĥ ǫüéšţîöñš öṽéŕ öñé đàţàƃàšé šþàññîñĝ ḿàñý þŕöĵéçţš. ΃ à ļöçàļ þŕöĵéçţ çöüļđ ñöţ àñšŵéŕ ţĥéḿ àţ àļļ, ţĥé ţŵö ĥàļṽéš ŵöüļđ đéŕ îñ ŵĥàţ ţĥéý çàñ ƃé àšķéđ, ñöţ ḿéŕéļý îñ šçàļé, àñđ ţĥé ƒŕàḿéŵöŕķ'š šţàñđîñĝ çöñšţŕàîñţ îš ţĥàţ kapi ŕüñš öñ îţš öŵñ.
Đéçîšîöñ
Öñé ƒîļé, ḿàñý šüƃšýšţéḿš
.kapi/work/store.db ĥöļđš:
| Ţàƃļéš | Šüƃšýšţéḿ | Đéŕîṽéđ ƒŕöḿ |
|---|---|---|
| ƃļöçķ çàçĥé | core/blockstore (Ç-01) | ţĥé çöñţéñţ ƒîļéš |
| ţéŕḿš | terms/ (Ç-08) | ţĥé çöḿḿîţţéđ ţéŕḿš šöüŕçé |
| çöñţéñţ ḿéḿöŕý | memory/ (Ç-09) | ţĥé çöḿḿîţţéđ ţàŕĝéţš þļüš ţĥé .memory.json šééđš |
| ṽöîçé þŕöƒîļéš | voice/ (Ç-07) | ţĥé çöḿḿîţţéđ voice.yaml ƒîļéš |
| üñîţ-šţàţé ŵöŕķîñĝ šéţ | core/state (Ç-04) | ţĥé çöḿḿîţţéđ .kapi/state/*.jsonl šĥàŕđš |
graph_nodes, graph_edges | host/storage/graph, ṽöçàƃüļàŕý îñ core/contextgraph | ţĥé ƒîṽé àƃöṽé, þļüš ţĥé ŕéçîþé |
Éàçĥ šüƃšýšţéḿ öŵñš îţš öŵñ šçĥéḿà àñđ îţš öŵñ ḿîĝŕàţîöñ ļéđĝéŕ
(storage.Migrate(db, "<subsystem>", …)), šö à šüƃšýšţéḿ éṽöļṽéš ŵîţĥöüţ
ŕéþļàýîñĝ àñýöñé éļšé'š ḿîĝŕàţîöñš. Šĥàŕîñĝ ţĥé ƒîļé îš à šţöŕàĝé đéçîšîöñ, ñöţ à
çöüþļîñĝ: à šüƃšýšţéḿ šţîļļ ŕéàçĥéš îţš ţàƃļéš öñļý ţĥŕöüĝĥ îţš öŵñ îñţéŕƒàçé.
core/projectdb öþéñš ţĥé þööļ àñđ ĥàñđš éàçĥ šüƃšýšţéḿ îţš ĥàñđļé; à ŕéçîþé'š
voice: profile: <name> ƃîñđîñĝ ŕéšöļṽéš àĝàîñšţ ţĥé þööļ'š ṽöîçé šţöŕé, šö ţĥé
šàḿé ŕéçîþé ŕéšöļṽéš ţĥé šàḿé þŕöƒîļé ƒŕöḿ àñý đîŕéçţöŕý îñšîđé ţĥé þŕöĵéçţ.
Šĥàŕîñĝ à ƒîļé ḿéàñš šĥàŕîñĝ à ŵŕîţéŕ. core/storage îñšţàļļš àñ îñ-þŕöçéšš
ŵŕîţé ĝàţé öñ ţĥé ĥàñđļé: öñé ƑÎƑÖ þéŕḿîţ ţĥàţ éṽéŕý ŵŕîţé ţŕàñšàçţîöñ
þàššéš ţĥŕöüĝĥ, šö ŵŕîţéŕš ǫüéüé îñ àŕŕîṽàļ öŕđéŕ îñšţéàđ öƒ çöñţéñđîñĝ öñ
ŠǪĻîţé'š busy_timeout, ŵĥéŕé à šàţüŕàţîñĝ ŵŕîţéŕ çàñ šţàŕṽé à šḿàļļ öñé
îñđéƒîñîţéļý. Ţĥé ĝàţé îš ñöţ ŕééñţŕàñţ, àñđ à ŵŕîţé ţŕàñšàçţîöñ ţĥàţ ţŕîéš ţö
öþéñ àñöţĥéŕ ŕéþöŕţš ErrWriteGateReentrant ŕàţĥéŕ ţĥàñ đéàđļöçķîñĝ.
Ţĥé çöḿḿîţţéđ šöüŕçéš àŕé ţĥé ţŕüţĥ
store.db îš àñ îñđéẋ, àñđ éṽéŕý ŕöŵ îñ îţ îš ŕéçöñšţŕüçţîƃļé ƒŕöḿ:
.kapi/terms.json, ţĥé ţéŕḿš šöüŕçé, ƃöüñđ ƃýdefaults.terms_source;.kapi/memory/*.memory.json, ţĥé çöñţéñţ-ḿéḿöŕý šééđš;.kapi/voice.yamlàñđ.kapi/profiles/*/voice.yaml, ţĥé ṽöîçé þŕöƒîļéš;.kapi/state/*.jsonl, ţĥé çöḿḿîţţéđ üñîţ-šţàţé ŕéçöŕđ, öñé šĥàŕđ þéŕ đöçüḿéñţ;- ţĥé çöñţéñţ ƒîļéš ţĥéḿšéļṽéš, šöüŕçé àñđ ţàŕĝéţ.
Đéļéţé store.db àñđ à ŕé-ŕüñ ŕéƃüîļđš îţ ƒŕöḿ ţĥöšé. Ñöţĥîñĝ àüţĥöŕîţàţîṽé
ļîṽéš öñļý îñ ţĥé đàţàƃàšé, ŵĥîçĥ îš ŵĥý îţ šîţš üñđéŕ .kapi/work/, ţĥé öñé
îĝñöŕéđ þàţĥ (Ç-01), ŵĥîļé ţĥé šöüŕçéš îţ îš ƃüîļţ ƒŕöḿ
àŕé çöḿḿîţţéđ öñé đîŕéçţöŕý öṽéŕ.
Îţ šîţš àţ ţĥé ţöþ öƒ work/, ñöţ üñđéŕ cache/
.kapi/work/cache/ ḿéàñš ƒŕéé ţö đéļéţé: ţĥé þàŕšé çàçĥé, éẋţŕàçţîöñ ƃàţçĥéš,
çöļļéçţîöñ öṽéŕļàýš. store.db đöéš ñöţ ǫüàļîƒý, àñđ ƃý éẋàçţļý öñé ḿàŕĝîñ.
Ƃéţŵééñ à đéçîšîöñ ļàñđîñĝ àñđ kapi commit ḿàţéŕîàļîžîñĝ îţ ţö .kapi/state/,
ţĥé ŵöŕķîñĝ šéţ îñšîđé store.db ĥöļđš ţĥé öñļý çöþý öƒ ţĥàţ šţàĝéđ šţàţé.
Šö ţĥé çöšţ öƒ ļöšîñĝ ţĥé ƒîļé îš ƃöüñđéđ àñđ šţàţéđ þŕéçîšéļý: àţ ḿöšţ ţĥé üñîţ
šţàţé šţàĝéđ šîñçé ţĥé ļàšţ çöḿḿîţ. Éṽéŕýţĥîñĝ éļšé ŕéƃüîļđš. rm -rf .kapi/work/cache ŕéḿàîñš çöḿþļéţéļý ƒŕéé, àñđ ķééþîñĝ ţĥé ţŵö àþàŕţ îš ŵĥàţ ļéţš
ţĥàţ šéñţéñçé šţàý ţŕüé.
Đéļéţîñĝ .kapi/work öüţŕîĝĥţ îš à ŵîđéŕ çļàîḿ, ƃéçàüšé ţĥé ŕéđàçţîöñ ṽàüļţ
(Ç-10) ļîṽéš ƃéšîđé ţĥé đàţàƃàšé àţ .kapi/work/vault/ àñđ
ĥöļđš ŵîţĥĥéļđ öŕîĝîñàļš. Ţĥöšé àŕé ļöçàļ-öñļý ƃý đéšîĝñ, ñéṽéŕ çöḿḿîţţéđ àñđ
ñéṽéŕ šéñţ àñýŵĥéŕé, šö ñöţĥîñĝ éļšé ĥàš à çöþý, àñđ ļöšîñĝ ţĥéḿ îš à ļöšš
ŕàţĥéŕ ţĥàñ à ŕéƃüîļđ.
Ļöçàļéš àŕé ķéýéđ çàñöñîçàļļý
Éṽéŕý šüƃšýšţéḿ ķéýš îţš ŕöŵš ƃý ţĥé çàñöñîçàļ ƂÇÞ-47 ļöçàļé ƃéšîđé ţĥé ţéẋţ:
ţĥé çöñţéñţ ḿéḿöŕý'š ṽàŕîàñţš (Ç-09), ţĥé ţéŕḿš
šţöŕé'š ţéŕḿš (Ç-08), ţĥé ƃļöçķ çàçĥé'š targets/<locale>
öṽéŕļàýš àñđ îţš block_texts ŕöŵš. Ţĥé šţöŕéš àþþļý locale.Normalize öñ
éṽéŕý ŵŕîţé, ŕéàđ àñđ ļîšţ, šö à þŕöđüçéŕ ŵŕîţîñĝ targets/nb_NO àñđ à ŕéàđéŕ
àšķîñĝ ƒöŕ targets/nb-NO àđđŕéšš öñé öṽéŕļàý. Ŕöŵš à šţöŕé ŵŕöţé ƃéƒöŕé îţ
ñöŕḿàļîžéđ ļöçàļéš àŕé ķéýéđ ƃý ŵĥàţéṽéŕ šþéļļîñĝ ţĥé ŕéçîþé üšéđ ţĥéñ, àñđ ñö
ļööķüþ ƒîñđš ţĥéḿ àĝàîñ; projectdb.NonCanonicalLocales ŕéþöŕţš ţĥéḿ, àñđ
kapi status àñđ kapi up þŕîñţ ţĥé ŕéþöŕţ öñçé ŵîţĥ ţĥé ŕéƃüîļđ ñàḿéđ. Ţĥé
šţöŕé îš à þŕöĵéçţîöñ, šö ţĥé ŕéḿéđý îš ţö ŵŕîţé šţàĝéđ đéçîšîöñš ŵîţĥ kapi commit, đéļéţé store.db àñđ ļéţ ţĥé ñéẋţ kapi up đéŕîṽé îţ àĝàîñ.
Þŕéšéñçé îš ţàƃļé-ļéṽéļ
Àñ éḿþţý šüƃšýšţéḿ îñšîđé àñ éẋîšţîñĝ store.db ƃéĥàṽéš éẋàçţļý àš àñ àƃšéñţ
šţöŕé đöéš. Ţĥé đàţàƃàšé'š éẋîšţéñçé îš ñöţ à šîĝñàļ, šö ñöţĥîñĝ ĥàš ţö ĝüàŕđ
àĝàîñšţ ţĥé ƒîļé ƃéîñĝ ţĥéŕé: ţĥé ţéŕḿîñöļöĝý ĝàţé ŕéàđš ţĥé çöḿḿîţţéđ ţéŕḿš
šöüŕçé đîŕéçţļý öñ à ƒŕéšĥ çĥéçķöüţ ŵĥéţĥéŕ öŕ ñöţ à đàţàƃàšé éẋîšţš
(Ç-08), kapi up --plan ñéṽéŕ çŕéàţéš šţàţé, àñđ kapi pack
çàŕŕîéš öñļý ñöñ-éḿþţý þàŕţš
(Ḿ-06). projectdb.DB.DetectStoreDrift
ŕéàđš "šţöŕé ḿîššîñĝ" àš ţĥé ƃļöçķ çàçĥé ĥöļđš ñö ƃļöçķš, ñöţ àš ţĥé ƒîļé îš
àƃšéñţ, þŕéçîšéļý ƃéçàüšé ţĥé ƒîļé éẋîšţš ƒŕöḿ ţĥé ƒîŕšţ öþéñ öƒ àñý šüƃšýšţéḿ.
Ţĥé ĝŕàþĥ ŕéļàţéš ţĥé šüƃšýšţéḿš
graph_nodes àñđ graph_edges àŕé à þŕöþéŕţý ĝŕàþĥ: ļàƃéļļéđ ñöđéš àñđ
ļàƃéļļéđ, öþţîöñàļļý ţîḿé-ƃöüñđéđ éđĝéš, ƃöţĥ çàŕŕýîñĝ ĴŠÖÑ þŕöþéŕţîéš.
core/contextgraph öŵñš ţĥé ṽöçàƃüļàŕý: ţĥé ļàƃéļš, ţĥé šçöþé ţüþļé, ţĥé îđ
šçĥéḿé, àñđ ţĥé ñöđé àñđ éđĝé çöñšţŕüçţöŕš éṽéŕý ŵŕîţéŕ çàļļš.
Ñöđé ļàƃéļš:
| Ļàƃéļ | Ŵĥàţ îţ îš | Šçöþé |
|---|---|---|
block | à üñîţ öƒ šöüŕçé çöñţéñţ, ķéýéđ ƃý îţš çöñţéñţ ķéý | îñšţàñçé |
collection | à çöñţéñţ çöļļéçţîöñ, ķéýéđ ƃý îţš ļàƃéļ | îñšţàñçé |
unit_state | öñé üñîţ'š šţàţé îñ öñé đöçüḿéñţ, îñ öñé ļöçàļé ṽàŕîàñţ | îñšţàñçé |
concept | à ţéŕḿîñöļöĝý çöñçéþţ | ṽöçàƃüļàŕý |
coordinate | à þöîñţ öñ ţĥé šţŕüçţüŕàļ àẋéš, à (profile, channel) þàîŕ | ṽöçàƃüļàŕý |
Ţĥé çööŕđîñàţé ñöđé îš ţĥé šţŕüçţüŕàļ þàîŕ öñļý. À çöļļéçţîöñ'š đéçļàŕéđ àẋéš
(ƃŕàñđ, ḿöđé, àñđ ŵĥàţéṽéŕ éļšé à ŕéçîþé ñàḿéš üñđéŕ coordinates:) ţŕàṽéļ öñ
îţš çöñţéẋţ éñţŕý öṽéŕ ţĥé ŵîŕé àñđ àŕé ƒöļđéđ îñţö ţĥàţ éñţŕý'š ĥàšĥ
(Ç-02); ţĥéý àŕé ñöţ þŕöþéŕţîéš öƒ ţĥé
çööŕđîñàţé ñöđé, àñđ ţĥé ĝŕàþĥ'š çööŕđîñàţé ǫüéŕîéš ţàķé ţĥé þŕöƒîļé àñđ ţĥé
çĥàññéļ.
Éđĝé ļàƃéļš:
| Ļàƃéļ | Ŕéļàţéš | Çàŕŕîéš |
|---|---|---|
uses_term | ƃļöçķ → çöñçéþţ | ţĥé ţéŕḿ üšéđ, îţš šţàţüš, ţĥé ļöçàļé, ţĥé đöçüḿéñţ, à üšé çöüñţ, àñđ ţĥé ţéŕḿ'š öŵñ ṽàļîđîţý ŵîñđöŵ |
in_collection | ƃļöçķ → çöļļéçţîöñ | ḿéḿƃéŕšĥîþ |
governed_by | çöļļéçţîöñ → çööŕđîñàţé | ţĥé ĝöṽéŕñîñĝ þŕöƒîļé'š ṽàļîđîţý ŵîñđöŵ |
blesses | üñîţ šţàţé → ƃļöçķ | ţĥé þàîŕîñĝ ţĥé đéçîšîöñ ŵàš ŵŕîţţéñ àĝàîñšţ: ţĥé ţàŕĝéţ ĥàšĥ, àñđ ţĥé šöüŕçé ƃàšîš |
host.MaterializeContextGraphInDB ŵŕîţéš àļļ ƒöüŕ öñ ţĥé çöñṽéŕĝéñçé þàţĥ,
àƒţéŕ éẋţŕàçţîöñ çöḿḿîţš îţš ƃļöçķ-ŵŕîţé ţŕàñšàçţîöñ. Ţĥé šüƃĝŕàþĥ îš à þüŕé
þŕöĵéçţîöñ: éàçĥ þàšš çļéàŕš ŵĥàţ îţ îš éñţîţļéđ ţö àñđ ŕéƃüîļđš îţ, šö à đéļéţé
öƒ ţĥé šţöŕé ļöšéš ñöţĥîñĝ ţĥé ŕéçîþé, ţĥé ţéŕḿš, ţĥé ƃļöçķš àñđ ţĥé çöḿḿîţţéđ
šţàţé çàññöţ ŕéƃüîļđ. Öççüŕŕéñçé éđĝéš çöḿé ƒŕöḿ à ţéŕḿ šéàŕçĥ öṽéŕ ţĥé ƃļöçķ
çàçĥé (core/occurrence), ŵĥéŕé ŕéþéàţéđ üšéš öƒ öñé ţéŕḿ îñ öñé ƃļöçķ ƒöļđ îñţö
à count þŕöþéŕţý ŕàţĥéŕ ţĥàñ îñţö šéþàŕàţé éđĝéš, àñđ ţĥé ţéŕḿ àñđ ţĥé ļöçàļé
àŕé ţĥé éđĝé đîšçŕîḿîñàţöŕš; governed_by çöḿéš ƒŕöḿ ŕéšöļṽîñĝ éàçĥ ñàḿéđ
çöļļéçţîöñ'š ĝöṽéŕñàñçé; blesses ĵöîñš ţĥé üñîţ-šţàţé ŵöŕķîñĝ šéţ àĝàîñšţ ţĥé
ƃļöçķ çàçĥé, šö à ŕéçöŕđ ŵĥöšé ƃļöçķ ñö ļöñĝéŕ éẋîšţš ķééþš îţš ñöđé àñđ ļöšéš
îţš éđĝé. À üñîţ šţàţé ñàḿéš îţš đöçüḿéñţ ƃý ţĥé đüŕàƃļé ķéý ţĥé ŵöŕķîñĝ šéţ
ŕéçöŕđš (Ç-04); ţĥé ĝŕàþĥ ŵŕîţéŕ ţüŕñš ţĥàţ
ķéý ƃàçķ îñţö ţĥé þàţĥ ţĥé ƃļöçķ çàçĥé ƒîļéš ƃļöçķš üñđéŕ ƃéƒöŕé ĵöîñîñĝ.
Ţĥé ţéŕḿ îš à đîšçŕîḿîñàţöŕ ƃéçàüšé à çöñçéþţ ĥöļđš šéṽéŕàļ šþéļļîñĝš àñđ à þŕöĵéçţ ŕéàçĥéš ƒöŕ öñé öƒ ţĥéḿ: à ƃļöçķ šţîļļ šàýîñĝ ţĥé đéþŕéçàţéđ ŵöŕđ îš à đéŕéñţ ƒîñđîñĝ ƒŕöḿ öñé šàýîñĝ ţĥé þŕéƒéŕŕéđ ŵöŕđ, àñđ ƒöļđîñĝ ƃöţĥ öñţö öñé éđĝé ŵöüļđ ļéàṽé ţĥé ĝŕàþĥ ŵîţĥ à šţàţüš ţö çĥööšé ƃéţŵééñ. Šö ţĥé éđĝé ŕéçöŕđš ţĥé šţàţüš öƒ ţĥé ţéŕḿ îţ ñàḿéš, àñđ çàŕŕîéš ţĥàţ ţéŕḿ'š öŵñ ŵîñđöŵ, ŵĥîçĥ îš ŵĥàţ ḿàķéš îš ţĥîš đîšçöüŕàĝéđ àñšŵéŕàƃļé àš îš îţ đîšçöüŕàĝéđ ĥéŕé. Ţĥé šţàñđîñĝ îš à þŕöþéŕţý öƒ ţĥé çöñçéþţ àţ à çööŕđîñàţé, ñéṽéŕ öƒ ţĥé ŵöŕđ: ţĥé šàḿé ƃļöçķ àñšŵéŕš đéŕéñţļý ƃéƒöŕé àñđ àƒţéŕ à đéþŕéçàţîöñ đàţé, àñđ îñšîđé ţĥé ḿàŕķéţ à đéþŕéçàţîöñ ŕéàçĥéš ṽéŕšüš öüţšîđé îţ.
Ţĥé governed_by éđĝé îš ŵĥéŕé ĝöṽéŕñàñçé šţöþš ƃéîñĝ ŕé-đéŕîṽéđ. Îţ çàŕŕîéš ţĥé
šàḿé ĥàļƒ-öþéñ ṽàļîđîţý ŵîñđöŵ ţĥé ŕéçîþé đéçļàŕéš
(Ç-02), šö ŵĥàţ ĝöṽéŕñéđ ĥéŕé öñ ţĥàţ
đàţé îš àñšŵéŕéđ ƃý ţĥé ĝŕàþĥ üñđéŕ ţĥé šàḿé ţéḿþöŕàļ ḿöđéļ, ñöţ ƃý à šéçöñđ
îḿþļéḿéñţàţîöñ öƒ ţĥé ļàđđéŕ.
Ñöđé îđéñţîţý çàŕŕîéš ţĥé šçöþé ţüþļé
Àñ îđ îš <label>:<workspace>/<project>/<stream>:<local>, ŵîţĥ ţĥé šéþàŕàţöŕš
þéŕçéñţ-éšçàþéđ îñšîđé éàçĥ çöḿþöñéñţ šö ţŵö đéŕéñţ ţüþļéš çàñ ñéṽéŕ ŕéñđéŕ ţö
öñé îđ. Ţĥé šçöþé šéĝḿéñţ îš àļŵàýš ţĥŕéé ƒîéļđš, šö îţ šàýš ŵĥîçĥ đîḿéñšîöñš ţĥé
ñöđé îš ǫüàļîƒîéđ ƃý ŕàţĥéŕ ţĥàñ ļéàṽîñĝ ţĥàţ ţö ƃé îñƒéŕŕéđ ƒŕöḿ ţĥé ļàƃéļ.
Ţŵö ķîñđš öƒ ñöđé, àñđ ţĥé šþļîţ đéçîđéš ŵĥàţ çàñ ƃé àšķéđ:
- Ṽöçàƃüļàŕý ñöđéš (çöñçéþţš, çööŕđîñàţéš) đŕöþ ţĥé îñšţàñçé đîḿéñšîöñš. Öñé çöñçéþţ îš öñé ñöđé ĥöŵéṽéŕ ḿàñý þŕöĵéçţš üšé îţ, ŵĥîçĥ îš ŵĥàţ ḿàķéš ŵĥîçĥ þŕöĵéçţš üšé ţĥîš çöñçéþţ à ţŵö-ĥöþ ţŕàṽéŕšàļ îñšţéàđ öƒ à ĵöîñ àçŕöšš þŕöĵéçţ ƃöüñđàŕîéš. À çööŕđîñàţé îš ṽöçàƃüļàŕý ƒöŕ ţĥé šàḿé ŕéàšöñ: à šéţ öƒ þŕöĵéçţš ƃîñđš ţö öñé çööŕđîñàţé ṽöçàƃüļàŕý ŕàţĥéŕ ţĥàñ éàçĥ îñṽéñţîñĝ îţš öŵñ.
- Îñšţàñçé ñöđéš (ƃļöçķš, çöļļéçţîöñš, üñîţ šţàţéš) çàŕŕý
(project, stream). Ţŵö þŕöĵéçţš'docsçöļļéçţîöñš àŕé ţŵö ñöđéš. Ţŵö þŕöĵéçţš ĥöļđîñĝ îđéñţîçàļ ŵöŕđîñĝ ĥöļđ ţŵö ƃļöçķ ñöđéš çàŕŕýîñĝ ţĥé šàḿé çöñţéñţ ķéý, àñđ šàḿé ŵöŕđîñĝ îš à çöñţéñţ-ķéý éǫüàļîţý ǫüéŕý: öñé šĥàŕéđ ñöđé ŵöüļđ šàý ţĥé ţŵö îñšţàñçéš àŕé ĝöṽéŕñéđ ţöĝéţĥéŕ, àñđ àñ îñšţàñçé šîţš šöḿéŵĥéŕé.
Đîḿéñšîöñš àŕé ƒîéļđš, ñöţ çöñţàîñḿéñţ éđĝéš. Éṽéŕý ñöđé çàŕŕîéš ţĥé ñöñ-éḿþţý çöḿþöñéñţš öƒ îţš šçöþé ţüþļé àš þŕöþéŕţîéš àš ŵéļļ àš îñ îţš îđ, šö šļîçîñĝ à ṽîéŵ ƃý þŕöĵéçţ öŕ šţŕéàḿ îš à ƒîļţéŕ ŕàţĥéŕ ţĥàñ à ţŕàṽéŕšàļ. Àñ éḿþţý đîḿéñšîöñ îš ŵŕîţţéñ àš àñ àƃšéñţ ķéý ŕàţĥéŕ ţĥàñ àñ éḿþţý šţŕîñĝ, ƃéçàüšé à þŕöþéŕţý ƒîļţéŕ çöḿþàŕéš àĝàîñšţ à ṽàļüé àñđ àƃšéñçé îš ñöţ ţĥé éḿþţý šţŕîñĝ. Ļöçàļļý ţĥàţ ḿéàñš ţĥé šçöþé þŕöþéŕţîéš àŕé ñöţ ţĥéŕé, ŵĥîçĥ îš çöŕŕéçţ: à þŕöĵéçţ öñ îţš öŵñ ĥàš ñö ŵöŕķšþàçé ţö ñàḿé. Ţĥéŕé îš ñö þŕöĵéçţ→þŕöĵéçţ éđĝé àñđ ţĥéŕé ŵîļļ ñöţ ƃé öñé: þŕöĵéçţš ŕéļàţé ƃý çö-öççüŕŕéñçé ţĥŕöüĝĥ ţĥé ṽöçàƃüļàŕý ţĥéý šĥàŕé.
Ŵîţĥîñ à šçöþé, îđéñţîţý îš đüŕàƃļé: à ƃļöçķ îš îţš çöñţéñţ ķéý (Ƒ-03), àñđ à üñîţ šţàţé îš îţš đöçüḿéñţ, üñîţ àñđ ṽàŕîàñţ, ñöţ à ŕéàđéŕ'š þöšîţîöñàļ îđ, šö à ŕé-þàŕšé ţĥàţ ŕéñüḿƃéŕš à đöçüḿéñţ ŕéŵŕîţéš ţĥé šàḿé ŕöŵš ŕàţĥéŕ ţĥàñ öŕþĥàñîñĝ ţĥéḿ. Ţĥé đöçüḿéñţ îš þàŕţ öƒ à üñîţ šţàţé'š îđéñţîţý ƒöŕ ţĥé ŕéàšöñ Ç-04 ĝîṽéš: à üñîţ îđ îš üñîǫüé îñšîđé îţš đöçüḿéñţ àñđ ñöŵĥéŕé ŵîđéŕ, šö ŵîţĥöüţ îţ ţŵö þàĝéš öƒ öñé çöļļéçţîöñ àŕé öñé ñöđé àñđ ţĥé đéçîšîöñ ŵŕîţţéñ ļàšţ àñšŵéŕš ƒöŕ ƃöţĥ.
Çĥàñĝîñĝ à šçöþé ṽàļüé çĥàñĝéš ţĥé îđ, šö à ŕéñàḿé îš à đéţéŕḿîñîšţîç
ŕé-ķéý. Ţĥàţ îš šàƒé ƃéçàüšé à ŵŕîţéŕ çļéàŕš ţĥé šçöþé îţ îš àƃöüţ ţö ŵŕîţé îñ
ţĥé šàḿé þàšš: ñö ŕöŵ šüŕṽîṽéš üñđéŕ ţĥé öļđ ķéý. Ţĥé þŕöĵéçţ đîḿéñšîöñ îš ţĥé
ŕéçîþé'š þŕöĵéçţ ñàḿé, ţĥé öñļý îđéñţîţý à þŕöĵéçţ öñ îţš öŵñ ĥàš, šö à ŕéñàḿé
ŕé-ķéýš ţĥé ŵĥöļé þŕöĵéçţîöñ, ŵĥîçĥ îš ţĥé ŕéƃüîļđ éàçĥ þàšš þéŕƒöŕḿš àñýŵàý.
Ŵĥéŕé à þŕöĵéçţ đîḿéñšîöñ îš îššüéđ ŕàţĥéŕ ţĥàñ àüţĥöŕéđ, à ŕéñàḿé đöéš ñöţ ţöüçĥ
îţ: ţĥé đîšþļàý ñàḿé ŕîđéš àš ţĥé project_name þŕöþéŕţý àñđ ţĥé ŕüļé çöšţš
ñöţĥîñĝ.
Ƒîñđîñĝ à ţéŕḿ îñšîđé ƃļöçķš
Ţéŕḿ öççüŕŕéñçé ĥàš ţö šéàŕçĥ ţéẋţ ţĥàţ ļîṽéš îñšîđé à ĴŠÖÑ þàýļöàđ ñö ŠǪĻ çàñ
ŕéàđ, šö ţĥé ƃļöçķ çàçĥé ķééþš block_texts: à ŕöŵ þéŕ ƃļöçķ þéŕ ļöçàļé (ţĥé
šöüŕçé üñđéŕ ţĥé éḿþţý ļöçàļé, éàçĥ ţàŕĝéţ üñđéŕ îţš öŵñ) ŵîţĥ à çöñţéñţļéšš
ƑŢŠ5 ţŕîĝŕàḿ îñđéẋ öṽéŕ îţ.
Ţĥé îñđéẋ îš ƃüîļţ ƃéƒöŕé à šéàŕçĥ, ñöţ đüŕîñĝ à ŵŕîţé. Ḿàîñţàîñîñĝ îţ îñšîđé éṽéŕý ƃļöçķ ŵŕîţé çöšţš ŕöüĝĥļý šéṽéñ ţîḿéš ţĥé ŵŕîţé: éẋţŕàçţîöñ ŵŕîţéš éṽéŕý ƃļöçķ îñ ţĥé þŕöĵéçţ, ŵĥîçĥ îš ţöö ḿüçĥ ţö ļéṽý ƒöŕ à ǫüéŕý ţĥàţ ḿàý ñéṽéŕ ƃé àšķéđ. À ŵŕîţé öñļý ḿàŕķš ţĥé ƃļöçķ šţàļé, àñđ ţĥé ƒîŕšţ šéàŕçĥ ŕéçöñçîļéš éẋàçţļý ŵĥàţ çĥàñĝéđ. Ţĥé îñđéẋ ñàŕŕöŵš àñđ ñéṽéŕ đéçîđéš (à ţŕîĝŕàḿ ḿàţçĥ îš ñéçéššàŕý, ñöţ šüƒƒîçîéñţ), šö ḿàţçĥîñĝ îš đöñé îñ Ĝö, ŵĥîçĥ îš àļšö ĥöŵ ţĥé ƃŕöŵšéŕ ƃüîļđ àñšŵéŕš ţĥé šàḿé ǫüéšţîöñ ƃý šçàññîñĝ.
kapi terms occurrences îš ţĥé šüŕƒàçé ţĥàţ ļîšţš üšéš ļîṽé ƒŕöḿ ţĥîš îñđéẋ,
ŵîţĥ ţĥéîŕ þöšîţîöñš. Ţĥé üšàĝé çöüñţ îš à đéŕéñţ ŕéàđîñĝ: kapi context search, ţĥé context_search ţööļ, ţĥé đéšķţöþ éẋþļöŕéŕ'š šéàŕçĥ àñđ ŕéļàţîöñš
þàñéš àñđ ţĥé þļàţƒöŕḿ'š çöñçéþţ þàĝé àļļ ŕéþöŕţ ĥöŵ öƒţéñ à ţéŕḿ îš üšéđ, àñđ
àļļ öƒ ţĥéḿ ŕéàđ îţ ƒŕöḿ ţĥé uses_term éđĝéš ţĥŕöüĝĥ contextgraph.UsesByProject
ŕàţĥéŕ ţĥàñ ĵöîñîñĝ ţĥé ţéŕḿš šţöŕé àĝàîñšţ ţĥé ƃļöçķ çàçĥé ŵĥéñ àšķéđ. Öñé
þŕöđüçéŕ ḿéàñš öñé ñüḿƃéŕ ŵĥéŕéṽéŕ ţĥé ǫüéšţîöñ îš àšķéđ, àñđ ƃéçàüšé ţĥàţ
þŕöđüçéŕ îš éẋţŕàçţîöñ, ţĥé ñüḿƃéŕ îš àš öƒ ţĥé ļàšţ éẋţŕàçţîöñ ŕàţĥéŕ ţĥàñ öƒ
ţĥé ŵöŕķîñĝ ţŕéé. Éàçĥ šüŕƒàçé šàýš šö ƃéšîđé ţĥé çöüñţ. Ţĥé þàššàĝé à üšé šîţš
îñ îš ŕéàđ ƒŕöḿ ţĥé ƃļöçķ çàçĥé ƃý ţĥé çöñţéñţ ķéý ţĥé éđĝé ñàḿéš, šö à ƃļöçķ
ţĥé çàçĥé ñö ļöñĝéŕ ĥöļđš çöšţš ţĥé šñîþþéţ àñđ ñéṽéŕ ţĥé çöüñţ.
Ţĥé ǫüéŕý šĥàþéš àŕé ŵŕîţţéñ öñçé
À šţöŕé šþàññîñĝ ḿàñý þŕöĵéçţš àñšŵéŕš ţĥé šàḿé ǫüéšţîöñš ŵîţĥ ţĥé đîḿéñšîöñš
ƒŕéé; à ļöçàļ þŕöĵéçţ àñšŵéŕš ţĥéḿ ŵîţĥ ţĥé đîḿéñšîöñš þîññéđ ţö öñé ṽàļüé. Ţĥàţ
îš éñƒöŕçéđ ŕàţĥéŕ ţĥàñ đéšçŕîƃéđ. Ţĥé ǫüéŕîéš ļîṽé îñ core/contextgraph/query.go
àĝàîñšţ ţŵö ñàŕŕöŵ ŕéàđ îñţéŕƒàçéš, EdgeReader àñđ NodeFinder, ţĥàţ ƃöţĥ
ƃàçķîñĝ šţöŕéš šàţý, šö ţĥéŕé îš öñé îḿþļéḿéñţàţîöñ ŕàţĥéŕ ţĥàñ ţŵö àĝŕééîñĝ
ƃý çöñṽéñţîöñ:
| Ǫüéŕý | Ǫüéšţîöñ |
|---|---|
Uses | ţéŕḿ → ƃļöçķš → çöļļéçţîöñ, ƃý ţŕàṽéŕšàļ |
ProjectsUsingConcept | ŵĥîçĥ þŕöĵéçţš üšé ţĥîš çöñçéþţ |
UsesByProject | ĥöŵ ḿüçĥ öƒ îţ šîţš îñ éàçĥ, îñ ŵĥîçĥ ŵöŕđš, àñđ ĥöŵ îţ šţàñđš ţĥéŕé àţ ţĥîš þöîñţ |
CollectionsAtCoordinate | ŵĥàţ îš ĝöṽéŕñéđ àţ ţĥîš þöîñţ, àţ ţĥîš îñšţàñţ |
BlessingsOfBlock | ŵĥîçĥ đéçîšîöñ çöṽéŕš ţĥîš üñîţ, àţ ŵĥîçĥ ƃàšîš |
BlocksWithContentKey | ŵĥö éļšé ĥöļđš ţĥîš šàḿé ŵöŕđîñĝ |
core/contextgraph/graphtest îš ţĥé šĥàŕéđ ǫüéŕý-šĥàþé šüîţé: öñé ƒîẋţüŕé öƒ ţŵö
þŕöĵéçţš šĥàŕîñĝ à çöñçéþţ, öñé ţàƃļé öƒ éẋþéçţéđ àñšŵéŕš, ŕüñ àĝàîñšţ éṽéŕý
šţöŕé ţĥàţ çļàîḿš ţö ĥöļđ ţĥîš ṽöçàƃüļàŕý. À ǫüéŕý àđđéđ ƒöŕ à ŵîđéŕ šçöþé îš
éẋþŕéššîƃļé àţ à ñàŕŕöŵéŕ öñé, àñđ à ļöçàļ ǫüéŕý đöéš ñöţ ĥàṽé ţö ƃé ŕéîñṽéñţéđ
ŵĥéñ ţĥé šçöþé ŵîđéñš.
Šçöþé ƒîļţéŕîñĝ îš öñé þŕéđîçàţé, Scope.Contains, ţŕéàţîñĝ àñ éḿþţý đîḿéñšîöñ
àš àñý, ŵĥîçĥ îš ĥöŵ ţĥé šàḿé çàļļ šéŕṽéš ƃöţĥ à þŕöĵéçţ-šçöþéđ šüŕƒàçé àñđ à
ŕöļļüþ àçŕöšš þŕöĵéçţš.
Ƃŕöŵšéŕ àñđ ŵàšḿ
Ţĥéŕé îš ñö ŠǪĻîţé îñ ţĥé ƃŕöŵšéŕ ƃüîļđ. Ţĥé ḿöđéļ îš üñçĥàñĝéđ àñđ ţĥé ƃàçķéñđš
đéŕ: îñ-ḿéḿöŕý çöñţéñţ ḿéḿöŕý àñđ ţéŕḿš, à þàţĥ-ķéýéđ îñ-ḿéḿöŕý ƃļöçķ šţöŕé,
àñđ à ŵöŕķîñĝ šéţ ţĥàţ þéŕšîšţš ţö à ĴŠÖÑ šîđéçàŕ, .kapi/work/store.json.
Öþéŕàţîöñš ţĥàţ ĝéñüîñéļý ñééđ ţĥé đàţàƃàšé ŕéþöŕţ projectdb.ErrNoStore, ŵĥîçĥ
çàļļéŕš ŵĥöšé ƒéàţüŕé îš öþţîöñàļ ţĥéŕé ḿàţçĥ àñđ đéĝŕàđé öñ. Ţĥé šàḿé šöüŕçéš
ŕéƃüîļđ îţ, àñđ ţĥé šàḿé ĝŕàþĥ ŕéļàţîöñš ĥöļđ.
Çöñšéǫüéñçéš
- Öñé çöññéçţîöñ þéŕ þŕöĵéçţ. Šüƃšýšţéḿš öþéñ ţĥé šĥàŕéđ
storage.DBŕàţĥéŕ ţĥàñ à ƒîļé éàçĥ, šö öñé ţŕàñšàçţîöñ çàñ šþàñ à šţàţé ŕéçöŕđ àñđ ţĥé ĝŕàþĥ éđĝéš îţ îḿþļîéš. - Çŕöšš-šüƃšýšţéḿ ǫüéšţîöñš àŕé öŕđîñàŕý ŠǪĻ. Ţéŕḿ çöṽéŕàĝé þéŕ çöļļéçţîöñ, ţĥé ƃļöçķš ƃéĥîñđ à çööŕđîñàţé, ţĥé üñîţš à ţéŕḿ çĥàñĝé þüţš àţ ŕîšķ: ĵöîñš, ñöţ àþþļîçàţîöñ-ļéṽéļ ḿéŕĝéš.
- Šţöŕé þàţĥš àŕé ñöţ à üšéŕ šüŕƒàçé. Ţĥé ŕéçîþé ƃîñđš šöüŕçéš
(
defaults.terms_source,defaults.memory_source); îţ ñéṽéŕ ñàḿéš ţĥé đéŕîṽéđ đàţàƃàšé. Šţàñđàļöñé šţöŕéš öüţšîđé à þŕöĵéçţ ķééþ ţĥéîŕ öŵñ šéļéçţöŕš (--termstore,--memory); ţĥöšé àđđŕéšš à ƒîļé ţĥé üšéŕ öŵñš, ŵĥîçĥ îš à đéŕéñţ ţĥîñĝ. - ÇÎ çàçĥéš
.kapi/work/cache/docs, àñđ ñöţĥîñĝ éļšé üñđéŕwork/. Ţĥé þàŕšé çàçĥé îš ķéýéđ ƃý çöñţéñţ, çöñƒîĝüŕàţîöñ àñđ ƃüîļđ, šö à ŕéšţöŕéđ éñţŕý çĥàñĝéš ñö ŕéšüļţ, àñđsetup-kapiçàŕŕîéš îţ ƃý đéƒàüļţ. Ţĥé đàţàƃàšé çàŕŕîéš šţàĝéđ üñîţ šţàţé, àñđ ŕéšţöŕîñĝ îţ çĥàñĝéš ŵĥàţ à ŕüñ ŕéþöŕţš; ţĥé ŕéḿàîñîñĝ éñţŕîéš üñđéŕcache/ƃéļöñĝ ţö ţĥé çĥéçķöüţ ţĥàţ ŵŕöţé ţĥéḿ (Çöñṽéŕĝéñçé îñ ÇÎ).
Šéé àļšö
- Ç-01: Ţĥé þŕöĵéçţ ḿöđéļ: ţĥé ļàýöüţ ţĥé šţöŕé šîţš îñ.
- Ç-04: Üñîţ šţàţé àñđ ţĥé đéçîšîöñ ŕéçöŕđ:
ţĥé ŵöŕķîñĝ šéţ îñšîđé
store.db. - Ç-08: Ţéŕḿš àñđ Ç-09: Çöñţéñţ ḿéḿöŕý: ţĥé ţŵö šüƃšýšţéḿš ŵĥöšé šöüŕçé-ṽéŕšüš-þŕöĵéçţîöñ šþļîţ ţĥîš šţöŕé îḿþļéḿéñţš.
- Ç-06: Çöñţéẋţ ŕéţŕîéṽàļ: ţĥé þŕîḿîţîṽéš ţĥéšé ţàƃļéš àñšŵéŕ.
- Ţĥé þŕöĵéçţ šţöŕé: ţĥé éñđ-üšéŕ ṽîéŵ.