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

Wikidata企业查询问题:英文网站未显示且存在重复行

解决SPARQL查询企业数据的两个问题:网站URL不显示+重复记录

问题根源

  • 网站URL不显示:原查询里筛选英文网站的逻辑有误,错误先绑定了wdt:P856的对象,导致?website变量没正确关联到带语言限定的URL。
  • 重复记录:用UNION会为每个匹配的属性分支生成单独记录,比如同时有LinkedIn和ISIN的企业会出两行,一行带LinkedIn、一行带ISIN。

修正后的SPARQL代码

SELECT ?item ?itemLabel 
       (GROUP_CONCAT(DISTINCT ?linkedin; SEPARATOR=", ") AS ?linkedins)
       (GROUP_CONCAT(DISTINCT ?isin; SEPARATOR=", ") AS ?isins)
       (GROUP_CONCAT(DISTINCT ?lei; SEPARATOR=", ") AS ?leis)
       (GROUP_CONCAT(DISTINCT ?website; SEPARATOR=", ") AS ?websites)
WHERE {
  ?item wdt:P31 wd:Q4830453. # 匹配企业(Q4830453是Wikidata中公司的ID)
  
  # 可选匹配LinkedIn标识符
  OPTIONAL { ?item wdt:P4264 ?linkedin. }
  # 可选匹配ISIN
  OPTIONAL { ?item wdt:P946 ?isin. }
  # 可选匹配LEI
  OPTIONAL { ?item wdt:P1278 ?lei. }
  # 正确匹配带英文限定的网站URL
  OPTIONAL { 
    ?item p:P856 [ 
      ps:P856 ?website ; 
      pq:P407 wd:Q1860 
    ] 
  }
  
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
GROUP BY ?item ?itemLabel
LIMIT 100

修改说明

  1. 用OPTIONAL替代UNION:每个属性都作为可选匹配,确保单个企业的所有属性都在同一行返回,从根源避免重复记录。
  2. 修正网站URL查询逻辑:直接通过p:P856(声明)、ps:P856(属性值)、pq:P407(语言限定词)的结构,精准获取带英文限定的网站URL,解决URL不显示的问题。
  3. GROUP BY+GROUP_CONCAT处理多值:如果一个企业有多个同类型属性(比如多个英文网站),会用逗号分隔合并到同一字段,保证一行对应一条企业数据。
  4. 简化查询结构:去掉冗余的双层SELECT DISTINCT,让查询更清晰高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 00:36:10