如何在TDB TripleStore中加载模型

音乐87

我有一个问题问你:

我想在Jena TDB TripleStore上加载文件。我的文件很大,大约80Mb,大约700000的三倍RDF。当我尝试加载它时,执行将停止工作或需要很长时间。

我正在使用在Web服务上运行的以下代码:

        String file = "C:\\file.nt";
        String directory;
        directory = "C:\\tdb";
        Dataset dataset = TDBFactory.createDataset(directory);

        Model model = ModelFactory.createDefaultModel();

        TDBLoader.loadModel(model, file );
        dataset.addNamedModel("http://nameFile", model); 

        return model;

有时我会收到Java堆空间错误:

Caused by: java.lang.OutOfMemoryError: Java heap space
    at org.apache.jena.riot.tokens.TokenizerText.parseToken(TokenizerText.java:170)
    at org.apache.jena.riot.tokens.TokenizerText.hasNext(TokenizerText.java:86)
    at org.apache.jena.atlas.iterator.PeekIterator.fill(PeekIterator.java:50)
    at org.apache.jena.atlas.iterator.PeekIterator.next(PeekIterator.java:92)
    at org.apache.jena.riot.lang.LangEngine.nextToken(LangEngine.java:99)
    at org.apache.jena.riot.lang.LangNTriples.parseOne(LangNTriples.java:67)
    at org.apache.jena.riot.lang.LangNTriples.runParser(LangNTriples.java:54)
    at org.apache.jena.riot.lang.LangBase.parse(LangBase.java:42)
    at org.apache.jena.riot.RDFParserRegistry$ReaderRIOTFactoryImpl$1.read(RDFParserRegistry.java:142)
    at org.apache.jena.riot.RDFDataMgr.process(RDFDataMgr.java:859)
    at org.apache.jena.riot.RDFDataMgr.read(RDFDataMgr.java:255)
    at org.apache.jena.riot.RDFDataMgr.read(RDFDataMgr.java:241)
    at org.apache.jena.riot.adapters.RDFReaderRIOT_Web.read(RDFReaderRIOT_Web.java:96)
    at com.hp.hpl.jena.rdf.model.impl.ModelCom.read(ModelCom.java:241)
    at com.hp.hpl.jena.tdb.TDBLoader.loadAnything(TDBLoader.java:294)
    at com.hp.hpl.jena.tdb.TDBLoader.loadModel(TDBLoader.java:125)
    at com.hp.hpl.jena.tdb.TDBLoader.loadModel(TDBLoader.java:119)

如何将这个文件加载到模型Jena中并将其保存在TDB中?提前致谢。

罗伯·霍尔

您需要在statup上为JVM分配更多的内存当您的资源太少时,该过程将花费太多时间执行垃圾收集,最终将失败。

例如,通过以下方式启动具有4 GB内存的JVM:

java -Xms4G -XmxG

如果您在Eclipse之类的IDE中,则可以更改运行配置,以便该应用程序也具有附加的内存。

除此之外,唯一让我惊讶的变化是,您实际上是在使用内存模型进行实际的加载操作,而实际上您可以使用由TDB支持的模型。这可以帮助减轻您的内存问题,因为TDB动态地将其索引移动到磁盘。

改变:

Dataset dataset = TDBFactory.createDataset(directory);
Model model = ModelFactory.createDefaultModel();
TDBLoader.loadModel(model, file );
dataset.addNamedModel("http://nameFile", model);

对此:

Dataset dataset = TDBFactory.createDataset(directory);
Model model = dataset.getNamedModel("http://nameFile");
TDBLoader.loadModel(model, file );

现在,您的系统取决于TDB对何时将数据保留在内存中以及何时将其刷新到磁盘上做出正确决策的能力。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在A框架中加载.glb模型?

如何在Laravel中加载模型?

如何从响应中加载属性的骨干模型?

如何在 pytorch 中加载预训练的 googlenet 模型

如何在 Django 中加载经过训练的模型

如何在 Django 模型中加载 JSON 数据

如何在Babylonjs Reactjs项目中加载gltf模型

如何在更新控制器中加载多个模型

如何在Opencart中加载自定义模型

如何在给定名称的耶拿TDB上查询模型

在 Scenekit 中加载大尺寸 .obj 模型。如何在scenekit中自动调整模型?

如何从Keras导出的Java中加载tensorflow .pb模型

在加载到apache-jena TDB Triplestore中之前先对YAGO文件进行消毒

在加载到apache-jena TDB Triplestore中之前先对YAGO文件进行消毒

如何在react-native中加载自定义的tensorflowJS模型?

如何在具有 .npy 扩展名的 gensim 中加载预训练的 fastText 模型

使用AMD(require.js)时如何在Backbone.js中加载自举模型

如何在gensim中加载预训练模型并对其进行训练doc2vec?

如何在babylon.js中计算摄像机到屏幕中加载模型的位置?

如何在Three.js中加载.obj 3D模型?

如何在 Colab 的 PyTorch 中加载在函数中定义的已保存模型?

如何在React Web应用程序中加载tensorflow.js模型?

如何在 Three.js 中加载各种 obj 3D 模型?

如何在TensorFlow 2.x中加载Tensorflow 1.x保存的模型?

如何以.pb格式保存模型,然后在Tensorflow中加载模型以进行推理?

如何在使用自定义损失函数在 Python 中训练的 DL4J 中加载 Keras 模型文件

如何在一个项目中加载Django应用模型而又不负责迁移

从Python文件中加载keras模型后,如何获取其历史记录?

DataContext设置为模型视图时,如何从后面的代码中加载列表框