apache jena ObjectFileStorage and TupleLib error handling

依然范特西╮ 提交于 2020-01-07 05:06:09

问题


When trying out Apache Jena with the following code:

dataset = TDBFactory.createDataset(directory);
Model model = dataset.getDefaultModel();
dataset.begin(ReadWrite.WRITE);
Resource r=model.createResource(NS+"subject");
Property p = model.createProperty(NS + "predicate");
r.addProperty(p, "object");
model.write(System.out, "Turtle");
dataset.close();

Jena chokes on this. I am in the process of fixing this and purposely not showing what the content was but I am much more concerned with the way Jena chokes. Two error stack trace examples are shown below.

Question: How can one avoid such error messages? Is this kind of choking often happening?

Error stack trace #1

java.lang.IllegalArgumentException
    at java.nio.Buffer.limit(Buffer.java:275)
    at com.hp.hpl.jena.tdb.base.objectfile.ObjectFileStorage.read(ObjectFileStorage.java:328)
    at com.hp.hpl.jena.tdb.lib.NodeLib.fetchDecode(NodeLib.java:79)
    at com.hp.hpl.jena.tdb.store.nodetable.NodeTableNative.readNodeFromTable(NodeTableNative.java:187)
    at com.hp.hpl.jena.tdb.store.nodetable.NodeTableNative._retrieveNodeByNodeId(NodeTableNative.java:112)
    at com.hp.hpl.jena.tdb.store.nodetable.NodeTableNative.getNodeForNodeId(NodeTableNative.java:71)
    at com.hp.hpl.jena.tdb.store.nodetable.NodeTableCache._retrieveNodeByNodeId(NodeTableCache.java:125)
    at com.hp.hpl.jena.tdb.store.nodetable.NodeTableCache.getNodeForNodeId(NodeTableCache.java:84)
    at com.hp.hpl.jena.tdb.store.nodetable.NodeTableWrapper.getNodeForNodeId(NodeTableWrapper.java:54)
    at com.hp.hpl.jena.tdb.store.nodetable.NodeTableInline.getNodeForNodeId(NodeTableInline.java:67)
    at com.hp.hpl.jena.tdb.lib.TupleLib.triple(TupleLib.java:129)
    at com.hp.hpl.jena.tdb.lib.TupleLib.triple(TupleLib.java:113)
    at com.hp.hpl.jena.tdb.lib.TupleLib.access$000(TupleLib.java:44)
    at com.hp.hpl.jena.tdb.lib.TupleLib$3.convert(TupleLib.java:75)
    at com.hp.hpl.jena.tdb.lib.TupleLib$3.convert(TupleLib.java:71)
    at org.apache.jena.atlas.iterator.Iter$4.next(Iter.java:323)
    at org.apache.jena.atlas.iterator.Iter$4.next(Iter.java:323)
    at org.apache.jena.atlas.iterator.Iter$4.next(Iter.java:323)
    at org.apache.jena.atlas.iterator.Iter.next(Iter.java:923)
    at com.hp.hpl.jena.util.iterator.WrappedIterator.next(WrappedIterator.java:94)
    at org.apache.jena.riot.writer.TurtleShell$ShellGraph.findBNodesSyntax1(TurtleShell.java:304)
    at org.apache.jena.riot.writer.TurtleShell$ShellGraph.<init>(TurtleShell.java:147)
    at org.apache.jena.riot.writer.TurtleShell$ShellGraph.<init>(TurtleShell.java:103)
    at org.apache.jena.riot.writer.TurtleShell.writeGraphTTL(TurtleShell.java:88)
    at org.apache.jena.riot.writer.TurtleWriter$TurtleWriter$.write(TurtleWriter.java:47)
    at org.apache.jena.riot.writer.TurtleWriter$TurtleWriter$.access$000(TurtleWriter.java:35)
    at org.apache.jena.riot.writer.TurtleWriter.output(TurtleWriter.java:32)
    at org.apache.jena.riot.writer.TurtleWriterBase.output$(TurtleWriterBase.java:55)
    at org.apache.jena.riot.writer.TurtleWriterBase.write(TurtleWriterBase.java:49)
    at org.apache.jena.riot.adapters.RDFWriterRIOT.write(RDFWriterRIOT.java:101)
    at com.hp.hpl.jena.rdf.model.impl.ModelCom.write(ModelCom.java:345)

Error stack trace #2

org.apache.jena.atlas.lib.InternalErrorException: Invalid id node for subject (null node): ([0000000000000000], [000000000000001E], [000000000000003C])
    at com.hp.hpl.jena.tdb.lib.TupleLib.triple(TupleLib.java:127)
    at com.hp.hpl.jena.tdb.lib.TupleLib.triple(TupleLib.java:113)
    at com.hp.hpl.jena.tdb.lib.TupleLib.access$000(TupleLib.java:44)
    at com.hp.hpl.jena.tdb.lib.TupleLib$3.convert(TupleLib.java:75)
    at com.hp.hpl.jena.tdb.lib.TupleLib$3.convert(TupleLib.java:71)
    at org.apache.jena.atlas.iterator.Iter$4.next(Iter.java:323)
    at org.apache.jena.atlas.iterator.Iter$4.next(Iter.java:323)
    at org.apache.jena.atlas.iterator.Iter$4.next(Iter.java:323)
    at org.apache.jena.atlas.iterator.Iter.next(Iter.java:923)
    at com.hp.hpl.jena.util.iterator.WrappedIterator.next(WrappedIterator.java:94)
    at org.apache.jena.riot.writer.TurtleShell$ShellGraph.findBNodesSyntax1(TurtleShell.java:304)
    at org.apache.jena.riot.writer.TurtleShell$ShellGraph.<init>(TurtleShell.java:147)
    at org.apache.jena.riot.writer.TurtleShell$ShellGraph.<init>(TurtleShell.java:103)
    at org.apache.jena.riot.writer.TurtleShell.writeGraphTTL(TurtleShell.java:88)
    at org.apache.jena.riot.writer.TurtleWriter$TurtleWriter$.write(TurtleWriter.java:47)
    at org.apache.jena.riot.writer.TurtleWriter$TurtleWriter$.access$000(TurtleWriter.java:35)
    at org.apache.jena.riot.writer.TurtleWriter.output(TurtleWriter.java:32)
    at org.apache.jena.riot.writer.TurtleWriterBase.output$(TurtleWriterBase.java:55)
    at org.apache.jena.riot.writer.TurtleWriterBase.write(TurtleWriterBase.java:49)
    at org.apache.jena.riot.adapters.RDFWriterRIOT.write(RDFWriterRIOT.java:101)
    at com.hp.hpl.jena.rdf.model.impl.ModelCom.write(ModelCom.java:345)
    at org.simela.parser.TestJena.testJenaFromSimela(TestJena.java:71)

来源:https://stackoverflow.com/questions/28671443/apache-jena-objectfilestorage-and-tuplelib-error-handling

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!