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

如何在Wikidata SPARQL查询中获取事件的实例所属类?

修改SPARQL查询以获取事件所属类

要获取每个事件的所属类,你需要在查询中添加对事件直接类型(wdt:P31,即“实例”属性)的查询,并将类的变量和标签加入结果集。以下是修改后的完整查询:

SELECT ?event ?eventLabel ?eventClass ?eventClassLabel ?date ?location
WITH {
  SELECT DISTINCT ?event ?eventClass ?date ?location
  WHERE {
    # 定位内华达的地理坐标
    wd:Q1227 wdt:P625 ?nevada. 
    # 筛选属于“时空发生的事件”及其子类的实例
    ?event wdt:P31/wdt:P279* wd:Q1190554.
    # 获取事件的直接所属类
    ?event wdt:P31 ?eventClass.
    # 获取事件的发生时间或起始时间
    OPTIONAL { ?event wdt:P585 ?date. }
    OPTIONAL { ?event wdt:P580 ?date. }
    # 获取事件的地理位置
    ?event wdt:P625 ?location.
    # 筛选内华达400公里范围内的事件
    FILTER(geof:distance(?location, ?nevada) < 400).
  }
  LIMIT 1000
} AS %i
WHERE {
  INCLUDE %i
  # 为事件和类获取多语言标签
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" . }
}

关键修改说明:

  • 在子查询的SELECT和WHERE中新增了?eventClass变量,通过?event wdt:P31 ?eventClass获取事件的直接所属类(比如Las Vegas Grind对应的“音乐节”类)。
  • 如果需要获取类的所有父类(比如从“音乐节”向上追溯到“文化活动”),可以把?event wdt:P31 ?eventClass改成?event wdt:P31/wdt:P279* ?eventClass,但这样会返回多个父类结果,需要根据需求调整。
  • 在主查询的SELECT中添加了?eventClass和?eventClassLabel,确保结果中包含类的ID和对应的人类可读标签。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 23:45:16