Skip to content

Neurobagel standards for controlled term naming

Naming conventions

Namespace prefixes

  • Names should be all lowercase (e.g., nidm, cogatlas)

Properties (graph "edges")

  • Names should adhere to camelCase (uses capitalized words except for the first word/letter)
  • Should be a compound of:
    • a verb relevant to the property (e.g., hasAge, isSubjectGroup)
    • the range of the property, (e.g.,hasDiagnosis points to a Diagnosis object)

What this might look like in semantic triples:

<Subject> <nb:hasDiagnosis> <snomed:1234>
<snomed:1234> <rdf:type> <nb:Diagnosis>

Classes or resources (graph "nodes")

  • Names should adhere to PascalCase (each word capitalized)
  • Where possible, simplify to a single word (e.g., Diagnosis, Dataset, Sex)

Note

Generally, we own the terms for properties and classes (e.g., Diagnosis, Assessment) but not the resources representing instances of classes such as specific diagnosis, sex, or assessment values (these are reused from existing vocabularies).

In cases where we reuse a term for a class that comes from an existing controlled vocabulary, and that vocabulary follows a different naming convention (e.g., all lowercase), we should follow the existing naming convention.

Currently used namespaces

Prefix IRI Types of terms
nb http://neurobagel.org/vocab/ Neurobagel-"owned" properties and classes
nbg http://neurobagel.org/graph/ Neurobagel graph databases
snomed http://purl.bioontology.org/ontology/SNOMEDCT/ diagnosis and sex values
ncit http://ncicb.nci.nih.gov/xml/owl/EVS/Thesaurus.owl# group designation (e.g., healthy control)
nidm http://purl.org/nidash/nidm# imaging modalities
cogatlas https://www.cognitiveatlas.org/task/id/ cognitive assessments and tasks

What if an nb term already exists in another controlled vocabulary?

If there is an equivalent controlled term to one we are defining in a different namespace, we document this and express their equivalence using owl:sameAs.

Example:
If our term is nb:Subject and nidm:Subject is conceptually equivalent:

<nb:12345> a <nb:Subject>
<nb:Subject> a <rdfs:Resource>;
    <owl:sameAs> <nidm:Subject>

Other general guidelines

  • Each property (edge) should use a single namespace for the resources it corresponds to
  • Where possible, hardcode or refer to identifiers and not human-readable labels