Skip to content

clearly define the namespaces defined in LinkML schemas #18

@VladimirAlexiev

Description

@VladimirAlexiev

https://github.com/3lbits/NoCIMExtensions/tree/main/schemas/yaml: these schemas don't clearly define the namespaces of terms that they use.

Consider https://github.com/3lbits/NoCIMExtensions/blob/main/schemas/yaml/aviation_obstacle.linkml.yaml:
It defines this

prefixes:
  this: https://ap-no.cim4.eu/AviationObstacle/1.0#
default_prefix: this

So terms without explicit URL (class_uri, slot_uri, enum_uri) will get a URL using this prefix.
As far as I see, this option is not used in the file: then remove this for the avoidance of doubt.

Now look at

AviationObstacleMarkingKind:
description: "The kind of aviation obstacle marking."
enum_uri: https://ap-no.cim4.eu/AviationObstacle/1.0#AviationObstacleMarkingKind
permissible_values:
colourMarking:
meaning: nc-no:AviationObstacleMarkingKind.colourMarking
description: "The aviation obstacle marking is colourMarking."

So you'll get different namespaces for the enum vs its values, which is an inconsistency:

  • enum: https://ap-no.cim4.eu/AviationObstacle/1.0#AviationObstacleMarkingKind
  • value: http://cim4.eu/ns/nc-no#AviationObstacleMarkingKind.colourMarking

Two more problems:

  • Some of the namespaces are versioned. This is a bad practice that leads to URL instability, don't use it
  • Some schemas introduce too many namespaces (eg AviationObstacle, WattApp).
    As you have no conflicts on local names of classes/props, please use only one namespace nc-no

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions