@@ -87,6 +87,50 @@ class DependencyEdge:
8787 ("dominios.Neurociências" , "dados.Dados neurobiológicos" , 0.90 , "co_occurs" ),
8888 ("dominios.Antropologia" , "metodos.Qualitativo fenomenológico" , 0.80 , "co_occurs" ),
8989 ("dominios.Economia comportamental" , "teoria_jogos.Bayesiano" , 0.75 , "co_occurs" ),
90+
91+ # ─── v2.0 Expansion: Prerequisites (12 novas) ────────────────────────
92+ ("paradigmas.Crítico/Transformador" , "raciocinio.Dialético" , 0.85 , "requires" ),
93+ ("paradigmas.Crítico/Transformador" , "niveis_analise.Sistêmico/político" , 0.75 , "requires" ),
94+ ("dados.Dados neurobiológicos" , "dominios.Neurociências" , 0.9 , "requires" ),
95+ ("metodos.Pesquisa-ação" , "paradigmas.Pragmatista" , 0.8 , "requires" ),
96+ ("metodos.Pesquisa-ação" , "niveis_analise.Comunitário" , 0.7 , "requires" ),
97+ ("raciocinio.Teleológico" , "temporalidade.Prospectivo/preditivo" , 0.7 , "requires" ),
98+ ("teoria_jogos.Stackelberg" , "teoria_jogos.Equilíbrio de Nash" , 0.8 , "requires" ),
99+ ("teoria_jogos.Sinalização" , "teoria_jogos.Bayesiano" , 0.85 , "requires" ),
100+ ("teoria_jogos.Barganha" , "teoria_jogos.Cooperativo" , 0.75 , "requires" ),
101+ ("dominios.Psicofarmacologia" , "dominios.Neurociências" , 0.8 , "requires" ),
102+ ("dominios.Inteligência Artificial / Tecnologia" , "raciocinio.Probabilístico" , 0.7 , "requires" ),
103+ ("populacao.Cross-cultural" , "dominios.Antropologia" , 0.65 , "requires" ),
104+
105+ # ─── v2.0 Expansion: Enablers (10 novas) ─────────────────────────────
106+ ("raciocinio.Dialético" , "paradigmas.Crítico/Transformador" , 0.85 , "enables" ),
107+ ("raciocinio.Dialético" , "niveis_analise.Sistêmico/político" , 0.7 , "enables" ),
108+ ("dados.Dados qualitativos (entrevistas)" , "metodos.Qualitativo grounded theory" , 0.8 , "enables" ),
109+ ("dados.Dados qualitativos (entrevistas)" , "paradigmas.Fenomenológico" , 0.75 , "enables" ),
110+ ("dominios.Inteligência Artificial / Tecnologia" , "dados.Dados comparativos (cross-cultural)" , 0.6 , "enables" ),
111+ ("dominios.Inteligência Artificial / Tecnologia" , "raciocinio.Probabilístico" , 0.7 , "enables" ),
112+ ("temporalidade.Histórico/retrospectivo" , "dados.Dados epidemiológicos" , 0.65 , "enables" ),
113+ ("raciocinio.Metacognitivo" , "paradigmas.Construtivista" , 0.7 , "enables" ),
114+ ("raciocinio.Metacognitivo" , "raciocinio.Abdutivo" , 0.6 , "enables" ),
115+ ("populacao.Contexto comunitário" , "niveis_analise.Comunitário" , 0.8 , "enables" ),
116+
117+ # ─── v2.0 Expansion: Co-occurrence (6 novas) ─────────────────────────
118+ ("paradigmas.Pós-estruturalista" , "dominios.Sociologia" , 0.8 , "co_occurs" ),
119+ ("metodos.Misto sequencial" , "paradigmas.Pragmatista" , 0.85 , "co_occurs" ),
120+ ("raciocinio.Abdutivo" , "metodos.Qualitativo fenomenológico" , 0.7 , "co_occurs" ),
121+ ("temporalidade.Desenvolvimental (ciclo de vida)" , "populacao.Infância" , 0.75 , "co_occurs" ),
122+ ("teoria_jogos.Dilema do Prisioneiro" , "raciocinio.Contrafactual" , 0.7 , "co_occurs" ),
123+ ("dados.Dados observacionais" , "metodos.Estudo de caso" , 0.8 , "co_occurs" ),
124+
125+ # ─── v2.0: teorias dimension edges ─────────────────────────────────
126+ ("teorias.Cognitivo-comportamental" , "metodos.Quantitativo experimental" , 0.7 , "co_occurs" ),
127+ ("teorias.Neurobiológico" , "dados.Dados neurobiológicos" , 0.9 , "enables" ),
128+ ("teorias.Sistêmico" , "paradigmas.Complexo/Sistêmico" , 0.75 , "co_occurs" ),
129+ ("teorias.Evolucionista" , "teoria_jogos.Evolutivo" , 0.85 , "co_occurs" ),
130+ ("teorias.Integrativo/transdiagnóstico" , "dominios.Neurociências" , 0.6 , "enables" ),
131+ ("teorias.Integrativo/transdiagnóstico" , "dominios.Sociologia" , 0.55 , "enables" ),
132+ ("teorias.Social-crítico" , "paradigmas.Crítico/Transformador" , 0.8 , "co_occurs" ),
133+ ("teorias.Fenomenológico-existencial" , "paradigmas.Fenomenológico" , 0.9 , "co_occurs" ),
90134]
91135
92136
@@ -246,3 +290,34 @@ def detect_cycles(self) -> list[list[str]]:
246290 if cycle not in cycles and list (reversed (cycle )) not in cycles :
247291 cycles .append (cycle )
248292 return cycles
293+
294+ # ─── SELF-DISCOVERY (v2.0) ──────────────────────────────────────────
295+
296+ def learn_from_scan (self , noological_scan : dict [str , Any ]) -> list [DependencyEdge ]:
297+ """v2.0: Auto-descoberta de co-ocorrencias implicitas no scan.
298+
299+ Se duas categorias estao AMBAS presentes (covered), sugere
300+ afinidade implicita como regra de co-ocorrencia (weight=0.6).
301+ """
302+ discovered : list [DependencyEdge ] = []
303+ dims = noological_scan .get ("dimensions" , {})
304+ existing_pairs = {(e .source , e .target ) for e in self .edges }
305+ existing_pairs .update ({(e .target , e .source ) for e in self .edges })
306+
307+ items = []
308+ for dk , dd in dims .items ():
309+ for cat in dd .get ("covered" , []):
310+ items .append ((dk , cat ))
311+
312+ for i in range (len (items )):
313+ for j in range (i + 1 , len (items )):
314+ dk1 , cat1 = items [i ]
315+ dk2 , cat2 = items [j ]
316+ key1 = f"{ dk1 } .{ cat1 } "
317+ key2 = f"{ dk2 } .{ cat2 } "
318+ if (key1 , key2 ) not in existing_pairs and (key2 , key1 ) not in existing_pairs :
319+ discovered .append (DependencyEdge (
320+ source = key1 , target = key2 ,
321+ weight = 0.6 , relation = "co_occurs"
322+ ))
323+ return discovered
0 commit comments