Differences between revisions 46 and 67 (spanning 21 versions)
Revision 46 as of 2008-10-14 12:49:37
Size: 23172
Editor: jrg
Comment:
Revision 67 as of 2010-03-17 13:12:49
Size: 2971
Editor: localhost
Comment: converted to 1.6 markup
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
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.

If, after the call to this method, the object in question would have state "published" in its STATE datastream, then this method will perform validation of the object. In case of a failed validation, an exception will be thrown.

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. Inactive objects are not used in DOMS, as an inactive object would not be in the Triple Store. We need to be able to make queries about it, so that is unacceptable. Rather, we use the special STATE datastream, see FedoraTransactionsReplacement.''
 * {{{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.

Throws:
 * {{{java.rmi.RemoteException}}}


==== 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.

If, after the call to this method, the object in question would have state "published" in its STATE datastream, then this method will perform validation of the object. In case of a failed validation, an exception will be thrown.

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.

Throws:
 * {{{java.rmi.RemoteException}}}


==== 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.

Throws:
 * {{{java.rmi.RemoteException}}}


==== 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 version of the object. If null, the current version of the object (the most recent time) is assumed.

Returns:
 * {{{Datastream}}} The specified datastream. (See definition of [#anchor_datastream Datastream] under Data structures below)

Throws:
 * {{{java.rmi.RemoteException}}}


==== 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 version of the object. If null, the current version 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. Inactive objects are not used in DOMS, as an inactive object would not be in the Triple Store. We need to be able to make queries about it, so that is unacceptable. Rather, we use the special STATE datastream, see FedoraTransactionsReplacement.''
# dsState is not mentioned as a parameter in Fedora's own documentation, but in their code, it is there.

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

Throws:
 * {{{java.rmi.RemoteException}}}


==== 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)

Throws:
 * {{{java.rmi.RemoteException}}}


==== 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.

If, after the call to this method, the object in question would have state "published" in its STATE datastream, then this method will perform validation of the object. In case of a failed validation, an exception will be thrown.

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.

Throws:
 * {{{java.rmi.RemoteException}}}


==== modifyDatastreamByReference ====

If, after the call to this method, the object in question would have state "published" in its STATE datastream, then this method will perform validation of the object. In case of a failed validation, an exception will be thrown.

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.

Throws:
 * {{{java.rmi.RemoteException}}}


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

If, after the call to this method, the object in question would have state "published" in its STATE datastream, then this method will perform validation of the object. In case of a failed validation, an exception will be thrown.

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.

Throws:
 * {{{java.rmi.RemoteException}}}


==== modifyObject ====
Modify an object.

If, after the call to this method, the object in question would have state "published" in its STATE datastream, then this method will perform validation of the object. In case of a failed validation, an exception will be thrown.

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. Inactive objects are not used in DOMS, as an inactive object would not be in the Triple Store. We need to be able to make queries about it, so that is unacceptable. Rather, we use the special STATE datastream, see FedoraTransactionsReplacement.''
 * {{{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.

Throws:
 * {{{java.rmi.RemoteException}}}


==== 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.

If, after the call to this method, the object in question would have state "published" in its STATE datastream, then this method will perform validation of the object. In case of a failed validation, an exception will be thrown.

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.

Throws:
 * {{{java.rmi.RemoteException}}}


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

If, after the call to this method, the object in question would have state "published" in its STATE datastream, then this method will perform validation of the object. In case of a failed validation, an exception will be thrown.

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. Inactive objects are not used in DOMS, as an inactive object would not be in the Triple Store. We need to be able to make queries about it, so that is unacceptable. Rather, we use the special STATE datastream, see FedoraTransactionsReplacement.''
 * {{{String logMessage}}} A log message.

Returns:
 * {{{String}}} The timestamp of the operation according to the server, in ISO8601 format.

Throws:
 * {{{java.rmi.RemoteException}}}


==== (export) ====
==== (getDatastreamHistory)? ====
==== (getObjectXML)? ====
DOMS metadata objects will be stored in Fedora-commons 3.0.
Line 280: Line 7:
=== 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)

Throws:
 * {{{java.rmi.RemoteException}}}
The API is documented here, as far as it goes: http://www.fedora-commons.org/documentation/3.0/userdocs/index.html#webservices
Line 292: Line 10:
==== getDatastreamDissemination ====
Gets the content of a datastream.
The structures below are used by Fedora, almost no matter which lanquage you use to interact with it. We use our own shorthand to specify the types. This schema should help you translate to your language of choise
Line 295: Line 12:
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.
|| shorthand || wsdl || fedora java client || rest ||
|| {{{String}}} || xsd:string || java.lang.String || xsd:string ||
|| {{{[]}}} || xsd:sequence || java array || ? ||
|| {{{byte[]}}} || xsd:base64Binary || jave primitive byte[] || ? ||
|| {{{long}}} || xsd:long || java primitive long || xsd:long ||
|| {{{boolean}}} || xsd:boolean || java primitive boolean || xsd:boolean ||
Line 300: Line 19:
Returns:
 * {{{MIMETypedStream}}} The datastream as a mime-typed stream. (See definition of {{{MIMETypedStream}}} under Data structures below)

Throws:
 * {{{java.rmi.RemoteException}}}
The "fedora-types:!ArrayOfString" is defined thus
{{{
<complexType name="ArrayOfString">
   <sequence>
      <element name="item" minOccurs="0" maxOccurs="unbounded" type="xsd:string"/>
   </sequence>
</complexType>
}}}
Line 307: Line 29:
==== 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)

Throws:
 * {{{java.rmi.RemoteException}}}
The API to Fedora is directly exported as the primary API to DOMS. We have restricted a few methods, and have some conventions about certain other should be used.
Line 324: Line 32:
==== getObjectHistory ====
Gets a list of timestamps that correspond to modification dates of components. This currently includes changes to Datastreams and disseminators.
== API restrictions ==
Line 327: Line 34:
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.

Throws:
 * {{{java.rmi.RemoteException}}}
 * [[../Fedora 3.0 API/Management#PurgeDatastream| apiM.PurgeDatastream]] and[[../Fedora 3.0 API/Management#PurgeObject| apiM.PurgeObject]] are not allowed. Instead use [[Fedora 3.0 API/Management#modifyDatastream| apiM.modifyDatastream]] and [[Fedora 3.0 API/Management#modifyObject| apiM.modifyObject]] to change the state to "D" (deleted).
 * [[../Fedora 3.0 API/Management#setDatastreamVersionable| apiM.setDatastreamVersionable]] is disallowed. The internal datastreams are always versioned.
 * Do not use getNextPID, instead use the method provided from DOMS
Line 337: Line 39:
==== 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.
Fedora has the concept of state for all objects. We have added additional meaning to this term, which is described in FedoraState. Basically, an object can be Active, Inactive or Deleted. If it is Active, the only allowed change is to make it Inactive. All other attempted changes will throw exceptions. If Inactive, all changes are allowed. Changing the state from anything to Active will cause the object to be validated, and if the object is not valid, the state will not be changed.
Line 340: Line 41:
Input parameters:
 * {{{String pid}}} The pid of the object.
 * {{{String asOfDateTime}}} The date/time stamp specifying the desired version of the object. If null, the current version of the object (the most recent time) is assumed.
Best practice, when perfoming changes in a set of objects it to mark each of them as Inactive, before performing any changes, and perform all changes before moving any of them back to Active.
Line 344: Line 43:
Returns:
 * {{{ObjectProfile}}} The !ObjectProfile of the object. (See definition of {{{ObjectProfile}}} under Data structures below)
The Fedora API is described in the the pages below.
Line 347: Line 45:
Throws:
 * {{{java.rmi.RemoteException}}}


==== 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 version of the object. If null, the current version of the object (the most recent time) is assumed.

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

Throws:
 * {{{java.rmi.RemoteException}}}


==== listMethods ====
Lists all the methods that the object supports.

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

Returns:
 * {{{ObjectMethodsDef[]}}} A sequence of !ObjectMethodsDefs. (See definition of {{{ObjectMethodsDef}}} under Data structures below)

Throws:
 * {{{java.rmi.RemoteException}}}


=== Data structures ===

==== Datastream ====
[[Anchor(anchor_datastream)]]
Returned by getDatastream and getDatastreams.

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 ====
Part of Datastream.

Contains a public method
 * {{{String getValue()}}}
which will return "E", "M", "X" or "R". (External Referenced, Managed Content, Inline XML, Redirect)


==== RelationshipTuple ====
Returned by getRelationships.

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

 * {{{String subject}}}
 * {{{String predicate}}}
 * {{{String object}}}
 * {{{boolean isLiteral}}}
 * {{{String datatype}}}


==== RepositoryInfo ====
Returned by describeRepository.

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

 * {{{String repositoryName}}}
 * {{{String repositoryVersion}}}
 * {{{String repositoryBaseURL}}}
 * {{{String repositoryPIDNamespace}}}
 * {{{String defaultExportFormat}}}
 * {{{String OAINamespace}}}
 * {{{String[] adminEmailList}}}
 * {{{String samplePID}}}
 * {{{String sampleOAIIdentifier}}}
 * {{{String sampleSearchURL}}}
 * {{{String sampleAccessURL}}}
 * {{{String sampleOAIURL}}}
 * {{{String[] retainPIDs}}}


==== MIMETypedStream ====
Returned by getDatastreamDissemination and getDissemination.

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

 * {{{String MIMEType}}}
 * {{{byte[] stream}}}
 * {{{Property[] header}}}


==== Property ====
Input for getDissemination and part of MIMETypedStream.

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

 * {{{String name}}}
 * {{{String value}}}


==== ObjectProfile ====
Returned by getObjectProfile.

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

 * {{{String pid}}}
 * {{{String objLabel}}}
 * {{{String[] objModels}}}
 * {{{String objCreateDate}}}
 * {{{String objLastModDate}}}
 * {{{String objDissIndexViewURL}}}
 * {{{String objItemIndexViewURL}}}


==== DatastreamDef ====
Returned by listDatastreams.

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

 * {{{String ID}}}
 * {{{String label}}}
 * {{{String MIMEType}}}


==== ObjectMethodsDef ====
Returned by listMethods.

Definition of a specific method.
Contains the following private fields. Each has corresponding getter and setter methods.

 * {{{String PID}}}
 * {{{String serviceDefinitionPID}}}
 * {{{String methodName}}}
 * {{{MethodParmDef[] methodParmDefs}}} The parameters that the method takes.
 * {{{String asOfDate}}}


==== MethodParmDef ====
Part of !ObjectMethodsDef.

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

Each parameter for a method has a name, and a type. The possible values of a parameter depends on its type. It can be bound to a datastream in the object, it can have a hardcoded value or it can be defined by the caller.

Each parameter is defined to be passed by reference or passed by value.


 * {{{String parmName}}} The name of the parameter. Can be null.
 * {{{String parmType}}} Either:
   * {{{"fedora:datastreamInputType"}}} or
   * {{{"fedora:userInputType"}}} or
   * {{{"fedora:defaultInputType"}}}
 * {{{String parmDefaultValue}}} If the parmType is default, this is the value that will be used. Null if other type.
 * {{{String[] parmDomainValues}}} If the parameter can be defined by the user, these are the possible values. Null if other type.
 * {{{boolean parmRequired}}} False, if this parameter can be left out of a call.
 * {{{String parmLabel}}} The label for the parameter. Can be null.
 * {{{String parmPassBy}}}
  * {{{"URL_REF"}}} - if the parameter is pass by reference - by an url.
  * {{{"VALUE"}}} - if the parameter is pass by value.
 * [[../Fedora 3.0 API/Access| The public Access API]] - Everybody can use this, this is the primary way for external applications to query the repository.
 * [[../Fedora 3.0 API/Management| The protected Management API]] - Only authenticated administrators, such as users of the GUI, can use this.
 * [[Fedora 3.0 triple store API| The Resource Index API]] - The interface to the Fedora triple store.

Fedora 3.0 API

DOMS metadata objects will be stored in Fedora-commons 3.0.

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

The structures below are used by Fedora, almost no matter which lanquage you use to interact with it. We use our own shorthand to specify the types. This schema should help you translate to your language of choise

shorthand

wsdl

fedora java client

rest

String

xsd:string

java.lang.String

xsd:string

[]

xsd:sequence

java array

?

byte[]

xsd:base64Binary

jave primitive byte[]

?

long

xsd:long

java primitive long

xsd:long

boolean

xsd:boolean

java primitive boolean

xsd:boolean

The "fedora-types:ArrayOfString" is defined thus

<complexType name="ArrayOfString">
   <sequence>
      <element name="item" minOccurs="0" maxOccurs="unbounded" type="xsd:string"/>
   </sequence>
</complexType>

The API to Fedora is directly exported as the primary API to DOMS. We have restricted a few methods, and have some conventions about certain other should be used.

API restrictions

Fedora has the concept of state for all objects. We have added additional meaning to this term, which is described in FedoraState. Basically, an object can be Active, Inactive or Deleted. If it is Active, the only allowed change is to make it Inactive. All other attempted changes will throw exceptions. If Inactive, all changes are allowed. Changing the state from anything to Active will cause the object to be validated, and if the object is not valid, the state will not be changed.

Best practice, when perfoming changes in a set of objects it to mark each of them as Inactive, before performing any changes, and perform all changes before moving any of them back to Active.

The Fedora API is described in the the pages below.

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