'''Very much''' a work-in-progress. = Identifiers = In theory, the identifier for a DOMS can be an unique random string of characters. In reality, having identifiers like "CD:Gnags_Ref1234" makes it easy for humans to recognize objects. It is expected that the DOMS will contain objects from several different projects. Each project will be assigned a short string, that will be the first part of identifiers for objects from the project. Each project ''should'' create human-readable identifiers, based on the provided part. Example: The project MovieCommercials are assigned "mc". The objects from the project are assigned the identifiers * mc:Project (group with all MovieCommercial entities. This object also contains detailed description of the project) * mc:Group_ (group with some MovieCommercial_ entities) * mc:Commercial_ (entity representing a single commercial) * mc:Movie_ (atom representing the movie in question) * mc:CensorCard_ (atom representing a censor card) = Objects = There are three basic objects in the DOMS: * Group<
>Grouping of one or more elements of the same type. * Entity<
>A representation of a whole. * Atom<
>The smallest element in the DOMS. An atom does not contain other objects. == Group == Groups are collections of other groups and entities. Objects are added to a group by referencing the group. The references are uni-directional for performance-reasons. Todo: Look at the RDF specification for containers: http://www.w3.org/TR/rdf-primer/#containers === Ordered grouping === If we want an ordered grouping, we cannot rely on references from the objects, belonging to the group. Instead we introduce ''hasOrderedMember'' and let the order of hasOrderedMember-relations determine the presentation order. ==== Problem ==== What do we do, when we want a single group to define more than one ordered grouping? an example: We want to represent a book from the project "Vort sogns Historie". A book contains pages, which have to be presented in order. The collection of information, that a book represents, also contains Sogne, which could also require an order-orientated presentation. This is related to [[Metadata on references]]. ===== Namespace solution ===== We could do it by namespace: {{{ hasOrderedMember: page1 hasOrderedMember: page2 ... hasOrderedMember: page123 hasOrderedMember: sogn1 hasOrderedMember: sogn2 ... hasOrderedMember: sogn12 }}} If we know that page and sogn is two different things, we can devide the two ordered groups. If we do not know that, then they will be presented as a single ordered list. Can we live with that? ===== Fragmentation solution ===== We could create objects which are simply groups, so that a book would reference a Pages object, which would only contain a list of references to pages. == Entity == == Atom == == Project == Projects can be viewed as entities. There's no strict need for an object representing a certain project in Fedora, but it makes maintenance easier. Project-objects contains a verbose description of the project, persons involved, standards, conventions, workflow and such. It would be nice to be able to edit this Wiki-style. = Attributes = Brainstorming here - even less substantial than the above. * Migrate (Free|Bound|Immutable) * Free: This object can be migrated to another format with no fear of breaking dependencies from other objects. * Bound: This objects is referenced by other objects. The references might break upon migration. * Immutable: This object is not to be migrated. An example could be a library, referenced by a LaTex-document.