Skip to content

Logical Error in BIRD-DEV Ground Truth SQL (Question ID: 207) #227

Description

@Chen-SiDa

👋
你们好!感谢团队为 Text-to-SQL 领域提供了如此优秀的数据集。
我在分析评测数据时,发现 BIRD-DEV 数据集中 question_id: 207 的标准答案存在表连接的逻辑错误,这会导致它返回错误的数据。

🐛

  • Database: toxicology
  • Question ID: 207
  • Question: "What elements are in a double type bond?"
  • Evidence: "double type bond refers to bond_type = '=';"

❌ 当前的 Ground Truth SQL

SELECT DISTINCT T1.element 
FROM atom AS T1 
INNER JOIN bond AS T2 ON T1.molecule_id = T2.molecule_id 
INNER JOIN connected AS T3 ON T1.atom_id = T3.atom_id 
WHERE T2.bond_type = '='

🔍 错误分析
当前的 SQL 使用了 molecule_idatom(原子表)和 bond(化学键表)进行了直接关联 (T1.molecule_id = T2.molecule_id)。

  1. 逻辑漏洞:这种连接方式的真实语义是:“找出包含双键的分子,并返回该分子内的所有原子”。
  2. 化学常识冲突:假设数据库中存在一个丙烯(C3H6)分子,它包含碳碳双键(C=C),但也包含单键连接的氢原子(H)。按照当前 GT SQL 的逻辑,由于它们同属一个 molecule_id,未参与双键的氢元素(H)也会被错误地作为“处于双键中的元素”返回。而题目实际询问的是精确构成了双键的元素。
  3. connected 表在当前 SQL 中仅仅验证了原子“存在连接”,并没有发挥其作为“图关系边”映射具体化学键的作用。

✅ 修复建议
正确的逻辑应当通过关系表 connected 作为桥梁,实现 原子 (atom) -> 连接关系 (connected) -> 具体的键 (bond) 的映射。

建议将 Ground Truth 替换为以下 SQL:

SELECT DISTINCT T1.element
FROM atom AS T1
JOIN connected AS T2 ON T1.atom_id = T2.atom_id
JOIN bond AS T3 ON T2.bond_id = T3.bond_id
WHERE T3.bond_type = '='

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions