RDFParser parser = Rio.createParser(format);
SailConnection sc = sail.getConnection();
try {
sc.begin();
SailInserter inserter = new SailInserter(sc);
SesameOutputAdapter outAdapter = new SesameOutputAdapter(inserter);
RDFSink scp = new SingleContextPipe(outAdapter, context, sail.getValueFactory());
SesameInputAdapter inAdapter = new SesameInputAdapter(scp);
parser.setRDFHandler(inAdapter);
inserter.startRDF();
try {
parser.parse(is, baseUri);
} catch (Exception e) {
inserter.endRDF();
sc.close();
throw e;
}
inserter.endRDF();
sc.commit();
} finally {
sc.rollback();
sc.close();
}