如何在 TDB TripleStore 中加载模型

2024-02-16

我有一个问题问你:

我想在我的 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 中?提前致谢。


你需要在启动时为 JVM 分配更多内存 https://stackoverflow.com/a/2294280/2528639。当你的垃圾收集太少时,进程将花费太多时间执行垃圾收集,并最终失败。

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

java -Xms4G -XmxG

如果您使用的是 Eclipse 等 IDE,您可以更改您的运行配置 https://stackoverflow.com/q/4175188/2528639以便应用程序也有额外的内存。

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

Change:

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

to this:

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 TDB TripleStore 中加载模型 的相关文章

  • 使用 JPA Criteria API 进行分页的总行数

    我正在系统中为实体实现 高级搜索 功能 以便用户可以使用该实体的属性上的多个条件 eq ne gt lt 等 来搜索该实体 我正在使用 JPA 的 Criteria API 动态生成 Criteria 查询 然后使用setFirstResu
  • 这个函数(for循环)空间复杂度是O(1)还是O(n)?

    public void check 10 for string i list Integer a hashtable get i if a gt 10 hashtable remove i 这是 O 1 还是 O n 我猜测 O n 但不是
  • Java:迭代 Collection 的最佳方法(此处为 ArrayList)

    今天 当我看到一段我已经使用了数百次的代码时 我很高兴地开始编码 迭代集合 此处为 ArrayList 出于某种原因 我实际上查看了 Eclipse 的自动完成选项 这让我想知道 在什么情况下以下循环比其他循环更好使用 经典的数组索引循环
  • Java AES 128 加密方式与 openssl 不同

    我们遇到了一种奇怪的情况 即我们在 Java 中使用的加密方法会向 openssl 生成不同的输出 尽管它们在配置上看起来相同 使用相同的键和 IV 文本 敏捷的棕色狐狸跳过了懒狗 加密为 Base64 字符串 openssl A8cMRI
  • JavaFX 中具有自定义内容的 ListView

    How i can make custom ListView with JavaFx for my app I need HBox with image and 2 Labels for each line listView 您可以通过查看
  • Cassandra java驱动程序协议版本和连接限制不匹配

    我使用的java驱动程序版本 2 1 4卡桑德拉版本 dsc cassandra 2 1 10cql 的输出给出以下内容 cqlsh 5 0 1 Cassandra 2 1 10 CQL spec 3 2 1 Native protocol
  • 但说真的...... ASP.NET WebAPI 实现示例(包括 OAuth)

    我真的对 WCF 示例不感兴趣 我发现的 DotNetOpenAuth 实现也是不完整的 https github com DavidChristiansen DotNetOpenAuth WebAPI 40 or 假设WCF https
  • Hazelcast 分布式锁与 iMap

    我们目前使用 Hazelcast 3 1 5 我有一个简单的分布式锁定机制 应该可以跨多个 JVM 节点提供线程安全性 代码非常简单 private static HazelcastInstance hInst getHazelcastIn
  • 匿名类上的 NotSerializedException

    我有一个用于过滤项目的界面 public interface KeyValFilter extends Serializable public static final long serialVersionUID 7069537470113
  • 如何使用 Maven 打包并运行具有依赖项的简单命令行应用程序?

    我对 java 和 Maven 都是全新的 所以这可能非常简单 如果我遵循maven2hello world此处的说明 http maven apache org guides getting started maven in Five m
  • Java 中的“Lambdifying”scala 函数

    使用Java和Apache Spark 已用Scala重写 面对旧的API方法 org apache spark rdd JdbcRDD构造函数 其参数为 AbstractFunction1 abstract class AbstractF
  • 很好地处理数据库约束错误

    再一次 它应该很简单 我的任务是在我们的应用程序的域对象中放置一个具有唯一约束的特定字段 这本身并不是一个很大的挑战 我刚刚做了以下事情 public class Location more fields Column unique tru
  • Jersey 客户端请求中未设置 Content-Length-Header

    我正在使用 Jersey Client 访问网络服务 如下所示 response r accept MediaType TEXT PLAIN TYPE header content length 0 post String class 其中
  • 我可以创建自定义 java.* 包吗?

    我可以创建一个与预定义包同名的自己的包吗在Java中 比如java lang 如果是这样 结果会怎样 这难道不能让我访问该包的受保护的成员 如果不是 是什么阻止我这样做 No java lang被禁止 安全管理器不允许 自定义 类java
  • 游戏内的java.awt.Robot?

    我正在尝试使用下面的代码来模拟击键 当我打开记事本时 它工作正常 但当我打开我想使用它的游戏时 它没有执行任何操作 所以按键似乎不起作用 我尝试模拟鼠标移动和点击 这些动作确实有效 有谁知道如何解决这个问题 我发现这个问题 如何在游戏中使用
  • Trie 数据结构 - Java [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 是否有任何库或文档 链接提供了在 java 中实现 Trie 数据结构的更多信息 任何帮助都会很棒 Thanks 你可以阅读Java特里树
  • ServletContainer 类未找到异常

    我无法再编译我的球衣项目 并且出现以下异常 GRAVE Servlet Project API threw load exception java lang ClassNotFoundException com sun jersey spi
  • 调整添加的绘制组件的大小和奇怪的摆动行为

    这个问题困扰了我好几天 我正在制作一个特殊的绘画程序 我制作了一个 JPanel 并添加了使用 Paint 方法绘制的自定义 jComponent 问题是 每当我调整窗口大小时 所有添加的组件都会 消失 或者只是不绘制 因此我最终会得到一个
  • GUI Java 程序 - 绘图程序

    我一直试图找出我的代码有什么问题 这个想法是创建一个小的 Paint 程序并具有红色 绿色 蓝色和透明按钮 我拥有我能想到的让它工作的一切 但无法弄清楚代码有什么问题 该程序打开 然后立即关闭 import java awt import
  • 如何在 JFreeChart 中设置多个系列的线条粗细?

    我创建了很多图表 在他们每个人中我都需要打电话 renderer setSeriesStroke i new BasicStroke 2 0f 对于每个系列 renderer is chart getXYPlot getRenderer 我

随机推荐

  • System.Web.HttpException:无法在 DropDownList 中选择多个项目

    在页面加载期间 索引 0 已被选择 然后这段代码语句选择了索引1 dropDownList Items FindByValue myValue Selected true assume myValue is found at index 1
  • XAMPP:如何升级 PEAR

    尝试升级 XAMPP pear 时出现以下错误 Fatal error Cannot use result of built in function in write context in C xampp php pear Archive
  • 干净架构中从网关到框架的依赖关系

    假设我想要实现一个基于 Uncle Bobs Clean Architecture 的 ASP NET 应用程序 据我了解 Asp Net 本身将属于框架圈 Asp Net 控制器位于网关 接口适配器层 我的业务逻辑将位于用例 实体层 依赖
  • NoSQL 数据库 - 日志处理/聚合和汇总的良好候选者? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 将自定义元素添加到 ngRepeat 列表

    我正在使用 cordova onsenui angularJs 开发一个移动应用程序 并且对填充 ngRepeat 列表有特殊要求 有些项目可能有附加参数 在这种情况下 我想显示项目的附加信息 完全用新的替代模式 或在下面附加一个新的自定义
  • 两位数[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我需要一个
  • Javascript/Jquery:使用数字范围验证输入

    我想验证预先配置的数字范围内的输入字段 只允许使用 1 到 24 之间的数字 我能怎么做 使用这样的自定义解决方案 field keypress function event var val parseInt this val HERE I
  • 在具有缩放事件的 内的两个元素之间放置一条线?

    我有这段代码 并且我有一个算法可以将线放在两个之间nodes 我想要这条线加入 nodo4与 nodo6 the rectangles是nodes并且每个都有与其相同的名字id 代码有点长 但实现这一点的重要部分在这里 setTimeout
  • PyPlot 图例:“Poly3DCollection”对象没有属性“_edgecolors2d”

    以下代码片段工作正常 直到我取消注释plt legend line import numpy as np import matplotlib pyplot as plt from mpl toolkits mplot3d import Ax
  • 如何在打字稿中声明公共枚举?

    对于以下课程 module LayoutEngine enum DocumentFormat DOCX 1 export class DocHeader public format DocumentFormat 我有两个问题 上面有一个编译
  • XST - 使用调用模板的输出作为返回值

    假设我有一个模板foo它可以输出给定参数的东西 现在我想使用该输出作为我的其他模板的参数 loop所以我可以循环输出一定次数 我一路上尝试过一些事情
  • 如何排除表单子类中 ModelForm 中声明的字段?

    在 Django 中 我试图从中派生 子类 一个新形式ModelForm我想删除一些字段 或者只包含一些字段 更正确 当然 显而易见的方法是 基本形式来自django contrib auth forms class MyUserChang
  • 如何以编程方式检查Android设备是否支持OTG功能

    我想以编程方式检查设备是否支持 OTG 功能 我在互联网上尝试了很多相关内容 但找不到任何东西 我怎样才能做到这一点 感谢 CommonsWare 如何检测Android是否完全支持USB https stackoverflow com q
  • ios 区分主页按钮点击和来电?

    是否有任何解决方案可以区分手动退出应用程序 通过单击主页按钮 和通过来电退出应用程序 请帮忙 是的 有点像 单击主页按钮或关闭屏幕将导致您的应用程序进入后台 applicationDidEnterBackground 而电话则不会 只会让您
  • 安装 Ruby 后,MAC OS X 上的活动开发人员路径无效

    我收到此错误 xcrun 错误 无效的活动开发人员路径 Applications Xcode app 缺少 xcrun 位于 Applications Xcode app usr bin xcrun This solution https
  • 使用 $http 单元测试 Angular 指令

    我有一个 Angular 指令 当附加到
  • :概要:在 Sphinx 自动模块中不起作用

    我正在使用 Sphinx 非常喜欢它 但它不会获取模块概要 没有错误或任何东西 只是简单 什么都没有 这是我试图自动记录的模块 vim set fileencoding utf 8 module CONF synopsis Configur
  • 使用 google chrome 扩展的 javascript 将文本插入文本区域

    我正在尝试扩展现有谷歌浏览器扩展的功能 使用 Wrike google chrome 扩展 我的目标是添加一个按钮 或多个按钮 该按钮将向描述字段 文本区域 添加一些文本 期望的效果是 如果用户单击 添加模板 按钮 代码 文本将被插入到 i
  • Spring + Hibernate + Sql Server 连接失败

    当我结合使用 Spring Hibernate 和 SQL Server 时 出现以下错误 19 17 09 137 ERROR org hibernate tool hbm2ddl SchemaValidator MSC service
  • 如何在 TDB TripleStore 中加载模型

    我有一个问题问你 我想在我的 Jena TDB TripleStore 上加载一个文件 我的文件很大 大约80Mb 大约700000个三倍RDF 当我尝试加载它时 执行停止工作或需要很长时间 我正在使用在 Web 服务上运行的代码 Stri