Differences between revisions 13 and 22 (spanning 9 versions)
Revision 13 as of 2008-09-30 13:47:03
Size: 12450
Editor: jrg
Comment:
Revision 22 as of 2008-10-01 11:45:27
Size: 15820
Editor: jrg
Comment:
Deletions are marked like this. Additions are marked like this.
Line 42: Line 42:
Descriptions in the following were copied (in part) from the Fedora documentation at http://www.fedora-commons.org/confluence/display/FCR30/API-M.

=== API-M ===
Descriptions in the following were copied (in part) from the Fedora documentation at http://www.fedora-commons.org/confluence/display/FCR30/API-M and http://www.fedora-commons.org/confluence/display/FCR30/API-A.

=== API-M (Fedora Management service API) ===
Line 103: Line 103:
 * {{{Datastream}}} The specified datastream. (See definition of {{{Datastream}}} under Datastructures below)  * {{{Datastream}}} The specified datastream. (See definition of {{{Datastream}}} under Data structures below)
Line 112: Line 112:
 * {{{String dsState}}} One of "A", "D", or "I" (Active, Deleted, or Inactive).

Returns:
 * {{{Datastream[]}}} All versions of a datastream, sorted from most to least recent. (See definition of {{{Datastream}}} under Datastructures below)
 * {{{String dsState}}} One of "A", "D", or "I" (Active, Deleted, or Inactive). Only Active and Deleted are used in DOMS.

Returns:
 * {{{Datastream[]}}} All versions of a datastream, sorted from most to least recent. (See definition of {{{Datastream}}} under Data structures below)
Line 126: Line 126:
 * {{{RelationshipTuple[]}}} An array of RelationshipTuples, each containing the subject, predicate and object matching the search criteria.  (See definition of {{{RelationshipTuple}}} under Datastructures below)  * {{{RelationshipTuple[]}}} An array of RelationshipTuples, each containing the subject, predicate and object matching the search criteria. (See definition of {{{RelationshipTuple}}} under Data structures below)
Line 185: Line 185:
 * {{{String state}}} The new state, "A", "I" or "D". Null means leave unchanged.  * {{{String state}}} The new state, "A", "I" or "D". Null means leave unchanged. Only Active and Deleted are used in DOMS.
Line 205: Line 205:
 * {{{boolean}}} True if and only if the relationship was added. (?)  * {{{boolean}}} True if and only if the relationship was purged.
Line 214: Line 214:
 * {{{String dsState}}} One of "A", "D", or "I" (*A*ctive, *D*eleted, or *I*nactive).  * {{{String dsState}}} One of "A", "D", or "I" (Active, Deleted, or Inactive). Only Active and Deleted are used in DOMS.
Line 227: Line 227:
=== API-A ===

=== Datastructures ===
=== API-A (Fedora Access service API) ===

==== describeRepository ====
Gets information that describes the repository.

Returns:
 * {{{RepositoryInfo}}} A data structure that contains key metadata describing the Fedora repository server including repository name, version, base URL, pid namespace, and sample request URLs. (See definition of {{{RepositoryInfo}}} under Data structures below)


==== getDatastreamDissemination ====
Gets the content of a datastream.

Input parameters:
 * {{{String pid}}} The PID of the object.
 * {{{String dsID}}} The datastream ID.
 * {{{String asOfDateTime}}} A dateTime indicating the version of the datastream to retrieve. If null, Fedora will use the most recent version.

Returns:
 * {{{MIMETypedStream}}} The datastream as a mime-typed stream. (See definition of {{{MIMETypedStream}}} under Data structures below)


==== getDissemination ====
Disseminates the content produced by executing the method specified in the service definition associated the specified digital object.

Input parameters:
 * {{{String pid}}} The pid of the object.
 * {{{String serviceDefinitionPid}}} The PID of the Service Definition object.
 * {{{String methodName}}} The name of the method to be executed.
 * {{{Property[] parameters}}} An array of name-value pairs.
 * {{{String asOfDateTime}}} The versioning dateTime. If null, Fedora will use the most recent version.

Returns:
 * {{{MIMETypedStream}}} A MIME-typed stream containing the result of the dissemination. (See definition of {{{MIMETypedStream}}} under Data structures below)


==== getObjectHistory ====
Gets a list of timestamps that correspond to modification dates of components. This currently includes changes to Datastreams and disseminators.

Input parameters:
 * {{{String pid}}} The pid of the object.

Returns:
 * {{{String[]}}} An array containing the list of timestamps indicating when changes were made to the object.


==== getObjectProfile ====
Gets the ObjectProfile of an object, which includes key metadata fields and URLs for the object Dissemination Index and the object Item Index. Can be thought of as a default view of the object.

Input parameters:
 * {{{String pid}}} The pid of the object.
 * {{{String asOfDateTime}}} The date/time stamp specifying the desired view of the object. If null, the current view of the object (the most recent time) is assumed.

Returns:
 * {{{ObjectProfile}}} The ObjectProfile of the object. (See definition of {{{ObjectProfile}}} under Data structures below)


==== listDatastreams ====
Lists the datastreams of an object.

Input parameters:
 * {{{String pid}}} The pid of the object.
 * {{{String asOfDateTime}}} The date/time stamp specifying the desired view of the object. If null, the current view of the object (the most recent time) is assumed.

Returns:
 * {{{DatastreamDef[]}}} A sequence of DatastreamDefs. (See definition of {{{DatastreamDef}}} under Data structures below)


==== listMethods ====

Input parameters:
 * {{{}}}

Returns:
 * {{{}}}




=== Data structures ===
Line 270: Line 346:


==== RepositoryInfo ====

==== MIMETypedStream ====

==== ObjectProfile ====

Fedora 3.0 API

DOMS metadata objects will be stored in Fedora-commons 3.0. Fedora 3.0 is currently in beta 2, but is expected to be final by the time we release DOMS.

The API is documented here: http://www.fedora-commons.org/documentation/3.0/userdocs/index.html#webservices

The following restrictions apply:

  • The possibilities "PurgeDatastream" and "PurgeObject" are not allowed. Instead change the state to deleted

  • setDatastreamVersionable is disallowed. The internal datastreams are always versioned.
  • Do not use getNextPID, instead use the method provided from DOMS

All ingested objects, and all updates, must lead to valid objects, as defined by the data model. The exception is that objects marked as "draft" or "intermediate" in the datamodel are always considered valid.

Making a call to any API method that changes the object to a state not valid as defined by the datamodel will fail. Any call to a state-changing API-call where the object is not first set to intermediate state will fail.

Examples

Saving seven new interrelated objects to DOMS

Since the datamodel may require that all seven objects are correctly ingested and interrelated before they are valid, ingest all seven objects in intermediate state, and then publish them

  • Call the method for generating DOMS PIDs seven times
  • Generate 7 FoxML objects, each with the administrative state set to "intermediate"
  • Call API-M ingest seven times

  • Call API-M modifyDatastreamByValue 7 times to update the state to "published"

Updating fields and references for 8 interrelated objects

To make sure that the changes don't interfere with validity, first set the state to intermediate, then update state to published after modifications.

  • Call API-M modifyDatastreamByValue 8 times to update the administrative state to "intermediate"

  • Update datastreams and relations as needed to make the changes using addRelationsship/addDatastream/purgeRelationship/modifyDatastreamByValue/setDatastreamState

  • Call API-M modifyDatastreamByValue 8 times to update the administrative state to "published"

Usage of Fedora API-M and API-A

The following describes those methods of the Fedora API-M and API-A that may be called by the GUI.

Descriptions in the following were copied (in part) from the Fedora documentation at http://www.fedora-commons.org/confluence/display/FCR30/API-M and http://www.fedora-commons.org/confluence/display/FCR30/API-A.

API-M (Fedora Management service API)

addDatastream

Creates a new Datastream in the object.

Input parameters:

  • String pid The PID of the object.

  • String dsID The datastream ID (64 characters max). If null, Fedora will generate the value.

  • String[] altIDs Alternate identifiers for the datastream.

  • String dsLabel The label for the datastream.

  • boolean versionable Enable versioning of the datastream. This should be on for DOMS GUI usages.

  • String MIMEType The mime-type of the datastream.

  • String formatURI The format URI of the datastream.

  • String dsLocation Location of managed, redirect, or external referenced datastream content.

  • String controlGroup One of "X", "M", "R", or "E" (Inline XML, Managed Content, Redirect, or External Referenced). For DOMS GUI, use Inline XML or External Referenced.

  • String dsState One of "A", "D", or "I" (Active, Deleted, or Inactive). Only Active and Deleted are used in DOMS.

  • String checksumType The algorithm used to compute the checksum. For DOMS GUI usage, may take value "DISABLED" or "MD5".

  • String checksum The value of the checksum represented as a hexadecimal string.

  • String logMessage A log message.

Returns:

  • String The datastreamID of the newly added datastream.

addRelationship

Creates a new relationship in the object. Adds the specified relationship to the object's RELS-EXT Datastream. If the Resource Index is enabled, the relationship will be added to the Resource Index.

