通过单个API调用获取CKAN中资源的数据集ID /名称?

时间:2015-10-02 01:59:48

标签: api resources dataset ckan

请注意,帖子中包含的网址不是真实的 - 只是示例

是否可以通过单个api查询检查资源所在的数据集?

似乎可以通过3步查询来完成,例如:

  1. 获取修订ID:http://demo.ckan.org/api/3/action/resource_search?query=url:https://www.example.com/resources/datafile.csv
  2. 获取包ID:http://demo.ckan.org/api/3/action/revision_show?id=de5707gg-5568-1291-83df-7a6e2a441396
  3. 获取包含数据集:http://demo.ckan.org/api/3/action/package_show?id=de5707gg-5568-1291-83df-7a6e2a441396
  4. 或者我已经能够使用: https://demo.ckan.org/api/action/package_search 这允许我获取其中包含的所有包和信息然后在页面上使用javascript来处理结果,这给了我数据集/ s,如果有的话。

    但是我很好奇是否可以在单个API调用中完成,而不是做多个或不得不依赖CKAN之外的东西来处理(即不使用第二个例子中的Javascript)。

    我认为可能会做以下事情: https://data.qld.gov.au/api/action/package_search?q=de5707gg-5568-1291-83df-7a6e2a441396 但它似乎没有搜索ID字段? 我更愿意通过网址进行搜索,因为我不一定知道该ID是从哪个开始的,并且包搜索没有要搜索的内容。

1 个答案:

答案 0 :(得分:6)

要搜索ID字段,您可以将其传递给fq参数中的package_show,如:

https://data.gov.uk/api/3/action/package_search?q=&fq=id:e3939ef8-30c7-4ca8-9c7c-ad9475cc9b2f

同样,您可以找到具有特定资源URL的包(请注意“)

https://data.qld.gov.au/api/3/action/package_search?fq=res_url:"https://www.dnrm.qld.gov.au/__data/assets/excel_doc/0005/282533/dnrm-gifts-and-benefits-june-2015.xlsx"