每条数据都要能回答:它从哪里来
在 MolScience 中,来源不是附注,而是数据模型的一部分。
在一个化学数据库里,数字看起来都一样:熔点 135.0,分子量 180.16,logP 1.31。但它们的证据强度可能完全不同。
三种数字,不是一种事实
- 实验测量:在特定条件、仪器和样品下得到的观测值,通常伴随误差与实验条件。
- 软件计算:由明确的算法和参数得到的结果,可复现,但依赖模型假设。
- 模型预测:从数据中学习到的估计,适用范围由训练数据和方法决定。
如果数据库只保存最后的数值,使用者就无法判断它能否用于自己的问题。更糟的是,预测值可能被后续使用者当作实验事实继续引用,误差在传播中被隐藏。
一条记录需要保留什么
我们把来源信息当作记录的一部分,而不是页面底部的脚注。当前设计中,一条性质记录至少需要关联以下字段:
- 来源类型与引用:实验文献、数据库、软件或模型。
- 方法与版本:实验条件、算法、参数或模型版本。
- 原始值与单位:保留原始表达,避免转换过程不可逆。
- 许可与可用范围:外部数据是否允许再分发。
- 质量标记:缺失、冲突、异常或尚未核验。
{ "entity": "molecule:aspirin", "property": "melting_point", "value": 135.0, "unit": "°C", "source": { "type": "experiment", "reference": "literature:...", "method": "capillary melting point" }, "quality": "unverified", "version": "2026-11"}冲突怎么办
不同来源给出不同数值时,最方便的做法是取平均,最诚实的做法是保留差异。我们倾向于后者:让每条记录带着自己的来源并存,并允许使用者按来源、方法或质量筛选。
这会让界面和查询更复杂,也会让“一个分子一个值”的期待落空。但化学数据本来就不是这样工作的。数据库的职责不是制造唯一答案,而是让差异可见。
我们还在学习如何把这件事做得更好。数据模型会变化,规则会被推翻,部分判断仍然需要化学知识。把过程记录下来,至少能让后来者知道我们为什么这样选择。