Input parameters:

  • String pid The PID of the object.

  • String relationship The predicate.

  • String object The object.

  • boolean isLiteral A boolean value indicating whether the object is a literal.

  • String datatype The datatype of the literal. Optional.

Returns:

  • boolean True if and only if the relationship was added.

compareDatastreamChecksum

Verifies that the Datastream content has not changed since the checksum was initially computed.

Input parameters:

  • String pid The PID of the object.

  • String dsID The datastream ID.

  • String versionDate A dateTime indicating the version of the datastream to verify. If null, Fedora will use the most recent version.

Returns:

  • String The checksum if there is no difference, a message indicating checksum failure otherwise.

getDatastream

Gets the specified datastream.

Input parameters:

  • String pid The pid of the object.

  • String dsID The datastream ID.

  • String asOfDateTime The date/time stamp specifying the desired view of the object. If null, the current view of the object (the most recent time) is assumed.

Returns:

  • Datastream The specified datastream. (See definition of Datastream under Data structures below)

getDatastreams

Gets all versions of a datastream, sorted from most to least recent.

Input parameters:

  • String pid The pid of the object.

  • String asOfDateTime The date/time stamp specifying the desired view of the object. If null, the current view of the object (the most recent time) is assumed.

  • String dsState One of "A", "D", or "I" (Active, Deleted, or Inactive). Only Active and Deleted are used in DOMS.

Returns:

  • Datastream[] All versions of a datastream, sorted from most to least recent. (See definition of Datastream under Data structures below)

getRelationships

Get the relationships asserted in the object's RELS-EXT Datastream that match the given criteria.

Input parameters:

  • String pid The PID of the object.

  • String relationship The predicate to match. A null value matches all predicates.

Returns:

  • RelationshipTuple[] An array of RelationshipTuples, each containing the subject, predicate and object matching the search criteria. (See definition of RelationshipTuple under Data structures below)

ingest

Creates a new digital object in the repository. The object's initial state will be A (active). If the XML document does not specify the OBJID attribute of the root element, the repository will generate and return a new pid for the object resulting from this request. That pid will have the namespace of the repository. If the XML document specifies a pid, it will be assigned to the digital object provided that 1. it conforms to the Fedora pid Syntax, 2. it uses a namespace that matches the "retainPIDs" value configured for the repository, and 3. it does not collide with an existing pid of an object in the repository.

Input parameters:

  • byte[] objectXML The digital object in an XML submission format.

  • String format The XML format of objectXML, e.g. "info:fedora/fedora-system:FOXML-1.1", "info:fedora/fedora-system:FOXML-1.0", "info:fedora/fedora-system:METSFedoraExt-1.1", or "info:fedora/fedora-system:ATOM-1.0".

  • String logMessage A log message.

Returns:

  • String The pid of the newly created object.

modifyDatastreamByReference

Input parameters:

  • String pid The PID of the object.

  • String dsID The datastream ID.

  • String[] altIDs Alternate identifiers for the datastream, if any.

  • String dsLabel The label for the datastream.

  • String MIMEType The mime type.

  • String formatURI Optional format URI of the datastream.

  • String dsLocation Location of managed, redirect, or external referenced datastream content.

  • String checksumType The algorithm used to compute the checksum. For DOMS GUI usage, may take value "DISABLED" or "MD5".

  • String checksum The value of the checksum represented as a hexadecimal string.

  • String logMessage A log message.

  • boolean force Force the update even if it would break a data contract.

Returns:

  • String The timestamp of the operation according to the server, in ISO8601 format.

modifyDatastreamByValue

Modifies an existing Datastream in an object, by value. This operation is only valid for Inline XML Datastreams (i.e. controlGroup "X").

Input parameters:

  • String pid The PID of the object.

  • String dsID The datastream ID.

  • String[] altIDs Alternate identifiers for the datastream, if any.

  • String dsLabel The label for the datastream.

  • String MIMEType The mime type.

  • String formatURI Optional format URI of the datastream.

  • byte[] dsContent The content of the datastream.

  • String checksumType The algorithm used to compute the checksum. For DOMS GUI usage, may take value "DISABLED" or "MD5".

  • String checksum The value of the checksum represented as a hexadecimal string.

  • String logMessage A log message.

  • boolean force Force the update even if it would break a data contract.

Returns:

  • String The timestamp of the operation according to the server, in ISO8601 format.

modifyObject

Modify an object.

Input parameters:

  • String pid The PID of the object.

  • String state The new state, "A", "I" or "D". Null means leave unchanged. Only Active and Deleted are used in DOMS.

  • String label the new label. Null means leave unchanged.

  • String ownerId The ownerId for the object.

  • String logMessage A log message.

