food-safety
收藏资源简介:
餐厅菜单披露信息的开放数据集,涵盖14种欧盟过敏原组和Menuella声明,包含代码、图标和6种语言的标签,由稳定的语义键标识。
An open dataset for restaurant menu disclosure information, encompassing 14 EU allergen groups and Menuella declarations, with codes, icons, and six-language labels identified by stable semantic keys.
数据集详情:@menuella/food-safety
数据集概述
这是一个开放式的餐厅菜单披露(Restaurant Menu Disclosures) 数据集,涵盖欧盟14类过敏原组(EU allergen groups)和 Menuella 标准声明(Menuella Declarations),提供代码、图标及6种语言的标签,并以稳定的语义键(semantic keys)作为唯一标识。其核心理念是“存储语义键,渲染代码,绝不要反过来”。
核心标准
数据集的词汇表由五个部分组成:
- Menuella 过敏原键:28个语义键,覆盖欧盟14个过敏原组
- Menuella 声明:22个键,涵盖添加剂、饮料声明、警告和产品指示
- Menuella 代码:用于菜单图例的短代码,例如
WHEAT对应A6 - Menuella 图标:15个实心图形,每组一个
- Menuella 翻译:6种语言的本地化标签
数据结构
| 模块 | 结构文件 | 条目数量 | 来源 |
|---|---|---|---|
| 过敏原(Allergens) | data/allergens.json | 28个键 / 14个组 | EU 法规 1169/2011 附件 II(LMIV) |
| Menuella 声明 | data/declarations.json | 22个键 | Menuella 标准 |
过敏原:28个键而非14组
- 法律规定的14组中,“谷物”(CEREALS)和“坚果”(TREE_NUTS)不能仅以组名声明,需具体列出成员:
- CEREALS 拆分为 8 个具体谷物:黑麦、大麦、二粒小麦、单粒小麦、斯佩耳特小麦、小麦、燕麦、卡姆小麦
- TREE_NUTS 拆分为 8 种具体坚果:夏威夷果、杏仁、巴西坚果、碧根果、开心果、核桃、腰果、榛子
- 其余 12 组各对应 1 个键:甲壳类、蛋类、鱼类、花生、大豆、牛奶、芹菜、芥末、芝麻、亚硫酸盐、羽扇豆、软体动物
- 数据结构中
group和isMember字段维护分组关系,declaration为组级声明语句,每组渲染一次,成员列于其下。
Menuella 声明
22个声明键覆盖添加剂声明、饮料声明、强制警告及其他产品特定指示,通过 category 字段区分为 ADDITIVE、BEVERAGE、WARNING、PRODUCT 四类。该词汇受德国餐厅菜单实践的启发并进行泛化,其设计目标是可移植性和一致性,不代表任何国家的官方法律术语。
语言支持
支持6种语言,每种语言下28个过敏原和22个声明均完整包含名称、描述及(过敏原的)组级声明语句:
| 代码 | 语言 |
|---|---|
de |
德语 |
en |
英语 |
es |
西班牙语 |
fr |
法语 |
it |
意大利语 |
tr |
土耳其语 |
设计原则
- 语义键而非代码:所有条目使用稳定语义键(如
WHEAT、SESAME、NITRITE_CURING_SALT)标识,绝不使用数字或字母作为身份。菜单上的短代码(如A6)在不同印刷商或地区间并不标准化,因此仅作为渲染约定,与数据身份分离。 - 多语言中立:数据集不包含特定国家的法律术语,同一组键可用于维也纳、里昂或都柏林的菜单,代码中无需按国家分支。
- 版本稳定性:键和
canonicalKey值被保证永不重命名或重用,是稳定标识符。
明确排除的内容
- 代码作为标识符(代码仅用于渲染)
- 原料到键的映射关系(该映射属于策展范畴,需自行构建或使用 Menuella 服务)
- 偏好、生活方式和口味词汇(如素食、清真、辣度)
- 营养价值和原产地信息
- 工业/包装标签规则
- 制造商特定标签
- 运行时代码、解析器或服务器
安装与使用
数据集以多语言包形式发布,支持 npm、NuGet、Dart、Python、PHP、Rust、Ruby、Go、Swift、Gradle 等生态。一个数据集、一个版本、从一个标签发布。
版本管理
采用保守的语义化版本控制:
- 主版本(MAJOR):破坏性架构变更(尽可能避免)
- 次版本(MINOR):新语言、新模块、新条目
- 补丁版本(PATCH):翻译修正、错别字修正、描述澄清
生产环境建议锁定主版本。
许可
采用 MIT 许可证,允许使用、分叉并嵌入商业产品。若将文件嵌入自有仓库,需保留许可证副本或注明出处;通过 npm 安装则无需额外操作。





