Dictionnaire de données · snapshot 2026.09

Spécification du schéma relationnel

Cinq tables, exportées en CSV UTF-8 délimité par des barres verticales et en Apache Parquet, avec des colonnes identiques. Chaque colonne d’enrichissement est soit renseignée à partir d’une source publique nommée via une jointure documentée, soit NULL. Il n’y a ni valeurs par défaut ni lignes fictives.

TableLignes
products18 583
brands5 925
ingredients46 973
product_ingredients318 758
ingredient_name_map55 426

1. brands

5 925 identités de marque telles qu’enregistrées dans Open Beauty Facts.

ChampTypeDescriptionExemple
brand_idINTEGERClé primaire1
nameSTRINGNom de la marque tel qu’enregistré à la sourceLaneige

2. products

18 583 produits, une ligne chacun, tous dotés d’une liste des ingrédients exploitable sur l’emballage.

ChampTypeDescriptionExemple
product_idINTEGERClé primaire68597
brand_idINTEGERFK → brands.brand_id. NULL lorsque l’étiquette source n’indique aucune marque55
barcode_eanSTRINGCode-barres GTIN / EAN4006381333931
nameSTRINGNom du produit tel qu’enregistré à la sourceGood Genes Lactic Acid Treatment
obf_categories_tagsSTRINGListe de tags propre à Open Beauty Facts, jointe par ;, telle quelle — présente sur 12 860 des 18 583 produits (69,2%), NULL lorsque la source n’en a pasen:hygiene;en:soaps
raw_ingredient_textSTRINGLa déclaration non analysée, conservée telle quelle pour que l’analyse puisse être refaiteWater, Glycerin, ...
created_atSTRINGHorodatage d’ingestion (ISO 8601)2026-07-02T14:01:48Z

3. ingredients

Une ligne par nom INCI canonique distinct — 46 973 au total. Chaque colonne issue de CosIng n’est renseignée que si le nom canonique correspond exactement à un nom de l’inventaire CosIng de la Commission européenne, et vaut NULL sinon.

ChampTypeSourceDescription
ingredient_idINTEGERClé primaire
inci_nameSTRINGcanonicalisationLe nom canonique vers lequel chaque token brut d’étiquette a été résolu
cosing_matchedINTEGERCosIng1 lorsque le nom canonique correspond à l’inventaire. Conditionne toutes les colonnes CosIng ci-dessous
cosing_ref_noSTRINGCosIngNuméro de référence CosIng
cas_numberSTRINGCosIngNuméro CAS — uniquement issu de CosIng, jamais déduit
ec_numberSTRINGCosIngNuméro CE
functionsSTRINGCosIngCatégories fonctionnelles CosIng, multivaluées, séparées par ;
chemical_descriptionSTRINGCosIngTexte de description chimique / IUPAC issu de CosIng
cosing_restrictionSTRINGCosIngRéférence de la restriction, par ex. une entrée de l’annexe V
cosing_update_dateSTRINGCosIngToujours NULL dans ce snapshot — l’export ne comporte aucune date de mise à jour
annex_iiannex_viFLOATCosIngAppartenance aux annexes II (substances interdites), III (soumises à restrictions), IV (colorants), V (conservateurs), VI (filtres UV)
is_common_allergenINTEGERAnnexe III (UE)Indicateur d’allergène parfumant (UE) — voir la note de méthode ci-dessous
allergen_sourceSTRINGAnnexe III (UE)La liste dont provient un indicateur
comedogenic_ratingFLOATauthoredNote 0–5 pour les ingrédients couverts par l’article cité ; NULL sinon
is_fungal_acne_triggerFLOATruleIndicateur dérivé d’une règle — une heuristique, pas une propriété mesurée
rating_sourceSTRINGauthored / ruleLa citation ou le texte de règle, ligne par ligne, à l’origine des deux colonnes ci-dessus

Couverture mesurée des colonnes CosIng

