code: func DecompressAndLoad(qw graph.QuadWriter, batch int, path, typ string, writerFunc func(graph.QuadWriter) graph.BatchWriter) error {
  	if path == "" {
  		return nil
  	}
  	qr, err := QuadReaderFor(path, typ)
  	if err != nil {
  		return err
  	}
  	defer qr.Close()
  
  	if writerFunc == nil {
  		writerFunc = graph.NewWriter
  	}
  	dest := writerFunc(qw)
  
  	_, err = quad.CopyBatch(&batchLogger{BatchWriter: dest}, qr, batch)
  	if err != nil {
  		return fmt.Errorf("db: failed to load data: %v", err)
  	}
  	return dest.Close()
  }
docs: // DecompressAndLoad will load or fetch a graph from the given path, decompress
  // it, and then call the given load function to process the decompressed graph.
  // If no loadFn is provided, db.Load is called.