-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathschema.json
156 lines (156 loc) · 4.91 KB
/
schema.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://raw.githubusercontent.com/DACCS-Climate/nexgddp-stac-extension/v1.0.0/json-schema/schema.json#",
"title": "NEX GDDP data STAC Extension",
"description": "STAC Extension for NEX GDDP data stored on the Marble Platform.",
"oneOf": [
{
"$comment": "This is the schema for STAC Items. Remove this object if this extension only applies to Collections.",
"allOf": [
{
"$ref": "#/definitions/stac_extensions"
},
{
"type": "object",
"required": [
"type",
"properties",
"assets"
],
"properties": {
"type": {
"const": "Feature"
},
"properties": {
"allOf": [
{
"$comment": "Require fields here for Item Properties.",
"required": [
"nexgddp:license",
"nexgddp:version",
"nexgddp:calendar",
"nexgddp:frequency",
"nexgddp:source_id",
"nexgddp:Conventions",
"nexgddp:institution",
"nexgddp:variable_id",
"nexgddp:cmip_version",
"nexgddp:experiment_id",
"nexgddp:variant_label",
"nexgddp:institution_id"
]
},
{
"$ref": "#/definitions/fields"
}
]
},
"assets": {
"$comment": "This validates the fields in Item Assets, but does not require them.",
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/fields"
}
}
}
}
]
}
],
"definitions": {
"stac_extensions": {
"type": "object",
"required": [
"stac_extensions"
],
"properties": {
"stac_extensions": {
"type": "array",
"contains": {
"const": "https://raw.githubusercontent.com/DACCS-Climate/nexgddp-stac-extension/v1.0.0/json-schema/schema.json"
}
}
}
},
"require_any_field": {
"$comment": "Please list all fields here so that we can force the existence of one of them in other parts of the schemas.",
"anyOf": [
{"required": ["nexgddp:license"]},
{"required": ["nexgddp:version"]},
{"required": ["nexgddp:calendar"]},
{"required": ["nexgddp:frequency"]},
{"required": ["nexgddp:source_id"]},
{"required": ["nexgddp:Conventions"]},
{"required": ["nexgddp:institution"]},
{"required": ["nexgddp:variable_id"]},
{"required": ["nexgddp:cmip_version"]},
{"required": ["nexgddp:experiment_id"]},
{"required": ["nexgddp:variant_label"]},
{"required": ["nexgddp:institution_id"]}
]
},
"fields": {
"type": "object",
"properties": {
"nexgddp:license": {
"title": "Data license",
"type": "string"
},
"nexgddp:version": {
"title": "Data version",
"type": "string"
},
"nexgddp:calendar": {
"title": "Calendar of the data",
"type": "string",
"enum": ["proleptic_gregorian", "365_day", "360_day", "standard"]
},
"nexgddp:frequency": {
"title": "Temporal frequency of the data",
"type": "string",
"enum": ["day"]
},
"nexgddp:source_id": {
"title": "Source ID of the CMIP6 model",
"type": "string"
},
"nexgddp:Conventions": {
"title": "Data CF convention",
"type": "string"
},
"nexgddp:institution": {
"title": "Name of the institution which produced the CMIP6 model",
"type": "string"
},
"nexgddp:variable_id": {
"title": "Variable ID of the CMIP6 variable",
"type": "string"
},
"nexgddp:cmip_version": {
"title": "Generation of the CMIP project",
"type": "string",
"enum": ["CMIP5", "CMIP6"]
},
"nexgddp:experiment_id": {
"title": "Experiment ID of the CMIP6 experiment",
"type": "string",
"enum": ["historical", "ssp126", "ssp245", "ssp370", "ssp585"]
},
"nexgddp:variant_label": {
"title": "String representation of the experiment variant",
"type": "string"
},
"nexgddp:institution_id": {
"title": "ID of the institution that created this model",
"type": "string"
}
},
"patternProperties": {
"^(?!nexgddp:)": {
"$comment": "Above, change `template` to the prefix of this extension"
}
},
"additionalProperties": false
}
}
}