【问题标题】:Get records for a list of multiple entities on Wikidata获取 Wikidata 上多个实体列表的记录
【发布时间】:2018-08-18 21:13:50
【问题描述】:

我在 Wikidata 中映射多个实体(Q 条目),我需要相同的属性记录(P 条目)。对于这个问题,假设我有一个包含五个 Wikidata 实体(Q1、Q2、Q3、Q4、Q5)的列表,我想为其检索相同的属性记录(例如,P1、P2 和 P3)。我提前知道所有的 Q 和 P。

我了解如何为单个记录(例如 Q1)提出 SPARQL 查询,并且我还了解如何使用特殊的 SERVICE wikibase:label 函数为 P1、P2 和 P3 指定标签的返回。

第一个问题,有没有办法通过仅使用 SPARQL 的给定 SPARQL 查询遍历实体列表(Q1 到 Q5)?

如果答案是否定的,是否存在任何示例 Python 或伪代码来发出单个 SPARQL 查询,循环遍历外部标识符列表(Q1 到 Q5),比如作为外部文本或 CSV 文件提供?

如果有一个简单的方法来解决这个问题,我很乐意听到。

【问题讨论】:

标签: python sparql pseudocode records wikidata


【解决方案1】:

我认为您正在寻找 VALUES 子句:

SELECT ?item ?itemLabel ?class ?classLabel ?projectLabel WHERE {
  VALUES ?item { wd:Q1 wd:Q2 wd:Q3 wd:Q4 wd:Q5 }
  ?item wdt:P31 ?class;
        wdt:P5008 ?project.
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}

Try it!

【讨论】:

  • 卢卡斯,太棒了!谢谢你。这正是我所寻求的。 VALUES 子句是否存在已知限制(在 SPARQL 或 Wikidata 端点中?)。
  • 对于GET 请求,最终查询将变得太长,您必须改用POST,但除此之外,我不知道有任何硬性限制。 (但是,您可能无法将其用于 数百万 个项目;))
  • 再次,卢卡斯,谢谢。我将查看其他 Wikidata 文档,了解如何锤击他们的网站的最佳实践。
猜你喜欢
  • 2022-07-06
  • 1970-01-01
  • 2019-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-04
  • 2014-10-30
相关资源
最近更新 更多