Dicionário de dados · snapshot 2026.09

Especificação do esquema relacional

Cinco tabelas, exportadas em CSV delimitado por barra vertical UTF-8 e em Apache Parquet, com colunas idênticas. Cada coluna de enriquecimento é preenchida a partir de uma fonte pública identificada, com uma junção documentada, ou é NULL. Não há valores padrão nem linhas de preenchimento.

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

1. brands

5.925 identidades de marca conforme registradas no Open Beauty Facts.

CampoTipoDescriçãoExemplo
brand_idINTEGERChave primária1
nameSTRINGNome da marca conforme registrado na origemLaneige

2. products

18.583 produtos, uma linha cada, todos com uma lista de ingredientes utilizável na embalagem.

CampoTipoDescriçãoExemplo
product_idINTEGERChave primária68597
brand_idINTEGERFK → brands.brand_id. NULL quando o rótulo de origem não registra marca55
barcode_eanSTRINGCódigo de barras GTIN / EAN4006381333931
nameSTRINGNome do produto conforme registrado na origemGood Genes Lactic Acid Treatment
obf_categories_tagsSTRINGA própria lista de tags do Open Beauty Facts, unida com ;, literalmente — presente em 12.860 de 18.583 produtos (69,2%), NULL quando a fonte não tem nenhumaen:hygiene;en:soaps
raw_ingredient_textSTRINGA declaração não analisada, mantida literalmente para que a análise possa ser refeitaWater, Glycerin, ...
created_atSTRINGData e hora da ingestão (ISO 8601)2026-07-02T14:01:48Z

3. ingredients

Uma linha por nome INCI canônico distinto — 46.973 ao todo. Cada coluna derivada do CosIng só é preenchida quando o nome canônico teve correspondência exata de nome no inventário CosIng da Comissão Europeia; caso contrário, é NULL.

CampoTipoFonteDescrição
ingredient_idINTEGERChave primária
inci_nameSTRINGcanonicalizaçãoO nome canônico em que cada token bruto do rótulo foi resolvido
cosing_matchedINTEGERCosIng1 quando o nome canônico corresponde ao inventário. Condiciona todas as colunas CosIng abaixo
cosing_ref_noSTRINGCosIngNúmero de referência CosIng
cas_numberSTRINGCosIngNúmero de registro CAS — somente do CosIng, nunca inferido
ec_numberSTRINGCosIngNúmero CE
functionsSTRINGCosIngCategorias funcionais do CosIng, multivaloradas, separadas por ;
chemical_descriptionSTRINGCosIngTexto da descrição química / IUPAC do CosIng
cosing_restrictionSTRINGCosIngReferência da restrição, por exemplo, uma entrada do Anexo V
cosing_update_dateSTRINGCosIngSempre NULL neste snapshot — a exportação não traz data de atualização
annex_iiannex_viFLOATCosIngInclusão nos Anexos II (proibidas), III (restritas), IV (corantes), V (conservantes), VI (filtros UV)
is_common_allergenINTEGERAnexo III da UESinalização de alergênico de fragrância da UE — veja a nota de método abaixo
allergen_sourceSTRINGAnexo III da UEA lista de onde veio a sinalização
comedogenic_ratingFLOATauthoredClassificação 0–5 para os ingredientes abrangidos pelo artigo citado; NULL nos demais casos
is_fungal_acne_triggerFLOATruleSinalização derivada de regra — uma heurística, não uma propriedade medida
rating_sourceSTRINGauthored / ruleA citação ou o texto da regra, por linha, por trás das duas colunas acima

Cobertura medida das colunas CosIng

