Datenwörterbuch · Snapshot 2026.09

Spezifikation des relationalen Schemas

Fünf Tabellen, exportiert als pipe-getrenntes UTF-8-CSV und Apache Parquet mit identischen Spalten. Jede Anreicherungsspalte ist entweder aus einer benannten öffentlichen Quelle mit dokumentiertem Join befüllt oder NULL. Es gibt keine Standardwerte und keine Platzhalterzeilen.

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

1. brands

5.925 Markenidentitäten wie in Open Beauty Facts erfasst.

FeldTypBeschreibungBeispiel
brand_idINTEGERPrimärschlüssel1
nameSTRINGMarkenname wie in der Quelle erfasstLaneige

2. products

18.583 Produkte, je eine Zeile, jedes mit einer verwertbaren Zutatenliste auf der Verpackung.

FeldTypBeschreibungBeispiel
product_idINTEGERPrimärschlüssel68597
brand_idINTEGERFK → brands.brand_id. NULL, wenn das Quelletikett keine Marke angibt55
barcode_eanSTRINGGTIN/EAN-Barcode4006381333931
nameSTRINGProduktname wie in der Quelle erfasstGood Genes Lactic Acid Treatment
obf_categories_tagsSTRINGDie eigene Tag-Liste von Open Beauty Facts, verbunden mit ;, unverändert — vorhanden bei 12.860 von 18.583 Produkten (69,2%), NULL, wo die Quelle keine haten:hygiene;en:soaps
raw_ingredient_textSTRINGDie ungeparste Deklaration, wörtlich beibehalten, damit sich das Parsing nachvollziehen lässtWater, Glycerin, ...
created_atSTRINGZeitstempel der Erfassung (ISO 8601)2026-07-02T14:01:48Z

3. ingredients

Eine Zeile pro eindeutigem kanonischem INCI-Namen — 46.973 insgesamt. Jede aus CosIng abgeleitete Spalte ist nur befüllt, wenn der kanonische Name exakt mit einem Namen im CosIng-Verzeichnis der Europäischen Kommission übereinstimmt, und andernfalls NULL.

FeldTypQuelleBeschreibung
ingredient_idINTEGERPrimärschlüssel
inci_nameSTRINGKanonisierungDer kanonische Name, dem jedes rohe Etikett-Token zugeordnet wurde
cosing_matchedINTEGERCosIng1, wenn der kanonische Name im Verzeichnis gefunden wurde. Steuert alle CosIng-Spalten darunter
cosing_ref_noSTRINGCosIngCosIng-Referenznummer
cas_numberSTRINGCosIngCAS-Registrierungsnummer — nur aus CosIng, niemals abgeleitet
ec_numberSTRINGCosIngEG-Nummer
functionsSTRINGCosIngCosIng-Funktionskategorien, mehrwertig, durch ; getrennt
chemical_descriptionSTRINGCosIngChemische / IUPAC-Beschreibung aus CosIng
cosing_restrictionSTRINGCosIngVerweis auf die Beschränkung, z. B. ein Eintrag in Anhang V
cosing_update_dateSTRINGCosIngIn diesem Snapshot immer NULL — der Export enthält kein Aktualisierungsdatum
annex_iiannex_viFLOATCosIngZugehörigkeit zu den Anhängen II (verboten), III (eingeschränkt), IV (Farbstoffe), V (Konservierungsstoffe), VI (UV-Filter)
is_common_allergenINTEGEREU-Anhang IIIEU-Markierung für Duftstoffallergene — siehe Methodenhinweis unten
allergen_sourceSTRINGEU-Anhang IIIDie Liste, aus der eine Markierung stammt
comedogenic_ratingFLOATauthoredBewertung 0–5 für die Inhaltsstoffe, die die zitierte Arbeit abdeckt; sonst NULL
is_fungal_acne_triggerFLOATruleRegelbasierte Markierung — eine Heuristik, keine gemessene Eigenschaft
rating_sourceSTRINGauthored / ruleDie Quellenangabe oder der Regeltext pro Zeile hinter den beiden Spalten oben

Gemessene Abdeckung der CosIng-Spalten

