如何在Wikidata中按特定类别进行搜索



我目前正在Wikidata中搜索以下查询:

https://www.wikidata.org/w/api.php?action=wbsearchentities&language=da&limit=20&format=json&search=jordb%C3%A6r&uselang=da

我需要找到不同的食材和食物。

因此,查询是在丹麦语中搜索草莓。我的问题是,我得到的结果就像绘画和人物一样。有没有可以在食物等特定类别中进行搜索?或者以某种方式限制"虚假"点击的"噪音"?

我试着查看维基数据并在谷歌上搜索,但我不清楚我有什么选择。

您可以使用Wikidata查询服务来执行此操作。

要查找所有丹麦语食物,您可以使用以下查询:

SELECT DISTINCT ?food ?label WHERE {
?food (wdt:P31?/wdt:P279*) wd:Q2095.
?food rdfs:label ?label.
SERVICE wikibase:label { bd:serviceParam wikibase:language "da". }
FILTER((LANG(?label)) = "da")
} ORDER BY ?label

查询链接

或者,要让所有的食物都用丹麦语标记为"Jordbær",你可以这样做:

SELECT DISTINCT ?food ?foodLabel WHERE {
?food (wdt:P31?/wdt:P279*) wd:Q2095 ;
rdfs:label "Jordbær"@da;
SERVICE wikibase:label { bd:serviceParam wikibase:language "da". }
}

查询链接

恐怕目前没有简单的方法来获得这种定制的搜索结果,但由于有同样的需求(在我们的案例中是书籍),我们最终有两个解决方案:

1-搜索和筛选

  • 进行一般搜索
  • 收集Qids:此处为Q13158Q14458220Q12320330
  • 收回他们的索赔
  • 解析结果以获得每个实体的P31值列表
  • 过滤声明以仅保留具有所需域的P31值的实体。例如,为了只保留书籍,我们保留具有声明P31的实体→Q571或我们认为是Q571的别名。这个列表是静态的,因为书籍的P31值"相当"一致,但对于您的域,您可能需要从SPARQL查询中动态生成该列表,以获得被视为食物或配料子类的东西的完整列表

2-过滤和搜索

  • 发出SPARQL请求,得到所有有效结果(请参阅query.wikidata.org文档),一次性(但需要定期更新)
  • 把所有这些结果放到你自己的搜索引擎里。查看我们的Wikidata子集搜索引擎项目
  • 然后,在需要时,向该搜索引擎提出请求

最新更新