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

SPARQL查询优化需求:为全球影院查询添加城市信息

优化后的全球未关闭影院SPARQL查询(带城市信息)

最终查询代码

SELECT DISTINCT
  ?cinema ?cinemaLabel
  ?adminUnit ?adminUnitLabel
  ?city ?cityLabel
  ?country ?countryLabel
WHERE {
  # 筛选未关闭的影院:匹配所有影院子类,排除已关闭或有明确关闭日期的条目
  ?cinema wdt:P31/wdt:P279* wd:Q41228.
  FILTER NOT EXISTS { ?cinema wdt:P1542 wd:Q12323195. } # 排除标记为"已关闭"的影院
  FILTER NOT EXISTS { ?cinema wdt:P576 ?closureDate. } # 额外排除有关闭日期的条目

  # 获取影院直接所属的行政单元
  ?cinema wdt:P131 ?adminUnit.

  # 获取行政单元所属的国家
  ?adminUnit wdt:P17 ?country.

  # 第一优先级:如果行政单元本身就是城市类(含城邦、城市聚居地等),直接作为城市
  OPTIONAL {
    ?adminUnit wdt:P31/wdt:P279* ?cityType.
    VALUES ?cityType { wd:Q515 wd:Q133442 wd:Q7930989 wd:Q3624078 }
    BIND(?adminUnit AS ?city)
  }

  # 第二优先级:如果行政单元不是城市,找它的直接上级行政单元作为城市
  OPTIONAL {
    # 确保只处理第一优先级没匹配到的情况
    FILTER NOT EXISTS {
      ?adminUnit wdt:P31/wdt:P279* ?cityType.
      VALUES ?cityType { wd:Q515 wd:Q133442 wd:Q7930989 wd:Q3624078 }
    }
    ?adminUnit wdt:P131 ?city.
    ?city wdt:P31/wdt:P279* ?cityType.
    VALUES ?cityType { wd:Q515 wd:Q133442 wd:Q7930989 wd:Q3624078 }
  }

  # 自动获取多语言标签(这里用英文+中文,可按需调整)
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en,zh". }
}
ORDER BY ?countryLabel ?cityLabel ?cinemaLabel

关键优化点(解决你的痛点)

  • 干掉慢查询元凶:删掉了(wdt:P131)*这种任意深度的路径查询——这种写法会让Wikidata遍历无数层级的行政关系,直接拖垮性能。改成固定1-2层的关联,只查直接上级,绝大多数场景都能覆盖到城市信息。
  • 扩大城市匹配范围:不再死磕wd:Q515(标准城市),把wd:Q133442(城市聚居地)、wd:Q7930989(城市级行政单位)、wd:Q3624078(城邦国家)都加进去,完美适配新加坡、华盛顿这类特殊条目。
  • 分层匹配逻辑:先查行政单元本身是不是城市,没匹配到再查上级,减少无效关联,让查询引擎跑得更快。
  • 双重过滤影院状态:同时用“关闭状态标记”和“关闭日期”过滤,确保结果都是未关闭的影院。
  • 去重+排序:用DISTINCT避免重复条目,按国家→城市→影院排序,导出到Excel后直接就能筛选。

自定义提示

  • 如果需要覆盖更多城市类型,直接在VALUES ?cityType里加对应的Wikidata QID就行。
  • 极少数地区可能需要更深层级的行政关联,可以在第二个OPTIONAL里再加一层?city wdt:P131 ?higherCity,但别加太多层,不然又会变慢。
  • 标签语言可以调整,比如只留"zh"就只显示中文标签。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 17:43:11