Lombardi

De Casiopea

Lombardi


AutorHerbert Spencer
Ámbito GeográficoInternacional
Período2026-
Palabras Clavevisualización, noticias, grafo, semántica, controversias
OficiosDiseño
Área de InvestigaciónForma, Cultura y Tecnología
Materialidadsoftware
URLhttps://github.com/hspencer/lombardi
DescripciónIngestor y visualizador de noticias



Sentido de la obra

Lombardi es un grafo de eventos federado para mapear controversias y relaciones actor–evento–lugar en tiempo casi real. Persigue claridad ontológica y trazabilidad de evidencias para explorar debates públicos sin depender de una fuente única de verdad.

Necesidad que aborda

  • Seguimiento de controversias geopolíticas y sociales con provenance explícito (fuentes, citas, fechas) y control de ambigüedad.
  • Descubrimiento semántico asistido por LLM con restricciones ontológicas para evitar relaciones inválidas.
  • Federar eventos, actores y ubicaciones con sincronización robusta y capacidad de auditoría.

Ontología (núcleo)

  • Evento: id, name, event_type, date, source_url, evidence_quote, is_disputed.
  • Actor: id, name, type, description; relaciones con eventos.
  • Lugar (ubicación): actores tipo location; relación clave UBICADO_EN.
  • Aristas principales (dirigidas): PARTICIPA (actor → evento), CAUSA, ACTUALIZA, CONTRADICE, DESMIENTE, COMPLEMENTA, PERTENECE_A, UBICADO_EN.
  • Controversias: nodos con is_disputed = true; vistas especializadas muestran solo aristas de disputa/contradicción.

Arquitectura resumida

  • Backend: Node.js + PostgreSQL + Apache AGE (property graph). Ingesta, extracción, descubrimiento y resolución en scripts backend.
  • Frontend: mapa temporal/espacial con toggles de controversia y verificación; vista "event landscape" (jerarquía CONTIENE, deduplicación semántica, side-picking).
  • Especificaciones Allium (carpeta spec): controversy-model.allium, controversy-toggle.allium, event-landscape.allium, batch-ingestion.allium.
  • Documentación: docs/modelo-de-datos.md, docs/controversias.md, docs/fase1-implementacion.md, docs/oauth-setup.md.

Flujos clave

Ingesta de noticias
RSS a tabla news_raw; extracción (Claude/Ollama) genera nodos Evento y Actor con relaciones PARTICIPA, is_disputed, fecha, evidence_quote y source_url.
Descubrimiento semántico
/api/node/discover busca vecinos, alias, co-ocurrencias y relaciones sugeridas por LLM bajo la ontología.
Modo controversias
Filtra nodos is_disputed y aristas de disputa (CONTRADICE, DESMIENTE, etc.) para focalizar debates activos.
Landscape de eventos
Vista jerárquica CONTIENE, deduplicación semántica y comparación de narrativas (side-picking).

Diseño ontológico (detalle)

  • Identidad: id estable por entidad; deduplicación por alias y co-ocurrencia.
  • Provenance: cada evento enlaza a source_url y evidence_quote; fechas se backfillean desde news_raw si faltan.
  • Tipos de aristas recomendados por contexto:
    • Focal Evento: PARTICIPA, CAUSA, ACTUALIZA, CONTRADICE, DESMIENTE, COMPLEMENTA, UBICADO_EN.
    • Focal Actor: PARTICIPA, PERTENECE_A, UBICADO_EN, COMPLEMENTA, CAUSA, CONTRADICE, DESMIENTE, ACTUALIZA.
    • Focal Location: UBICADO_EN, PARTICIPA, COMPLEMENTA.

Referencias

Estado

  • Rama main incluye modos de controversia y event landscape.
  • Informe de brechas (branch claw): pendiente restringir edge types por tipo de focal, evitar duplicación de eventos focales en extracción, reabsorber ubicaciones (UBICADO_EN), co-ocurrencia especializada de eventos por actores compartidos y backfill resiliente.