@polycode-projects/the-mechanical-code-talker 0.5.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,37 @@
1
+ LICENSE NOTICE — corpus/seon/
2
+ =============================
3
+
4
+ The files in this directory (concepts.jsonl, definitions.jsonl, README.md) are
5
+ ORIGINAL WORK authored by hand for the-mechanical-code-talker (tmct), and are
6
+ licensed under this repository's license, the Mozilla Public License Version 2.0
7
+ (MPL-2.0) — the same terms as the rest of the repository.
8
+
9
+ https://www.mozilla.org/MPL/2.0/
10
+
11
+ They are NOT derived from ConceptNet and are NOT under CC-BY-SA. Do not confuse
12
+ this directory with corpus/conceptnet/, whose slice.jsonl is a CC-BY-SA 4.0
13
+ excerpt of ConceptNet 5 (see corpus/conceptnet/LICENSE-NOTICE).
14
+
15
+ What this is
16
+ ------------
17
+
18
+ corpus/seon is tmct's curated tier-1 software-engineering ontology: a hand-
19
+ authored, language-neutral set of concept definitions and relation facts covering
20
+ the vocabulary declared in src/grammar/lexicon-core.json. Every line was written
21
+ and checked by the project, not compiled from an external dataset.
22
+
23
+ On the name "seon"
24
+ ------------------
25
+
26
+ The directory is named for SEON (the Software Evolution ONtologies, se-on.org),
27
+ the FAMIX-derived reference vocabulary tmct's code-graph prop tokens borrow term
28
+ IDEAS from (see ontology/tmct-core.ttl). This directory does NOT redistribute
29
+ SEON's published ontology files; it is tmct's own curated ontology, named in
30
+ homage to that reference vocabulary. No SEON content is copied here.
31
+
32
+ Reuse
33
+ -----
34
+
35
+ As MPL-2.0 material, these files may be used, modified, and redistributed under
36
+ the MPL-2.0 terms. Attribution to the-mechanical-code-talker / Polycode is
37
+ appreciated but governed by the license, not by CC-BY-SA share-alike.
@@ -0,0 +1,121 @@
1
+ # corpus/seon — tmct's curated tier-1 software-engineering ontology
2
+
3
+ A hand-authored, **language-neutral** ontology of the software-engineering concepts
4
+ tmct's grammar lexicon knows about. Its purpose, in the operator's words: *"the chat
5
+ knows about what it knows about."* Every lexicon concept gets
6
+
7
+ 1. an **English definition** — what it IS (`definitions.jsonl`), and
8
+ 2. **relation facts** — how it RELATES to other concepts (`concepts.jsonl`),
9
+
10
+ so tmct can explain its own vocabulary, and so a Java `class`, a C# `class`, and a
11
+ Python `class` all resolve to the **same** language-neutral concept.
12
+
13
+ This is **tier-1, curated** data: every line is hand-checked and tech-correct — no
14
+ ConceptNet-style noise. It is repo-owned (**MPL-2.0**, see `LICENSE-NOTICE`), *not*
15
+ CC-BY-SA like the ConceptNet slice.
16
+
17
+ ## Files
18
+
19
+ | file | shape | count |
20
+ |------|-------|-------|
21
+ | `concepts.jsonl` | relation facts, byte-identical shape to `corpus/conceptnet/slice.jsonl` | 238 facts |
22
+ | `definitions.jsonl` | `{ "term", "definition", "sense": "software" }`, one per line | 288 definitions |
23
+ | `LICENSE-NOTICE` | MPL-2.0 provenance for this directory | — |
24
+
25
+ ### `concepts.jsonl` — same shape as the ConceptNet slice
26
+
27
+ Each line is exactly `{ "start", "rel", "end", "weight" }` with `/c/en/<term>`
28
+ endpoints, so the existing `loadSlice` / `loadMap` / `toFacts` / `seedMemory`
29
+ (`src/corpus/conceptnet.mjs`) consume this file with **no code change** — pass it as
30
+ the `slicePath`.
31
+
32
+ ```jsonc
33
+ {"start":"/c/en/class","rel":"/r/IsA","end":"/c/en/type","weight":2}
34
+ {"start":"/c/en/method","rel":"/r/PartOf","end":"/c/en/class","weight":2}
35
+ {"start":"/c/en/cache","rel":"/r/UsedFor","end":"/c/en/performance","weight":2}
36
+ {"start":"/c/en/java_class","rel":"/r/IsA","end":"/c/en/class","weight":2}
37
+ ```
38
+
39
+ Only relations already mapped in `src/corpus/conceptnet-map.toml` are used, so there
40
+ is **no slice/map drift** (verified: the file loads through `toFacts` cleanly). The
41
+ emitted-predicate breakdown:
42
+
43
+ | ConceptNet rel | → predicate | facts | meaning |
44
+ |----------------|-------------|-------|---------|
45
+ | `/r/IsA` | `rdfs:subClassOf` | 109 | taxonomy (`class` ⊑ `type`) — the load-bearing layer the syllogise closure walks |
46
+ | `/r/UsedFor` | `mgx:usedFor` | 48 | purpose (`cache` usedFor `performance`) |
47
+ | `/r/PartOf` | `mgx:partOf` | 35 | meronymy (`method` partOf `class`) |
48
+ | `/r/HasA` | `mgx:hasA` | 11 | holonymy (`class` hasA `method`) |
49
+ | `/r/CapableOf` | `mgx:capableOf` | 8 | behaviour (`cache` capableOf `store data`) |
50
+ | `/r/CreatedBy` | `mgx:createdBy` | 4 | provenance (`commit` createdBy `developer`) |
51
+ | `/r/HasProperty` | `mgx:hasProperty` | 4 | attributes (`cache` hasProperty `fast`) |
52
+ | `/r/RelatedTo` | *(none — non-emitting)* | 19 | weak peer hints (`interface` relatedTo `class`); kept per the map's own note as a future fuzzy-match signal — they load without drift but emit no fact today |
53
+
54
+ `normFactTerm` lowercases and de-underscores endpoints, so `/c/en/java_class` stores
55
+ as the term `java class`.
56
+
57
+ ### `definitions.jsonl` — term → English gloss
58
+
59
+ One object per line, tech-domain sense:
60
+
61
+ ```jsonc
62
+ {"term":"class","definition":"A class is a template that defines the structure and behaviour of objects; in code it groups methods and attributes under one type.","sense":"software"}
63
+ {"term":"cache","definition":"A cache is a fast, temporary store that keeps copies of recently used data so future requests are served more quickly.","sense":"software"}
64
+ {"term":"deprecated","definition":"Deprecated means an entity is marked obsolete and discouraged, kept for now but scheduled for removal.","sense":"software"}
65
+ {"term":"import","definition":"To import is to bring the definitions of another module into the current one so its code can be used.","sense":"software"}
66
+ ```
67
+
68
+ Covers **every** lexicon term: all 173 nouns, 63 relation verbs (so the chat can
69
+ explain what a relation *means*), and 33 attribute adjectives — plus the
70
+ language-neutral keywords and tmct self-knowledge terms below.
71
+
72
+ ## Language-neutral layer
73
+
74
+ Language-specific spellings are linked to the shared concept with `/r/IsA`
75
+ (`rdfs:subClassOf`) edges, so a query about an `object`, `class`, or `function`
76
+ reasons **across languages** through the taxonomy the syllogise closure already walks:
77
+
78
+ - **Same concept, many languages:** `java class`, `python class`, `csharp class`,
79
+ `cpp class`, `ruby class` are each `subClassOf` `class`; likewise the interface,
80
+ method, module and package families.
81
+ - **Keyword → concept:** `def`, `func`, `fn`, `sub` are each `subClassOf` `function`;
82
+ `struct` and `record` are `subClassOf` `class`; `trait` is `subClassOf` `interface`;
83
+ `namespace` is `subClassOf` `module`.
84
+ - Because the specific terms share a parent, `syllogise` connects e.g.
85
+ `java class` → `class` → `type` with no per-language rule.
86
+
87
+ ## Orientation (tmct self-knowledge)
88
+
89
+ A handful of facts and definitions give meta-questions real ground to stand on:
90
+ `tmct isa chatbot`; `tmct usedFor answering questions about a code graph`;
91
+ `tmct usedFor explaining its own vocabulary`; `module relatedTo source file`;
92
+ `memory graph usedFor storing facts`; `seon isa ontology` — plus definitions for
93
+ `tmct`, `code graph`, `memory graph`, and `seon`.
94
+
95
+ ## How the coordinator should seed this (Wave-2 chat.mjs work — NOT wired here)
96
+
97
+ This directory is **data only**; wiring it into seeding is the coordinator's
98
+ `chat.mjs` / `init.mjs` change. Recommended:
99
+
100
+ 1. **Seed `corpus/seon` FIRST, ahead of the ConceptNet slice**, and **exempt it from
101
+ the 500-fact cap** (`SEED_LIMIT`). It is small (238 lines → 219 emitted facts) and
102
+ fully curated, so the whole tier belongs in memory before any capped ConceptNet
103
+ fill. Concretely: call `seedMemory(repo, { slicePath: SEON_CONCEPTS_FILE })` with
104
+ **no `limit`**, then run the existing capped ConceptNet seed after it. The
105
+ idempotent, content-hashed `appendFact` ids mean a term appearing in both tiers
106
+ converges to one fact.
107
+ 2. Keep the existing `SEED_PREFER` order
108
+ (`rdfs:subClassOf`, `rdf:type`, `mgx:usedFor`, `mgx:partOf`, `mgx:capableOf`) — it
109
+ already front-loads exactly this file's dominant predicates, though with no cap on
110
+ the seon tier the ordering only affects the ConceptNet tail.
111
+ 3. **Provenance caveat:** `toFacts` currently hard-codes the provenance string
112
+ `corpus:conceptnet <rel>`. If the coordinator wants seon facts tagged as their own
113
+ source (`corpus:seon`), that is a one-line parametrisation of `toFacts` /
114
+ `seedMemory` — out of scope for this data-only directory.
115
+
116
+ ## Regenerating / extending
117
+
118
+ Add a `[term, definition]` pair (definitions) or a `[start, rel, end]` row (facts) —
119
+ keep every line curated and tech-correct, and only use relations that exist in
120
+ `conceptnet-map.toml` (else `toFacts` throws a drift error). Endpoints are bare terms;
121
+ multiword terms use `_` (they de-underscore on load).
@@ -0,0 +1,238 @@
1
+ {"start":"/c/en/class","rel":"/r/IsA","end":"/c/en/type","weight":2}
2
+ {"start":"/c/en/interface","rel":"/r/IsA","end":"/c/en/type","weight":2}
3
+ {"start":"/c/en/structure","rel":"/r/IsA","end":"/c/en/type","weight":2}
4
+ {"start":"/c/en/struct","rel":"/r/IsA","end":"/c/en/class","weight":2}
5
+ {"start":"/c/en/record","rel":"/r/IsA","end":"/c/en/class","weight":2}
6
+ {"start":"/c/en/enum","rel":"/r/IsA","end":"/c/en/type","weight":2}
7
+ {"start":"/c/en/trait","rel":"/r/IsA","end":"/c/en/interface","weight":2}
8
+ {"start":"/c/en/api","rel":"/r/IsA","end":"/c/en/interface","weight":2}
9
+ {"start":"/c/en/object","rel":"/r/IsA","end":"/c/en/value","weight":2}
10
+ {"start":"/c/en/instance","rel":"/r/IsA","end":"/c/en/object","weight":2}
11
+ {"start":"/c/en/function","rel":"/r/IsA","end":"/c/en/routine","weight":2}
12
+ {"start":"/c/en/method","rel":"/r/IsA","end":"/c/en/routine","weight":2}
13
+ {"start":"/c/en/procedure","rel":"/r/IsA","end":"/c/en/routine","weight":2}
14
+ {"start":"/c/en/operation","rel":"/r/IsA","end":"/c/en/routine","weight":2}
15
+ {"start":"/c/en/handler","rel":"/r/IsA","end":"/c/en/routine","weight":2}
16
+ {"start":"/c/en/helper","rel":"/r/IsA","end":"/c/en/function","weight":2}
17
+ {"start":"/c/en/callback","rel":"/r/IsA","end":"/c/en/function","weight":2}
18
+ {"start":"/c/en/generator","rel":"/r/IsA","end":"/c/en/function","weight":2}
19
+ {"start":"/c/en/lambda","rel":"/r/IsA","end":"/c/en/function","weight":2}
20
+ {"start":"/c/en/closure","rel":"/r/IsA","end":"/c/en/function","weight":2}
21
+ {"start":"/c/en/coroutine","rel":"/r/IsA","end":"/c/en/function","weight":2}
22
+ {"start":"/c/en/constructor","rel":"/r/IsA","end":"/c/en/method","weight":2}
23
+ {"start":"/c/en/destructor","rel":"/r/IsA","end":"/c/en/method","weight":2}
24
+ {"start":"/c/en/getter","rel":"/r/IsA","end":"/c/en/method","weight":2}
25
+ {"start":"/c/en/setter","rel":"/r/IsA","end":"/c/en/method","weight":2}
26
+ {"start":"/c/en/controller","rel":"/r/IsA","end":"/c/en/component","weight":2}
27
+ {"start":"/c/en/model","rel":"/r/IsA","end":"/c/en/component","weight":2}
28
+ {"start":"/c/en/view","rel":"/r/IsA","end":"/c/en/component","weight":2}
29
+ {"start":"/c/en/string","rel":"/r/IsA","end":"/c/en/value","weight":2}
30
+ {"start":"/c/en/number","rel":"/r/IsA","end":"/c/en/value","weight":2}
31
+ {"start":"/c/en/list","rel":"/r/IsA","end":"/c/en/value","weight":2}
32
+ {"start":"/c/en/array","rel":"/r/IsA","end":"/c/en/list","weight":2}
33
+ {"start":"/c/en/constant","rel":"/r/IsA","end":"/c/en/variable","weight":2}
34
+ {"start":"/c/en/attribute","rel":"/r/IsA","end":"/c/en/variable","weight":2}
35
+ {"start":"/c/en/field","rel":"/r/IsA","end":"/c/en/attribute","weight":2}
36
+ {"start":"/c/en/property","rel":"/r/IsA","end":"/c/en/attribute","weight":2}
37
+ {"start":"/c/en/parameter","rel":"/r/IsA","end":"/c/en/variable","weight":2}
38
+ {"start":"/c/en/expression","rel":"/r/IsA","end":"/c/en/statement","weight":2}
39
+ {"start":"/c/en/loop","rel":"/r/IsA","end":"/c/en/statement","weight":2}
40
+ {"start":"/c/en/module","rel":"/r/IsA","end":"/c/en/file","weight":2}
41
+ {"start":"/c/en/folder","rel":"/r/IsA","end":"/c/en/directory","weight":2}
42
+ {"start":"/c/en/namespace","rel":"/r/IsA","end":"/c/en/module","weight":2}
43
+ {"start":"/c/en/header","rel":"/r/IsA","end":"/c/en/file","weight":2}
44
+ {"start":"/c/en/docstring","rel":"/r/IsA","end":"/c/en/comment","weight":2}
45
+ {"start":"/c/en/library","rel":"/r/IsA","end":"/c/en/package","weight":2}
46
+ {"start":"/c/en/framework","rel":"/r/IsA","end":"/c/en/library","weight":2}
47
+ {"start":"/c/en/component","rel":"/r/IsA","end":"/c/en/module","weight":2}
48
+ {"start":"/c/en/script","rel":"/r/IsA","end":"/c/en/file","weight":2}
49
+ {"start":"/c/en/compiler","rel":"/r/IsA","end":"/c/en/tool","weight":2}
50
+ {"start":"/c/en/linter","rel":"/r/IsA","end":"/c/en/tool","weight":2}
51
+ {"start":"/c/en/formatter","rel":"/r/IsA","end":"/c/en/tool","weight":2}
52
+ {"start":"/c/en/parser","rel":"/r/IsA","end":"/c/en/tool","weight":2}
53
+ {"start":"/c/en/plugin","rel":"/r/IsA","end":"/c/en/component","weight":2}
54
+ {"start":"/c/en/commit","rel":"/r/IsA","end":"/c/en/change","weight":2}
55
+ {"start":"/c/en/refactor","rel":"/r/IsA","end":"/c/en/change","weight":2}
56
+ {"start":"/c/en/migration","rel":"/r/IsA","end":"/c/en/change","weight":2}
57
+ {"start":"/c/en/merge","rel":"/r/IsA","end":"/c/en/operation","weight":2}
58
+ {"start":"/c/en/patch","rel":"/r/IsA","end":"/c/en/change","weight":2}
59
+ {"start":"/c/en/bug","rel":"/r/IsA","end":"/c/en/defect","weight":2}
60
+ {"start":"/c/en/defect","rel":"/r/IsA","end":"/c/en/issue","weight":2}
61
+ {"start":"/c/en/ticket","rel":"/r/IsA","end":"/c/en/issue","weight":2}
62
+ {"start":"/c/en/regression","rel":"/r/IsA","end":"/c/en/bug","weight":2}
63
+ {"start":"/c/en/exception","rel":"/r/IsA","end":"/c/en/error","weight":2}
64
+ {"start":"/c/en/warning","rel":"/r/IsA","end":"/c/en/message","weight":2}
65
+ {"start":"/c/en/feature","rel":"/r/IsA","end":"/c/en/requirement","weight":2}
66
+ {"start":"/c/en/benchmark","rel":"/r/IsA","end":"/c/en/test","weight":2}
67
+ {"start":"/c/en/assertion","rel":"/r/IsA","end":"/c/en/statement","weight":2}
68
+ {"start":"/c/en/thread","rel":"/r/IsA","end":"/c/en/process","weight":2}
69
+ {"start":"/c/en/worker","rel":"/r/IsA","end":"/c/en/process","weight":2}
70
+ {"start":"/c/en/job","rel":"/r/IsA","end":"/c/en/task","weight":2}
71
+ {"start":"/c/en/triple","rel":"/r/IsA","end":"/c/en/fact","weight":2}
72
+ {"start":"/c/en/fact","rel":"/r/IsA","end":"/c/en/statement","weight":2}
73
+ {"start":"/c/en/question","rel":"/r/IsA","end":"/c/en/utterance","weight":2}
74
+ {"start":"/c/en/answer","rel":"/r/IsA","end":"/c/en/response","weight":2}
75
+ {"start":"/c/en/response","rel":"/r/IsA","end":"/c/en/utterance","weight":2}
76
+ {"start":"/c/en/sentence","rel":"/r/IsA","end":"/c/en/utterance","weight":2}
77
+ {"start":"/c/en/engineer","rel":"/r/IsA","end":"/c/en/developer","weight":2}
78
+ {"start":"/c/en/maintainer","rel":"/r/IsA","end":"/c/en/developer","weight":2}
79
+ {"start":"/c/en/author","rel":"/r/IsA","end":"/c/en/developer","weight":2}
80
+ {"start":"/c/en/reviewer","rel":"/r/IsA","end":"/c/en/developer","weight":2}
81
+ {"start":"/c/en/visitor","rel":"/r/IsA","end":"/c/en/user","weight":2}
82
+ {"start":"/c/en/setting","rel":"/r/IsA","end":"/c/en/configuration","weight":2}
83
+ {"start":"/c/en/option","rel":"/r/IsA","end":"/c/en/setting","weight":2}
84
+ {"start":"/c/en/flag","rel":"/r/IsA","end":"/c/en/option","weight":2}
85
+ {"start":"/c/en/argument","rel":"/r/IsA","end":"/c/en/value","weight":2}
86
+ {"start":"/c/en/sprint","rel":"/r/IsA","end":"/c/en/phase","weight":2}
87
+ {"start":"/c/en/specification","rel":"/r/IsA","end":"/c/en/document","weight":2}
88
+ {"start":"/c/en/endpoint","rel":"/r/IsA","end":"/c/en/route","weight":2}
89
+ {"start":"/c/en/def","rel":"/r/IsA","end":"/c/en/function","weight":2}
90
+ {"start":"/c/en/func","rel":"/r/IsA","end":"/c/en/function","weight":2}
91
+ {"start":"/c/en/fn","rel":"/r/IsA","end":"/c/en/function","weight":2}
92
+ {"start":"/c/en/sub","rel":"/r/IsA","end":"/c/en/function","weight":2}
93
+ {"start":"/c/en/java_class","rel":"/r/IsA","end":"/c/en/class","weight":2}
94
+ {"start":"/c/en/python_class","rel":"/r/IsA","end":"/c/en/class","weight":2}
95
+ {"start":"/c/en/csharp_class","rel":"/r/IsA","end":"/c/en/class","weight":2}
96
+ {"start":"/c/en/cpp_class","rel":"/r/IsA","end":"/c/en/class","weight":2}
97
+ {"start":"/c/en/ruby_class","rel":"/r/IsA","end":"/c/en/class","weight":2}
98
+ {"start":"/c/en/java_interface","rel":"/r/IsA","end":"/c/en/interface","weight":2}
99
+ {"start":"/c/en/csharp_interface","rel":"/r/IsA","end":"/c/en/interface","weight":2}
100
+ {"start":"/c/en/go_interface","rel":"/r/IsA","end":"/c/en/interface","weight":2}
101
+ {"start":"/c/en/python_method","rel":"/r/IsA","end":"/c/en/method","weight":2}
102
+ {"start":"/c/en/java_method","rel":"/r/IsA","end":"/c/en/method","weight":2}
103
+ {"start":"/c/en/python_module","rel":"/r/IsA","end":"/c/en/module","weight":2}
104
+ {"start":"/c/en/java_package","rel":"/r/IsA","end":"/c/en/package","weight":2}
105
+ {"start":"/c/en/go_package","rel":"/r/IsA","end":"/c/en/package","weight":2}
106
+ {"start":"/c/en/python_package","rel":"/r/IsA","end":"/c/en/package","weight":2}
107
+ {"start":"/c/en/npm_package","rel":"/r/IsA","end":"/c/en/package","weight":2}
108
+ {"start":"/c/en/method","rel":"/r/PartOf","end":"/c/en/class","weight":2}
109
+ {"start":"/c/en/attribute","rel":"/r/PartOf","end":"/c/en/class","weight":2}
110
+ {"start":"/c/en/field","rel":"/r/PartOf","end":"/c/en/structure","weight":2}
111
+ {"start":"/c/en/class","rel":"/r/PartOf","end":"/c/en/module","weight":2}
112
+ {"start":"/c/en/function","rel":"/r/PartOf","end":"/c/en/module","weight":2}
113
+ {"start":"/c/en/variable","rel":"/r/PartOf","end":"/c/en/module","weight":2}
114
+ {"start":"/c/en/constant","rel":"/r/PartOf","end":"/c/en/module","weight":2}
115
+ {"start":"/c/en/statement","rel":"/r/PartOf","end":"/c/en/function","weight":2}
116
+ {"start":"/c/en/expression","rel":"/r/PartOf","end":"/c/en/statement","weight":2}
117
+ {"start":"/c/en/parameter","rel":"/r/PartOf","end":"/c/en/function","weight":2}
118
+ {"start":"/c/en/line","rel":"/r/PartOf","end":"/c/en/file","weight":2}
119
+ {"start":"/c/en/comment","rel":"/r/PartOf","end":"/c/en/file","weight":2}
120
+ {"start":"/c/en/module","rel":"/r/PartOf","end":"/c/en/package","weight":2}
121
+ {"start":"/c/en/file","rel":"/r/PartOf","end":"/c/en/directory","weight":2}
122
+ {"start":"/c/en/endpoint","rel":"/r/PartOf","end":"/c/en/api","weight":2}
123
+ {"start":"/c/en/route","rel":"/r/PartOf","end":"/c/en/api","weight":2}
124
+ {"start":"/c/en/handler","rel":"/r/PartOf","end":"/c/en/controller","weight":2}
125
+ {"start":"/c/en/commit","rel":"/r/PartOf","end":"/c/en/branch","weight":2}
126
+ {"start":"/c/en/branch","rel":"/r/PartOf","end":"/c/en/repository","weight":2}
127
+ {"start":"/c/en/table","rel":"/r/PartOf","end":"/c/en/database","weight":2}
128
+ {"start":"/c/en/index","rel":"/r/PartOf","end":"/c/en/table","weight":2}
129
+ {"start":"/c/en/schema","rel":"/r/PartOf","end":"/c/en/database","weight":2}
130
+ {"start":"/c/en/test","rel":"/r/PartOf","end":"/c/en/suite","weight":2}
131
+ {"start":"/c/en/assertion","rel":"/r/PartOf","end":"/c/en/test","weight":2}
132
+ {"start":"/c/en/job","rel":"/r/PartOf","end":"/c/en/pipeline","weight":2}
133
+ {"start":"/c/en/thread","rel":"/r/PartOf","end":"/c/en/process","weight":2}
134
+ {"start":"/c/en/node","rel":"/r/PartOf","end":"/c/en/graph","weight":2}
135
+ {"start":"/c/en/edge","rel":"/r/PartOf","end":"/c/en/graph","weight":2}
136
+ {"start":"/c/en/fact","rel":"/r/PartOf","end":"/c/en/ontology","weight":2}
137
+ {"start":"/c/en/token","rel":"/r/PartOf","end":"/c/en/sentence","weight":2}
138
+ {"start":"/c/en/utterance","rel":"/r/PartOf","end":"/c/en/session","weight":2}
139
+ {"start":"/c/en/phase","rel":"/r/PartOf","end":"/c/en/roadmap","weight":2}
140
+ {"start":"/c/en/requirement","rel":"/r/PartOf","end":"/c/en/specification","weight":2}
141
+ {"start":"/c/en/developer","rel":"/r/PartOf","end":"/c/en/team","weight":2}
142
+ {"start":"/c/en/cache","rel":"/r/UsedFor","end":"/c/en/performance","weight":2}
143
+ {"start":"/c/en/index","rel":"/r/UsedFor","end":"/c/en/performance","weight":2}
144
+ {"start":"/c/en/queue","rel":"/r/UsedFor","end":"/c/en/buffering","weight":2}
145
+ {"start":"/c/en/test","rel":"/r/UsedFor","end":"/c/en/verification","weight":2}
146
+ {"start":"/c/en/test","rel":"/r/UsedFor","end":"/c/en/finding_bugs","weight":2}
147
+ {"start":"/c/en/mock","rel":"/r/UsedFor","end":"/c/en/testing","weight":2}
148
+ {"start":"/c/en/stub","rel":"/r/UsedFor","end":"/c/en/testing","weight":2}
149
+ {"start":"/c/en/fixture","rel":"/r/UsedFor","end":"/c/en/testing","weight":2}
150
+ {"start":"/c/en/snapshot","rel":"/r/UsedFor","end":"/c/en/testing","weight":2}
151
+ {"start":"/c/en/benchmark","rel":"/r/UsedFor","end":"/c/en/measuring_performance","weight":2}
152
+ {"start":"/c/en/coverage","rel":"/r/UsedFor","end":"/c/en/measuring_tests","weight":2}
153
+ {"start":"/c/en/log","rel":"/r/UsedFor","end":"/c/en/debugging","weight":2}
154
+ {"start":"/c/en/metric","rel":"/r/UsedFor","end":"/c/en/monitoring","weight":2}
155
+ {"start":"/c/en/linter","rel":"/r/UsedFor","end":"/c/en/checking_code","weight":2}
156
+ {"start":"/c/en/formatter","rel":"/r/UsedFor","end":"/c/en/formatting_code","weight":2}
157
+ {"start":"/c/en/compiler","rel":"/r/UsedFor","end":"/c/en/compiling_code","weight":2}
158
+ {"start":"/c/en/parser","rel":"/r/UsedFor","end":"/c/en/parsing","weight":2}
159
+ {"start":"/c/en/database","rel":"/r/UsedFor","end":"/c/en/storing_data","weight":2}
160
+ {"start":"/c/en/query","rel":"/r/UsedFor","end":"/c/en/retrieving_data","weight":2}
161
+ {"start":"/c/en/api","rel":"/r/UsedFor","end":"/c/en/communication","weight":2}
162
+ {"start":"/c/en/protocol","rel":"/r/UsedFor","end":"/c/en/communication","weight":2}
163
+ {"start":"/c/en/endpoint","rel":"/r/UsedFor","end":"/c/en/serving_requests","weight":2}
164
+ {"start":"/c/en/server","rel":"/r/UsedFor","end":"/c/en/serving_requests","weight":2}
165
+ {"start":"/c/en/handler","rel":"/r/UsedFor","end":"/c/en/handling_requests","weight":2}
166
+ {"start":"/c/en/controller","rel":"/r/UsedFor","end":"/c/en/handling_requests","weight":2}
167
+ {"start":"/c/en/router","rel":"/r/UsedFor","end":"/c/en/routing_requests","weight":2}
168
+ {"start":"/c/en/worker","rel":"/r/UsedFor","end":"/c/en/processing_jobs","weight":2}
169
+ {"start":"/c/en/queue","rel":"/r/UsedFor","end":"/c/en/scheduling_jobs","weight":2}
170
+ {"start":"/c/en/pipeline","rel":"/r/UsedFor","end":"/c/en/automation","weight":2}
171
+ {"start":"/c/en/build","rel":"/r/UsedFor","end":"/c/en/producing_artifacts","weight":2}
172
+ {"start":"/c/en/deployment","rel":"/r/UsedFor","end":"/c/en/releasing_software","weight":2}
173
+ {"start":"/c/en/migration","rel":"/r/UsedFor","end":"/c/en/changing_schema","weight":2}
174
+ {"start":"/c/en/hook","rel":"/r/UsedFor","end":"/c/en/extension","weight":2}
175
+ {"start":"/c/en/plugin","rel":"/r/UsedFor","end":"/c/en/extension","weight":2}
176
+ {"start":"/c/en/template","rel":"/r/UsedFor","end":"/c/en/generating_output","weight":2}
177
+ {"start":"/c/en/interface","rel":"/r/UsedFor","end":"/c/en/abstraction","weight":2}
178
+ {"start":"/c/en/framework","rel":"/r/UsedFor","end":"/c/en/building_applications","weight":2}
179
+ {"start":"/c/en/library","rel":"/r/UsedFor","end":"/c/en/reusing_code","weight":2}
180
+ {"start":"/c/en/ontology","rel":"/r/UsedFor","end":"/c/en/representing_knowledge","weight":2}
181
+ {"start":"/c/en/grammar","rel":"/r/UsedFor","end":"/c/en/parsing","weight":2}
182
+ {"start":"/c/en/lexicon","rel":"/r/UsedFor","end":"/c/en/recognising_words","weight":2}
183
+ {"start":"/c/en/session","rel":"/r/UsedFor","end":"/c/en/holding_state","weight":2}
184
+ {"start":"/c/en/prototype","rel":"/r/UsedFor","end":"/c/en/validating_ideas","weight":2}
185
+ {"start":"/c/en/benchmark","rel":"/r/UsedFor","end":"/c/en/comparing_performance","weight":2}
186
+ {"start":"/c/en/class","rel":"/r/HasA","end":"/c/en/method","weight":2}
187
+ {"start":"/c/en/class","rel":"/r/HasA","end":"/c/en/attribute","weight":2}
188
+ {"start":"/c/en/module","rel":"/r/HasA","end":"/c/en/function","weight":2}
189
+ {"start":"/c/en/api","rel":"/r/HasA","end":"/c/en/endpoint","weight":2}
190
+ {"start":"/c/en/graph","rel":"/r/HasA","end":"/c/en/node","weight":2}
191
+ {"start":"/c/en/database","rel":"/r/HasA","end":"/c/en/table","weight":2}
192
+ {"start":"/c/en/suite","rel":"/r/HasA","end":"/c/en/test","weight":2}
193
+ {"start":"/c/en/package","rel":"/r/HasA","end":"/c/en/dependency","weight":2}
194
+ {"start":"/c/en/repository","rel":"/r/HasA","end":"/c/en/branch","weight":2}
195
+ {"start":"/c/en/cache","rel":"/r/CapableOf","end":"/c/en/store_data","weight":2}
196
+ {"start":"/c/en/parser","rel":"/r/CapableOf","end":"/c/en/read_input","weight":2}
197
+ {"start":"/c/en/server","rel":"/r/CapableOf","end":"/c/en/handle_requests","weight":2}
198
+ {"start":"/c/en/queue","rel":"/r/CapableOf","end":"/c/en/hold_items","weight":2}
199
+ {"start":"/c/en/function","rel":"/r/CapableOf","end":"/c/en/return_value","weight":2}
200
+ {"start":"/c/en/test","rel":"/r/CapableOf","end":"/c/en/detect_bugs","weight":2}
201
+ {"start":"/c/en/logger","rel":"/r/CapableOf","end":"/c/en/record_messages","weight":2}
202
+ {"start":"/c/en/compiler","rel":"/r/CapableOf","end":"/c/en/translate_code","weight":2}
203
+ {"start":"/c/en/commit","rel":"/r/CreatedBy","end":"/c/en/developer","weight":2}
204
+ {"start":"/c/en/artifact","rel":"/r/CreatedBy","end":"/c/en/build","weight":2}
205
+ {"start":"/c/en/release","rel":"/r/CreatedBy","end":"/c/en/maintainer","weight":2}
206
+ {"start":"/c/en/log","rel":"/r/CreatedBy","end":"/c/en/process","weight":2}
207
+ {"start":"/c/en/cache","rel":"/r/HasProperty","end":"/c/en/fast","weight":2}
208
+ {"start":"/c/en/cache","rel":"/r/HasProperty","end":"/c/en/stale","weight":2}
209
+ {"start":"/c/en/pure_function","rel":"/r/HasProperty","end":"/c/en/deterministic","weight":2}
210
+ {"start":"/c/en/legacy_code","rel":"/r/HasProperty","end":"/c/en/deprecated","weight":2}
211
+ {"start":"/c/en/interface","rel":"/r/RelatedTo","end":"/c/en/class","weight":2}
212
+ {"start":"/c/en/object","rel":"/r/RelatedTo","end":"/c/en/class","weight":2}
213
+ {"start":"/c/en/server","rel":"/r/RelatedTo","end":"/c/en/client","weight":2}
214
+ {"start":"/c/en/request","rel":"/r/RelatedTo","end":"/c/en/response","weight":2}
215
+ {"start":"/c/en/question","rel":"/r/RelatedTo","end":"/c/en/answer","weight":2}
216
+ {"start":"/c/en/mock","rel":"/r/RelatedTo","end":"/c/en/stub","weight":2}
217
+ {"start":"/c/en/error","rel":"/r/RelatedTo","end":"/c/en/bug","weight":2}
218
+ {"start":"/c/en/event","rel":"/r/RelatedTo","end":"/c/en/message","weight":2}
219
+ {"start":"/c/en/hook","rel":"/r/RelatedTo","end":"/c/en/callback","weight":2}
220
+ {"start":"/c/en/iterator","rel":"/r/RelatedTo","end":"/c/en/generator","weight":2}
221
+ {"start":"/c/en/promise","rel":"/r/RelatedTo","end":"/c/en/callback","weight":2}
222
+ {"start":"/c/en/tag","rel":"/r/RelatedTo","end":"/c/en/release","weight":2}
223
+ {"start":"/c/en/issue","rel":"/r/RelatedTo","end":"/c/en/ticket","weight":2}
224
+ {"start":"/c/en/smell","rel":"/r/RelatedTo","end":"/c/en/bug","weight":2}
225
+ {"start":"/c/en/codebase","rel":"/r/RelatedTo","end":"/c/en/repository","weight":2}
226
+ {"start":"/c/en/namespace","rel":"/r/RelatedTo","end":"/c/en/module","weight":2}
227
+ {"start":"/c/en/field","rel":"/r/RelatedTo","end":"/c/en/attribute","weight":2}
228
+ {"start":"/c/en/instance","rel":"/r/RelatedTo","end":"/c/en/object","weight":2}
229
+ {"start":"/c/en/tmct","rel":"/r/IsA","end":"/c/en/chatbot","weight":2}
230
+ {"start":"/c/en/tmct","rel":"/r/UsedFor","end":"/c/en/answering_questions_about_a_code_graph","weight":2}
231
+ {"start":"/c/en/tmct","rel":"/r/UsedFor","end":"/c/en/explaining_its_own_vocabulary","weight":2}
232
+ {"start":"/c/en/code_graph","rel":"/r/UsedFor","end":"/c/en/answering_questions_about_a_repository","weight":2}
233
+ {"start":"/c/en/code_graph","rel":"/r/HasA","end":"/c/en/module","weight":2}
234
+ {"start":"/c/en/module","rel":"/r/RelatedTo","end":"/c/en/source_file","weight":2}
235
+ {"start":"/c/en/memory_graph","rel":"/r/UsedFor","end":"/c/en/storing_facts","weight":2}
236
+ {"start":"/c/en/memory_graph","rel":"/r/HasA","end":"/c/en/fact","weight":2}
237
+ {"start":"/c/en/fact","rel":"/r/PartOf","end":"/c/en/memory_graph","weight":2}
238
+ {"start":"/c/en/seon","rel":"/r/IsA","end":"/c/en/ontology","weight":2}