You need to enable JavaScript to run this app. Wikidata查询如何筛选多值字段中长度最短的取值
优惠活动
大模型
产品
解决方案
定价
更多

Wikidata查询如何筛选多值字段中长度最短的取值

解决方案

你可以通过子查询计算每个行政区域的最短缩写长度,再过滤结果实现需求,修改后的完整查询如下:

SELECT ?admin ?name ?abbr
WHERE {
  # 子查询:计算每个行政区域的最短缩写长度
  {
    SELECT ?admin (MIN(STRLEN(?tmpAbbr)) AS ?minAbbrLen)
    WHERE {
      VALUES ?admin { wd:Q771 }
      ?admin wdt:P1813 ?tmpAlias.
      SERVICE wikibase:label {
        bd:serviceParam wikibase:language "en".
        ?tmpAlias rdfs:label ?tmpAbbr.
      }
    }
    GROUP BY ?admin
  }

  # 原有查询逻辑
  VALUES ?admin { wd:Q771 }
  ?admin wdt:P131 ?country;
         wdt:P17 ?country.
  OPTIONAL { ?admin wdt:P1813 ?alias. }
  SERVICE wikibase:label {
    bd:serviceParam wikibase:language "en".
    ?admin rdfs:label ?name.
    ?alias rdfs:label ?abbr.
  }

  # 过滤仅保留长度最短的缩写
  FILTER(STRLEN(?abbr) = ?minAbbrLen)
}

说明

  • 新增的子查询会先批量计算所有指定行政区域对应的最短缩写长度,无需重复修改VALUES区域的配置
  • 若存在多个长度相同的最短缩写,该查询会全部返回;如果需要强制只返回1条,可以在查询末尾添加ORDER BY ?abbr LIMIT 1即可
  • 如果不需要保留无缩写的行政区域记录,可删掉原逻辑里的OPTIONAL关键字

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 06:36:04