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

SPARQL查询Wikidata时如何按关联属性筛选目标变量

SPARQL查询修复方案

问题原因

你原有查询中两次独立使用p:P735匹配属性,会分别匹配任意两个名字属性节点,导致rank和first_name没有绑定到同一个名字实例上,因此对rank的筛选不会作用到对应的first_name。

修复思路

将同一个名字属性节点下的序号限定pq:P1545和名字取值ps:P735写在同一个属性声明块中,让二者关联对应。

修正后的查询代码

SELECT DISTINCT ?full_name ?full_nameLabel ?first_nameLabel ?rank 
WHERE
{
  VALUES ?full_name {wd:Q254} .
  ?full_name p:P735 [
    pq:P1545 ?rank ;
    ps:P735 ?first_name
  ] .
  FILTER (?rank = "2")
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}

执行上述查询即可正确获取到莫扎特的第二个名Chrysostom。

优化说明

原有筛选使用的regex(?rank, "2")可能误匹配序号为"12"、"21"等包含字符2的结果,替换为直接相等匹配?rank = "2"更精准,查询效率也更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 14:54:02