Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

DSpace System Documentation: Configuration

There are a numbers of ways in which DSpace may be configured and/or customized. This chapter of the documentation will discuss the configuration of the software and will also reference customizations that may be performed in the chapter following.

...

The full table of contents follows:

Table of Contents
minLevel2
outlinetrue
stylenone

General Configuration

In the following sections you will learn about the different configuration files that you will need to edit so that you may make your DSpace installation work. Of the several configuration files which you will work with, it is the dspace.cfg file you need to learn to configure first and foremost.

...

The property value may contain references to other configuration properties, in the form ${property.name}. This follows the ant convention of allowing references in property files. A property may not refer to itself. Examples:

Code Block

property.name = word1 ${other.property.name} more words
property2.name = ${dspace.dir}/rest/of/path

Property values can include other, previously defined values, by enclosing the property name in ${...}. For example, if your dspace.cfg contains:

Code Block

dspace.dir = /dspace
dspace.history = ${dspace.dir}/history

...

Things you should know about editing dspace.cfg files.
It is important to remember that there are * two dspace.cfg files after an installation of DSpace.*

  1. Wiki MarkupThe "source" file that is found in {{\[dspace-source\]/dspace/config/dspace.cfg}}
  2. Wiki MarkupThe "runtime" file that is found in {{\[dspace\]/config/dspace.cfg}}
    The runtime file is supposed to be the *copy* of the source file, which is considered the master version. However, the DSpace server and command programs only look at the _runtime_ configuration file, so when you are revising your configuration values, it is tempting to _only edit the runtime file_. *DO NOT* do this. Always make the same changes to the source version of {{dspace.cfg}} in addition to the runtime file. The two files should always be identical, since the source {{dspace.cfg}} will be the basis of your next upgrade.

Wiki MarkupTo keep the two files in synchronization, you can edit your files in {{\[dspace-source\]/dspace/config/}} and then you would run the following commands:

Code Block
cd [dspace-source]/dspace/target/dspace-
mvn package
cd [dspace-source]/dspace/target/dspace-<version>-build.dir 
ant update_configs

Wiki MarkupThis will copy the source {{dspace.cfg}} (along with other configuration files) into the runtime ({{\[dspace\]/config}}) directory.

You should remember that after editing your configuration file(s), and you are done and wish to implement the changes, you will need to:

...

  • Run {{ant \ -Dconfig=\[dspace\]/config/dspace.cfg update}} if you are updating your {{dspace.cfg}} file and wish to see the changes appear. Follow the usual sequence with copying your webapps.unmigrated-wiki-markup
  • If you edit _dspace.cfg_ in _\[dspace-source\]/dspace/config/_, you should then run '_ant init_configs_' in the directory _\[dspace-source\]/dspace/target/dspace-1.5.2-build.dir_ so that any changes you may have made are reflected in the configuration files of other applications, for example Apache. You may then need to restart those applications, depending on what you changed.

The dspace.cfg Configuration Properties File

...

Property:

dspace.dir

Example Value:

/dspace

Informational Note:

Root directory of DSpace installation. Omit the trailing '/'. Note that if you change this, there are several other parameters you will probably want to change to match, e.g. assetstore.dir .

Property:

dspace.hostname

Example Value:

dspace.hostname = dspace.mysu.edu

Informational Note:

Fully qualified hostname; do not include port number.

Property:

