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

使用Wikidata SPARQL查询提取各国最新新冠疫情数据遇问题

问题分析与修正后的SPARQL查询

原查询存在的问题

  • ?timeC和?timeR未在查询逻辑中绑定任何数据,因此无返回值。
  • 直接调用wdt:P1603和wdt:P8010会拉取所有历史统计值,且原FILTER逻辑未正确关联时间戳,无法精准筛选最新数据。

修正后的查询代码

Wikidata中这类带时间维度的统计数据存储在**陈述(statement)**结构里,需要通过ps:(属性值)和pq:(限定词)来分别获取统计数值与对应时间:

SELECT DISTINCT ?countryLabel ?latestCases ?casesTime ?latestRecoveries ?recoveriesTime {
  # 指定新冠大流行对应的条目
  wd:Q83741704 wdt:P527 ?covidLoc.
  ?covidLoc wdt:P17 ?country.
  
  # 获取确诊数的最新记录
  ?covidLoc p:P1603 ?casesStmt.
  ?casesStmt ps:P1603 ?latestCases;
             pq:P585 ?casesTime.
  FILTER NOT EXISTS {
    ?covidLoc p:P1603 ?otherCasesStmt.
    ?otherCasesStmt pq:P585 ?otherTime.
    FILTER (?otherTime > ?casesTime)
  }
  
  # 获取康复数的最新记录(用OPTIONAL避免无康复数据的国家被过滤)
  OPTIONAL {
    ?covidLoc p:P8010 ?recoveriesStmt.
    ?recoveriesStmt ps:P8010 ?latestRecoveries;
                    pq:P585 ?recoveriesTime.
    FILTER NOT EXISTS {
      ?covidLoc p:P8010 ?otherRecoveriesStmt.
      ?otherRecoveriesStmt pq:P585 ?otherRecTime.
      FILTER (?otherRecTime > ?recoveriesTime)
    }
  }
  
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
ORDER BY ?countryLabel

核心修正说明

  • 用p:P1603/p:P8010定位统计数据的陈述节点,ps:提取具体数值,pq:P585绑定统计时间。
  • 通过FILTER NOT EXISTS逻辑筛选出无更晚时间记录的条目,确保返回的是最新统计值。
  • 康复数部分用OPTIONAL包裹,避免因部分国家未录入康复数据而被整体过滤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 00:50:28