ColunaPercentual dos 46.973 nomes distintosPercentual das 318.758 ocorrências em rótulos
Correspondência CosIng (qualquer)11,0%82,5%
functions10,9%81,5%
cas_number8,3%76,4%
chemical_description8,5% · 3.965 valores distintos
A coluna da esquerda conta nomes distintos; a da direita conta ocorrências de ingredientes nos rótulos dos produtos. Elas diferem em uma ordem de grandeza porque um corpus de rótulos contém muito mais strings distintas — variantes botânicas, grafias multilíngues, tokens de marketing — do que qualquer inventário regulatório lista, enquanto as posições em um rótulo real são preenchidas, em sua esmagadora maioria, por ingredientes que o CosIng cobre. Nenhum dos dois números, isoladamente, descreve os dados. ec_number, cosing_restriction e as sinalizações dos Anexos são preenchidos apenas no subconjunto com correspondência no CosIng, com taxas próprias — consulte o build_report.json incluído no arquivo.
Método — sinalizações de alergênicos. Apenas uma lista: os alergênicos de fragrância do Anexo III do Regulamento de Cosméticos da UE (Regulamento (CE) 1223/2009, alterado pelo Regulamento (UE) 2023/1545), com correspondência pelo nome canônico exato. 99 nomes são sinalizados. A FDA dos EUA ainda não publicou sua lista de alergênicos de fragrância da MoCRA; por isso, este conjunto de dados não traz sinalização dos EUA.
Método — classificações comedogênicas. 145 ingredientes têm classificação na escala 0–5, transcrita da Tabela I (pp. 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. Quando o artigo traz uma faixa em vez de um grau único, a classificação fica NULL. A ausência de classificação significa "não coberto pela fonte citada", nunca "seguro".
Método — sinalização de acne fúngica. Uma heurística derivada de regras, não uma propriedade medida: não existe ensaio de Malassezia por ingrediente que possa ser transcrito. A regra sinaliza ácidos graxos C11–C24 e seus ésteres, e polissorbatos 20/40/60/80, aplicada somente a ingredientes com correspondência no CosIng, gerando 270 sinalizações. Base: Saunte et al., Front Cell Infect Microbiol 2020 (DOI 10.3389/fcimb.2020.00112), com a faixa de comprimento de cadeia de Liebregts et al., FEMS Yeast Res 2025 (DOI 10.1093/femsyr/foaf043). Óleos, manteigas e ceras específicos não são sinalizados — a literatura não sustenta conclusões por ingrediente sobre eles.

4. product_ingredients

318.758 vínculos de composição ordenados, preservando a ordem em que os ingredientes são declarados no rótulo.

CampoTipoDescriçãoExemplo
product_idINTEGERFK → products.product_id68597
ingredient_idINTEGERFK → ingredients.ingredient_id1214
position_indexINTEGERPosição no rótulo (contando a partir de 1); quanto menor, mais cedo foi declarado, ou seja, maior a proporção1
concentration_percentageSTRINGSempre NULL neste snapshot — os rótulos quase nunca declaram percentuais

5. ingredient_name_map

55.426 linhas: a evidência da canonicalização, fornecida com os dados para que cada decisão tomada pelo pipeline possa ser auditada ou substituída.

CampoTipoDescriçãoExemplo
raw_nameSTRINGO token tal como aparecia em products.raw_ingredient_textAQUA (WATER)
canonical_nameSTRINGO nome INCI canônico em que foi resolvidoAQUA
methodSTRINGComo foi resolvido — veja abaixoparen_stripped
confidenceFLOATConfiança associada ao método0.9
ingredient_idINTEGERFK → ingredients.ingredient_id162
methodSignificado
exactO token limpo já é um nome do inventário CosIng
cleanedResolvido após decodificação de entidades, remoção de caracteres e colapso de espaços em branco
typo_mapResolvido por meio de uma pequena tabela explícita de erros de digitação, com citação
percent_strippedUm percentual declarado foi removido
paren_strippedUm trecho entre parênteses foi removido
synonym_mapResolvido por meio de uma tabela explícita de sinônimos
slash_variantUma variante multilíngue unida por barra
splitUm token aglutinado dividido em dois nomes, ambos com correspondência no inventário
unresolvedSem correspondência canônica — mantido literalmente e sinalizado, nunca adivinhado
unresolved é o maior grupo por token distinto e um grupo pequeno por ocorrência nos rótulos — o mesmo efeito de cauda longa que produz as duas colunas de cobertura acima.