微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法查询本地Wikidata转储

如何解决无法查询本地Wikidata转储

我正在尝试针对2016 Wikidata dump (.ttl format)在本地运行“猫” Wikidata查询

PREFIX bd: <http://www.bigdata.com/rdf#>
PREFIX wd: <http://www.wikidata.org/entity/>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>

SELECT ?item
WHERE
{
  ?item wdt:P31 wd:Q146.
}

为此,我正在终端中运行sparql --data wikidata-20160201-all-BETA.ttl --query cats.rq我有一个R5 3600X cpu和16GB RAM,并且该查询最终持续运行了几分钟,使用了70%的cpu和大约4GB的RAM。 Wikidata上的查询(目前的数据量比2016年高出几倍)在2秒内运行,同时仍使用SERVICE获取标签,而我不是。

我正在使用Apache Jena来运行SPARQL查询,并且我主要在Windows 10上进行了测试。 对于小型文件(例如Learning SPARQL中的文件),查询会立即返回正确的结果,因此Apache Jena似乎已配置好并且工作正常。但是,我是知识库/ Wikidata / SPARQL等方面的新手,所以也许我搞砸了。

编辑:大约20分钟后,我收到以下错误消息: Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded

解决方法

sparql --data wikidata-20160201-all-BETA.ttl ...将尝试在执行查询之前将整个文件加载到内存中。 wikidata-20160201-all-BETA.ttl是大文件。

相反,将文件加载到TDB数据库中:

tdb2.tdbloader --loc WD wikidata-20160201-all-BETA.ttl

然后查询:

tdb2.tdbquery --loc WD --query cats.rq

它不适合存储在内存中,只需简单查找就可以加载所有内容。当您使用SERVICE并询问WikiData端点时,您正在查询已经加载的数据库。

耶拿(Jena)中有一个远程SPARQL工具:rsparql

rsparql --service https://query.wikidata.org/bigdata/namespace/wdq/sparql --query cats.rq

这会将查询发送到给定的端点,并支持与sparql相同的输出输出选项。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?