我目前正在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:此处为
Q13158
、Q14458220
、Q12320330
等 - 收回他们的索赔
- 解析结果以获得每个实体的
P31
值列表 - 过滤声明以仅保留具有所需域的
P31
值的实体。例如,为了只保留书籍,我们保留具有声明P31
的实体→Q571
或我们认为是Q571的别名。这个列表是静态的,因为书籍的P31值"相当"一致,但对于您的域,您可能需要从SPARQL查询中动态生成该列表,以获得被视为食物或配料子类的东西的完整列表
2-过滤和搜索
- 发出SPARQL请求,得到所有有效结果(请参阅query.wikidata.org文档),一次性(但需要定期更新)
- 把所有这些结果放到你自己的搜索引擎里。查看我们的Wikidata子集搜索引擎项目
- 然后,在需要时,向该搜索引擎提出请求