SpalteAnteil der 46.973 eindeutigen NamenAnteil der 318.758 Vorkommen auf Etiketten
CosIng-Treffer (beliebig)11,0%82,5%
functions10,9%81,5%
cas_number8,3%76,4%
chemical_description8,5% · 3.965 eindeutige Werte
Die linke Spalte zählt eindeutige Namen; die rechte zählt Inhaltsstoffvorkommen auf Produktetiketten. Sie unterscheiden sich um eine Größenordnung, weil ein Etikettenkorpus weit mehr eindeutige Zeichenketten enthält — botanische Varianten, mehrsprachige Schreibweisen, Marketing-Begriffe — als jedes regulatorische Verzeichnis führt, während die Positionen auf einem realen Etikett ganz überwiegend von Inhaltsstoffen belegt werden, die CosIng abdeckt. Keine der beiden Zahlen allein beschreibt die Daten. ec_number, cosing_restriction und die Anhang-Markierungen sind nur für die in CosIng gefundene Teilmenge befüllt, jeweils mit eigener Rate — siehe die mit dem Archiv gelieferte build_report.json.
Methode — Allergen-Markierungen. Nur eine Liste: die Duftstoffallergene aus Anhang III der EU-Kosmetikverordnung (Verordnung (EG) 1223/2009, geändert durch Verordnung (EU) 2023/1545), abgeglichen über den exakten kanonischen Namen. 99 Namen sind markiert. Die US-amerikanische FDA hat ihre MoCRA-Liste der Duftstoffallergene noch nicht veröffentlicht, daher enthält dieser Datensatz keine US-Markierung.
Methode — Komedogenitätsbewertungen. 145 Inhaltsstoffe tragen eine Bewertung auf der Skala 0–5, übernommen aus Table I (S. 324–326) von Fulton JE Jr., Comedogenicity and irritancy of commonly used ingredients in skin care products, J Soc Cosmet Chem 1989;40:321–333. Wo die Arbeit statt eines einzelnen Grades einen Bereich angibt, bleibt die Bewertung NULL. Das Fehlen einer Bewertung bedeutet „von der zitierten Quelle nicht abgedeckt“, niemals „unbedenklich“.
Methode — Pilzakne-Markierung. Eine regelbasierte Heuristik, keine gemessene Eigenschaft: Es gibt keinen Malassezia-Test pro Inhaltsstoff, der übernommen werden könnte. Die Regel markiert C11–C24-Fettsäuren und deren Ester sowie Polysorbate 20/40/60/80, nur auf in CosIng gefundene Inhaltsstoffe angewendet, und ergibt 270 Markierungen. Grundlage: Saunte et al., Front Cell Infect Microbiol 2020 (DOI 10.3389/fcimb.2020.00112), mit dem Kettenlängenfenster aus Liebregts et al., FEMS Yeast Res 2025 (DOI 10.1093/femsyr/foaf043). Bestimmte Öle, Butter und Wachse werden nicht markiert — die Literatur stützt keine Aussagen auf Ebene einzelner Inhaltsstoffe für sie.

4. product_ingredients

318.758 geordnete Zusammensetzungsverknüpfungen, die die Reihenfolge erhalten, in der die Inhaltsstoffe auf dem Etikett deklariert sind.

FeldTypBeschreibungBeispiel
product_idINTEGERFK → products.product_id68597
ingredient_idINTEGERFK → ingredients.ingredient_id1214
position_indexINTEGERPosition auf dem Etikett, ab 1 gezählt; niedriger bedeutet früher deklariert, d. h. in einem höheren Anteil enthalten1
concentration_percentageSTRINGIn diesem Snapshot immer NULL — Etiketten geben so gut wie nie Prozentangaben an

5. ingredient_name_map

55.426 Zeilen: die Belege der Kanonisierung, mit den Daten ausgeliefert, damit jede Entscheidung der Pipeline geprüft oder übersteuert werden kann.

FeldTypBeschreibungBeispiel
raw_nameSTRINGDas Token, wie es in products.raw_ingredient_text vorkamAQUA (WATER)
canonical_nameSTRINGDer kanonische INCI-Name, dem es zugeordnet wurdeAQUA
methodSTRINGWie es aufgelöst wurde — siehe untenparen_stripped
confidenceFLOATDer Methode zugeordnete Konfidenz0.9
ingredient_idINTEGERFK → ingredients.ingredient_id162
methodBedeutung
exactDas bereinigte Token ist bereits ein Name im CosIng-Verzeichnis
cleanedAufgelöst nach Entity-Dekodierung, Entfernen von Zeichen und Zusammenfassen von Leerraum
typo_mapÜber eine kleine, explizite, belegte Tippfehlertabelle aufgelöst
percent_strippedEine deklarierte Prozentangabe wurde entfernt
paren_strippedEin Klammerausdruck wurde entfernt
synonym_mapÜber eine explizite Synonymtabelle aufgelöst
slash_variantEine mehrsprachige Variante mit Schrägstrich
splitEin zusammengeschriebenes Token, aufgeteilt in zwei Namen, die beide im Verzeichnis gefunden wurden
unresolvedKeine kanonische Entsprechung — wörtlich beibehalten und markiert, niemals geraten
unresolved ist nach eindeutigen Tokens die größte Gruppe und nach Vorkommen auf Etiketten eine kleine — derselbe Long-Tail-Effekt, der die beiden Abdeckungsspalten oben erzeugt.