ColonnePart des 46 973 noms distinctsPart des 318 758 occurrences sur les étiquettes
Correspondance CosIng (toutes)11,0%82,5%
functions10,9%81,5%
cas_number8,3%76,4%
chemical_description8,5% · 3 965 valeurs distinctes
La colonne de gauche compte les noms distincts ; celle de droite, les occurrences d’ingrédients sur les étiquettes de produits. Elles diffèrent d’un ordre de grandeur, car un corpus d’étiquettes contient bien plus de chaînes distinctes — variantes botaniques, graphies multilingues, tokens marketing — qu’aucun inventaire réglementaire n’en répertorie, tandis que les emplacements d’une étiquette réelle sont très majoritairement occupés par des ingrédients que CosIng couvre effectivement. Aucun des deux chiffres ne décrit à lui seul les données. ec_number, cosing_restriction et les indicateurs d’annexe ne sont renseignés que sur le sous-ensemble apparié à CosIng, chacun à son propre taux — voir le build_report.json livré avec l’archive.
Méthode — indicateurs d’allergènes. Une seule liste : les allergènes parfumants de l’annexe III du règlement cosmétique de l’UE (règlement (CE) 1223/2009 modifié par le règlement (UE) 2023/1545), appariés sur le nom canonique exact. 99 noms sont signalés. La FDA américaine n’a pas encore publié sa liste d’allergènes parfumants au titre du MoCRA ; ce jeu de données ne comporte donc aucun indicateur américain.
Méthode — indices de comédogénicité. 145 ingrédients ont une note sur l’échelle 0–5, retranscrite du tableau I (p. 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. Lorsque l’article indique une plage plutôt qu’une note unique, la note est laissée à NULL. L’absence de note signifie « non couvert par la source citée », jamais « sans risque ».
Méthode — indicateur d’acné fongique. Une heuristique dérivée d’une règle, pas une propriété mesurée : il n’existe aucun test de Malassezia par ingrédient à retranscrire. La règle signale les acides gras C11–C24 et leurs esters, ainsi que les polysorbates 20/40/60/80, et ne s’applique qu’aux ingrédients appariés à CosIng, ce qui donne 270 indicateurs. Fondement : Saunte et al., Front Cell Infect Microbiol 2020 (DOI 10.3389/fcimb.2020.00112), avec la fenêtre de longueur de chaîne de Liebregts et al., FEMS Yeast Res 2025 (DOI 10.1093/femsyr/foaf043). Les huiles, beurres et cires spécifiques ne sont pas signalés — la littérature ne permet pas de se prononcer à leur sujet au niveau de l’ingrédient.

4. product_ingredients

318 758 liens de composition ordonnés, qui conservent l’ordre dans lequel les ingrédients sont déclarés sur l’étiquette.

ChampTypeDescriptionExemple
product_idINTEGERFK → products.product_id68597
ingredient_idINTEGERFK → ingredients.ingredient_id1214
position_indexINTEGERPosition sur l’étiquette (numérotée à partir de 1) ; plus elle est basse, plus l’ingrédient est déclaré tôt, c’est-à-dire présent en plus forte proportion1
concentration_percentageSTRINGToujours NULL dans ce snapshot — les étiquettes n’indiquent presque jamais de pourcentages

5. ingredient_name_map

55 426 lignes : les preuves de la canonicalisation, livrées avec les données pour que chaque décision du pipeline puisse être auditée ou corrigée.

ChampTypeDescriptionExemple
raw_nameSTRINGLe token tel qu’il apparaissait dans products.raw_ingredient_textAQUA (WATER)
canonical_nameSTRINGLe nom INCI canonique vers lequel il a été résoluAQUA
methodSTRINGMode de résolution — voir ci-dessousparen_stripped
confidenceFLOATNiveau de confiance associé à la méthode0.9
ingredient_idINTEGERFK → ingredients.ingredient_id162
methodSignification
exactLe token nettoyé est déjà un nom de l’inventaire CosIng
cleanedRésolu après décodage des entités, suppression de caractères et réduction des espaces
typo_mapRésolu via une petite table de fautes de frappe explicite et sourcée
percent_strippedUn pourcentage déclaré a été supprimé
paren_strippedUn contenu entre parenthèses a été supprimé
synonym_mapRésolu via une table de synonymes explicite
slash_variantUne variante multilingue séparée par une barre oblique
splitUn token accolé scindé en deux noms, tous deux présents dans l’inventaire
unresolvedAucune correspondance canonique — conservé tel quel et signalé, jamais deviné
unresolved est la catégorie la plus importante en tokens distincts et une petite catégorie en occurrences sur les étiquettes — le même effet de longue traîne qui produit les deux colonnes de couverture ci-dessus.