如何使用 Wikidata API 或 Freebase 的替代品

How to use the Wikidata API or an alternative to Freebase

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

这些是我的最后一个问题:

您要访问的数据存储在 Ssubject Property(also Predicate) O对象 (SPO) 格式。这意味着您有一个主题和一个与 属性 关联的对象,例如 <Albert_Einstein> <wasBornIn> <Germany>.

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

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

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

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

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

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