Contribute to the DSpace Development Fund

The newly established DSpace Development Fund supports the development of new features prioritized by DSpace Governance. For a list of planned features see the fund wiki page.

Note

The project home for this project is: https://github.com/DSpace-Labs/SAFBuilder


SAF Packager is becoming outdated, other projects exist

After the core developer left, the SAF Packager / SAFBuilder has not been maintained in recent years. But a number of newer, similar programs exist from other community members:


The input for a command-line batch ingest of materials to DSpace is well documented, and is called "Simple Archive Format", however there needs to be a tool that easily facilitates creating a Simple Archive Format package. The use case satisfied with the Simple Archive Format Packager is that someone has a spreadsheet filled with metadata as well as content files that are eventually destined for repository ingest.

Thus the input to the Simple Archive Format Packager is a spreadsheet (.csv) that has the following columns:

  • filename of the content file(s)
  • namespace.element.qualifier metadata for the item. Examples would be: dc.description or dc.contributor.author

Further, dates need to be in ISO-8601 format in order to be properly recognized. And for any column that has multiple values, you can separate each entry with a double-pipe "||".  For example, for multiple files just set "filename" to "file1.pdf||file2.pdf||file3.pdf".  Similarly, multiple "dc.subject" values can be separated by "||" as shown in the below example.

While you are preparing the batch load, you have a directory containing a spreadsheet filled with metadata and content files.

Obtaining, Compiling, and Running SAFBuilder

The SAFBuilder project resides on GitHub. Please refer to the project instructions for how to install and run it. Its requires Java JDK 7+, and runs from the terminal / command prompt.


The ./safbuilder.sh command with no arguments will show the help screen.

Recompiling SAFBuilder, just a moment...

usage: SAFBuilder

 -c,--csv <arg>   Filename with path of the CSV spreadsheet. This must be in the same directory as the content files

 -h,--help        Display the Help

 -m,--manifest    Initialize a spreadsheet, a manifest listing all of the files in the directory, you must specify a CSV for -c

 -z,--zip         (optional) ZIP the output

There is sample data included with the tool to give an idea of how to use this.

To run the tool over the sample data:

./safbuilder.sh -c /home/dspace/SAFBuilder/src/sample_data/AAA_batch-metadata.csv

This creates the SimpleArchiveFormat directory inside of the directory specified, along with subdirectories, content files, metadata files that is ready to import into DSpace.


This is then immediately ready to be batch imported into DSpace. If you created a ZIP file of this, that can be imported to DSpace using Batch Import UI. An example of DSpace command line import is.

sudo /dspace/bin/dspace import -a 
    -e peter@longsight.com 
    -c 1811/49710 
    -s /home/dspace/SAFBuilder/src/sample_data/SimpleArchiveFormat/
    -m /home/dspace/SAFBuilder/src/sample_data/batch1.map

Further Work

This packager works as a stand-alone tool, and requires knowledge of Java to be able to run. Thus satisfying the initial need to be able to package many items to be batch loaded into DSpace, using DSpace's launcher item-import. So the remaining goal of this project is to streamline the process of batch loading materials into DSpace.

Possibilities include:

  • refactoring so that it can become a Packager Plugin. Packager plugins allow you to implement a way for DSpace to accept an input package (containing content files, manifest, and metadata) that then creates DSpace items.
  • creating a client GUI for the desktop.
  • Dedicated web service
  • No labels

2 Comments

  1. Another tool with the same purpose written in GO can be found here: https://github.com/isido/saf-archiver

    (See https://groups.google.com/d/msg/dspace-community/H0tQq1qr2Ic/KeFodt4zBAAJ for further information)

  2. We've been using a similar tool for this, implemented in Python: https://github.com/lib-uoguelph-ca/dspace-csv-archive