You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

Table of Contents

Fedora Enhanced Content Models

Fedora is at the core of the new DOMS (Digital Object Management System) being developed at the State and University Library. For this system,
we needed more powerful content models. More specifically, we needed content models the describe the xml schema for datastreams, cardinality
restrictions on relations and allowed types for the target of relations. In addition, we needed to retain compability with the original fedora
system.

We did this by enhancing the DS-COMPOSITE-MODEL datastream in content models, and adding the ONTOLOGY datastream to content models.
The ONTOLOGY datastream specify restrictions on relations. DS-COMPOSITE-MODEL specify a location for an xml schema for the described datastream.

To make sure the repository stayed consistent, we build a webservice to validate objects. Given a pid, this webservice will look to the object's
content models, and validate the object against the definitions there.

All we needed now was a way to make sure that the validator was run after all changes, and only changes that did not produce errors were allowed.
This was complicated by the fact that "a change" to an object might not be the same as "one call to API-M", but rather a series of calls.
Fedora already has a STATE for each object. There seem to be predefined meaning attached to this state, so we added our own. If an object is
in the ACTIVE state, the only allowed change is changing state to INACTIVE. So, you cannot change an active object, without making it inactive first.
Then, in inactive all changes are allowed, but when you try to change the state back to ACTIVE, the validator webservice is invoked. If the object
passes validation, the state is changed, otherwise the operation returns an error report.

#trackbackRdf ($trackbackUtils.getContentIdentifier($page) $page.title $trackbackUtils.getPingUrl($page))
  • No labels