0

如何在单个查询中获取多个 Wikidata ID 的实例类型(即 property=P31 和相关标签)?理想情况下,我想输出一个包含以下列的列表:Wikidata ID | P31 ID | P31 标签,如果 Wikidata ID 附加了多个 P31,则使用多行。

我正在使用 Web 查询服务,该服务在一定程度上运行良好,但我很难理解语法。到目前为止,我已经设法弄清楚如何处理项目列表,并将每个项目作为一行返回(我知道很简单!),但我不知道如何生成一个提供 P31 项目的新列:

SELECT ?item 
WHERE {
  VALUES ?item { wd:Q1347065 wd:Q731635 wd:Q105492052 }
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}

我从以前回答的问题here中找到了以下内容,它为每个感兴趣的项目返回多行,但这需要在一开始就指定 P31 类型,这是我想要生成的。

任何帮助将不胜感激,因为我真的很难理解语法。

更新: 我现在已经弄清楚如何为单个 ID 返回 P31。我需要扩展此查询以接收 ID 列表,并将 ID 作为列包含:

SELECT ?item ?itemLabel
 WHERE
 {
   wd:Q18656 wdt:P31 ?item.
   SERVICE wikibase:label { bd:serviceParam wikibase:language  "[AUTO_LANGUAGE]". }
 } 
4

1 回答 1

1

如果我正确理解了您的问题,您可以使用以下查询:

SELECT ?item ?class ?classLabel
WHERE {
  VALUES ?item { wd:Q1347065 wd:Q731635 wd:Q105492052 }
  ?item wdt:P31 ?class .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}

在这里,首先你修复了 的可能值?item,然后你说那?item是一个特定的实例,?class并且有争议地你也检索了这样的标签?class

于 2022-03-04T12:28:43.053 回答