gpt4 book ai didi

java - 不能用耶拿写大猫头鹰文件

转载 作者:搜寻专家 更新时间:2023-11-01 02:00:54 25 4
gpt4 key购买 nike

我正在尝试将数据库表中包含的数据转换为一组三元组,因此我正在使用 Jena Java 库编写一个猫头鹰文件。我已经成功地用少量表记录 (100) 完成了它,这对应于 .owl 文件中的近 20.000 行,我对此很满意。

为了编写 owl 文件,我使用了以下代码(m 是一个 OntModel 对象):

 BufferedWriter out = null;
try {
out = new BufferedWriter (new FileWriter(FILENAME));
m.write(out);
out.close();
}catch(IOException e) {};

不幸的是,当我尝试对表的整个结果集(800.000 条记录)执行相同操作时,eclipse 控制台显示异常:

Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded

异常由

引发
m.write(out);

我绝对确定模型已正确填充,因为我尝试在不创建 owl 文件的情况下执行程序并且一切正常。为了修复它,我尝试在run->configuration->vm arguments 中增加堆内存设置-Xmx4096M,但错误仍然出现。

我在 macbook 上执行应用程序,所以我没有无限内存。有机会完成任务吗?也许有更有效的方法来存储模型?

最佳答案

默认格式是RDF/XML 是一种漂亮的形式,但是要计算“漂亮”,在开始编写之前需要做很多工作。这包括建立内部数据结构。某些形状的数据导致需要进行大量工作才能搜索“最漂亮”的变体。

漂亮格式的 RDF/XML 是最昂贵的格式。即使是漂亮的 Turtle 形式也更便宜,尽管它仍然涉及一些准备计算。

以更简单的格式用 RDF/XML 编写,没有复杂的漂亮功能:

RDFDataMgr.write(System.out, m, RDFFormat.RDFXML_PLAIN);

首选输出流,输出将为 UTF-8 - “new BufferedWriter (new FileWriter(FILENAME));”将使用平台默认字符集。

请参阅其他格式和变体的文档:

https://jena.apache.org/documentation/io/rdf-output.html

例如 RDFFormat.TURTLE_BLOCKS

关于java - 不能用耶拿写大猫头鹰文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47719028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com