Šķîþ ţö ḿàîñ çöñţéñţ

Ç-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_edgeshost/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/ ƃéļöñĝ ţö ţĥé çĥéçķöüţ ţĥàţ ŵŕöţé ţĥéḿ (Çöñṽéŕĝéñçé îñ ÇÎ).

Šéé àļšö