Diccionario de datos · snapshot 2026.09

Especificación del esquema relacional

Cinco tablas, exportadas como CSV UTF-8 delimitado por barras verticales y Apache Parquet, con columnas idénticas. Cada columna de enriquecimiento se completa a partir de una fuente pública identificada con una unión documentada, o es NULL. No hay valores predeterminados ni filas de relleno.

TablaFilas
products18.583
brands5.925
ingredients46.973
product_ingredients318.758
ingredient_name_map55.426

1. brands

5.925 identidades de marca tal como constan en Open Beauty Facts.

CampoTipoDescripciónEjemplo
brand_idINTEGERClave primaria1
nameSTRINGNombre de la marca tal como consta en la fuenteLaneige

2. products

18.583 productos, una fila cada uno, todos con una lista de ingredientes utilizable en el envase.

CampoTipoDescripciónEjemplo
product_idINTEGERClave primaria68597
brand_idINTEGERFK → brands.brand_id. NULL cuando la etiqueta de origen no registra marca55
barcode_eanSTRINGCódigo de barras GTIN / EAN4006381333931
nameSTRINGNombre del producto tal como consta en la fuenteGood Genes Lactic Acid Treatment
obf_categories_tagsSTRINGLa lista de etiquetas propia de Open Beauty Facts, unida con ;, literal; presente en 12.860 de 18.583 productos (69,2%), NULL cuando la fuente no tiene ningunaen:hygiene;en:soaps
raw_ingredient_textSTRINGLa declaración sin analizar, conservada literalmente para que el análisis pueda volver a derivarseWater, Glycerin, ...
created_atSTRINGMarca de tiempo de ingesta (ISO 8601)2026-07-02T14:01:48Z

3. ingredients

Una fila por nombre INCI canónico distinto, 46.973 en total. Cada columna derivada de CosIng se completa solo cuando el nombre canónico coincide exactamente con un nombre del inventario CosIng de la Comisión Europea, y es NULL en caso contrario.

CampoTipoFuenteDescripción
ingredient_idINTEGERClave primaria
inci_nameSTRINGcanonicalizaciónEl nombre canónico en el que se resolvió cada token original de etiqueta
cosing_matchedINTEGERCosIng1 cuando el nombre canónico coincidió con el inventario. Condiciona todas las columnas CosIng siguientes
cosing_ref_noSTRINGCosIngNúmero de referencia de CosIng
cas_numberSTRINGCosIngNúmero de registro CAS: solo de CosIng, nunca inferido
ec_numberSTRINGCosIngNúmero CE
functionsSTRINGCosIngCategorías funcionales de CosIng, multivalor, separadas por ;
chemical_descriptionSTRINGCosIngTexto de descripción química / IUPAC de CosIng
cosing_restrictionSTRINGCosIngReferencia de restricción, p. ej. una entrada del anexo V
cosing_update_dateSTRINGCosIngSiempre NULL en este snapshot: la exportación no incluye fecha de actualización
annex_iiannex_viFLOATCosIngPertenencia a los anexos II (prohibidas), III (restringidas), IV (colorantes), V (conservantes), VI (filtros UV)
is_common_allergenINTEGERAnexo III de la UEIndicador de alérgeno de fragancia de la UE: ver la nota de método más abajo
allergen_sourceSTRINGAnexo III de la UELa lista de la que procede un indicador
comedogenic_ratingFLOATauthoredCalificación 0–5 para los ingredientes que abarca el artículo citado; NULL en los demás casos
is_fungal_acne_triggerFLOATruleIndicador derivado de reglas: una heurística, no una propiedad medida
rating_sourceSTRINGauthored / ruleLa cita o el texto de la regla, por fila, en que se basan las dos columnas anteriores

Cobertura medida de las columnas CosIng

