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

如何修改SPARQL查询以获取苏联人物的俄文维基百科所有图片

如何修改SPARQL查询获取苏联公民在俄文维基的所有关联图片?

我现有一条SPARQL查询,用于获取苏联(Q15180)公民(P27)且属于人类(Q5)的人物的图片,查询语句如下:

SELECT ?personLabel ?img WHERE { SERVICE wikibase:label { bd:serviceParam wikibase:language "ru,[AUTO_LANGUAGE]". } ?person wdt:P31 wd:Q5. ?person wdt:P27 wd:Q15180. ?person wdt:P18 ?img }

请问如何修改该查询,以返回这些人物在俄文维基百科上的所有关联图片?


嘿,这个需求很好解决~原来的查询只抓取了人物的主图片(P18),但要获取俄文维基页面上的所有关联图片,我们需要先定位到人物对应的俄文维基条目,再抓取该条目关联的所有图片。

这里给你两种修改方案:

方案一:仅获取俄文维基条目关联的所有图片

这个方案直接定位俄文维基页面,拿到页面上的所有关联图片:

SELECT ?personLabel ?img ?imgLabel WHERE {
  SERVICE wikibase:label { bd:serviceParam wikibase:language "ru,[AUTO_LANGUAGE]". }
  # 保留原有的筛选条件:人类、苏联公民
  ?person wdt:P31 wd:Q5.
  ?person wdt:P27 wd:Q15180.
  # 定位人物对应的俄文维基百科条目
  ?ruArticle schema:about ?person ;
             schema:inLanguage "ru" ;
             schema:isPartOf <https://ru.wikipedia.org/>.
  # 获取该条目关联的所有图片
  ?ruArticle schema:image ?img.
}

方案二:同时获取主图片和俄文维基的所有关联图片

如果不想遗漏人物的主图片(有些主图可能没出现在俄文维基页面里),可以用UNION把两种来源的图片合并:

SELECT ?personLabel ?img ?imgLabel WHERE {
  SERVICE wikibase:label { bd:serviceParam wikibase:language "ru,[AUTO_LANGUAGE]". }
  ?person wdt:P31 wd:Q5.
  ?person wdt:P27 wd:Q15180.
  {
    # 抓取人物的主图片
    ?person wdt:P18 ?img.
  } UNION {
    # 抓取俄文维基条目关联的所有图片
    ?ruArticle schema:about ?person ;
               schema:inLanguage "ru" ;
               schema:isPartOf <https://ru.wikipedia.org/>.
    ?ruArticle schema:image ?img.
  }
}

关键修改点说明:

  • ?ruArticle部分:通过schema:about关联人物实体,schema:inLanguage "ru"限定俄语版本,schema:isPartOf锁定俄文维基站点,确保我们拿到的是俄文页面。
  • schema:image:用来获取维基百科页面上关联的所有图片,这和仅抓主图的wdt:P18不同,能覆盖页面里的所有相关图片。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:23:58