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

时间:2016-03-25 15:29:32

标签: java android api freebase wikidata-api

我有几年的Java(Android)编程经验,这是我第一次使用API​​来检索JSON数据。因此,为了获得有关使用Freebase API的查询主题的基本事实,不过现在这种情况将被弃用,谷歌正在将其转移到维基数据。但是,查询API仍处于测试阶段,我根本无法理解查询API文档或如何检索事实。那么维基数据和Freebase还有其他选择吗?

这是我的最后一个问题:

  • 有人可以向我解释如何使用维基数据查询API吗?并以可读格式检索事实?
  • 或者有人可以建议我除了维基数据之外还有更好的替代Freebase吗?

1 个答案:

答案 0 :(得分:2)

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

通常,您可以使用SPARQL通过端点访问这些SPO数据库。 SPARQL是一种类似SQL的语言,它允许您制定查询以访问数据。幸运的是,Wikidata还有一个可以使用的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中查询Wikidata,您可以使用Jena,这将允许您使用SPARQL查询和端点来访问数据。

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

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