Returns:

  • String The timestamp of the operation according to the server, in ISO8601 format.

purgeRelationship

Delete the specified relationship. This method will remove the specified relationship(s) from the RELS-EXT datastream. If the Resource Index is enabled, this will also delete the corresponding triples from the Resource Index.

Input parameters:

  • String pid The PID of the object.

  • String relationship The predicate, null matches any predicate.

  • String object The object, null matches any object.

  • boolean isLiteral A boolean value indicating whether the object is a literal.

  • String datatype The datatype of the literal. Optional.

Returns:

  • boolean True if and only if the relationship was purged.

setDatastreamState

Sets the state of a Datastream to the specified state value.

Input parameters:

  • String pid The PID of the object.

  • String dsID The datastream ID.

  • String dsState One of "A", "D", or "I" (Active, Deleted, or Inactive). Only Active and Deleted are used in DOMS.

  • String logMessage A log message.

Returns:

  • String The timestamp of the operation according to the server, in ISO8601 format.

(export)

(getDatastreamHistory)?

(getObjectXML)?

API-A (Fedora Access service API)

describeRepository

Gets information that describes the repository.

Returns:

  • RepositoryInfo A data structure that contains key metadata describing the Fedora repository server including repository name, version, base URL, pid namespace, and sample request URLs. (See definition of RepositoryInfo under Data structures below)

getDatastreamDissemination

Gets the content of a datastream.

Input parameters:

  • String pid The PID of the object.

  • String dsID The datastream ID.

  • String asOfDateTime A dateTime indicating the version of the datastream to retrieve. If null, Fedora will use the most recent version.

Returns:

  • MIMETypedStream The datastream as a mime-typed stream. (See definition of MIMETypedStream under Data structures below)

getDissemination

Disseminates the content produced by executing the method specified in the service definition associated the specified digital object.

Input parameters:

  • String pid The pid of the object.

  • String serviceDefinitionPid The PID of the Service Definition object.

  • String methodName The name of the method to be executed.

  • Property[] parameters An array of name-value pairs.

  • String asOfDateTime The versioning dateTime. If null, Fedora will use the most recent version.

Returns:

  • MIMETypedStream A MIME-typed stream containing the result of the dissemination. (See definition of MIMETypedStream under Data structures below)

getObjectHistory

Gets a list of timestamps that correspond to modification dates of components. This currently includes changes to Datastreams and disseminators.

Input parameters:

  • String pid The pid of the object.

Returns:

  • String[] An array containing the list of timestamps indicating when changes were made to the object.

getObjectProfile

Gets the ObjectProfile of an object, which includes key metadata fields and URLs for the object Dissemination Index and the object Item Index. Can be thought of as a default view of the object.

Input parameters:

  • String pid The pid of the object.

  • String asOfDateTime The date/time stamp specifying the desired view of the object. If null, the current view of the object (the most recent time) is assumed.

Returns:

  • ObjectProfile The ObjectProfile of the object. (See definition of ObjectProfile under Data structures below)

listDatastreams

Lists the datastreams of an object.

Input parameters:

  • String pid The pid of the object.

  • String asOfDateTime The date/time stamp specifying the desired view of the object. If null, the current view of the object (the most recent time) is assumed.

Returns:

  • DatastreamDef[] A sequence of DatastreamDefs. (See definition of DatastreamDef under Data structures below)

listMethods

Input parameters:

Returns:

Data structures

Datastream

Contains the following private fields. Each has corresponding getter and setter methods.

  • DatastreamControlGroup controlGroup

  • String ID

  • String versionID

  • String[] altIDs

  • String label

  • boolean versionable

  • String MIMEType

  • String formatURI

  • String createDate

  • long size

  • String state

  • String location

  • String checksumType

  • String checksum

DatastreamControlGroup

Contains the following public methods.

  • DatastreamControlGroup fromValue(String value)

  • DatastreamControlGroup fromString(String value)

  • String getValue()

The allowed values are "E", "M", "X" and "R". (External Referenced, Managed Content, Inline XML, Redirect)

The two first (static) methods return a DatastreamControlGroup with the given value. (They do the same.)

RelationshipTuple

Contains the following private fields. Each has corresponding getter and setter methods.

  • String subject

  • String predicate

  • String object

  • boolean isLiteral

  • String datatype

RepositoryInfo

MIMETypedStream

ObjectProfile

Fedora 3.0 API (last edited 2010-03-17 13:12:49 by localhost)