Dear Jena users,
here is a test case that worked with TDB-0.8.10 but throws an exception with
jena 2.7.4. In short, you cannot anymore create a TDB dataset from a dir, close
it, and then create it again.
package ex;
import java.io.File;
import org.junit.Before;
import org.junit.Test;
import com.hp.hpl.jena.query.Dataset;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.StmtIterator;
import com.hp.hpl.jena.tdb.TDBFactory;
public class TDBProblem {
File tdbDir;
Dataset ds;
@Before
public void setUp() throws Exception {
tdbDir = new File("/Users/fps/Desktop/TDBTest");
}
@Test
public final void test1() {
openAndClose();
}
@Test
public final void test2() {
open();
}
@Test
public final void test3() {
openAndClose();
open();
}
void openAndClose() {
Dataset ds = TDBFactory.createDataset(tdbDir.getAbsolutePath());
Model m = ds.getDefaultModel();
m.add(m.createResource("http://foo.com/s"),
m.createProperty("http://foo.com/p"),
m.createResource("http://foo.com/o"));
m.commit();
ds.close();
}
void open() {
Dataset ds = TDBFactory.createDataset(tdbDir.getAbsolutePath());
// EXCEPTION HERE WITH JENA 2.7.4:
Model m = ds.getDefaultModel();
StmtIterator it = m.listStatements();
for(;it.hasNext();) {
System.out.println(it.next());
}
}
}
The exception you get (on ds.getDefaultModel()) is:
java.lang.NullPointerException
at
com.hp.hpl.jena.tdb.store.GraphTriplesTDB.createPrefixMapping(GraphTriplesTDB.java:92)
at
com.hp.hpl.jena.sparql.graph.GraphBase2.getPrefixMapping(GraphBase2.java:194)
at
com.hp.hpl.jena.rdf.model.impl.ModelCom.getPrefixMapping(ModelCom.java:908)
at
com.hp.hpl.jena.rdf.model.impl.ModelCom.withDefaultMappings(ModelCom.java:952)
at com.hp.hpl.jena.rdf.model.impl.ModelCom.<init>(ModelCom.java:66)
at com.hp.hpl.jena.rdf.model.impl.ModelCom.<init>(ModelCom.java:62)
at
com.hp.hpl.jena.rdf.model.ModelFactory.createModelForGraph(ModelFactory.java:166)
at
com.hp.hpl.jena.sparql.core.DatasetImpl.graph2model(DatasetImpl.java:266)
at
com.hp.hpl.jena.sparql.core.DatasetImpl.getDefaultModel(DatasetImpl.java:102)
at ex.TDBProblem.open(TDBProblem.java:48)
Best,
fps