ColumnaProporción de los 46.973 nombres distintosProporción de las 318.758 apariciones en etiquetas
Coincidencia CosIng (cualquiera)11,0%82,5%
functions10,9%81,5%
cas_number8,3%76,4%
chemical_description8,5% · 3.965 valores distintos
La columna izquierda cuenta nombres distintos; la derecha, apariciones de ingredientes en las etiquetas de productos. Difieren en un orden de magnitud porque un corpus de etiquetas contiene muchas más cadenas distintas (variantes botánicas, grafías en varios idiomas, términos de marketing) de las que incluye cualquier inventario regulatorio, mientras que los huecos de una etiqueta real los ocupan de forma abrumadora ingredientes que CosIng sí cubre. Ninguna de las dos cifras por sí sola describe los datos. ec_number, cosing_restriction y los indicadores de anexos solo se completan en el subconjunto con coincidencia en CosIng, cada uno con su propia tasa: consulta el build_report.json incluido en el archivo.
Método: indicadores de alérgenos. Una sola lista: los alérgenos de fragancia del anexo III del Reglamento de Cosméticos de la UE (Reglamento (CE) 1223/2009, modificado por el Reglamento (UE) 2023/1545), con coincidencia exacta del nombre canónico. Hay 99 nombres marcados. La FDA de EE. UU. aún no ha publicado su lista de alérgenos de fragancia de MoCRA, por lo que este conjunto de datos no incluye ningún indicador estadounidense.
Método: índices comedogénicos. 145 ingredientes tienen una calificación en la escala 0–5, transcrita de la Tabla I (págs. 324–326) de Fulton JE Jr., Comedogenicity and irritancy of commonly used ingredients in skin care products, J Soc Cosmet Chem 1989;40:321–333. Cuando el artículo indica un rango en lugar de una calificación única, el índice se deja NULL. La ausencia de calificación significa "no cubierto por la fuente citada", nunca "seguro".
Método: indicador de acné fúngico. Una heurística derivada de reglas, no una propiedad medida: no existe ningún ensayo de Malassezia por ingrediente que transcribir. La regla marca los ácidos grasos C11–C24 y sus ésteres, y los polisorbatos 20/40/60/80, aplicada solo a ingredientes con coincidencia en CosIng, con 270 indicadores. Base: Saunte et al., Front Cell Infect Microbiol 2020 (DOI 10.3389/fcimb.2020.00112), con la ventana de longitud de cadena de Liebregts et al., FEMS Yeast Res 2025 (DOI 10.1093/femsyr/foaf043). No se marcan aceites, mantecas ni ceras concretos: la bibliografía no respalda conclusiones a nivel de ingrediente sobre ellos.

4. product_ingredients

318.758 enlaces de composición ordenados, que conservan el orden en que se declaran los ingredientes en la etiqueta.

CampoTipoDescripciónEjemplo
product_idINTEGERFK → products.product_id68597
ingredient_idINTEGERFK → ingredients.ingredient_id1214
position_indexINTEGERPosición en la etiqueta (contando desde 1); cuanto más baja, antes se declara, es decir, mayor proporción1
concentration_percentageSTRINGSiempre NULL en este snapshot: las etiquetas casi nunca declaran porcentajes

5. ingredient_name_map

55.426 filas: la evidencia de la canonicalización, entregada con los datos para que cada decisión del pipeline pueda auditarse o corregirse.

CampoTipoDescripciónEjemplo
raw_nameSTRINGEl token tal como aparecía en products.raw_ingredient_textAQUA (WATER)
canonical_nameSTRINGEl nombre INCI canónico en el que se resolvióAQUA
methodSTRINGCómo se resolvió: ver más abajoparen_stripped
confidenceFLOATConfianza asociada al método0.9
ingredient_idINTEGERFK → ingredients.ingredient_id162
methodSignificado
exactEl token limpio ya es un nombre del inventario CosIng
cleanedResuelto tras decodificar entidades, eliminar caracteres y compactar espacios
typo_mapResuelto mediante una tabla de erratas pequeña, explícita y con fuentes citadas
percent_strippedSe eliminó un porcentaje declarado
paren_strippedSe eliminó un texto entre paréntesis
synonym_mapResuelto mediante una tabla explícita de sinónimos
slash_variantUna variante multilingüe unida por barra
splitUn token con palabras unidas, dividido en dos nombres que coinciden ambos con el inventario
unresolvedSin coincidencia canónica: se conserva literalmente y se marca, nunca se adivina
unresolved es el grupo más grande por token distinto y uno pequeño por aparición en etiquetas: el mismo efecto de cola larga que produce las dos columnas de cobertura anteriores.