【问题标题】:How to use the Wikidata API or an alternative to Freebase [closed]如何使用 Wikidata API 或 Freebase 的替代品 [关闭]
【发布时间】:2016-03-25 15:29:32
【问题描述】:

我有几年的 Java (Android) 编程经验,这是我第一次使用 API 来检索 JSON 数据。因此,为了获得有关查询主题的基本事实,我想到了使用 Freebase API,但是现在这将被弃用,Google 正在将其转移到 Wikidata。但是查询 API 仍处于测试阶段,我根本无法理解查询 API 文档或如何检索事实。那么有没有 Wikidata 和 Freebase 的替代品?

这是我最后的问题:

  • 谁能向我解释一下我将如何使用 Wikidata 查询 API?并以可读格式检索事实?
  • 或者有人可以推荐我一个比 Wikidata 更好的 Freebase 替代品吗?

【问题讨论】:

    标签: java android api freebase wikidata-api


    【解决方案1】:

    您要访问的数据以S主语P属性(也称为谓语)O主语(SPO)格式存储。这意味着您有一个主题和一个与属性相关联的对象,例如<Albert_Einstein> <wasBornIn> <Germany>

    通常您可以使用 SPARQL 通过端点访问这些 SPO 数据库。 SPARQL 是一种类似于 SQL 的语言,它允许您制定查询来访问数据。幸运的是,Wikidata 也有一个可以使用的 sparql 端点:https://query.wikidata.org/

    这是一个简单的示例,它将使用 rdf-schema 标签将所有引用的主题加载到字符串“泰坦尼克号”,并将结果限制为 100 个条目。

    select distinct ?a where {?a <http://www.w3.org/2000/01/rdf-schema#label> "Titanic"@en } LIMIT 100 
    

    要在 Java 中查询 Wikidata,您可以使用 Jena,这将允许您使用 SPARQL 查询和端点来访问数据。

    据我所知,您也可以使用 http 访问 Wikidata,但使用 SPARQL 有一些好处。我知道还有另外两个可以使用的大型数据库,它们都有一个 SPARQL 端点。因此,更改端点以访问其他两个数据库非常容易。一个数据库也可能包含对另一个数据库的引用,您可以按照该引用来收集更多数据。

    由于您还要求提供替代方案,因此我提到的两个数据库是 DBpedia (SPARQL-Endpoint) 和 Yago (SPARQL-endpoint)。两者都使用维基百科来提取事实,因此它们非常庞大。 Yago 还使用 WordNet 构建了一个很好的分类法,您可以使用它来对数据进行分类。另一方面,DBpedia 有很多其他网站可供您参考。

    【讨论】:

    • 感谢您的回答。因为我在这个基于 SPQARL 的端点系统方面有如此丰富的经验。如果我选择去确实说谷歌知识图 Api。我将如何使用它。在 Google 文档中,它显示了使用通常不可导入的 Google http 客户端的 java 示例。所以使用基本的异步任务。你能告诉我一个只检索 JSON 数据的例子吗?谢谢。很抱歉我在这件事上的无能,但正如我之前提到的,这是我第一次接触 Apis
    • 另外我已经申请了Api key。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-18
    • 2011-05-08
    • 1970-01-01
    • 2012-06-16
    • 2011-06-16
    相关资源
    最近更新 更多