dspace.baseUrl

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="0c384333-10b5-4f2e-be55-038b29673b32"><ac:plain-text-body><![CDATA[

Example Value:

[http://dspacetest.myu.edu:8080]

]]></ac:plain-text-body></ac:structured-macro>

Example Value:

http://dspacetest.myu.edu:8080

Informational Note:

Main URL at which DSpace

Informational Note:

Main URL at which DSpace Web UI webapp is deployed. Include any port number, but do not include the trailing '/'.

Property:

dspace.url

Example Value:

dspace.url = ${dspace.baseUrl}/jspui

Informational note

DSpace base URL. URL that determines whether JSPUI or XMLUI will be loaded by default. Include port number etc., but NOT trailing slash. Change to /xmlui if you wish to use the xmlui (Manakin) as the default, or remove "/jspui" and set webapp of your choice as the "ROOT" webapp in the servlet engine.

Property:

dspace.oai.url

Example Value:

dspace.oai.url = ${dspace.baseUrl}/oai

Informational note:

The base URL of the OAI webapp (do not include /request).

Property:

dspace.name

Example Value:

dspace.name = DSpace at My University

Informational Note:

Short and sweet site name, used throughout Web UI, e-mails and elsewhere (such as OAI protocol)

...

Wording of E-mail Messages

...

Sometimes DSpace automatically sends e-mail messages to users, for example, to inform them of a new work flow task, or as a subscription e-mail alert. The wording of emails can be changed by editing the relevant file in {{\[dspace\]/config/emails}} . Each file is commented. Be careful to keep the right number 'placeholders' (e.g._\{2\}_).

Note: You should replace the contact-information "dspace-help@myu.edu or call us at xxx-555-xxxx" with your own contact details in:
config/emails/change_password
config/emails/register

...

Property:

assetstore.dir

Example Value:

assetstore.dir = ${dspace.dir}/assetstore

Informational Note:

This is Asset (bitstream) store number 0 (Zero). You need not place your assetstore under the /dspace directory, but may want to place it on a different logical volume on the server that DSpace resides. So, you might have something like this: assetstore.dir = /storevgm/assestore .

Property:

Code Block
assetstore.dir.1
assetstore.dir.2

Example Value:

Code Block
assetstore.dir.1 = /second/assetstore
assetstore.dir.2 = /third/assetstore

Informational Note:

This property specifies extra asset stores like the one above, counting from one (1) upwards. This property is commented out (#) until it is needed.

Property:

assetstore.incoming

Example Value:

assetstore.incoming = 1<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version = " 1" ac:macro-id="15213253-8a21-488a-9326-78c1aad1136d"><ac:plain-text-body><![CDATA[

Informational Note:

Informational Note: Specify the number of the store to use for new bitstreams with this property. The default is 0 [zero] which corresponds to the 'assestore.dir' above. As the asset store number is stored in the item metadata (in the database), always keep the assetstore numbering consistent and don't change the asset store number in the item metadata.

]]></ac:plain-text-body></ac:structured-macro>

Info
title
Info
titleBe Careful

In the examples above, you can see that your storage does not have to be under the /dspace directory. For the default installation it needs to reside on the same server (unless you plan to configure SRB (see below)). So, if you added storage space to your server, and it has a different logical volume/name/directory, you could have the following as an example:

...

Property:

log.init.config

Example Value:

log.init.config = ${dspace.dir}/config/log4j.properties

Informational Note:

This is where your logging configuration file is located. You may override the default log4j configuration by providing your own. Existing alternatives are:

Code Block

log.init.config = ${dspace.dir}/config/log4j.properties
log.init.config = ${dspace.dir}/config/log4j-console.properties

Property:

log.dir

Example value:

log.dir = ${dspace.dir}/log

Informational Note:

This is where to put the logs. (This is used for initial configuration only)

Property:

useProxies

Example Value:

useProxies = true

Informational Note:

If your DSpace instance is protected by a proxy server, in order for log4j  to log the correct IP address of the user rather than of the proxy, it must be configured to look for the X-Forwarded-For header.  This feature can be enabled by ensuring this setting is set to true.  This also affects IPAuthentication, and should be enabled for that to work properly if your installation uses a proxy server.

...

In the example above, search.index.1 and search.index.2 and search.index.3 are configured as the author search field. The author index is created by Lucene indexing all dc.contributor.*,dc.creator.* and description.statementofresponsibility metadata fields.unmigrated-wiki-markup

After changing the configuration run {{/\[dspace\]/bin/dspace index-init}} to regenerate the indexes.

While the indexes are created, this only affects the search results and has no effect on the search components of the user interface. One will need to customize the user interface to reflect the changes, for example, to add the a new search category to the Advanced Search.

...

Property:

handle.canonical.prefix

Example Value

{{handle.canonical.prefix = http://hdl.handle.net

Image Removed

/
}}
handle.canonical.prefix = ${dspace.url}/handle/

Informational Note:

Canonical Handle URL prefix. By default, DSpace is configured to use http://hdl.handle.net/

Image Removed

as the canonical URL prefix when generating dc.identifier.uri during submission, and in the 'identifier' displayed in item record pages. If you do not subscribe to CNRI's handle service, you can change this to match the persistent URL service you use, or you can force DSpace to use your site's URL, e.g. handle.canonical.prefix = ${dspace.url}/handle/. Note that this will not alter dc.identifer.uri metadata for existing items (only for subsequent submissions).

Property:

handle.prefix

Example Value

handle.prefix = 1234.56789

Informational Note:

The default installed by DSpace is 123456789 but you will replace this upon receiving a handle from CNRI.

Property:

handle.dir

Example Value:

handle.dir = ${dspace.dir}/handle-server

Informational Note:

The default files, as shown in the Example Value is where DSpace will install the files used for the Handle Server.

...

You can also implement more dynamic or configurable Media/Format Filters which extend SelfNamedPlugin .

Info
titleMore Information on MediaFilters

For more information on Media/Format Filters, see the section on Transforming DSpace Content (MediaFilters).

Crosswalk and Packager Plugin Settings

The subsections below give configuration details based on the types of crosswalks and packager plugins you need to implement.

Info
titleMore Information on Packagers & Crosswalks

For more information on using Packagers and Crosswalks, see the section on Importing and Exporting Content via Packages.

Configurable MODS Dissemination Crosswalk

...

Properties:

crosswalk.mods.properties.MODS
crosswalk.mods.properties.mods

Example Values:

crosswalk.mods.properties.MODS = crosswalks/mods.properties
crosswalk.mods.properties.mods = crosswalks/mods.properties<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="a30b515d-b83e-4c7e-a8a1-5f4c0f9de533"><ac:plain-text-body><![CDATA[

Informational Note:

This defines a crosswalk named MODS whose configuration comes from the file [dspace]/config/crosswalks/mods.properties . (In the above example, the lower-case name was added for OAI-PMH)]]></ac:plain-text-body></ac:structured-macro>

The MODS crosswalk properties file is a list of properties describing how DSpace metadata elements are to be turned into elements of the MODS XML output document. The property name is a concatenation of the metadata schema, element name, and optionally the qualifier. For example, the contributor.author element in the native Dublin Core schema would be: dc.contributor.author. The value of the property is a line containing two segments separated by the vertical bar ("|"_): The first part is an XML fragment which is copied into the output document. The second is an XPath expression describing where in that fragment to put the value of the metadata element. For example, in this property:

...

Code Block
crosswalk.submissionPluginName.stylesheet =
          1        2        3               4

Wiki Markup{{crosswalk}} first part of the property key. {{submission}} second part of the property key. {{PluginName}} is the name of the plugin. The _path_ value is the path to the file containing the crosswalk stylesheet (relative to {{/\[dspace\]/config}}). Here is an example that configures a crosswalk named "LOM" using a stylesheet in {{\[dspace\crosswalk first part of the property key.
submission second part of the property key.
PluginName is the name of the plugin. The path value is the path to the file containing the crosswalk stylesheet (relative to /[dspace]/config).
Here is an example that configures a crosswalk named "LOM" using a stylesheet in [dspace]/config/crosswalks/d-lom.xsl}}: {{
crosswalk.submission.LOM.stylesheet = crosswalks/d-lom.xsl}}
A dissemination crosswalk can be configured by starting with the property key _crosswalk.dissemination_. Example: {{
crosswalk.dissemination.PluginName.stylesheet = path}}
The _PluginName_ is the name of the plugin (\!) . The _path_ value is the path to the file containing the crosswalk stylesheet (relative to {{/\[dspace\]/config}}).

You can make two different plugin names point to the same crosswalk, by adding two configuration entries with the same path:

Code Block

crosswalk.submission.MyFormat.stylesheet = crosswalks/myformat.xslt
     crosswalk.submission.almost_DC.stylesheet = crosswalks/myformat.xslt

The dissemination crosswalk must also be configured with an XML Namespace (including prefix and URI) and an XML schema for its output format. This is configured on additional properties in the DSpace configuration:

Code Block

crosswalk.dissemination.PluginName.namespace.Prefix = namespace-URI
     crosswalk.dissemination.PluginName.schemaLocation = schemaLocation value

For example:

Code Block

crosswalk.dissemination.qdc.namespace.dc = http://purl.org/dc/elements/1.1/
     crosswalk.dissemination.qdc.namespace.dcterms = http://purl.org/dc/terms/
     crosswalk.dissemination.qdc.schemalocation = http://purl.org/dc/elements/1.1/ \
     http://dublincore.org/schemas/xmls/qdc/2003/04/02/qualifieddc.xsd

...

Testing the submission crosswalk is more difficult, so we have supplied a command-line utility to help. It calls the crosswalk plugin to translate an XML document you submit, and displays the resulting intermediate XML (DIM). Invoke it with:

Code Block
[dspace]/bin/dspace dsrun
     org.dspace.content.crosswalk.XSLTIngestionCrosswalk [-l] plugin input-file

...

Properties:

crosswalk.qdc.namspace.qdc.dc

Example Value:

crosswalk.qdc.namspace.qdc.dc = http://purl.org/dc/elements/1.1_

Properties:

crosswalk.qdc.namspace.qdc.dcterms

Example Value:

crosswalk.qdc.namspace.qdc.dc = http://purl.org/dc/terms/_

Properties:

crosswalk.qdc.schemaLocation.QDC

Example Value:

Code Block
crosswalk.qdc.schemaLocation.QDC = http://www.purl.org/dc/terms \
      http://dublincore.org/schemas/xmls/qdc/2006/01/06/dcterms.xsd \
      http://purl.org/dc/elements/1.1 \
      http://dublincore.org/schemas/xmls/qdc/2006/01/06/dc.xsd

Properties:

crosswalk.qdc.properties.QDC

Example Value:

crosswalk.qdc.properties.QDC = crosswalks/QDC.properties

Informational Note:

Configuration of the QDC Crosswalk dissemination plugin for Qualified DC. (Add lower-case name for OAI-PMH. That is, change QDC to qdc.)}}

...

In the property key "{{crosswalk.qdc.properties.QDC}}" the value of this property is a path to a separate properties file containing the configuration for this crosswalk. The pathname is relative to the DSpace configuration directory {{/\[dspace\]/config}} . Referring back to the "Example Value" for this property key, one has {{crosswalks/qdc.properties}} which defines a crosswalk named {{QDC}} whose configuration comes from the file {{\[dspace\]/config/crosswalks/qdc.properties}} .

You will also need to configure the namespaces and schema location strings for the XML output generated by this crosswalk. The namespaces properties names are formatted:

...

You can add names for the existing plugins, and add new plugins, by altering these configuration properties. See the Plugin Manager architecture for more information about plugins.

...

Property:

embargo.field.terms

Example Value:

embargo.field.terms = SCHEMA.ELEMENT.QUALIFIER

Informational Note:

Embargo terms will be stored in the item metadata. This property determines in which metadata field these terms will be stored. An example could be dc.embargo.terms

Property:

embargo.field.lift

Example Value:

embargo.field.lift = SCHEMA.ELEMENT.QUALIFIER

Informational Note:

The Embargo lift date will be stored in the item metadata. This property determines in which metadata field the computed embargo lift date will be stored. You may need to create a DC metadata field in your Metadata Format Registry if it does not already exist. An example could be dc.embargo.liftdate

Property:

embargo.terms.open

Example Value:

embargo.terms.open = forever

Informational Note:

You can determine your own values for the embargo.field.terms property (see above). This property determines what the string value will be for indefinite embargos. The string in terms field to indicate indefinite embargo.

Property:

plugin.single.org.dspace.embargo.EmbargoSetter

Example Value:

plugin.single.org.dspace.embargo.EmbargoSetter = org.dspace.embargo.DefaultEmbargoSetter

Informational Note:

To implement the business logic to set your embargos, you need to override the EmbargoSetter class. If you use the value DefaultEmbargoSetter, the default implementation will be used.

Property:

plugin.single.org.dspace.embargo.EmbargoLifter

Example Value:

plugin.single.org.dspace.embargo.EmbargoLifter = org.dspace.embargo.DefaultEmbargoLifter

Informational Note:

To implement the business logic to lift your embargos, you need to override the EmbargoLifter class. If you use the value DefaultEmbargoLifter, the default implementation will be used.

Key Recommendations:

  1. If using existing metadata fields, avoid any that are automatically managed by DSpace. For example, fields like 'date.issued' or 'date.accessioned' are normally automatically assigned, and thus must not be recruited for embargo use.
  2. Do not place the field for 'lift date' in submission screens. This can potentially confuse submitters because they may feel that they can directly assign values to it. As noted in the life-cycle above, this is erroneous: the lift date gets assigned by the embargo system based on the terms. Any pre-existing value will be over-written. But see next recommendation for an exception.
  3. As the life-cycle discussion above makes clear, after the terms are applied, that field is no longer actionable in the embargo system. Conversely, the 'lift date' field is not actionable until the application. Thus you may want to consider configuring both the 'terms' and 'lift date' to use the same metadata field. In this way, during workflow you would see only the terms, and after item installation, only the lift date. If you wish the metadata to retain the terms for any reason, use two distinct fields instead.
    . Detailed Operation

After the fields defined for terms and lift date have been assigned in dspace.cfg, and created and configured wherever they will be used, you can begin to embargo items simply by entering data (dates, if using the default setter) in the terms field. They will automatically be embargoed as they exit workflow. For the embargo to be lifted on any item, however, a new administrative procedure must be added: the 'embargo lifter' must be invoked on a regular basis. This task examines all embargoed items, and if their 'lift date' has passed, it removes the access restrictions on the item. Good practice dictates automating this procedure using cron jobs or the like, rather than manually running it. The lifter is available as a target of the 1.6 DSpace launcher: see Section 8.

Extending Embargo Functionality

The 1.6 Embargo system supplies a default 'interpreter/imposition' class (the 'Setter') as well as a 'Lifter', but they are fairly rudimentary in several aspects.

  1. Setter. The default setter recognizes only two expressions of terms: either a literal, non-relative date in the fixed format 'yyyy-mm-dd' (known as ISO 8601), or a special string used for open-ended embargo (the default configured value for this is 'forever', but this can be changed in dspace.cfg to 'toujours', 'unendlich', etc). It will perform a minimal sanity check that the date is not in the past. Similarly, the default setter will only remove all read policies as noted above, rather than applying more nuanced rules (e.g allow access to certain IP groups, deny the rest). Fortunately, the setter class itself is configurable and you can 'plug in' any behavior you like, provided it is written in java and conforms to the setter interface. The dspace.cfg property:
    Code Block
    # implementation of embargo setter plugin - replace with local implementation if applicable
    plugin.single.org.dspace.embargo.EmbargoSetter = org.dspace.embargo.DefaultEmbargoSetter
    controls which setter to use.
  2. Lifter.The default lifter behavior as described above‚ essentially applying the collection policy rules to the item‚ might also not be sufficient for all purposes. It also can be replaced with another class:
    Code Block
    # implementation of embargo lifter plugin--replace with local implementation if applicable
    plugin.single.org.dspace.embargo.EmbargoLifter = org.dspace.embargo.DefaultEmbargoLifter

Step-by-Step Setup Examples

  1. Simple Dates.If you want to enter simple calendar dates for when an embargo will expire, follow these steps.
    1. Select a metadata field. Let's use dc.description.embargo. This field does not exist in in the default DSpace metadata directory, so login as an administrator, go the metadata registry page, select the 'dc' schema, then add the metadata field.
    2. Wiki Markup
      Expose the metadata field. Edit _\[dspace\]/config/input-forms.xml_ . If you have only one form‚ usually 'traditional', add it there. If you have multiple forms, add it only to the forms linked to collections for which embargo applies:
      Code Block
      <form name="traditional">
          <page number="1">
            ...
             <field>
               <dc-schema>dc</dc-schema>
               <dc-element>description</dc-element>
               <dc-qualifier>embargo</dc-qualifier>
               <repeatable>false</repeatable>
               <label>Embargo Date</label>
               <input-type>onebox</input-type>
               <hint>If required, enter date 'yyyy-mm-dd' when embargo expires or 'forever'.</hint>
               <required></required>
             </field>
      
      Note: if you want to require embargo terms for every item, put a phrase in the <required> element. Example:<required>You must enter an embargo date</required>
    3. Wiki Markup
      Configure Embargo. Edit _\[dspace\]/config/dspace.cfg_. Find the Embargo properties and set these two:
      Code Block
      # DC metadata field to hold the user-supplied embargo terms
      embargo.field.terms = dc.description.embargo
      
      # DC metadata field to hold computed "lift date" of embargo
      embargo.field.lift = dc.description.embargo
    4. Restart DSpace application. This will pick up these changes. Now just enter future dates (if applicable) in web submission and the items will be placed under embargo. You can enter years ('2020'), years and months ('2020-12'), or also days ('2020-12-15').
    5. Wiki Markup
      Periodically run the lifter. Run the task:_\[dspace\]/bin/dspace embargo-lifter_You will want to run this task in a cron-scheduled or other repeating way. Item embargoes will be lifted as their dates pass.
  2. Period Sets. If you wish to use a fixed set of time periods (e.g. 90 days, 6 months and 1 year) as embargo terms, follow these steps, which involve using a custom 'setter'.
    1. Select two metadata fields. Let's use 'dc.embargo.terms' and 'dc.embargo.lift'. These fields do not exist in the default DSpace metadata registry. Login as an administrator, go the metadata registry page, select the 'dc' schema, then add the metadata fields.
    2. Wiki Markup
      Expose the 'term' metadata field. The lift field will be assigned by the embargo system, so it should not be exposed directly. Edit _\[dspace\]/config/input-forms.xml_ . If you have only one form (usually 'traditional') add it there. If you have multiple forms, add it only to the form(s) linked to collection(s) for which embargo applies. First, add the new field to the 'form definition':
      Code Block
      <form name="traditional">
          <page number="1">
            ...
             <field>
               <dc-schema>dc</dc-schema>
               <dc-element>embargo</dc-element>
               <dc-qualifier>terms</dc-qualifier>
               <repeatable>false</repeatable>
               <label>Embargo Terms</label>
               <input-type value-pairs-name="embargo_terms">dropdown</input-type>
               <hint>If required, select embargo terms.</hint>
               <required></required>
               </field>
      Note: If you want to require embargo terms for every item, put a phrase in the <required> element, e.g._<required>You must select embargo terms</required>_Observe that we have referenced a new value-pair list: "embargo_terms'. We must now define that as well (only once even if references by multiple forms):
      Code Block
      <form-value-pairs>
         ...
         <value-pairs value-pairs-name="embargo_terms" dc-term="embargo.terms">
           <pair>
             <displayed-value>90 days</displayed-value>
             <stored-value>90 days</stored-value>
           </pair>
           <pair>
             <displayed-value>6 months</displayed-value>
             <stored-value>6 months</stored-value>
           </pair>
           <pair>
             <displayed-value>1 year</displayed-value>
             <stored-value>1 year</stored-value>
           </pair>
         </value-pairs>
      
      Note: if desired, you could localize the language of the displayed value.
    3. Configure Embargo. Edit /dspace/config/dspace.cfg. Find the Embargo properties and set the following properties:
      Code Block
      # DC metadata field to hold the user-supplied embargo terms
          embargo.field.terms = dc.embargo.terms
      
          # DC metadata field to hold computed "lift date" of embargo
          embargo.field.lift = dc.embargo.lift
      
          # implementation of embargo setter plugin - replace with local implementation if applicable
          plugin.single.org.dspace.embargo.EmbargoSetter = org.dspace.embargo.DayTableEmbargoSetter

Now add a new property called 'embargo.terms.days' as follows:

Code Block
# DC metadata field to hold computed "lift date" of embargo
    embargo.terms.days = 90 days:90, 6 months:180, 1 year:365
    1. This step is the same as Step A.4 above, except that instead of entering a date, the submitter will select a value form a drop-down list.
    1. Wiki Markup
      Periodically run the lifter. Run the task:
      {{\[dspace\]/bin/dspace embargo-lifter}} .
      You will want to run this task in a cron-scheduled or other repeating way. Item embargoes will be lifted as their dates pass.

Checksum Checker Settings

Wiki Markup
DSpace now comes with a Checksum Checker script ({{\[dspace\]/bin/dspace checker}}) which can be scheduled to verify the checksum of every item within DSpace. Since DSpace calculates and records the checksum of every file submitted to it, this script is able to determine whether or not a file has been changed (either manually or by some sort of corruption or virus). The idea being that the earlier you can identify a file has changed, the more likely you'd be able to recover it (assuming it was not a wanted change).

Property:

plugin.single.org.dspace.checker.BitstreamDispatcher

Example Value:

plugin.single.org.dspace.checker.BitstreamDispatcher = org.dspace.checker.SimpleDispatcher

Informational Note:

The Default dispatcher is case non is specified.

Property:

checker.retention.default

Example Value:

checker.retention.default = 10y

Informational Note:

This option specifies the default time frame after which all checksum checks are removed from the database (defaults to 10 years). This means that after 10 years, all successful or unsuccessful matches are removed from the database.

Property:

checker.retention.CHECKSUM_MATCH

Example Value:

checker.retention.CHECKSUM_MATCH = 8w

Informational Note:

This option specifies the time frame after which a successful match will be removed from your DSpace database (defaults to 8 weeks). This means that after 8 weeks, all successful matches are automatically deleted from your database (in order to keep that database table from growing too large).

Item Export and Download Settings

It is possible for an authorized user to request a complete export and download of a DSpace item in a compressed zip file. This zip file may contain the following:
dublin_core.xml
license.txt
contents (listing of the contents)
handle file itself and the extract file if available

The configuration settings control several aspects of this feature:

Property:

org.dspace.app.itemexport.work.dir

Example Value:

org.dspace.app.itemexport.work.dir = ${dspace.dir}/exports

Informational Note:

The directory where the exports will be done and compressed.

Property:

org.dspace.app.itemexport.download.dir

Example Value:

org.dspace.app.itemexport.download.dir = ${dspace.dir}/exports/download

Informational Note

The directory where the compressed files will reside and be read by the downloader.

Property:

org.dspace.app.itemexport.life.span.hours

Example Value:

org.dspace.app.itemexport.life.span.hours = 48

Informational Note

The length of time in hours each archive should live for. When new archives are created this entry is used to delete old ones.

Property:

org.dspace.app.itemexport.max.size

Example Value:

org.dspace.app.itemexport.max.size = 200

Informational Note

The maximum size in Megabytes (Mb) that the export should be. This is enforced before the compression. Each bitstream's size in each item being exported is added up, if their cumulative sizes are more than this entry the export is not kicked off.

Subscription Emails

DSpace, through some advanced installation and setup, is able to send out an email to collections that a user has subscribed. The user who is subscribed to a collection is emailed each time an item id added or modified. The following property key controls whether or not a user should be notified of a modification.

Property:

eperson.subscription.onlynew

Example Value:

eperson.subscription.onlynew = true

Informational Note:

For backwards compatibility, the subscription emails by default include any modified items. The property key is COMMENTED OUT by default.

Hiding Metadata

It is now possible to hide metadata from public consumption that is only available to the Administrator.

Property:

metadata.hide.dc.description.provenance

Example Value:

metadata.hide.dc.description.provenance = true

Informational Note:

Hides the metadata in the property key above except to the administrator. Fields named here are hidden in the following places UNLESS the logged-in user is an Administrator:

  1. XMLUI metadata XML view, and Item splash pages (long and short views).
  2. JSPUI Item splash pages
  3. OAI-PMH server, "oai_dc" format. (Note: Other formats are *not* affected.)To designate a field as hidden, add a property here in the form: metadata.hide.SCHEMA.ELEMENT.QUALIFIER = true. This default configuration hides the dc.description.provenance field, since that usually contains email addresses which ought to be kept private and is mainly of interest to administrators.

Settings for the Submission Process

These settings control two aspects of the submission process: thesis submission permission and whether or not a bitstream file is required when submitting to a collection.

Property:

webui.submit.blocktheses

Example Value:

webui.submit.blocktheses = false

Informational Note:

Controls whether or not that the submission should be marked as a thesis.

Property:

webui.submit.upload.required

Example Value:

webui.submit.upload.required = true

Informational Note:

Whether or not a file is required to be uploaded during the "Upload" step in the submission process. The default is true. If set to "false", then the submitter (human being) has the option to skip the uploading of a file.

Configuring Creative Commons License

Info
titleMore Embargo Details

More details on Embargo configuration, including specific examples can be found in the Embargo section of the documentation.

Checksum Checker Settings

DSpace now comes with a Checksum Checker script ([dspace]/bin/dspace checker) which can be scheduled to verify the checksum of every item within DSpace. Since DSpace calculates and records the checksum of every file submitted to it, this script is able to determine whether or not a file has been changed (either manually or by some sort of corruption or virus). The idea being that the earlier you can identify a file has changed, the more likely you'd be able to recover it (assuming it was not a wanted change).

Property:

plugin.single.org.dspace.checker.BitstreamDispatcher

Example Value:

plugin.single.org.dspace.checker.BitstreamDispatcher = org.dspace.checker.SimpleDispatcher

Informational Note:

The Default dispatcher is case non is specified.

Property:

checker.retention.default

Example Value:

checker.retention.default = 10y

Informational Note:

This option specifies the default time frame after which all checksum checks are removed from the database (defaults to 10 years). This means that after 10 years, all successful or unsuccessful matches are removed from the database.

Property:

checker.retention.CHECKSUM_MATCH

Example Value:

checker.retention.CHECKSUM_MATCH = 8w

Informational Note:

This option specifies the time frame after which a successful match will be removed from your DSpace database (defaults to 8 weeks). This means that after 8 weeks, all successful matches are automatically deleted from your database (in order to keep that database table from growing too large).

Info
titleMore Checksum Checking Details

For more information on using DSpace's built-in Checksum verification system, see the section on Validating CheckSums of Bitstreams.

Item Export and Download Settings

It is possible for an authorized user to request a complete export and download of a DSpace item in a compressed zip file. This zip file may contain the following:
dublin_core.xml
license.txt
contents (listing of the contents)
handle file itself and the extract file if available

The configuration settings control several aspects of this feature:

Property:

org.dspace.app.itemexport.work.dir

Example Value:

org.dspace.app.itemexport.work.dir = ${dspace.dir}/exports

Informational Note:

The directory where the exports will be done and compressed.

Property:

org.dspace.app.itemexport.download.dir

Example Value:

org.dspace.app.itemexport.download.dir = ${dspace.dir}/exports/download

Informational Note

The directory where the compressed files will reside and be read by the downloader.

Property:

org.dspace.app.itemexport.life.span.hours

Example Value:

org.dspace.app.itemexport.life.span.hours = 48

Informational Note

The length of time in hours each archive should live for. When new archives are created this entry is used to delete old ones.

Property:

org.dspace.app.itemexport.max.size

Example Value:

org.dspace.app.itemexport.max.size = 200

Informational Note

The maximum size in Megabytes (Mb) that the export should be. This is enforced before the compression. Each bitstream's size in each item being exported is added up, if their cumulative sizes are more than this entry the export is not kicked off.

Subscription Emails

DSpace, through some advanced installation and setup, is able to send out an email to collections that a user has subscribed. The user who is subscribed to a collection is emailed each time an item id added or modified. The following property key controls whether or not a user should be notified of a modification.

Property:

eperson.subscription.onlynew

Example Value:

eperson.subscription.onlynew = true

Informational Note:

For backwards compatibility, the subscription emails by default include any modified items. The property key is COMMENTED OUT by default.

Hiding Metadata

It is now possible to hide metadata from public consumption that is only available to the Administrator.

Property:

metadata.hide.dc.description.provenance

Example Value:

metadata.hide.dc.description.provenance = true

Informational Note:

Hides the metadata in the property key above except to the administrator. Fields named here are hidden in the following places UNLESS the logged-in user is an Administrator:

  1. XMLUI metadata XML view, and Item splash pages (long and short views).
  2. JSPUI Item splash pages
  3. OAI-PMH server, "oai_dc" format. (Note: Other formats are *not* affected.)To designate a field as hidden, add a property here in the form: metadata.hide.SCHEMA.ELEMENT.QUALIFIER = true. This default configuration hides the dc.description.provenance field, since that usually contains email addresses which ought to be kept private and is mainly of interest to administrators.

Settings for the Submission Process

These settings control two aspects of the submission process: thesis submission permission and whether or not a bitstream file is required when submitting to a collection.

Property:

webui.submit.blocktheses

Example Value:

webui.submit.blocktheses = false

Informational Note:

Controls whether or not that the submission should be marked as a thesis.

Property:

webui.submit.upload.required

Example Value:

webui.submit.upload.required = true

Informational Note:

Whether or not a file is required to be uploaded during the "Upload" step in the submission process. The default is true. If set to "false", then the submitter (human being) has the option to skip the uploading of a file.

Configuring Creative Commons License

This enables the Creative Commons license step in the submission process of either the JSP or XML User Interface (JSP UI or XML UI). Submitters are given an opportunity to select a Creative Common license to accompany the item. Creative Commons licenses govern the use of the content. For further details, refer to the Creative Commons website at http://creativecommons.org . Creative Commons licensing is enabled as one step of the configurable submission process, and therefore may be configured for any given collection that has a defined submission sequence, or be part of the 'default' submission process. This process is described in the 'Customizing and Configuring Submission User Interface' section of this manual. There is a Creative Commons step already defined (step 5), but it is commented out, so enabling Creative Commons licensing is typically just a matter of uncommenting the CC License step. For the JSP UI, Creative Commons licensing is effected by opening an Iframe to the Creative Commons site and capturing the selection result in several bitstreams, but the XML UI utilizes a more flexible web service. By default, when a license is selected in the interface, the URI for the license is stored in the 'dc.rights.uri' metadata field for the Item, and a representation of the license text is stored in a license bundle. In addition, the following properties in [dspace]/config/dspace.cfg may be customized for Wiki MarkupThis enables the Creative Commons license step in the submission process of either the JSP or XML User Interface (JSP UI or XML UI). Submitters are given an opportunity to select a Creative Common license to accompany the item. Creative Commons licenses govern the use of the content. For further details, refer to the Creative Commons website at [http://creativecommons.org|http://creativecommons.org|http://creativecommons.org] . Creative Commons licensing is enabled as one step of the configurable submission process, and therefore may be configured for any given collection that has a defined submission sequence, or be part of the 'default' submission process. This process is described in the 'Customizing and Configuring Submission User Interface' section of this manual. There is a Creative Commons step already defined (step 5), but it is commented out, so enabling Creative Commons licensing is typically just a matter of uncommenting the CC License step. For the JSP UI, Creative Commons licensing is effected by opening an Iframe to the Creative Commons site and capturing the selection result in several bitstreams, but the XML UI utilizes a more flexible web service. By default, when a license is selected in the interface, the URI for the license is stored in the 'dc.rights.uri' metadata field for the Item, and a representation of the license text is stored in a license bundle. In addition, the following properties in {{\[dspace\]/config/dspace.cfg}} may be customized for use:

Property:

cc.api.rooturl

Example Value:

cc.api.rooturl = http://api.creativecommons.org/rest/1.5

Informational Note:

Generally will never have to assign a different value - this is the base URL of the Creative Commons service API.

Property:

cc.license.uri

Example Value:

cc.license.uri = dc.rights.uri

Informational Note:

The field that holds the Creative Commons license URI. If you change from the default value (dc.rights.uri), you will have to reconfigure the XMLUI for proper display of license data

Property:

cc.license.name

Example Value:

cc.license.name = dc.rights

Informational Note:

The field that holds the Creative Commons license Name. If you change from the default value (dc.rights), you will have to reconfigure the XMLUI for proper display of license data

Property:

cc.submit.setname

Example Value:

cc.submit.setname = true

Informational Note:

If true, the license assignment will add the field configured with the 'cc.license.name' with the name of the CC license; if false, only 'cc.license.uri' field is added.

Property:

cc.submit.addbitstream

Example Value:

cc.submit.addbitstream = true

Informational Note:

If true, the license assignment will add a bitstream with the CC license RDF; if false, only metadata field(s) are added.

Property:

cc.license.classfilter

Example Value:

cc.license.classfilter = recombo,mark

Informational Note:

This list defines the values that will be excluded from the license (class) selection list, as defined by the web service at the URL: http://api.creativecommons.org/rest/1.5/classes

Property:

cc.license.jurisdiction

Example Value:

cc.license.jurisdiction = nz

Informational Note:

Should a jurisdiction be used? If so, which one? See http://creativecommons.org/international/ for a list of possible codes (e.g. nz = New Zealand, uk = England and Wales, jp = Japan)

...

General Web User Interface Configurations
In this section of Configuration, we address the agnostic WEB User Interface that is used for JSP UI and XML UI. Some of the configurations will give information towards customization or refer you to the appropriate documentation.

Property:

webui.licence_bundle.show

Example Value:

webui.licence_bundle.show = false

Informational Note:

Sets whether to display the contents of the license bundle (often just the deposit license in the standard DSpace installation).

Property:

webui.browse.thubnail.show

Example Value:

webui.browse.thubnail.show = true

Informational Note:

Controls whether to display thumbnails on browse and search result pages. If you have customized the Browse columnlist, then you must also include a "thumbnail" column in your configuration. _(This configuration property key is not used by XMLUI. To show thumbnails using XMLUI, you need to create a theme which displays them)._

Property:

webui.browse.thumbnail.maxheight

Example Value:

webui.browse.thumbnail.maxheight = 80

Informational Note:

This property determines the maximum height of the browse/search thumbnails in pixels (px). This only needs to be set if the thumbnails are required to be smaller than the dimensions of thumbnails generated by MediaFilter.

Property:

webui.browse.thumbnail.maxwidth

Example Value:

webui.browse.thumbnail.maxwidth = 80

Informational Note:

This determines the maximum width of the browse/search thumbnails in pixels (px). This only needs to be set if the thumbnails are required to be smaller than the dimensions of thumbnails generated by MediaFilter.

Property:

webui.item.thumbnail.show

Example Value:

webui.item.thumbnail.show = true

Informational Note:

This determines whether or not to display the thumbnail against each bitstream. (This configuration property key is not used by XMLUI. To show thumbnails using XMLUI, you need to create a theme which displays them).

Property:

webui.browse.thumbnail.linkbehavior

Example Value:

webui.browse.thumbnail.linkbehavior = item

Informational Note:

This determines where clicks on the thumbnail in browse and search screens should lead. The only values currently supported are "item" or "bitstream", which will either take the user to the item page, or directly download the bitstream.

Property:

thumbnail.maxwidth

Example Value:

thumbnail.maxwidth = 80

Informational Note:

This property sets the maximum width of generated thumbnails that are being displayed on item pages.

Property:

thumbnail.maxheight

Example Value:

thumbnail.maxheight = 80

Informational Note:

This property sets the maximum height of generated thumbnails that are being displayed on item pages.

Property:

webui.preview.enabled

Example Value:

webui.preview.enabled = false

Informational Note:

Whether or not the user can "preview" the image.

Property:

webui.preview.maxwidth

Example Value:

webui.preview.maxwidth = 600

Informational Note:

This property sets the maximum width for the preview image.

Property:

webui.preview.maxheight

Example Value:

webui.preview.maxheight = 600

Informational Note:

This property sets the maximum height for the preview image.

Property:

webui.preview.brand

Example Value:

webui.preview.brand = My Institution Name

Informational Note:

This is the brand text that will appear with the image.

Property:

webui.preview.brand.abbrev

Example Value:

webui.preview.brand.abbrev = MyOrg

Informational Note:

An abbreviated form of the full Branded Name. This will be used when the preview image cannot fit the normal text.

Property:

webui.preview.brand.height

Example Value:

webui.preview.brand.height = 20

Informational Note:

The height (in px) of the brand.

Property:

webui.preview.brand.font

Example Value:

webui.preview.brand.font = SansSerif

Informational Note:

This property sets the font for your Brand text that appears with the image.

Property:

webui.preview.brand.fontpoint

Example Value:

webui.preview.brand.fontpoint = 12

Informational Note:

This property sets the font point (size) for your Brand text that appears with the image.

Property:

webui.preview.dc

Example Value:

webui.preview.dc = rights

Informational Note:

The Dublin Core field that will display along with the preview. This field is optional.

Property:

webui.strengths.show

Example Value:

webui.strengths.show = false

Informational Note:

Determines if communities and collections should display item counts when listed. The default behavior if omitted, is true. (This configuration property key is not used by XMLUI. To show thumbnails using XMLUI, you need to create a theme which displays them).

Property:

webui.strengths.cache

Example Value:

webui.strengths.cache = false

strengths.cache

Example Value:

webui.strengths.cache = false<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="a11cd267-2dee-4e78-8d8c-c97e15e0e65a"><ac:plain-text-body><![CDATA[

Informational Note:

When showing the strengths, should they be counted in real time, or fetched from the cache. Counts fetched in real time will perform an actual count of the database contents every time a page with this feature is requested, which will not scale. If you set the property key is set to cache ("true") you must run the following command periodically to update the count: /[dspace]/bin/dspace itemcounter. The default is to count in real time (set to "false").

]]></ac:plain-text-body></ac:structured-macro>

Browse Index Configuration

...

Element

Definition and Options (if available)

webui.browse.index.{<n>

n is the index number. The index numbers must start from 1 and increment continuously by 1 thereafter. Deviation from this will cause an error during install or a configuration update. So anytime you add a new browse index, remember to increase the number. (Commented out index numbers may be used over again).

<index name>

The name by which the index will be identified. You will need to update your Messages.properties file to match this field. (The form used in the Messages.properties file is: browse.type.metadata.<index name> .

<metadata>

Only two options are available: "metadata" or "item"

<schema prefix>

The schema used for the field to be index. The default is dc (for Dublin Core).

<element>

The schema element. In Dublin Core, for example, the author element is referred to as "Contributor". The user should consult the default Dublin Core Metadata Registry table in Appendix A.

<qualifier>

This is the qualifier to the <element> component. The user has two choices: an asterisk "" or a proper qualifier of the element. The asterisk is a wildcard and causes DSpace to index all types of the schema element. For example, if you have the element "contributor" and the qualifier "" then you would index all contributor data regardless of the qualifier. Another example, you have the element "subject" and the qualifier "lcsh" would cause the indexing of only those fields that have the qualifier "lcsh". (This means you would only index Library of Congress Subject Headings and not all data elements that are subjects.

<datatype field>

This refers to the datatype of the field:
date the index type will be treated as a date object
title the index type will be treated like a title, which will include a link to the item page
text the index type will be treated as plain text. If single mode is specified then this will link to the full mode list

<index display>

Choose full or single. This refers to the way that the index will be displayed in the browse listing. "Full" will be the full item list as specified by webui.itemlist.columns ; "single" will be a single list of only the indexed term.

...

Submission License Substitution Variables

Property:

Code Block
plugin.named.org.dspace.content.license.
     LicenseArgumentFormatter

(property key broken up for display purposes only)

Example Value:

Code Block
plugin.named.org.dspace.content.license.LicenseArgumentFormatter = \
	org.dspace.content.license.SimpleDSpaceObjectLicenseFormatter = collection, \
	org.dspace.content.license.SimpleDSpaceObjectLicenseFormatter = item, \
	org.dspace.content.license.SimpleDSpaceObjectLicenseFormatter = eperson

Informational Note:

It is possible include contextual information in the submission license using substitution variables. The text substitution is driven by a plugin implementation.

...

Property:

webui.feed.enable

Example Value:

webui.feed.enable = true

Informational Note:

By default, RSS feeds are set to true (on) . Change key to "false" to disable.

Property:

webui.feed.items

Example Value:

webui.feed.items = 4

Informational Note:

Defines the number of DSpace items per feed (the most recent submissions)

Property:

webui.feed.cache.size

Example Value:

webui.feed.cache.size = 100

Informational Note:

Defines the maximum number of feeds in memory cache. Value of "0" will disable caching.

Property:

webui.feed.cache.age

Example Value:

webui.feed.cache.age = 48

Informational Note:

Defines the number of hours to keep cached feeds before checking currency. The value of "0" will force a check with each request.

Property:

webui.feed.formats

Example Value:

webui.feed.formats = rss_1.0,rss_2.0,atom_1.0

Informational Note:

Defines which syndication formats to offer. You can use more than one; use a comma-separated list. The following list are the available values: rss_0.90, rss_0.91, rss_0.92, rss_0.93, rss_0.94, rss_1.0, rss_2.0, atom_1.0.

Property:

webui.feed.localresolve

Example Value:

webui.feed.localresolve = false

Informational Note:

By default, (set to false), URLs returned by the feed will point at the global handle resolver (e.g. http://hdl.handle.net/123456789/1). If set to true the local server URLs are used (e.g. http://myserver.myorg/handle/123456789/1).

Property:

webui.feed.item.title

Example Value:

webui.feed.item.title = dc.title

Informational Note:

This property customizes each single-value field displayed in the feed information for each item. Each of the fields takes a single metadata field. The form of the key is <scheme prefix>.<element>.<qualifier> In place of the qualifier, one may leave it blank to exclude any qualifiers or use the wildcard "*" to include all qualifiers for a particular element.

Property:

webui.feed.item.date

Example Value:

webui.feed.item.date = dc.date.issued

Informational Note:

This property customizes each single-value field displayed in the feed information for each item. Each of the fields takes a single metadata field. The form of the key is <scheme prefix>.<element>.<qualifier> In place of the qualifier, one may leave it blank to exclude any qualifiers or use the wildcard "*" to include all qualifiers for a particular element.

Property:

webui.feed.item.description

Example Value:

Code Block
webui.feed.item.description = dc.title, dc.contributor.author, \
           dc.contributor.editor, dc.description.abstract, \
           dc.description

Informational Note:

One can customize the metadata fields to show in the feed for each item's description. Elements are displayed in the order they are specified in dspace.cfg.Like other property keys, the format of this property key is: webui.feed.item.description = <scheme prefix>.<element>.<qualifier>. In place of the qualifier, one may leave it blank to exclude any qualifiers or use the wildcard "*" to include all qualifiers for a particular element.

Property:

webui.feed.item.author

Example Value:

webui.feed.item.author = dc.contributor.author

Informational Note:

The name of field to use for authors (Atom only); repeatable.

Property:

webui.feed.logo.url

Example Value:

webui.feed.logo.url = ${dspace.url}/themes/mysite/images/mysite-logo.png

Informational Note:

Customize the image icon included with the site-wide feeds. This must be an absolute URL.

Property:

webui.feed.item.dc.creator

Example Value:

webui.feed.item.dc.creator = dc.contributor.author

Informational Note:

This optional property adds structured DC elements as XML elements to the feed description. They are not the same thing as, for example, webui.feed.item.description. Useful when a program or stylesheet will be transforming a feed and wants separate author, description, date, etc.

Property:

webui.feed.item.dc.date

Example Value:

webui.feed.item.dc.date = dc.date.issued

Informational Note:

This optional property adds structured DC elements as XML elements to the feed description. They are not the same thing as, for example, webui.feed.item.description. Useful when a program or stylesheet will be transforming a feed and wants separate author, description, date, etc.

Property:

webui.feed.item.dc.description

Example Value:

webui.feed.item.dc.description = dc.description.abstract

Informational Note:

This optional property adds structured DC elements as XML elements to the feed description. They are not the same thing as, for example, webui.feed.item.description. Useful when a program or stylesheet will be transforming a feed and wants separate author, description, date, etc.

Property:

webui.feed.podcast.collections

Example Value:

webui.feed.podcast.collections = 1811/45183,1811/47223

Informational Note:

This optional property enables Podcast Support on the RSS feed for the specified collection handles. The podcast is iTunes compatible and will expose the bitstreams in the items for viewing and download by the podcast reader. Multiple values are separated by commas. For more on using/enabling Media RSS Feeds to share content via iTunesU, see: Enable Media RSS Feeds

Property:

webui.feed.podcast.communities

Example Value:

webui.feed.podcast.communities = 1811/47223

Informational Note:

This optional property enables Podcast Support on the RSS feed for the specified community handles. The podcast is iTunes compatible and will expose the bitstreams in the items for viewing and download by the podcast reader. Multiple values are separated by commas. podcast reader. Multiple values are separated by commas. For more on using/enabling Media RSS Feeds to share content via iTunesU, see: Enable Media RSS Feeds

Property:

webui.feed.podcast.mimetypes

Example Value:

webui.feed.podcast.mimetypes = audio/x-mpeg,application/pdf

Informational Note:

This optional property for Podcast Support, allows you to choose which MIME types of bitstreams are to be enclosed in the podcast feed. Multiple values are separated by commas. For more on using/enabling Media RSS Feeds to share content via iTunesU, see: Enable Media RSS Feeds

Property:

webui.feed.itempodcast.sourceuri

Example Value:

webui.feed.itempodcast.sourceuri = dc.source.uri

Informational Note:

This optional property for the Podcast Support will allow you to use a value for a metadata field as a replacement for actual bitstreams to be enclosed in the RSS feed. A use case for specifying the external sourceuri would be if you have a non-DSpace media streaming server that has a copy of your media file that you would prefer to have the media streamed from. For more on using/enabling Media RSS Feeds to share content via iTunesU, see: Enable Media RSS Feeds

OpenSearch Support

OpenSearch is a small set of conventions and documents for describing and using "search engines", meaning any service that returns a set of results for a query. See extensive description in the Business Layer section of the documentation.

...

Authority Control Settings

Two new features of DSpace 1.6 fall under the header of Authority Control: Choice Management and Authority Control of Item ("DC") metadata values. Authority control is a fully optional feature in DSpace 1.6. Implemented out of the box are the Library of Congress Names service, and the Sherpa Romeo authority plugin.

For an in-depth description of this feature, please consult: http://wiki.dspace.org/index.php/Authority _ Control _ of _ Metadata _ Values

Property:

plugin.named.org.dspace.content.authority.ChoiceAuthority

Example Value:

Code Block
plugin.named.org.dspace.content.authority.ChoiceAuthority = \
	org.dspace.content.authority.SampleAuthority = Sample, \
 	org.dspace.content.authority.LCNameAuthority = LCNameAuthority, \
 	org.dspace.content.authority.SHERPARoMEOPublisher = SRPublisher, \
 	org.dspace.content.authority.SHERPARoMEOJournalTitle = SRJournalTitle

Informational Note:

--

Property:

plugin.selfnamed.org.dspace.content.authority.ChoiceAuthority

Example Value:

Code Block
plugin.selfnamed.org.dspace.content.authority.ChoiceAuthority = \
	org.dspace.content.authority.DCInputAuthority

Property:

lcname.url

Example Value:

lcname.url = http://alcme.oclc.org/srw/search/lcnaf_

Informational Note:

Location (URL) of the Library of Congress Name Service

Property:

sherpa.romeo.url

Example Value:

sherpa.romeo.url = http://www.sherpa.ac.uk/romeo/api24.php_

Informational Note:

Location (URL) of the SHERPA/RoMEO authority plugin

Property:

authority.minconfidence

Example Value:

authority.minconfidence = ambiguous

Informational Note:

This sets the default lowest confidence level at which a metadata value is included in an authority-controlled browse (and search) index. It is a symbolic keyword, one of the following values (listed in descending order): accepted, uncertain, ambiguous, notfound, failed, rejected, novalue, unset. See org.dspace.content.authority.Choices source for descriptions.

Property:

xmlui.lookup.select.size

Example Value:

xmlui.lookup.select.size = 12

Informational Note:

This property sets the number of selectable choices in the Choices lookup popup

...

Property:

webui.itemdisplay.default

Example Value:

Code Block
webui.itemdisplay.default = dc.title, dc.title.alternative, \
           dc.contributor.*, dc.subject, dc.data.issued(date), \
           dc.publisher, dc.identifier.citation, \
           dc.relation.ispartofseries, dc.description.abstract, \
           dc.description, dc.identifier.govdoc, \
           dc.identifier.uri(link), dc.identifier.isbn, \
           dc.identifier.issn, dc.identifier.ismn, dc.identifier

Informational Note:

This is used to customize the DC metadata fields that display in the item display (the brief display) when pulling up a record. The format is: <schema>.<element>.<_optional_qualifier> . In place of the qualifier, one can use the wildcard "*" to include all fields of the same element, or, leave it blank for unqualified elements. Additionally, two additional options are available for behavior/rendering: (date) and (link). See the following examples:

dc.title = Dublin Core element 'title' (unqualified)
dc.title.alternative = DC element 'title', qualifier 'alternative'
dc.title.* = All fields with Dublin Core element 'title' (any or no qualifier)
dc.identifier.uri(link) = DC identifier.uri, rendered as a link
dc.date.issued(date) = DC date.issued, rendered as a date
The Messages.properties file controls how the fields defined above will display to the user. If the field is missing from the _Messages.properties_ file, it will not be displayed. Look in Messages.properties}}under {{metadata.dc.<field>. Example:
metadata.dc.contributor.other = Authors
metadata.dc.contributor.author = Authors
metadata.dc.title.* = Title
Please note: The order in which you place the values to the property key control the order in which they will display to the user on the outside world. (See the Example Value above).

Property:

Code Block
webui.resolver.1.urn
webui.resolver.1.baseurl
webui.resolver.2.urn
webui.resolver.2.baseurl

Example Value:

Code Block
webui.resolver.1.urn = doi
webui.resolver.1.baseurl = http://dx.doi.org/
webui.resolver.2.urn = hdl
webui.resolver.2.baseurl = http://hdl.handle.net/

Informational Note:

When using "resolver" in webui.itemdisplay to render identifiers as resolvable links, the base URL is take from <code>webui.resolver.<n>.baseurl<code> where <code>webui.resolver.<n>.baseurl<code> matches the urn specified in the metadata value. The value is appended to the "baseurl" as is, so the baseurl needs to end with the forward slash almost in any case. If no urn is specified in the value it will be displayed as simple text. For the doi and hdl urn defaults values are provided, respectively http://dc.doi.org and http://hdl.handle.net are used. If a metadata value with style "doi", "handle" or "resolver" matches a URL already, it is simply rendered as a link with no other manipulation.

Property:

plugin.single.org.dspace.app.webui.util.StyleSelection

Example Value:

Code Block
plugin.single.org.dspace.app.webui.util.StyleSelection = \
  org.dspace.app.web.util.CollectionStyleSelection
  #org.dspace.app.web.util.MetadataStyleSelection

Informational Note:

Specify which strategy to use for select the style for an item.

Property:

webui.itemdisplay.thesis.collections

Example Value:

webui.itemdisplay.thesis.collections = 123456789/24, 123456789/35

Informational Note:

Specify which collections use which views by Handle.

Property:

Code Block
webui.itemdisplay.metadata-style
webui.itemdisplay.metadata-style

Example Value:

Code Block
webui.itemdisplay.metadata-style = schema.element[.qualifier|.*]
webui.itemdisplay.metadata-style = dc.type

Informational Note:

Specify which metadata to use as name of the style

Property:

webui.itemlist.columns

Example Value:

Code Block
webui.itemlist.columns = thumbnail, dc.date.issued(date), dc.title, \
          dc.contributor.*

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="d0a022d0-3fbf-4bea-8c8a-d0c0da877198"><ac:plain-text-body><![CDATA[

Informational Note:

Customize the DC fields to use in the item listing page. Elements will be displayed left to right in the order they are specified here. The form is <schema prefix>.<element>[.<qualifier> | .*][(date)], ...
]]></ac:plain-text-body></ac:structured-macro>
Although not a requirement, it would make sense to include among the listed fields at least the date and title fields as specified by the * webui.browse.index. configuration options in the next section mentioned. (cf.)
If you have enabled thumbnails (webui.browse.thumbnail.show), you must also include a 'thumbnail' entry in your columns‚ this is where the thumbnail will be displayed.

Property:

webui.itemlist.width

Example Value:

webui.itemlist.width = *, 130, 60%, 40%

Informational Note:

You can customize the width of each column with the following line--you can have numbers (pixels) or percentages. For the 'thumbnail' column, a setting of '*' will use the max width specified for browse thumbnails (cf. webui.browse.thumbnail.maxwidth, thumbnail.maxwidth)

Property:

Code Block

webui.itemlist.browse.<index name>.sort.<sort name>.columns
webui.itemlist.sort.<sort name>.columns
webui.itemlist.browse.<browse name>.columns
webui.itemlist.<sort or index name>.columns

Example Value:

_}}

Informational Note:

You can override the DC fields used on the listing page for a given browse index and/or sort option. As a sort option or index may be defined on a field that isn't normally included in the list, this allows you to display the fields that have been indexed/sorted on. There are a number of forms the configuration can take, and the order in which they are listed below is the priority in which they will be used (so a combination of an index name and sort name will take precedence over just the browse name).In the last case, a sort option name will always take precedence over a browse index name. Note also, that for any additional columns you list, you will need to ensure there is an itemlist.<field name> entry in the messages file.

Property:

webui.itemlist.dateaccessioned.columns

Example Value:

webui.itemlist.dateaccessioned.columns = thumbnail, dc.date.accessioned(date), dc.title, dc.contributor.*

Informational Note:

This would display the date of the accession in place of the issue date whenever the dateaccessioned browsed index or sort option is selected. Just like webui.itemlist.columns, you will need to include a 'thumbnail' entry to display the thumbnails in the item list.

Property:

webui.itemlist.dateaccessioned.widths

Example Value:

webui.itemlist.dateaccessioned.widths = *, 130, 60%, 40%

Informational Note:

As in the aforementioned property key, you can customize the width of the columns for each configured column list, substituting '.widths' for '.columns' in the property name. See the setting for webui.itemlist.widths for more information.

Property:

webui.itemlist.tablewidth

Example Value:

webui.itemlist.tablewidth = 100%

Informational Note:

You can also set the overall size of the item list table with the following setting. It can lead to faster table rendering when used with the column widths above, but not generally recommended.

Property:

webui.session.invalidate

Example Value:

webui.session.invalidate = true<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="454f9370-a7ac-40d0-945a-913db373693b"><ac:plain-text-body><![CDATA[= true

Informational Note:

Enable or disable session invalidation upon login or logout. This feature is enabled by default to help prevent session hijacking but may cause problems for shibboleth, etc. If omitted, the default value is 'true'. [Only used for JSPUI authentication].

]]></ac:plain-text-body></ac:structured-macro>

JSPUI Configuring Multilingual Support

...

\[i18n -- – Locales\]

Setting the Default Language for the Application

...

If you set webui.supported.locales make sure that all the related additional files for each language are available. LOCALE should correspond to the locale set in webui.supported.locales, e. g.: for webui.supported.locales = en, de, fr, there should be:

  • Wiki Markup{{\[dspace-source\]/dspace/modules/jspui/src/main/resources/Messages.properties}} Wiki Markup
  • {{\[dspace-source\]/dspace/modules/jspui/src/main/resources/Messages_en.properties}} Wiki Markup
  • {{\[dspace-source\]/dspace/modules/jspui/src/main/resources/Messages_de.properties}}
  • Wiki Markup{{\[dspace-source\]/dspace/modules/jspui/src/main/resources/Messages_fr.properties}} \\ Files to be localized:
    Files to be localized:
  • Wiki Markup{{\[dspace-source\]/dspace/modules/jspui/src/main/resources/Messages_LOCALE.properties}}
  • Wiki Markup{{\[dspace-source\]/dspace/config/input-forms_LOCALE.xml}}unmigrated-wiki-markup
  • {{\[dspace-source\]/dspace/config/default_LOCALE.license - should be pure ASCII}}unmigrated-wiki-markup
  • {{\[dspace-source\]/dspace/config/news-top_LOCALE.html}}unmigrated-wiki-markup
  • {{\[dspace-source\]/dspace/config/news-side_LOCALE.html}}
  • Wiki Markup{{\[dspace-source\]/dspace/config/emails/change_password_LOCALE}} Wiki Markup
  • {{\[dspace-source\]/dspace/config/emails/feedback_LOCALE}}unmigrated-wiki-markup
  • {{\[dspace-source\]/dspace/config/emails/internal_error_LOCALE}}_LOCALE
  • Wiki Markup{{\[dspace-source\]/dspace/config/emails/register_LOCALE}} Wiki Markup
  • {{\[dspace-source\]/dspace/config/emails/submit_archive_LOCALE}}unmigrated-wiki-markup
  • {{\[dspace-source\]/dspace/config/emails/submit_reject_LOCALE}} Wiki Markup
  • {{\[dspace-source\]/dspace/config/emails/submit_task_LOCALE}}
  • Wiki Markup{{\[dspace-source\]/dspace/config/emails/subscription_LOCALE}} Wiki Markup
  • {{\[dspace-source\]/dspace/config/emails/suggest_LOCALE}}
  • Wiki Markup{{\[dspace\]/webapps/jspui/help/collection-admin_LOCALE.html - in html keep the jump link as original; must be copied to \ [dspace-source\]/dspace/modules/jspui/src/main/webapp/help}} Wiki Markup
  • {{\[dspace\]/webapps/jspui/help/index_LOCALE.html - must be copied to \ [dspace-source\]/dspace/modules/jspui/src/main/webapp/help}} Wiki Markup{{\
  • [dspace\]/webapps/jspui/help/site-admin_LOCALE.html - must be copied to \ [dspace-source\]/dspace/modules/jspui/src/main/webapp/help}}

JSPUI Item Mapper

Because the item mapper requires a primitive implementation of the browse system to be present, we simply need to tell that system which of our indexes defines the author browse (or equivalent) so that the mapper can list authors' items for mapping

...

Property:

sfx.server.url

Example Value:

sfx.server.url = http://sfx.myu.edu:8888/sfx?

 

sfx.server.url = http://worldcatlibraries.org/registry/gateway?

Informational Note:

SFX query is appended to this URL. If this property is commented out or omitted, SFX support is switched off.

...

All the parameters mapping are defined in {{\[dspace\]/config/sfx.xml}} file. The program will check the parameters in {{sfx.xml}} and retrieve the correct metadata of the item. It will then parse the string to your resolver.

For the following example, the program will search the first query-pair which is DOI of the item. If there is a DOI for that item, your retrieval results will be, for example:
http://researchspace.auckland.ac.nz/handle/2292/5763

...

Code Block
<query-pairs>
          <field>
                <querystring>rft_id=info:doi/</querystring>
                <dc-schema>dc</dc-schema>
                <dc-element>identifier</dc-element>
                <dc-qualifier>doi</dc-qualifier>
          </field>
        </query-pairs>

...

If there is no DOI for that item, it will search next query-pair based on the {{\[dspace\]/config/sfx.xml}} and then so on.unmigrated-wiki-markup

Example of using ISSN, volume, issue for item without DOI {{\
[http://researchspace.auckland.ac.nz/handle/2292/4947\]}}

For parameter passing to the <querystring>

Code Block
<querystring>rft_id=info:doi/</querystring>

Wiki MarkupPlease refer to these: {{\
[http://ocoins.info/cobgbook.html\]}} {{\]
[http://ocoins.info/cobg.html\]}}

Program assume won't won’t get empty string for the item, as there will at least author, title for the item to pass to the resolver.

For contributor author, program maintains original DSpace SFX function of extracting author's author‘s first and last name.

Code Block
<field>
  	  <querystring>rft.aulast=</querystring>
  	  <dc-schema>dc</dc-schema>
  	  <dc-element>contributor</dc-element>
  	   	<dc-qualifier>author</dc-qualifier>
 	</field>
 	<field>
  		<querystring>rft.aufirst=</querystring>
  	  <dc-schema>dc</dc-schema>
          <dc-element>contributor</dc-element>
          <dc-qualifier>author</dc-qualifier>
 	</field>

...

The taxonomies are described in XML following this (very simple) structure:

Code Block

<node id="acmccs98" label="ACMCCS98">
    <isComposedBy>
        <node id="A." label="General Literature">
            <isComposedBy>
                <node id="A.0" label="GENERAL"/>
                <node id="A.1" label="INTRODUCTORY AND SURVEY"/>
            </isComposedBy>
        </node>
    </isComposedBy>
</node>

...

webui.controlledvocabulary.enable = trueunmigrated-wiki-markup

New vocabularies should be placed in {{\[dspace\]/config/controlled-vocabularies/}} and must be according to the structure described. A validation XML Schema (named {{controlledvocabulary.xsd}}) is also available in that directory.

Wiki MarkupVocabularies need to be associated with the correspondent DC metadata fields. Edit the file {{\[dspace\]/config/input-forms.xml}} and place a _"vocabulary"_ tag under the _"field"_ element that you want to control. Set value of the _"vocabulary"_ element to the name of the file that contains the vocabulary, leaving out the extension (the add-on will only load files with extension "*.xml"). For example:

Code Block

<field>
    <dc-schema>dc</dc-schema>
    <dc-element>subject</dc-element>
    <dc-qualifier></dc-qualifier>
    <!-- An input-type of twobox MUST be marked as repeatable -->
    <repeatable>true</repeatable>
    <label>Subject Keywords</label>
    <input-type>twobox</input-type>
    <hint> Enter appropriate subject keywords or phrases below. </hint>
    <required></required>
    <vocabulary [closed="false"]>nsi</vocabulary>
</field>

...

Property:

xmlui.supported.locales

Example Value:

xmlui.supported.locales = en, de

Informational Note:

A list of supported locales for Manakin. Manakin will look at a user's browser configuration for the first language that appears in this list to make available to in the interface. This parameter is a comma separated list of Locales. All types of Locales country, country_language, country_language_variant. Note that if the appropriate files are not present (i.e. Messages_XX_XX.xml) then Manakin will fall back through to a more general language.

Property:

xmlui.force.ssl

Example Value:

xmlui.force.ssl = true

Informational Note:

Force all authenticated connections to use SSL, only non-authenticated connections are allowed over plain http. If set to true, then you need to ensure that the 'dspace.hostname' parameter is set to the correctly.

Property:

xmlui.user.registration

Example Value:

xmlui.user.registration = true

Informational Note:

Determine if new users should be allowed to register. This parameter is useful in conjunction with Shibboleth where you want to disallow registration because Shibboleth will automatically register the user. Default value is true.

Property:

xmlui.user.editmetadata

Example Value:

xmlui.user.editmetadata = true

Informational Note:

Determines if users should be able to edit their own metadata. This parameter is useful in conjunction with Shibboleth where you want to disable the user's ability to edit their metadata because it came from Shibboleth. Default value is true.

Property:

xmlui.user.assumelogon

Example Value:

xmlui.user.assumelogon = true

Informational Note:

Determine if super administrators (those whom are in the Administrators group) can login as another user from the "edit eperson" page. This is useful for debugging problems in a running dspace instance, especially in the workflow process. The default value is false, i.e., no one may assume the login of another user.

Property:

xmlui.user.loginredirect

Example Value:

xmlui.user.loginredirect = /profile

Informational Note:

After a user has logged into the system, which url should they be directed? Leave this parameter blank or undefined to direct users to the homepage, or /profile for the user's profile, or another reasonable choice is /submissions to see if the user has any tasks awaiting their attention. The default is the repository home page.

Property:

xmlui.theme.allowoverrides

Example Value:

xmlui.theme.allowoverrides = false

Informational Note:

Allow the user to override which theme is used to display a particular page. When submitting a request add the HTTP parameter "themepath" which corresponds to a particular theme, that specified theme will be used instead of the any other configured theme. Note that this is a potential security hole allowing execution of unintended code on the server, this option is only for development and debugging it should be turned off for any production repository. The default value unless otherwise specified is "false".

Property:

xmlui.bundle.upload

Example Value:

xmlui.bundle.upload = ORIGINAL, METADATA, THUMBNAIL, LICENSE, CC_LICENSE

Informational Note:

Determine which bundles administrators and collection administrators may upload into an existing item through the administrative interface. If the user does not have the appropriate privileges (add and write) on the bundle then that bundle will not be shown to the user as an option.

Property:

xmlui.community-list.render.full

Example Value:

xmlui.community-list.render.full = true

Informational Note:

On the community-list page should all the metadata about a community/collection be available to the theme. This parameter defaults to true, but if you are experiencing performance problems on the community-list page you should experiment with turning this option off.

Property:

xmlui.community-list.cache

Example Value:

xmlui.community-list.cache = 12 hours

Informational Note:

Normally, Manakin will fully verify any cache pages before using a cache copy. This means that when the community-list page is viewed the database is queried for each community/collection to see if their metadata has been modified. This can be expensive for repositories with a large community tree. To help solve this problem you can set the cache to be assumed valued for a specific set of time. The downside of this is that new or editing communities/collections may not show up the website for a period of time.

Property:

xmlui.bistream.mods

Example Value:

xmlui.bistream.mods = true

Informational Note:

Optionally, you may configure Manakin to take advantage of metadata stored as a bitstream. The MODS metadata file must be inside the "METADATA" bundle and named MODS.xml. If this option is set to 'true' and the bitstream is present then it is made available to the theme for display.

Property:

xmlui.bitstream.mets

Example Value:

xmlui.bitstream.mets = true

Informational Note:

Optionally, you may configure Manakin to take advantage of metadata stored as a bitstream. The METS metadata file must be inside the "METADATA" bundle and named METS.xml. If this option is set to "true" and the bitstream is present then it is made available to the theme for display.

Property:

xmlui.google.analytics.key

Example Value:

xmlui.google.analytics.key = UA-XXXXXX-X

Informational Note:

If you would like to use Google Analytics to track general website statistics then use the following parameter to provide your analytics key. First sign up for an account at http://analytics.google.com, then create an entry for your repositories website. Google Analytics will give you a snippet of javascript code to place on your site, inside that snip it is your Google Analytics key usually found in the line: _uacct = "UA-XXXXXXX-X" Take this key (just the UA-XXXXXX-X part) and place it here in this parameter.

Property:

xmlui.controlpanel.activity.max

Example Value:

xmlui.controlpanel.activity.max = 250

Informational Note:

Assign how many page views will be recorded and displayed in the control panel's activity viewer. The activity tab allows an administrator to debug problems in a running DSpace by understanding who and how their dspace is currently being used. The default value is 250.

Property:

xmlui.controlpanel.activity.ipheader

Example Value:

xmlui.controlpanel.activity.ipheader = X-Forward-For

Informational Note:

Determine where the control panel's activity viewer receives an events IP address from. If your DSpace is in a load balanced environment or otherwise behind a context-switch then you will need to set the parameter to the HTTP parameter that records the original IP address.

DSpace SOLR Statistics Configuration

Property:

solr.log.server

Example Value:

solr.log.server = ${dspace.baseUrl}/solr/statistics

Informational Note:

Is used by the SolrLogger Client class to connect to the SOLR server over http and perform updates and queries.

Property:

solr.spidersfile

Example Value:

solr.spidersfile = ${dspace.dir}/config/spiders.txt

Informational Note:

Spiders file is utilized by the SolrLogger, this will be populated by running the following command:dsrun org.dspace.statistics.util.SpiderDetector -i <httpd log file>

Property:

solr.dbfile

Example Value:

solr.dbfile = ${dspace.dir}/config/GeoLiteCity.dat

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="8018f1bc-be49-4855-916e-e8388378d362"><ac:plain-text-body><![CDATA[

Informational Note:

The following refers to the GeoLiteCity database file utilized by the LocationUtils to calculate the location of client requests based on IP address. During the Ant build process (both fresh_install and update) this file will be downloaded from [http://www.maxmind.com/app/geolitecity] if a new version has been published or it is absent from your [dspace]/config directory.

]]></ac:plain-text-body></ac:structured-macro>

Property:

solr.resolver.timeout

Example Value:

solr.resolver.timeout = 200

Informational Note:

Timeout for the resolver in the DNS lookup time in milliseconds, defaults to 200 for backward compatibility; your system's default is usually set in /etc/resolv.conf and varies between 2 to 5 seconds, too high a value might result in solr exhausting your connection pool.

Property:

statistics.item.authorization.admin

Example Value:

statistics.item.authorization.admin = true

Informational Note:

Enables access control restriction on DSpace Statistics pages, Restrictions are based on access rights to Community, Collection and Item Pages. This will require the user to sign on to see that statistics. Setting the statistics to "false" will make them publicly available.

Property:

solr.statistics.logBots

Example Value:

{{solr.statistics.logBots = true }}

Informational Note:

Enable/disable logging of spiders in solr statistics. If false, and IP matches an address in solr.spiderips.urls, event is not logged. If true, event will be logged with the 'isBot' field set to true (see solr.statistics.query.filter.* for query filter options) Default value is true.

Property:

solr.statistics.query.filter.spiderIp

Example Value:

solr.statistics.query.filter.spiderIp = false

Informational Note:

Controls solr statistics querying to filter out spider IPs. False by default.

Property:

{{solr.statistics.query.filter.isBot }}

Example Value:

solr.statistics.query.filter.isBot = true

Informational Note:

Controls solr statistics querying to look at "isBot" field to determine if record is a bot. True by default.

Property:

solr.spiderips.urls

Example Value:

Code Block
solr.spiderips.urls = http://iplists.com/google.txt, \
                      http://iplists.com/inktomi.txt, \
                      http://iplists.com/lycos.txt, \
                      http://iplists.com/infoseek.txt, \
                      http://iplists.com/altavista.txt,\
                      http://iplists.com/excite.txt, \
                      http://iplists.com/misc.txt, \
                      http://iplists.com/excite.txt, \
                      http://iplists.com/misc.txt, \
                      http://iplists.com/non_engines.txt

Informational Note:

URLs to download IP addresses of search engine spiders from

Optional or Advanced Configuration Settings

The following section explains how to configure either optional features or advanced features that are not necessary to make DSpace "out-of-the-box"

The Metadata Format and Bitstream Format Registries

Wiki Markup
The _\[dspace\]/config/registries_ directory contains three XML files. These are used to load the _initial_ contents of the Dublin Core Metadata registry and Bitstream Format registry and SWORD metadata registry. After the initial loading (performed by _ant fresh_install_ above), the registries reside in the database; the XML files are not updated.

In order to change the registries, you may adjust the XML files before the first installation of DSpace. On an already running instance it is recommended to change bitstream registries via DSpace admin UI, but the metadata registries can be loaded again at any time from the XML files without difficult. The changes made via admin UI are not reflected in the XML files.

Metadata Format Registries

The default metadata schema is Dublin Core, so DSpace is distributed with a default Dublin Core Metadata Registry. Currently, the system requires that every item have a Dublin Core record.

There is a set of Dublin Core Elements, which is used by the system and should not be removed or moved to another schema, see Appendix: Default Dublin Core Metadata registry.

Note: altering a Metadata Registry has no effect on corresponding parts, e.g. item submission interface, item display, item import and vice versa. Every metadata element used in submission interface or item import must be registered before using it.

Note also that deleting a metadata element will delete all its corresponding values.

If you wish to add more metadata elements, you can do this in one of two ways. Via the DSpace admin UI you may define new metadata elements in the different available schemas. But you may also modify the XML file (or provide an additional one), and re-import the data as follows:

Code Block
[dspace]/bin/dsrun org.dspace.administer.MetadataImporter -f [xml file]

The XML file should be structured as follows:

Code Block
<dspace-dc-types>
    <dc-type>
        <schema>dc</schema>
        <element>contributor</element>
        <qualifier>advisor</qualifier>
        <scope_note>Use primarily for thesis advisor.</scope_note>
    </dc-type>
</dspace-dc-types>

Bitstream Format Registry

Wiki Markup
The bitstream formats recognized by the system and levels of support are similarly stored in the bitstream format registry. This can also be edited at install-time via _\[dspace\]/config/registries/bitstream-formats.xml_ or by the administration Web UI. The contents of the bitstream format registry are entirely up to you, though the system requires that the following two formats are present:

  • Unknown
  • License
    Deleting a format will cause any existing bitstreams of this format to be reverted to the unknown bitstream format.

XPDF Filter

This is an alternative suite of MediaFilter plugins that offers faster and more reliable text extraction from PDF Bitstreams, as well as thumbnail image generation. It replaces the built-in default PDF MediaFilter.

If this filter is so much better, why isn't it the default? The answer is that it relies on external executable programs which must be obtained and installed for your server platform. This would add too much complexity to the installation process, so it left out as an optional "extra" step.

Installation Overview

Here are the steps required to install and configure the filters:

  1. Install the xpdf tools for your platform, from the downloads at http://www.foolabs.com/xpdf
  2. Acquire the Sun Java Advanced Imaging Tools and create a local Maven package.
  3. Edit DSpace configuration properties to add location of xpdf executables, reconfigure MediaFilter plugins.
  4. Build and install DSpace, adding -Pxpdf-mediafilter-support to Maven invocation.

Install XPDF Tools

First, download the XPDF suite found at: http://www.foolabs.com/xpdf and install it on your server. The executables can be located anywhere, but make a note of the full path to each command.

You may be able to download a binary distribution for your platform, which simplifies installation. Xpdf is readily available for Linux, Solaris, MacOSX, Windows, NetBSD, HP-UX, AIX, and OpenVMS, and is reported to work on AIX, OS/2, and many other systems.

The only tools you really need are:

  • pdfinfo - displays properties and Info dict
  • pdftotext - extracts text from PDF
  • pdftoppm - images PDF for thumbnails

Fetch and install jai_imageio JAR

Fetch and install the Java Advanced Imaging Image I/O Tools.

For AIX, Sun support has the following: "JAI has native acceleration for the above but it also works in pure Java mode. So as long as you have an appropriate JDK for AIX (1.3 or later, I believe), you should be able to use it. You can download any of them, extract just the jars, and put those in your $CLASSPATH."

Download the jai_imageio library version 1.0_01 or 1.1 found at: https://jai-imageio.dev.java.net/binary-builds.html#Stable_builds .

For these filters you do NOT have to worry about the native code, just the JAR, so choose a download for any platform.

Code Block

curl -O http://download.java.net/media/jai-imageio/builds/release/1.1/jai_imageio-1_1-lib-linux-i586.tar.gz
tar xzf jai_imageio-1_1-lib-linux-i586.tar.gz

The preceding example leaves the JAR in jai_imageio-1_1/lib/jai_imageio.jar . Now install it in your local Maven repository, e.g.: (changing the path after file= if necessary)

Code Block

mvn install:install-file                       \
          -Dfile=jai_imageio-1_1/lib/jai_imageio.jar  \
          -DgroupId=com.sun.media                     \
          -DartifactId=jai_imageio                    \
          -Dversion=1.0_01                            \
          -Dpackaging=jar                             \
          -DgeneratePom=true

You may have to repeat this procedure for the jai_core.jar library, as well, if it is not available in any of the public Maven repositories. Once acquired, this command installs it locally:

Code Block
mvn install:install-file -Dfile=jai_core-1.1.2_01.jar  \
    -DgroupId=javax.media -DartifactId=jai_core -Dversion=1.1.2_01 -Dpackaging=jar -DgeneratePom=true

Edit DSpace Configuration

First, be sure there is a value for thumbnail.maxwidth and that it corresponds to the size you want for preview images for the UI, e.g.: (NOTE: this code doesn't pay any attention to thumbnail.maxheight but it's best to set it too so the other thumbnail filters make square images.)

Code Block
# maximum width and height of generated thumbnails
        thumbnail.maxwidth= 80
        thumbnail.maxheight = 80

Now, add the absolute paths to the XPDF tools you installed. In this example they are installed under /usr/local/bin (a logical place on Linux and MacOSX), but they may be anywhere.

Code Block
xpdf.path.pdftotext = /usr/local/bin/pdftotext
        xpdf.path.pdftoppm = /usr/local/bin/pdftoppm
        xpdf.path.pdfinfo = /usr/local/bin/pdfinfo

Change the MediaFilter plugin configuration to remove the old org.dspace.app.mediafilter.PDFFilter and add the new filters, e.g: (New sections are in bold)

found in the line: _uacct = "UA-XXXXXXX-X" Take this key (just the UA-XXXXXX-X part) and place it here in this parameter.

Property:

xmlui.controlpanel.activity.max

Example Value:

xmlui.controlpanel.activity.max = 250

Informational Note:

Assign how many page views will be recorded and displayed in the control panel's activity viewer. The activity tab allows an administrator to debug problems in a running DSpace by understanding who and how their dspace is currently being used. The default value is 250.

Property:

xmlui.controlpanel.activity.ipheader

Example Value:

xmlui.controlpanel.activity.ipheader = X-Forward-For

Informational Note:

Determine where the control panel's activity viewer receives an events IP address from. If your DSpace is in a load balanced environment or otherwise behind a context-switch then you will need to set the parameter to the HTTP parameter that records the original IP address.

DSpace SOLR Statistics Configuration

Property:

solr.log.server

Example Value:

solr.log.server = ${dspace.baseUrl}/solr/statistics

Informational Note:

Is used by the SolrLogger Client class to connect to the SOLR server over http and perform updates and queries.

Property:

solr.spidersfile

Example Value:

solr.spidersfile = ${dspace.dir}/config/spiders.txt

Informational Note:

Spiders file is utilized by the SolrLogger, this will be populated by running the following command:dsrun org.dspace.statistics.util.SpiderDetector -i <httpd log file>

Property:

solr.dbfile

Example Value:

solr.dbfile = ${dspace.dir}/config/GeoLiteCity.dat

Informational Note:

The following refers to the GeoLiteCity database file utilized by the LocationUtils to calculate the location of client requests based on IP address. During the Ant build process (both fresh_install and update) this file will be downloaded from http://www.maxmind.com/app/geolitecity if a new version has been published or it is absent from your [dspace]/config directory.

Property:

solr.resolver.timeout

Example Value:

solr.resolver.timeout = 200

Informational Note:

Timeout for the resolver in the DNS lookup time in milliseconds, defaults to 200 for backward compatibility; your system's default is usually set in /etc/resolv.conf and varies between 2 to 5 seconds, too high a value might result in solr exhausting your connection pool.

Property:

statistics.item.authorization.admin

Example Value:

statistics.item.authorization.admin = true

Informational Note:

Enables access control restriction on DSpace Statistics pages, Restrictions are based on access rights to Community, Collection and Item Pages. This will require the user to sign on to see that statistics. Setting the statistics to "false" will make them publicly available.

Property:

solr.statistics.logBots

Example Value:

{{solr.statistics.logBots = true }}

Informational Note:

Enable/disable logging of spiders in solr statistics. If false, and IP matches an address in solr.spiderips.urls, event is not logged. If true, event will be logged with the 'isBot' field set to true (see solr.statistics.query.filter.* for query filter options) Default value is true.

Property:

solr.statistics.query.filter.spiderIp

Example Value:

solr.statistics.query.filter.spiderIp = false

Informational Note:

Controls solr statistics querying to filter out spider IPs. False by default.

Property:

{{solr.statistics.query.filter.isBot }}

Example Value:

solr.statistics.query.filter.isBot = true

Informational Note:

Controls solr statistics querying to look at "isBot" field to determine if record is a bot. True by default.

Property:

solr.spiderips.urls

Example Value:

Code Block
solr.spiderips.urls = http://iplists.com/google.txt, \
                      http://iplists.com/inktomi.txt, \
                      http://iplists.com/lycos.txt, \
                      http://iplists.com/infoseek.txt, \
                      http://iplists.com/altavista.txt,\
                      http://iplists.com/excite.txt, \
                      http://iplists.com/misc.txt, \
                      http://iplists.com/excite.txt, \
                      http://iplists.com/misc.txt, \
                      http://iplists.com/non_engines.txt

Informational Note:

URLs to download IP addresses of search engine spiders from

Optional or Advanced Configuration Settings

The following section explains how to configure either optional features or advanced features that are not necessary to make DSpace "out-of-the-box"

The Metadata Format and Bitstream Format Registries

The [dspace]/config/registries directory contains three XML files. These are used to load the initial contents of the Dublin Core Metadata registry and Bitstream Format registry and SWORD metadata registry. After the initial loading (performed by ant fresh_install above), the registries reside in the database; the XML files are not updated.

In order to change the registries, you may adjust the XML files before the first installation of DSpace. On an already running instance it is recommended to change bitstream registries via DSpace admin UI, but the metadata registries can be loaded again at any time from the XML files without difficult. The changes made via admin UI are not reflected in the XML files.

Metadata Format Registries

The default metadata schema is Dublin Core, so DSpace is distributed with a default Dublin Core Metadata Registry. Currently, the system requires that every item have a Dublin Core record.

There is a set of Dublin Core Elements, which is used by the system and should not be removed or moved to another schema, see Appendix: Default Dublin Core Metadata registry.

Note: altering a Metadata Registry has no effect on corresponding parts, e.g. item submission interface, item display, item import and vice versa. Every metadata element used in submission interface or item import must be registered before using it.

Note also that deleting a metadata element will delete all its corresponding values.

If you wish to add more metadata elements, you can do this in one of two ways. Via the DSpace admin UI you may define new metadata elements in the different available schemas. But you may also modify the XML file (or provide an additional one), and re-import the data as follows:

Code Block
[dspace]/bin/dspace dsrun org.dspace.administer.MetadataImporter -f [xml file]

The XML file should be structured as follows:

Code Block
<dspace-dc-types>
    <dc-type>
        <schema>dc</schema>
        <element>contributor</element>
        <qualifier>advisor</qualifier>
        <scope_note>Use primarily for thesis advisor.</scope_note>
    </dc-type>
</dspace-dc-types>

Bitstream Format Registry

The bitstream formats recognized by the system and levels of support are similarly stored in the bitstream format registry. This can also be edited at install-time via [dspace]/config/registries/bitstream-formats.xml or by the administration Web UI. The contents of the bitstream format registry are entirely up to you, though the system requires that the following two formats are present:

  • Unknown
  • License
    Deleting a format will cause any existing bitstreams of this format to be reverted to the unknown bitstream format.

XPDF Filter

This is an alternative suite of MediaFilter plugins that offers faster and more reliable text extraction from PDF Bitstreams, as well as thumbnail image generation. It replaces the built-in default PDF MediaFilter.

If this filter is so much better, why isn't it the default? The answer is that it relies on external executable programs which must be obtained and installed for your server platform. This would add too much complexity to the installation process, so it left out as an optional "extra" step.

Installation Overview

Here are the steps required to install and configure the filters:

  1. Install the xpdf tools for your platform, from the downloads at http://www.foolabs.com/xpdf
  2. Acquire the Sun Java Advanced Imaging Tools and create a local Maven package.
  3. Edit DSpace configuration properties to add location of xpdf executables, reconfigure MediaFilter plugins.
  4. Build and install DSpace, adding -Pxpdf-mediafilter-support to Maven invocation.

Install XPDF Tools

First, download the XPDF suite found at: http://www.foolabs.com/xpdf and install it on your server. The executables can be located anywhere, but make a note of the full path to each command.

You may be able to download a binary distribution for your platform, which simplifies installation. Xpdf is readily available for Linux, Solaris, MacOSX, Windows, NetBSD, HP-UX, AIX, and OpenVMS, and is reported to work on AIX, OS/2, and many other systems.

The only tools you really need are:

  • pdfinfo - displays properties and Info dict
  • pdftotext - extracts text from PDF
  • pdftoppm - images PDF for thumbnails

Fetch and install jai_imageio JAR

Fetch and install the Java Advanced Imaging Image I/O Tools.

For AIX, Sun support has the following: "JAI has native acceleration for the above but it also works in pure Java mode. So as long as you have an appropriate JDK for AIX (1.3 or later, I believe), you should be able to use it. You can download any of them, extract just the jars, and put those in your $CLASSPATH."

Download the jai_imageio library version 1.0_01 or 1.1 found at: https://jai-imageio.dev.java.net/binary-builds.html#Stable_builds .

For these filters you do NOT have to worry about the native code, just the JAR, so choose a download for any platform.

Code Block
curl -O http://download.java.net/media/jai-imageio/builds/release/1.1/jai_imageio-1_1-lib-linux-i586.tar.gz
tar xzf jai_imageio-1_1-lib-linux-i586.tar.gz

The preceding example leaves the JAR in jai_imageio-1_1/lib/jai_imageio.jar . Now install it in your local Maven repository, e.g.: (changing the path after file= if necessary)

Code Block
mvn install:install-file                      
Code Block
filter.plugins = \
        PDF Text Extractor, \
        PDF Thumbnail, \
        HTML Text Extractor,  -Dfile=jai_imageio-1_1/lib/jai_imageio.jar  \
        Word Text Extractor, \
 -DgroupId=com.sun.media         JPEG Thumbnail
         plugin.named.org.dspace.app.mediafilter.FormatFilter = \
         org.dspace.app.mediafilter.XPDF2Text = PDF Text Extractor, \
 -DartifactId=jai_imageio                org.dspace.app.mediafilter.XPDF2Thumbnail = PDF Thumbnail, \
          -Dversion=1.0_01       org.dspace.app.mediafilter.HTMLFilter = HTML Text Extractor, \
        org.dspace.app.mediafilter.WordFilter = Word Text Extractor, \
   \
     org.dspace.app.mediafilter.JPEGFilter = JPEG Thumbnail, \
 -Dpackaging=jar       org.dspace.app.mediafilter.BrandedPreviewJPEGFilter = Branded Preview JPEG

Then add the input format configuration properties for each of the new filters, e.g.:

Code Block
filter.org.dspace.app.mediafilter.XPDF2Thumbnail.inputFormats = Adobe PDFfilter.org.dspace.app.mediafilter.XPDF2Text.inputFormats = Adobe PDF

Finally, if you want PDF thumbnail images, don't forget to add that filter name to the filter.plugins property, e.g.:

Code Block
filter.plugins = PDF Thumbnail,  PDF Text Extractor, ...

Build and Install

Follow your usual DSpace installation/update procedure, only add -Pxpdf-mediafilter-support to the Maven invocation:

Code Block
mvn -Pxpdf-mediafilter-support package
        \
         ant -Dconfig=\[dspace\]/config/dspace.cfg update

Creating a new Media/Format Filter

Creating a simple Media Filter

New Media Filters must implement the org.dspace.app.mediafilter.FormatFilter interface. More information on the methods you need to implement is provided in the FormatFilter.java source file. For example:

public class MySimpleMediaFilter implements FormatFilter

Alternatively, you could extend the org.dspace.app.mediafilter.MediaFilter class, which just defaults to performing no pre/post-processing of bitstreams before or after filtering.

public class MySimpleMediaFilter extends MediaFilter

You must give your new filter a "name", by adding it and its name to the plugin.named.org.dspace.app.mediafilter.FormatFilter field in dspace.cfg. In addition to naming your filter, make sure to specify its input formats in the filter.<class path>.inputFormats config item. Note the input formats must match the short description field in the Bitstream Format Registry (i.e. bitstreamformatregistry table).

DgeneratePom=true

You may have to repeat this procedure for the jai_core.jar library, as well, if it is not available in any of the public Maven repositories. Once acquired, this command installs it locally:

Code Block
mvn install:install-file -Dfile=jai_core-1.1.2_01.jar  \
    -DgroupId=javax.media -DartifactId=jai_core -Dversion=1.1.2_01 -Dpackaging=jar -DgeneratePom=true

Edit DSpace Configuration

First, be sure there is a value for thumbnail.maxwidth and that it corresponds to the size you want for preview images for the UI, e.g.: (NOTE: this code doesn't pay any attention to thumbnail.maxheight but it's best to set it too so the other thumbnail filters make square images.)

Code Block
# maximum width and height of generated thumbnails
        thumbnail.maxwidth= 80
Code Block
plugin.named.org.dspace.app.mediafilter.FormatFilter = \
        org.dspace.app.mediafilter.MySimpleMediaFilter = My Simple Text Filter, \ ...

filter.org.dspace.app.mediafilter.MySimpleMediaFilter.inputFormats =
        Text

If you neglect to define the inputFormats for a particular filter, the MediaFilterManager will never call that filter, since it will never find a bitstream which has a format matching that filter's input format(s).

If you have a complex Media Filter class, which actually performs different filtering for different formats (e.g. conversion from Word to PDF and conversion from Excel to CSV), you should define this as described in Chapter 13.3.2.2 .

Creating a Dynamic or "Self-Named" Format Filter

If you have a more complex Media/Format Filter, which actually performs multiple filtering or conversions for different formats (e.g. conversion from Word to PDF and conversion from Excel to CSV), you should have define a class which implements the FormatFilter interface, while also extending the Chapter 13.3.2.2 SelfNamedPlugin class. For example:

public class MyComplexMediaFilter extends SelfNamedPlugin implements FormatFilter

Since SelfNamedPlugins are self-named (as stated), they must provide the various names the plugin uses by defining a getPluginNames() method. Generally speaking, each "name" the plugin uses should correspond to a different type of filter it implements (e.g. "Word2PDF" and "Excel2CSV" are two good names for a complex media filter which performs both Word to PDF and Excel to CSV conversions).

Self-Named Media/Format Filters are also configured differently in dspace.cfg. Below is a general template for a Self Named Filter (defined by an imaginary MyComplexMediaFilter class, which can perform both Word to PDF and Excel to CSV conversions):

thumbnail.maxheight = 80

Now, add the absolute paths to the XPDF tools you installed. In this example they are installed under /usr/local/bin (a logical place on Linux and MacOSX), but they may be anywhere.

Code Block
xpdf.path.pdftotext = /usr/local/bin/pdftotext
        xpdf.path.pdftoppm = /usr/local/bin/pdftoppm
        xpdf.path.pdfinfo = /usr/local/bin/pdfinfo

Change the MediaFilter plugin configuration to remove the old org.dspace.app.mediafilter.PDFFilter and add the new filters, e.g: (New sections are in bold)

Code Block
filter.plugins = \
        PDF Text Extractor, \
        PDF Thumbnail, \
        HTML Text Extractor, \
        Word Text Extractor, \
        JPEG Thumbnail
         plugin.named
Code Block
#Add to a list of all Self Named filters
plugin.selfnamed.org.dspace.app.mediafilter.FormatFilter = \
        org.dspace.app.mediafilter.MyComplexMediaFilter
#DefineXPDF2Text input= formatsPDF forText each "named" plugin this filter implementsExtractor, \
        filter.org.dspace.app.mediafilter.MyComplexMediaFilter.Word2PDF.inputFormatsXPDF2Thumbnail = PDF MicrosoftThumbnail, Word\
        filter.org.dspace.app.mediafilter.MyComplexMediaFilter.Excel2CSV.inputFormatsHTMLFilter = HTML Microsoft Excel

...

Text Extractor, \
        org.dspace.app.mediafilter

...

.WordFilter = Word Text Extractor, \
        org.dspace.app.mediafilter.JPEGFilter = JPEG Thumbnail, \
        org.dspace.app.mediafilter.BrandedPreviewJPEGFilter = Branded Preview JPEG

Then add the input format configuration properties for each of the new filters, e.g.:

Code Block

These named plugins take different input formats as defined above (see the corresponding inputFormats setting).

Note

If you neglect to define the inputFormats for a particular named plugin, the MediaFilterManager will never call that plugin, since it will never find a bitstream which has a format matching that plugin's input format(s).

For a particular Self-Named Filter, you are also welcome to define additional configuration settings in dspace.cfg. To continue with our current example, each of our imaginary plugins actually results in a different output format (Word2PDF creates "Adobe PDF", while Excel2CSV creates "Comma Separated Values"). To allow this complex Media Filter to be even more configurable (especially across institutions, with potential different "Bitstream Format Registries"), you may wish to allow for the output format to be customizable for each named plugin. For example:

Code Block
#Define output formats for each named plugin
filter.org.dspace.app.mediafilter.MyComplexMediaFilter.Word2PDF.output FormatXPDF2Thumbnail.inputFormats = Adobe PDF
filter.org.dspace.app.mediafilter.MyComplexMediaFilterXPDF2Text.Excel2CSV.outputFormatinputFormats = Comma SeparatedAdobe Values

Any custom configuration fields in dspace.cfg defined by your filter are ignored by the MediaFilterManager, so it is up to your custom media filter class to read those configurations and apply them as necessary. For example, you could use the following sample Java code in your MyComplexMediaFilter class to read these custom outputFormat configurations from dspace.cfg:

PDF

Finally, if you want PDF thumbnail images, don't forget to add that filter name to the filter.plugins property, e.g.:

Code Block
filter.plugins = PDF Thumbnail,  PDF Text Extractor, ...

Build and Install

Follow your usual DSpace installation/update procedure, only add -Pxpdf-mediafilter-support to the Maven invocation:

Code Block
mvn -Pxpdf-mediafilter-support package
     ant -Dconfig=\[dspace\]/config/dspace.cfg update
Code Block
#Get "outputFormat" configuration from dspace.cfg
String outputFormat =  ConfigurationManager.getProperty(MediaFilterManager.FILTER_PREFIX + "." + MyComplexMediaFilter.class.getName() + "." + this.getPluginInstanceName() + ".outputFormat");

Configuring Usage Instrumentation Plugins

...