Skip to content
Julie Allinson edited this page Mar 30, 2017 · 15 revisions

DogBiscuits

Welcome to the Dog Biscuits wiki!

Using DogBiscuits in a Hyrax application

DogBiscuits models

There are four types of model in DogBiscuits:

  • Authorities
  • Collections
  • FileSet
  • Authorities

Authorities

Authorities are our local authority lists, eg. for subjects, people, places etc. Authorities help describe Works, but they are not classed as works themselves (and so are not modelled as PCDM objects). All individual authority objects, be they people, concepts or whatever, must be contained within a concept scheme in order to pull out a list of them using QA.

  • All authorities inherit from authority class, which in turn inherits from ActiveFedora::Base
  • All agent classes (people, organisations) extend the Agent class, which in turn inherits from Authority.
  • Authorities MUST have a preflabel.

Works

Works represent resources proper, ie. the real-world things we want to describe, such as a thesis, the work depicted by an image, a dataset etc.

  • Works MUST have a title.

FileSets

A fileset is a container for files. A fileset contains one 'file under management' and may contain various derivatives of that file, such as a thumbnail, JP2 version or extracted OCR text. FileSets must be a member of a Work. We can add specialized relationships between a Work and a FileSet.

See models/concerns/metadata/other/main_file.rb for an example of a specialized relationship being used to indicate which FileSet contains the 'main' file (eg. the thesis, rather than any ancillary files).

Collections

Collections are collections of Works or other Collections. They cannot directly contain FileSets.

  • Collections MUST have a title.

Vocabs

Each property defined in our models needs to come from a vocab. There are three ways to do this:

  • Terms from existing ontologies that are already supported in RDF::Vocab, eg. ::RDF::Vocab::FOAF.name
  • Pass the URI for the term, eg. ::RDF::URI.new('http://purl.org/spar/fabio/ExaminationPaper')
  • Define our own RDF vocabularies, eg. DogBiscuits::Vocab::Uketd.qualificationLevel or DogBiscuits::Vocab::Generic.formerIdentifier - see lib/DogBiscuits/vocab

The aim is always to use existing properties/predicates wherever possible. Defining our own terms is only used when we can't find a property elsewhere. nb. I defined UKETD locally as it hasn't got an RDF ontology, only an XML schema.

See Hydra metadata IG work on a Vocab Manager

Services

/app/services contains the code needed to support object-based questioning authority authorities.

Clone this wiki locally