当前位置: 首页 > 知识库问答 >
问题:

Jena TDB在命名模型访问时挂起/冻结

冯宏浚
2023-03-14
Dataset ds = TDBFactory.createDataset("tdb");
Model mod = ds.getDefaultModel();

File f = new File("example.rdf");
FileInputStream fis = new FileInputStream(f);

ds.begin(ReadWrite.WRITE);

// Get a new named model to load the data into
Model nm = ds.getNamedModel("http://example.com/model/example.rdf");
nm.read(fis, null);

// Do some queries on the Model using the utility methods of Model, no SPARQL used

// Add all statements from the named model to the default model
mod.add(nm);

ds.commit();
ds.end();

// So far everything works as expected, but the following line causes the freeze
Iterator<String> it = ds.listNames();

访问现有命名模型的任何方法调用都会导致相同的冻结反应,因此这对于getNamedModel(“http://example.com/model/example.rdf”);是相同的。通过调用getNamedModel(“http://example.com/model/example123.rdf”);来添加新的命名模型工作良好,因此只能中断对现有模型的访问。

使用环境:Linux 64bit、Oracle Java 1.7.0_09、Jena 2.7.4(包括TDB 0.9.4)

提前感谢您的帮助!

共有1个答案

朱锦
2023-03-14

你能把这个转换成一个测试用例并把它发送到jena用户邮件列表吗?

您应该在事务内部获得默认模型--您在事务外部获得它。

另外,如果您已经以事务性方式使用了数据集,那么就不能像在ds.listnames中那样以非事务性方式使用它。它不应该冻结--你应该得到某种警告。

 类似资料:
  • 从今天晚上开始,我遇到了一个非常棘手的问题。 如果我在我的android项目中有任何错误,并且构建失败,那么我的android工作室就会被冻结/卡住。除了杀死Android studio应用程序,我什么也做不了。即使我下一次打开同样的项目,gradle也会尝试构建并再次冻结。[请查找附带的屏幕截图] 我能找到的唯一解决办法是....我必须找到“构建失败”的确切原因,我必须使用其他编辑器解决这个问题

  • 我有一个命名管道文件,如下所示: 当我在PHP中执行类似操作时: 它挂起(即永不返回)。是否有办法使此呼叫返回和/或超时? (编辑) 请注意,我希望一个进程以写权限打开此管道,另一个进程以读权限打开此管道。有人在向这根管子写信,而另一个人在从这根管子读书。问题是读者有时会挂在fopen()上——不管它成功与否,我总是想返回它。

  • 问题内容: 是否可以在Scrapy管道中访问django模型,以便将已抓取的数据直接保存到模型中? 我已经看到了,但是我真的不知道如何设置它吗? 问题答案: 如果还有其他人遇到相同的问题,这就是我解决的方法。 我将其添加到我的scrapy settings.py文件中: 注意:上面的路径是到你的django项目文件夹,而不是settings.py文件。 现在,你将可以在scrapy项目中完全访问d

  • 我通过Xtext创建了一个DSL,现在需要将编辑器中创建的模型转换为另一个模型。我认为最直接的方法是使用某种M2M转换框架,但我需要访问文本文件后面的模型。问题:如何获得模型的引用?

  • 问题内容: 我在运行Eclipse时遇到问题。我用Java6和Java7尝试了3.7、4.2和4.3版本。没有任何帮助。它显示了弹出屏幕,但没有开始加载(我没有选择工作空间的机会)。使用参数启动它表明此刻它停止运行: 我已经启动了JVisualVM,但是看不到任何特殊的东西。没有死锁等。 编辑 我的观察非常深刻…约60秒钟的日食死亡后。 编辑2 现在停止 编辑3 我设法启动了它,但仅使用参数并从命

  • 注意:下面是对类似帖子/问题的编辑/修订,试图更好地识别我的问题/问题,并提供更好的代码示例来演示我的问题。 添加注意:代码示例已修改为包括工作代码。 我在同一个spring reactive应用程序中的两台路由器中有两个endpoint。第一个(/v2/demopojo)似乎可以正常工作。第二个(/v2/democlient/demopojo),使用WebClient委托给/v2/demopoj