Action decide Data Model with respect to Fedora 3

Assigned
KFC + ABR + EK

Prev assigned

Tasks adressed
["TaskA.2.2"],["TaskA.2.1"]

Time estimated
8md

Time used
0.5md

Priority
6

Status
In progress

Iteration
11

Notes

The Fedora 3 Data Model seems to indicate a different datamodel to what we expected, and this has impact on how we should define the final DOMS data model. This needs to be decided, and soon, so MjĂžlner knows how our final datamodel looks.

The issues we have identified so far:

The purpose of this action is to establish how key concepts, mainly inheritance, should be implemented, and formalise the DOMS base collection. We should start manipulating the Fedora developers into accepting our wishes, mainly by emails to their mailinglists.

The product should be a datamodel description, and the foxml object for the Base collection.

Progress

DS-COMPOSITE

We use DS-COMPOSITE to store arbitrary metadata, as proposed. Fedora does not choke on it, and preserves it faithfully.

Inheritance and rdf:type

It is a great priority to be able to describe the datamodel in OWL lite. To be able to do this, we propose the following system.

In a content model, we use OWL to describe the contents of the RELS-EXT datastream of it's subscribing data objects. We make no attempts to describe the contents of the RELS-EXT datastream of the content models. The fedora-model:hasModel relations will not be expressed in this OWL schema.

There are three typical scenarios where you want to construct the complete schema for RELS-EXT datastream

Given a content model C , make a new object

  1. For the content model C, follow the doms:extendsModel relation to construct the list of parent content models. Uniquify this list.
  2. From each content model in the list, extract the schema, if any, for the RELS-EXT datastream. Concatenate these schemas into an xml file.
  3. Use an xslt to transform any mention of doms:extendsModel in this schema into rdf:isSubclassOf
  4. Construct a new rdf individual of type C. Use the schema to find the required and the possible relations. Populate the individual.
  5. Transform the rdf:type relation in the individual into a fedora-model:hasModel relation to each of the classes from the schema.

Given a data object D, examine the schema for the RELS-EXT datastream

  1. Construct the list of content models for A thus:
    1. Follow all the fedora-model:hasModel relations of A, and construct a list AL of content models for A.
    2. For each content model B in the list AL, follow the doms:extendsModel relations, to construct a set AG of content models for A.
    3. Compare AG and AL. If they do not contain exactly the same models, there is a problem
  2. Construct the schema from the content models thus:
    1. For each content model in AL, find the schema, if any, for the RELS-EXT datastream.
    2. Concatenate these schemas to a xml document B
    3. Use a xslt to transform the doms:extendsType objectproperties into rdf:isSubclassOf
    4. Take the RELS-EXT datastream from the data object, and store it in a document C.
    5. Use a xslt to transfrom the doms:hasModel relation into rdf:type

Document B should now be the schema for the object described in C. Make the changes you want in C, transform the rdf:type back into fedora-model:hasModel and store it as the RELS-EXT datastream.

Validate all the objects in the repository

  1. Use the triple store to find all content models in the system.
  2. For each content model C, follow the doms:extendsModel relation to construct the list of parent content models. Uniquify this list.
  3. From each content model in the list, extract the schema, if any, for the RELS-EXT datastream. Concatenate these schemas into an xml file.
  4. Use an xslt to transform any mention of doms:extendsModel in this schema into rdf:isSubclassOf
  5. For each data object in the repository, extract the RELS-EXT datastream in a document
  6. For each document, xslttransform the fedora-model:hasModel relation into rdf:type relation.
  7. Validate all these documents against the set of schemas.

Checklist For Working On An Action

The Life Cycle of an Action:

Please make sure that you address the below issues, when working on an action: