使用 WikiData Sparql 高效查询抽象元素

Posted

技术标签:

【中文标题】使用 WikiData Sparql 高效查询抽象元素【英文标题】:Efficiently querying abstract elements using WikiData Sparql 【发布时间】:2016-07-26 19:30:47 【问题描述】:

我正在尝试构建一个查询以按名称获取抽象元素的实例/任何子类,例如“human”(Q5),但是查询失败并超时,可能是因为它有太多节点无法遍历图表。

    有没有更好的方法来查询这个?我能想到的最好方法是使用带有元素名称的 Wikidata API search entities endpoint,然后在 Sparql 查询中过滤所需的结果,以最小化查询的域而不是整个图。 我有点担心在生产环境中使用这种方法,因为 Wikidata Sparql 处于测试阶段。从 freebase 迁移知识图用例的任何最佳实践?关于将数据从 Freebase 迁移到 Wikidata 是否有任何更新?

对于已弃用的 Freebase 服务,最后还有其他成熟的替代方案吗?

【问题讨论】:

在生产环境中使用您自己的 SPARQL 端点并将 Wikidata 加载到其中。其他任何事情都没有任何意义,因为无法控制它的可用性。 没有外部生产服务替代方案吗?维护内部 wikidata 镜像对于我对服务的需求也没有意义。 什么是“外部”生产?事实上,您可以使用公共 SPARQL 端点,但它是免费托管的,您无需为所获得的东西支付任何费用。因此,您不能提出任何索赔。托管这样的服务需要花钱,而且您知道您不是唯一使用它的人。此外,您无法使其更快,因为您必须依赖他们用于托管服务的硬件。 我的意思是付费替代品。谷歌知识图在可靠性和数据扩展方面会更好吗?还有其他建议吗? 这有点麻烦(因此不是答案),但也许像 Ontotext S4 这样的云服务会满足您的需求。他们提供 GraphDB 的云实例以及访问各种开放数据集的托管版本。不确定 Wikidata 是否在其中,但如果没有,我相信您可以向他们询问。 【参考方案1】:

您查询的是哪个端点?针对生产服务查询没有 SLA(测试版或非测试版)的共享公共端点是非常冒险的提议。

Wikidata 提供完整的数据库转储,您可以对其进行定制/子集化并加载到您喜欢的任何基础架构中。这将使您能够完全控制性能、质量和任何其他对您很重要的指标。

就从 Freebase 迁移而言,没有迁移路径。火车所在的轨道已经结束(至少对于外部非 Google 用户而言)。它不仅已弃用,而且不久前已完全关闭。一小部分数据被导入到 Wikidata(由于他们的共同祖先 Wikipedia,他们已经共享了一堆共同点),但没有任何编程功能,例如 MQL 的 JSON 示例查询、Freebase Search、Freebase Suggest、Google - 可用于 Wikidata 的规模性能或可用性等(还没有?)。

如果数据对您很重要,您应该使用满足您需求的任何基础架构自行托管。

【讨论】:

我正在使用query.wikidata.org/sparql 端点。维护内部 wikidata 会产生不断更新数据的开销。有比维基数据更好的选择吗?也许谷歌知识图是一个更全面、更可靠的选择?另外,您对我使用给定名称查询所有人的方法有什么见解吗?

以上是关于使用 WikiData Sparql 高效查询抽象元素的主要内容,如果未能解决你的问题,请参考以下文章

SPARQL UNION不产生第二个查询的结果。

Wikidata和SparQL简介

如何优化我的递归 SPARQL 查询?

sparql 选择 wikidata group_by 和 concat

为啥这个 SPARQL 查询超时以及如何优化这个查询?

Wikidata 查询服务 - 获取页面的创建日期