Skip to content

Compact constraints syntax

David Hassell edited this page Apr 5, 2016 · 5 revisions

Constraints in the compact notation

This document describes the compact constraint syntax. It does this by showing how the examples in the description of schema constraints are encoded in the compact notation.

The examples are fully described in the constraint wiki.

Regular Expression

'constraint' : [
     ('latitude','regex','[0-8]?[0-9]')
]
Compact syntax
'latitude': {'regex': '[0-8]?[0-9]'},

Closed Enumerations

'constraints':[
    ('property-name', 'enum-extensibil{'constant':ty', False)
]
Compact syntax
'property-name': {'enum-extensibilty': False},

Cardinality

'constraints':[
     ('property-name', 'cardinality', '0.0')
]

 'constraints':[
     ('property-name', 'cardinality', '1.N')
 ]
Conpact syntax
'property-name': {'cardinality': '0.0'},

'property-name': {'cardinality': '1.N'},

Multiple constraints

In the compact syntax, multiple constraints on the same property are handled by multiple dictionary keys:

'latitude': {'cardinality': '1.1',
             'regex': '[0-8]?[0-9]'},

Constant Value

'constraints':[
    ('name','constant', 'Cloud Physics')
]
Compact syntax
'name': {'constant': 'Cloud Physics'},

This constraint is a common case and has an equivalent, even more compact notation:

'name: 'Cloud Physics',

List of possible values

'constraints':[
    ('process','constant', ['cmip6.clouds','cmip6.radiation'])
]
Compact syntax
'process': {'constant': ['cmip6.clouds','cmip6.radiation']},

This constraint is a common case and has an equivalent, even more compact notation:

'process': ['cmip6.clouds','cmip6.radiation'],

Non-extensible list of possible values

'constraints':[
    ('process','constant', ['cmip6.clouds','cmip6.radiation'], 'extensibility', False)
]
Compact syntax
'process': {'constant': ['cmip6.clouds','cmip6.radiation'],
            'extensibility': False},