Ontologia FTM
FollowTheMoney
OSINT AI One usa la ontologia FollowTheMoney (FTM) para estructurar las entidades extraidas de las investigaciones. Es el mismo estandar que usan OCCRP, OpenSanctions y otras organizaciones de periodismo de investigacion.
Los 12 tipos de entidad
| Tipo | Descripcion | Ejemplos |
|---|---|---|
Person | Persona fisica | Juan Garcia Lopez, Dr. Ana Martinez |
Company | Empresa mercantil | Acme Corp S.L., Tech Holdings SA |
Organization | Organizacion sin animo de lucro, ONG | Cruz Roja, Anonymous |
PublicBody | Organismo publico | Ministerio de Interior, FBI |
Domain | Nombre de dominio | acme-corp.com, evil.ru |
Email | Direccion de email | attacker@protonmail.com |
Phone | Numero de telefono | +34 612 345 678 |
UserAccount | Cuenta en red social o plataforma | @attacker en Twitter |
BankAccount | Cuenta bancaria | IBAN ES91 2100 0418… |
Document | Documento con identidad propia | Contrato PDF, informe registral |
Event | Evento con fecha y lugar | Reunion 2024-03-15 en Madrid |
Location | Ubicacion geografica | Madrid, Calle Mayor 1 |
Normalizacion para entidades espanolas
El sistema aplica reglas especificas de normalizacion para el contexto espanol:
Personas
# Eliminacion de honorificos al normalizar"Don Juan Garcia" → "Juan Garcia""Dr. Ana Martinez Ruiz" → "Ana Martinez Ruiz""Dña. Maria Lopez" → "Maria Lopez"
# Mantenimiento del orden nombre/apellidos"Garcia Lopez, Juan" → "Juan Garcia Lopez"Empresas
# Normalizacion de formas legales"ACME CORPORATION SOCIEDAD LIMITADA" → "ACME CORPORATION S.L.""Tech Holdings, S.A." → "Tech Holdings SA""Inversiones 2020 S.L.U." → "Inversiones 2020 SLU"
# Identificadores fiscalesCIF: B-12345678 → B12345678Documentos de identidad
# DNI espanol"12345678-Z" → "12345678Z""12.345.678 Z" → "12345678Z"
# NIE"X-1234567-L" → "X1234567L"
# IBAN espanol"ES91 2100 0418 4502 0005 1332" → "ES9121000418450200051332"Telefonos
# Normalizacion con prefijo internacional"612 345 678" → "+34612345678""(+34) 91 234 56 78" → "+34912345678""91 234 56 78" → "+34912345678" # asume prefijo ES si no hay otroComo se usa en la practica
Extraccion automatica
/entity-extractEl sistema usa el LLM para identificar entidades en el texto de las evidencias y las normaliza automaticamente antes de guardarlas en SQLite.
Deduplicacion
Antes de insertar una entidad, el sistema comprueba si ya existe una entidad “similar”:
- Mismo tipo + mismo identificador normalizado → actualiza, no duplica
- Umbral de similitud configurable para nombres (Levenshtein)
Gestion manual
/db-manage merge-entities --id1 ent_001 --id2 ent_002/db-manage update-entity --id ent_001 --field name --value "Juan Garcia Lopez"/db-manage delete-entity --id ent_003Relaciones entre entidades
Ademas de los tipos de entidad, se pueden registrar relaciones:
| Relacion | Ejemplo |
|---|---|
owns | Persona X posee Empresa Y |
controls | Empresa A controla Empresa B |
member_of | Persona X es miembro de Organizacion Y |
located_at | Empresa X ubicada en Location Y |
registered_in | Empresa X registrada en Domain Y |
uses | Actor X usa UserAccount Y |
associated_with | IP X asociada a Domain Y |
Schema en SQLite
La base de datos osint_ai.db tiene 8 tablas principales:
investigations -- Metadatos de investigacionesevidences -- Documentos ingresados con SHA-256entities -- Entidades extraidas (tipo + valor + metadatos)relationships -- Relaciones entre entidadesclaims -- Afirmaciones con trazabilidadalerts -- Alertas programadasentity_mentions -- Menciones de entidades en evidenciassessions -- Sesiones de trabajoVer Referencia → Tipos de entidad FTM para el schema completo.