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

如何统计Wikidata中共享属性值的同类型实体数量?

优化Wikidata SPARQL查询:统计共享属性值的实体数量

原查询通过直接匹配两两共享属性值的实体,会产生大量笛卡尔积计算,当数据集规模较大时极易超时。可以通过先聚合属性值的关联实体数,再筛选统计目标实体的方式优化:

prefix wdt: <http://www.wikidata.org/prop/direct/>
prefix wd: <http://www.wikidata.org/entity/>

SELECT (COUNT(DISTINCT ?entity) AS ?sharedCount)
WHERE {
  # 子查询:找出被至少2幅画作共享的P180属性值
  {
    SELECT ?val
    WHERE {
      ?entity wdt:P31 wd:Q3305213 ;
              wdt:P180 ?val .
    }
    GROUP BY ?val
    HAVING (COUNT(DISTINCT ?entity) >= 2)
  }
  
  # 关联所有使用这些共享属性值的画作
  ?entity wdt:P31 wd:Q3305213 ;
          wdt:P180 ?val .
}

优化说明

  1. 子查询阶段:先对每个P180属性值进行分组,统计关联的画作数量,只保留那些被至少2幅画共享的属性值,大幅缩小后续处理的数据范围。
  2. 主查询阶段:仅针对筛选后的共享属性值,关联对应的画作并去重统计总数,避免了原查询中所有画作两两匹配的冗余计算,显著提升查询效率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 10:22:45