【发布时间】:2021-05-03 19:40:47
【问题描述】:
首先,我不是开发人员,而且我是编写 SPARQL 查询的新手。大多数情况下,我一直在查找现有查询并尝试调整它们以获得我需要的东西。问题是大多数关于查询构造的文档都与获取您没有的新数据有关,而不是检索或扩展现有数据。而且,当您确实找到检索现有数据的提示时,它们往往一次只针对一个项目,而不是针对多个项目的完整数据集。
为此,我主要使用 OpenRefine。我首先加载我现有的名称列表,然后使用 Wikidata 扩展服务将名称与现有的 Wikidata ID 进行协调。所以现在,这就是我所在的地方,而不是我想去的地方:
1 - 我们有一个 list of Wikidata IDs 用于协调匹配;
2 - 我们使用 OpenRefine 从这些数据中获取我们需要的大部分数据;
3 - 我们没有非常有价值的标签、描述或维基百科链接(英文);
4 - 我已经想出了如何为一个维基数据项的标签和描述构建查询:
SELECT ?itemLabel ?itemDescription WHERE { VALUES ?item {
wd:Q15485689 } SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
5 - 我已经知道如何构造一个查询来提取一个维基数据项的维基百科英文 URL:
SELECT ?article ?lang ?name WHERE {
?article schema:about wd:Q15485689;
schema:inLanguage ?lang;
schema:name ?name;
schema:isPartOf _:b13.
_:b13 wikibase:wikiGroup "wikipedia".
FILTER(?lang IN("en"))
FILTER(!(CONTAINS(?name, ":")))
OPTIONAL { ?article wdt:P31 ?instance_of. }
}
问题是:
- 如何修改任一查询来为 MORE THAN ONE* Wikidata 项生成相同的结果?
- 我如何修改查询以一次提供所有三个,用于多个* Wikidata 项?
*我们有 667 个,但如果服务无法处理,我可以做小批量
理想情况下,查询会生成一些内容,让我可以下载一个看起来很像这样的 CSV 文件(这样我就可以匹配并将新数据导入我们的 Airtable 基础,该基础为网站应用程序提供数据):
如果有人能在这里引导我朝着正确的方向前进,我将不胜感激。
我还应该注意,如果 OpenRefine 有办法检索这些,我会全力以赴!但是由于这三个没有属性代码,我看不出如何从 OR 中获取它们。
【问题讨论】:
-
嗨@stephanie!我正在做类似的事情,感谢您提出这个问题! (这是 PFA 的迈克尔)下面的答案也对我有用。 :)
标签: sparql wikidata openrefine