Skip to content

Naming convention datamodel

southeo edited this page Nov 21, 2024 · 3 revisions

This document contains all the terms in use the DiSSCo Digital Objects. Most objects can be directly related to a openDS class, for example the Machine Annotation Service, or the Source System. However, the Digital Specimen and the Digital Media are more complex objects. They can contain classes as nested object in itself. In general, class names are capitalized, use the UpperCamelCase naming convention and are singular. For example, the class that represents a Digital Specimen is called DigitalSpecimen. The properties of a class start with a lowercase and use the lowerCamelCase naming convention. When a class contains a property which contains a list of another class we use the convention hasXXX where XXX is the class name. For example, the Digital Specimen can contain a list of Event objects, so it has a property called hasEvent. When a class is directly nested (not through a list) we use the class name as property name. For example, the Location class contains the property ods:GeoReference which contains the Geo Reference class.

When terms are borrowed from other vocabularies, such as Darwin Core, Annotation Vocabulary, Schema.org or others, we use the same naming convention as in the original vocabulary. This could conflict with the openDS vocabulary naming convention.

Term with value

A simple term-value property gets a prefix so we can connect it to an ontology and can generate the JSON-LD. The name is always in singular unless the ontology specifies it is plural. It starts with a lowercase (after the prefix) and uses lowerCamelCase. Examples are:

  • dwc:collectionID
  • ods:topicDomain

Example of a plural term borrowed from Darwin Core:

  • dwc:dataGeneralizations

Term with an object

A term which contains an object start with a Capital. It is singular, unless there are good reasons otherwise. Examples are:

  • dwc:GeologicalContext

An array of objects

An array of objects is plural and start with hasXXX. Examples are:

  • ods:hasEvents
  • ods:hasEntityRelationships
Clone this wiki locally