【问题标题】:How to search in Wikidata in specific categories?如何在维基数据中搜索特定类别?
【发布时间】:2017-07-21 06:13:25
【问题描述】:

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

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

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

所以查询是在丹麦语中搜索草莓。我的问题是我得到像绘画和人物这样的结果。无论如何要搜索特定类别的食物吗?或者以某种方式限制“错误”点击的“噪音”?

我尝试查看 Wikidata 并在 Google 上搜索,但我不清楚我有哪些选项。

【问题讨论】:

  • 你可以检查结果的instance of属性(P31),看看它们是否属于同一类别
  • 嗨@leo 抱歉回复晚了。内容与P31 不匹配,它们似乎也不都有instance of。我得出的结论是,可悲的是,食物/配料根本不可能。

标签: wikidata wikidata-api


【解决方案1】:

您可以使用Wikidata Query Service 来执行此操作。

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

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

query link

或者,要获得所有在丹麦语中标记为“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". }
}

query link

【讨论】:

    【解决方案2】:

    恐怕目前还没有简单的方法来获得这种量身定制的搜索结果,但是有同样的需求(对于our case 中的书籍),我们最终找到了两种解决方法:

    1 - 搜索和过滤

    2 - 过滤和搜索

    • 发出 SPARQL 请求以获取所有有效结果(请参阅 query.wikidata.org documentation),一劳永逸(但需要定期更新)
    • 将所有这些结果放在您自己的搜索引擎中。查看我们的Wikidata Subset Search Engine 项目
    • 然后,在需要时,改为向该搜索引擎提出请求

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-22
      • 1970-01-01
      • 2019-08-25
      • 2013-04-28
      • 2011-05-24
      • 1970-01-01
      相关资源
      最近更新 更多