You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Wikidata查询时如何仅返回日期属性的实际已知精度内容?

Wikidata日期属性按原始精度返回解决方案

方案1:直接返回对应精度的日期字符串

Wikidata的日期时间值自带精度元数据,可通过wikibase:timePrecision属性获取,对应精度规则如下:

  • 精度值9:仅记录年份
  • 精度值10:仅记录年份+月份
  • 精度值11:记录完整的年/月/日

你可以在SPARQL查询中通过判断精度值,动态格式化输出对应精度的日期,避免默认补全1月1日的问题,查询示例如下:

SELECT ?item ?itemLabel ?formattedBirthDate
WHERE {
  ?item wdt:P569 ?birthDate .
  ?birthDate wikibase:timePrecision ?precision .
  BIND(YEAR(?birthDate) AS ?year)
  BIND(MONTH(?birthDate) AS ?month)
  BIND(DAY(?birthDate) AS ?day)
  # 按精度格式化日期
  BIND(
    IF(?precision = 9, STR(?year),
      IF(?precision = 10, CONCAT(STR(?year), "-", STRPAD(STR(?month), 2, "0", 1)),
        CONCAT(STR(?year), "-", STRPAD(STR(?month), 2, "0", 1), "-", STRPAD(STR(?day), 2, "0", 1))
      )
    ) AS ?formattedBirthDate
  )
  SERVICE wikibase:label { bd:serviceParam wikibase:language "zh,en" . }
  # 可自行添加限制条件缩小查询范围,示例为仅查询人物条目
  ?item wdt:P31 wd:Q5 .
}
LIMIT 100

方案2:额外新增日期精度列

如果不需要格式化日期,仅需要区分真实1月1日和系统补全的1月1日,可直接在查询结果中新增精度列即可:

SELECT ?item ?itemLabel ?birthDate ?precision
WHERE {
  ?item wdt:P569 ?birthDate .
  ?birthDate wikibase:timePrecision ?precision .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "zh,en" . }
  ?item wdt:P31 wd:Q5 .
}
LIMIT 100

内容的提问来源于stack exchange,提问作者jmwink

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 17:18:03