关于 sparql-university
指导针对 RDF/Turtle 数据集编写 SPARQL 查询的技能,面向需要完整分析和核验查询结果的人员。它强调先理解数据结构,再逐步构建查询并手动交叉检查结果。
主要功能
- 01确认数据完整并统计实体
- 02梳理类型、属性与关系
- 03拆分筛选条件并逐项测试
- 04逐步构建并校验 SPARQL 查询
- 05检查结果、聚合值与边界条件
适用场景
- 01从 RDF 数据中筛选学术实体
- 02统计院系或跨实体关系
- 03核对聚合查询结果与筛选条件
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ letta-ai/ skills --skill sparql-university安装后在 Claude Code 中输入/sparql-university确认已加载。
详细介绍
SPARQL 大学查询任务
概述
本技能提供了针对 RDF/Turtle 数据集编写 SPARQL 查询的指导,重点在于确保数据分析完整、查询构造正确并进行充分验证。
工作流
第 1 步:完整获取数据
编写任何查询之前,请确保能够完整查看源数据。
关键操作:
- 完整读取 Turtle(.ttl)或 RDF 文件,不得截断
- 如果数据似乎被截断,请请求补充内容或使用分页
- 统计不同实体的数量,以验证数据是否完整
- 记录观察到的所有实体类型、谓词和关系
**验证检查点:**继续之前,确认不同实体的数量符合预期。
第 2 步:理解架构
构造查询之前,先梳理数据结构。
需要识别的关键要素:
- 数据集中的所有实体类型(类)
- 使用的所有谓词/属性
- 实体之间的关系(例如,教授 → 院系 → 学生)
- 字面量的数据类型(字符串、日期、整数)
- 命名约定和值格式
学术数据中的常见模式:
- 角色/头衔通常使用特定前缀(例如,“Professor of”“Associate Professor”)
- 日期可能需要通过比较逻辑判断“当前”状态
- 地理代码可能采用 ISO 标准(国家代码)
- 学生注册信息可能涉及多个院系
第 3 步:拆解条件
将筛选要求拆分为可独立测试的条件。
针对每个条件:
- 确定指向相关数据的确切谓词路径
- 确定比较类型(相等、前缀匹配、成员资格、数值比较)
- 考虑对条件的解释可能涉及的边缘情况
- 将每个条件分别测试后再组合
拆解示例:
- “正教授” → 筛选角色以特定前缀开头的记录
- “在欧盟国家工作” → 根据欧盟成员国列表筛选国家代码
- “学生人数超过 10 人的院系” → 统计各院系的学生人数,并应用阈值
第 4 步:构造查询
逐步构建查询,并在每个阶段进行验证。
构造顺序:
- 从限制最严格的筛选条件开始,以缩小结果集
- 每次添加一个筛选条件,并验证中间结果
- 包含所有必要的 SELECT 变量
- 最后添加聚合(GROUP BY、GROUP_CONCAT)
语法验证:
- 验证所有前缀均已声明
- 确保 FILTER 表达式正确闭合
- 检查字符串比较是否使用正确的函数(STRSTARTS、CONTAINS、regex)
- 确认数值比较正确处理了数据类型
输出格式注意事项:
- 确定结果是否需要聚合(例如,拼接多个值)
- 指定拼接值的排序顺序和分隔符
- 区分筛选条件和输出要求(例如,按欧盟国家筛选,但输出所有国家)
第 5 步:验证策略
根据已知预期测试查询。
验证方法:
- 运行查询并检查原始输出
- 手动追踪至少 2-3 个实体的数据,以验证正确性
- 同时检查是否包含预期实体,以及是否排除了非预期实体
- 通过手动计数验证聚合值
交叉核对清单:
- 返回的实体是否与手动分析结果一致?
- 结果中是否包含所有预期实体?
- 是否错误地包含了非预期实体?
- 聚合计数/值是否与手动验证结果一致?
常见问题
数据读取不完整
- **问题:**使用截断的数据会导致遗漏实体
- **预防措施:**务必确认文件内容完整;如果数据被截断,请重新读取
查询被截断
- **问题:**较长的查询可能无法完整写入
- **预防措施:**写入后重新读取查询文件,确认内容完整
对条件的误解
- 问题: 混淆筛选条件与输出要求
- 预防: 区分“按 X 筛选”和“输出 X”——两者可能不同
日期/时间边界情况
- 问题: 未能正确处理边界日期
- 预防: 明确比较是否包含边界;测试边界情况
聚合错误
- 问题: 缺少 GROUP BY 子句或 GROUP_CONCAT 用法不正确
- 预防: 确认聚合语法与查询结构相符
欧盟国家列表
- 问题: 欧盟成员国代码列表不完整或已过时
- 预防: 使用完整列表:AT, BE, BG, HR, CY, CZ, DK, EE, FI, FR, DE, GR, HU, IE, IT, LV, LT, LU, MT, NL, PL, PT, RO, SK, SI, ES, SE
跨实体关系
- 问题: 统计关系中的实体数量有误(例如,院系中的学生)
- 预防: 沿完整谓词路径追踪;核实联接条件
测试流程
- 语法检查: 确保查询能够解析且无错误
- 子集测试: 使用已知数据子集运行查询,并核对预期结果
- 完整测试: 在完整数据集上运行查询
- 人工核验: 根据源数据追踪 2-3 个结果
- 边界测试: 检查筛选条件中的边界情况(日期、计数、字符串匹配)
迭代方法
如果初始结果与预期不符:
- 找出导致差异的筛选条件
- 单独测试每个筛选条件
- 检查应当出现但未出现的实体(假阴性)
- 检查不应出现却出现的实体(假阳性)
- 根据发现调整筛选逻辑
- 每次调整后重新核验
评论
支持 Markdown