Both NamespacedElement.key and Metamodel.key MUST adhere to LIonWeb id format (#31).
NamespacedElement.key MUST be unique within its metamodel.
Metamodel.key SHOULD be globally unique, and MUST be unique within an id-space (#31).
For approximate global uniqueness, we SHOULD adopt Java's package naming scheme, based on domain names.
As we don't allow dots (.) in ids, we SHOULD use dashes (-) instead.
Dashes are preferable to underscores (_) because of better Java compatibility: In Java package names, underscores are allowed, but dashes are not. The same applies to most other programming languages, as they need to separate names from subtract expressions. Thus, we can easily establish similar names for metamodels and packages by substituting dashes with dots.
Example: Given domain subdomain.example.com, metamodel keys might be com-example-subdomain-myDepartment-group123-entity_model (with package name com.example.subdomain.mydepartment.group123.entity_model) and com-example-subdomain-great_ultimate_universal_unified_dataModel (with package name com.example.subdomain.great_ultimate_universal_unified_datamodel).
Both
NamespacedElement.keyandMetamodel.keyMUST adhere to LIonWeb id format (#31).NamespacedElement.keyMUST be unique within its metamodel.Metamodel.keySHOULD be globally unique, and MUST be unique within an id-space (#31).For approximate global uniqueness, we SHOULD adopt Java's package naming scheme, based on domain names.
As we don't allow dots (
.) in ids, we SHOULD use dashes (-) instead.Dashes are preferable to underscores (
_) because of better Java compatibility: In Java package names, underscores are allowed, but dashes are not. The same applies to most other programming languages, as they need to separate names from subtract expressions. Thus, we can easily establish similar names for metamodels and packages by substituting dashes with dots.Example: Given domain
subdomain.example.com, metamodel keys might becom-example-subdomain-myDepartment-group123-entity_model(with package namecom.example.subdomain.mydepartment.group123.entity_model) andcom-example-subdomain-great_ultimate_universal_unified_dataModel(with package namecom.example.subdomain.great_ultimate_universal_unified_datamodel).