On this page:
What are Fedora Digital Object Relationships?
Fedora digital objects can be related to other Fedora objects in many ways. For example there may be a Fedora object that represents a collection and other objects that are members of that collection. Also, it may be the case that one object is considered a part of another object, a derivation of another object, a description of another object, or even equivalent to another object. For example, consider a network of digital objects pertaining to Thomas Jefferson, in which scholarly works are stored as digital objects, which are related to other digital objects representing primary source materials in libraries or museums. The composite scholarly objects can be considered a graph of related digital objects. Other types of objects can also be related to the scholarly object over time, for instance annotations about the scholarly object can be created by others and related to the original object. Also, digital objects can be created to act as "surrogates" or "proxies" for dynamically produced web content such as an Amazon page for a book relevant to the scholarly object. Such a network of digital objects can be created using Fedora, which in the abstract, would look like this:
Digital object relationship metadata is a way of asserting these various kinds of relationships for Fedora objects. A default set of common relationships is defined in the Fedora relationship ontology (actually, a simple RDF schema) which defines a set of common generic relationships useful in creating digital object networks. These relationships can be refined or extended. Also, communities can define their own ontologies to encode relationships among Fedora digital objects. Relationships are asserted from the perspective of one object to another object as in the following general pattern:
The first Fedora object is considered the "subject" of the relationship assertion. The relationship, itself, is considered a property of the subject. The target Fedora object is the related object. Thus, a valid relationship assertion as an English-language sentence might be:
Using RELS-INT, relationships can also be asserted from the datastream of one object to another object or datastream.
Why are Fedora Digital Object Relationships Important?
The creation of Fedora digital object relationship metadata is the basis for enabling advanced access and management functionality driven from metadata that is managed within the repository. Examples of the uses of relationship metadata include:
Where is Digital Object Relationship Metadata Stored?
Object-to-Object relationships are stored as metadata in digital objects within special Datastreams. These Datastreams are known by the reserved Datastream identifiers of "RELS-EXT" (which stands for "Relationships-External") and "RELS-INT" (which stands for "Relationships-Internal"). Each digital object can have one RELS-EXT datastream which is used exclusively for asserting digital object relationships and one RELS-INT datastream which is used exclusively for asserting relationships from datastreams of the digital object.
RELS-EXT and RELS-INT Datastreams can be provided as part of a Fedora ingest file. Alternatively, they can be added to an existing digital object via component operations of the Fedora management service interface (i.e., addDatastream, addRelationship). Refer to the FOXML reference example to see an example of the RELS-EXT Datastream in context. Modifications to the RELS-EXT and RELS-INT Datastreams are made via the Fedora management interface (i.e., modifyDatastream).
The RELS-EXT and RELS-INT Datastreams should be encoded as either Inline XML Datastreams, meaning that the relationships metadata is expressed directly as XML within the digital object XML file, or as Managed Content datastreams. The datastream control group used when Fedora creates new relationships datastreams (eg as part of an addRelationship API method) is specified in the
Ensure DC, RELS-EXT and RELS-INT are versionable if using Managed Content
Due to an outstanding bug FCREPO-849, if you use Managed Content for DC, RELS-EXT or RELS-INT then please make sure these datastreams are versionable (the default setting for versionable is "true", so if you haven't specified this datastream property then you are safe).
How is Digital Object Relationship Metadata Encoded?
Fedora object-to-object metadata is encoded in XML using the Resource Description Framework (RDF). The relationship metadata must follow a prescribed RDF/XML authoring style where the subject is encoded using
The syntax for asserting RELS-EXT relationships in RDF is as follows:
The above RDF fragment indicates that the Fedora digital object identified as "info:fedora/demo:99" is the subject that is being described (as specified by the rdf:about attribute). This object has two relationships to other digital objects. It has an "isMemberOfCollection" relationship to the object identified as "info:fedora/demo:c1" which is a Fedora object that represents a collection. This collection object is considered the target of the relationship assertion. The second relationship assertion that is just like the first one, except that it asserts that the subject is a part of another Fedora digital object, "info:fedora/mystuff:100". The third relationship asserts that the digital object has owner "Jane Doe". Note that the object of this relationship is a text literal, not a URI.
The syntax for asserting RELS-INT relationships in RDF is as follows:
The above RDF fragment indicates that the Fedora digital object datastream identified as "info:fedora/demo:99/Thumbnail" is the subject that is being described (as specified by the rdf:about attribute) in the first rdf:Description element. This datastream has a relationship to another datastream, in this case within the same digital object. It has an "isThumbnailOf" relationship to the datastream identified as "info:fedora/demo:99/FullSizeImage", asserting that it is a thumbnail of the full-sized image.
The second rdf:Description element has the datastream "info:fedora/demo:99/FullSizeImage" as the subject, and it asserts that the image size is 1600 x 900 pixels. Note that the object of this relationship is a text literal, not a URI.
Unlike RELS-EXT, the RDF for RELS-INT can have multiple rdf:Description elements, with each having an rdf:about attribute identifying a datastream within this Fedora digital object, and each rdf:Description element can contain one or more relationships with specified datastream as the subject.
To ensure the integrity of relationship metadata so that it can be properly indexed by Fedora, the Fedora repository service validates all RELS-EXT and RELS-INT Datatreams and enforces the following constraints on the RDF.
Resource Index - RDF-based Indexing and Searching for Digital Objects
The Fedora repository service automatically indexes the RELS-EXT and RELS-INT Datastreams for all objects as part of the RDF-based Resource Index.
This provides a unified "graph" of all the objects in the repository and their relationships to each other. The Resource Index graph can be queried using SPARQL or iTQL which are SQL-like query languages for RDF. The Fedora repository service exposes an web service interface to search the Resource Index. Please refer to the Resource Index documentation for details.