1. Use Standards
Reuse standard or commonly used vocabularies and ontologies where possible
Extend classes only when necessary
When classes/properties are extended from other vocabularies, use the naming conventions below rather than following the convention of the original source.
2. Define a URI Policy to create unique, persistent identifiers
The scope of this policy is the model itself, that is the concepts and properties that are defined by the Terra Interoperability Model.
https://datamodel.terra.bio has been reserved for the Terra Interoperability Model. As the model evolves, additional logical components will be managed separately and the URI will reflect this. Thus the URI "https://datamodel.terra.bio/[Data Model Component]". https://datamodel.terra.bio/TerraCore/ will focus on the core model for findability.
3. Follow Naming Conventions
- General
- Use meaningful, explicit and concise names
- Keep names as simple and short as possible
- Expand abbreviations unless unwieldy or totally obvious
- Provide definitions for new classes and properties
- Provide a label (for human readability)
- Avoid
- Opaque class and property names, e.g. Class123456.
- Class Names
- Use PascalCase
- Prefer singular nouns
- Property Names
- Use camelCase and start with lower case
- Prefer multiple words and use of at least one upper case letter
- Always use a present tense verb
- For example, hasType, isDefinedBy
- Identifiers
- Use upper- and lower-case alphanumeric characters, numbers (except for the 1st character)
- Avoid
- “.” (period), “-“ (hyphen) because they special characters in some implementation languages and may cause processing errors
- “_” (underbar) because translation to snake_case may cause conflicts in names
- using the same letters (but different case) to define 2 different entities, e.g., a property called “biosample” and a class named “BioSample
4. Provide Multi-lingual Support
- This is not required at this time.
References
- Best Practices
- Programming Language Conventions
- URI Policy