Last Updated: October 11, 2004
PIDs
Fedora digital objects are identified within Fedora using a PID (Persistent IDentifier).
A PID is case-sensitive and consists of a namespace prefix and a simple string identifier.
The maximum length is 64 characters.
Syntax:
object-pid = namespace-id ":" object-id
namespace-id = ( [A-Z] / [a-z] / [0-9] / "-" / "." ) 1+
object-id = ( [A-Z] / [a-z] / [0-9] / "-" / "." / "~" / "_" / escaped-octet ) 1+
escaped-octet = "%" hex-digit hex-digit
hex-digit = [0-9] / [A-F]
Regular Expression:
For convenience, we provide the following single regular expression, which can be used to validate a (normalized) PID string:
^([A-Za-z0-9]|-|\.)+:(([A-Za-z0-9])|-|\.|~|_|(%[0-9A-F]{2}))+$
Normalization:
- Hex-digits may occur in lowercase, but should be capitalized for normalization purposes. The separator character may occur as "%3A" or "%3a", but should be changed to a colon ":" for normalization purposes.
Digital Object & Dissemination URIs
When identifying Fedora objects and disseminations in a global way, applications may use Fedora "info" URIs. The "fedora" namespace is registered at the info: uri scheme namespace registry.
Syntax:
To identify a digital object:
Syntax:
- "info:fedora/" object-pid
Where:
- "object-pid" is the Fedora PID of the object
Examples:
- info:fedora/example:1
- info:fedora/example:9876
To identify a dissemination:
Syntax:
- "info:fedora/" object-pid "/" dissem-name
Where:
- "object-pid" is the Fedora PID of the object (or "*" when the
URI indicates a dissemination without regard to a particular object).
- "dissem-name" is either a datastream ID or behavior definition object
PID, followed by "/", followed by a method name.
Examples:
- info:fedora/example:3/DS1
- info:fedora/example:3/example:1/index
- info:fedora/*/DS1
- info:fedora/*/example:1/index
Note: Datastream ids and method names may consist of XML NCName
characters. NCName characters that are not safe to directly encode
in an "info" uri must be escaped using one to four escaped UTF-8
octets per character, each of the form "%" HEXDIG HEXDIG.
Normalization:
- Normalize the PID portion(s) of the URI.
- Un-escape any URI-escaped characters that do not need escaping according the definition of the "info" scheme.
- Make all remaining escaped octets use UPPERCASE (%ff becomes %FF).
- Parameters should be alphabetized in order by name, then by value.
The order should be according to occurence in UTF-8.