@Override public void save(OutputStream output, ControlInfo ci, ProgressListener listener) throws IOException { // Dump header into an array to calculate size and have it prepared. ByteArrayOutputStream headerData = new ByteArrayOutputStream(); IteratorTripleString iterator = this.search("", "", ""); while(iterator.hasNext()) { TripleString next = iterator.next(); IOUtil.writeString(headerData, next.asNtriple().toString()); } // Create ControlInfo ci.clear(); ci.setType(ControlInfo.Type.HEADER); ci.setFormat(HDTVocabulary.HEADER_NTRIPLES); ci.setInt("length",headerData.size()); ci.save(output); // Save Data output.write(headerData.toByteArray()); }