Content Modeling Documentation

Community wants examples of content modelling - we should share Ruby Models = AF models with them.

Developers are not using the Fedora cModel objects that Hydra documentation currently recommends.  Instead they have code that effectively implements them but there is no need for the actual cModel to be instantiated in a Fedora object.  Should we ever need the cModels a Ruby gem would be easily written to generate them from the corresponding AF model.  In the real world our developers are using pragmatic working code (the AF model) and not the formalism of a "proper" Fedora cModel.  They are, though, using the "hasModel" declarations in RELS-EXT to provide hooks for (eg) driving views.

Need to post the AF models using a common language to describe them so that they can be shared and re-used.  There should also be a corresponding Fedora object that can be inspected and compared with the Ruby code.

Resolved:  set up a page on the Active Fedora Github wiki with examples each having:

  • the Ruby code for the model
  • tests that can be run for the model
  • an example object that the tests run against

Encouraged: Create a Rails Engine that allows models to be included in other applications, and package the Fedora cModel FOXML artifacts together with the Ruby code artifacts. Examples to follow.

Populating this page with new examples will be one of the standard developer tasks.  For a site to be showcased on the Hydra website the examples must be there. Private files can be dealt with in gist.

First example done on the spot (as a template). http://github.com/projecthydra/active_fedora/wiki. See in particular the Models in the Wild page.

Need to modify the 'Content modelling' page on the DuraSpace wiki to reflect the above and provide appropriate guidelines for designing and building objects.  Over next 6-8 weeks Matt, Mark, Richard, Tom, ANO from UVa will rework the page behind the scenes and then share it for comment before making it public (with suitable explanation of the changes).