如何使用Wikidata API或Freebase的替代方案



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

这是我最后的问题:

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

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

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

这里有一个简单的例子,它将使用rdf模式标签将所有被引用的主题加载到字符串"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访问Wikidata,但使用SPARQL有一些好处。据我所知,还有另外两个大型数据库可以使用,它们都有一个SPARQL端点。因此,更改端点以访问其他两个数据库非常容易。也有可能一个数据库包含对另一个数据库的引用,您可以按照该数据库收集更多数据。

由于你也要求其他选择,我提到的两个数据库是DBpedia(SPARQL端点)和Yago(SPARQL终点)。两者都使用维基百科来提取事实,因此它们是巨大的。Yago还使用WordNet构建了一个很好的分类法,可以用来对数据进行分类。另一方面,DBpedia有很多可以使用的其他网站的参考资料。

相关内容

  • 没有找到相关文章

最新更新