`/v1/onomastico/{forma}`
WK-ONOM-001· E-91-3 · 22/09/2026 21:47 · Karb and Sil · CC BY 4.0. Diseño y decisiones:dev/diccionario/docs/onomastico.md.
Qué hace. Dice si una forma es un nombre de pila, un apellido, un lugar (país, comunidad, provincia, ciudad, municipio, río, mar, sierra…) o la variante de otro nombre, y lo que se sabe de cada uno. Vive en tablas aparte del léxico (esquema onomastico de lexico, cargado por E-91-1 desde el INE y E-91-2 desde el IGN). Es la segunda llamada del lematizador: cuando /v1/morfologia/lematizar no encuentra una palabra, pregunta aquí y añade onomastico a su respuesta sin cambiar el contrato de siempre.
Reglas de la casa que aplica. El género solo en las personas (genero: m, f, ambos). En los lugares no hay género: hay elipsis del artículo («el río Ebro» → «el Ebro»), y lo que se devuelve es elidido (el sustantivo que se calla). Los gentilicios no van aquí: son palabras del léxico («conquense») y las conoce el lematizador (Eduardo, 22/09/2026). Toda entrada lleva fuente.
Ejemplo.
GET /v1/onomastico/Cuenca
{"forma":"Cuenca","normalizada":"cuenca","encontrado":true,"entradas":[
{"clase":"apellido","forma":"Cuenca","frecuencia":{"primero":12000,"segundo":12500,"ambos":300},"fuente":"INE censo 01/01/2025"},
{"clase":"provincia","forma":"Cuenca","elidido":null,"en":"Castilla-La Mancha","fuente":"IGN NGBE"},
{"clase":"ciudad","forma":"Cuenca","elidido":"ciudad","en":"Cuenca","fuente":"IGN NGBE"}]}
Si no hay nada: encontrado=false, entradas=[]. Si el esquema aún no está cargado en esa base: además nota, y la API sigue viva.
Cómo está hecho. onomastico.py: normaliza() (minúsculas, sin tildes, con ñ; la misma regla que la columna forma_norm de las tablas) y buscar() (una consulta por tabla, por forma_norm). Tests en tests/test_onomastico.py con cursor de mentira: normalización, orden de clases, elipsis, variantes, esquema ausente, y la segunda llamada del lematizador.
Benchmark. No hay alternativa que haga esto con nuestros datos (INE + IGN); cuando la haya, se mide aquí con el patrón de benchmarks.md.