adiwg-json_schemas 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +18 -0
  3. data/.travis.yml +9 -0
  4. data/CREDITS +3 -0
  5. data/Gemfile +4 -0
  6. data/LICENSE +24 -0
  7. data/README.md +36 -0
  8. data/Rakefile +12 -0
  9. data/adiwg-json_schemas.gemspec +24 -0
  10. data/examples/adiwg_project_example_1.json +847 -0
  11. data/examples/citation.json +60 -0
  12. data/examples/contact.json +165 -0
  13. data/examples/contactRef.json +15 -0
  14. data/examples/dataQuality.json +132 -0
  15. data/examples/data_example.json +371 -0
  16. data/examples/date.json +19 -0
  17. data/examples/distributor.json +53 -0
  18. data/examples/extent_linestring.json +288 -0
  19. data/examples/extent_point.json +200 -0
  20. data/examples/extent_polygon.json +353 -0
  21. data/examples/full_example.json +1629 -0
  22. data/examples/geojson.json +253 -0
  23. data/examples/graphicOverview.json +23 -0
  24. data/examples/hierarchyLevel.json +90 -0
  25. data/examples/keywords.json +68 -0
  26. data/examples/lcc_project_example.json +245 -0
  27. data/examples/maintInfo.json +22 -0
  28. data/examples/onlineResource.json +12 -0
  29. data/examples/resolution.json +9 -0
  30. data/examples/resourceConstraints.json +25 -0
  31. data/examples/resourceInfo.json +1287 -0
  32. data/examples/resourceMaintenance.json +10 -0
  33. data/examples/taxonomy.json +98 -0
  34. data/examples/uri.json +7 -0
  35. data/examples/usage.json +23 -0
  36. data/lib/adiwg/json_schemas/utils.rb +20 -0
  37. data/lib/adiwg/json_schemas/version.rb +6 -0
  38. data/lib/adiwg/json_schemas.rb +7 -0
  39. data/lib/adiwg-json_schemas.rb +1 -0
  40. data/schema/schema/citation.json +77 -0
  41. data/schema/schema/contact.json +175 -0
  42. data/schema/schema/dataQuality.json +82 -0
  43. data/schema/schema/distributor.json +89 -0
  44. data/schema/schema/extent.json +118 -0
  45. data/schema/schema/geojson/bbox.json +10 -0
  46. data/schema/schema/geojson/crs.json +53 -0
  47. data/schema/schema/geojson/geojson.json +131 -0
  48. data/schema/schema/geojson/geometry.json +123 -0
  49. data/schema/schema/graphicOverview.json +22 -0
  50. data/schema/schema/keyword.json +37 -0
  51. data/schema/schema/maintInfo.json +26 -0
  52. data/schema/schema/metadata.json +88 -0
  53. data/schema/schema/onlineResource.json +28 -0
  54. data/schema/schema/resolution.json +29 -0
  55. data/schema/schema/resourceConstraint.json +65 -0
  56. data/schema/schema/resourceInfo.json +151 -0
  57. data/schema/schema/taxonomy.json +61 -0
  58. data/schema/schema/usage.json +23 -0
  59. data/schema/schema.json +42 -0
  60. data/templates/adiwg_metadata_template.json +585 -0
  61. data/test/tc_schemas.rb +133 -0
  62. data/test/tc_utils.rb +26 -0
  63. metadata +150 -0
@@ -0,0 +1,118 @@
1
+ {
2
+ "id": "extent.json#",
3
+ "$schema": "http://json-schema.org/draft-04/schema#",
4
+ "description": "schema for extent",
5
+ "type": "object",
6
+ "additionalProperties": true,
7
+ "properties": {
8
+ "description": {
9
+ "type": "string"
10
+ },
11
+ "geographicElement": {
12
+ "type": "array",
13
+ "items": {
14
+ "properties": {
15
+ "type": {
16
+ "enum": ["Feature", "FeatureCollection"]
17
+ }
18
+ },
19
+ "oneOf": [
20
+ {
21
+ "$ref": "./geojson/geojson.json#"
22
+ }
23
+ ]
24
+ }
25
+ },
26
+ "verticalElement": {
27
+ "type": "array",
28
+ "items": {
29
+ "$ref": "#definitions/verticalExtent"
30
+ }
31
+ },
32
+ "temporalElement": {
33
+
34
+ "$ref": "#definitions/temporalElement"
35
+ }
36
+ },
37
+ "definitions": {
38
+ "timeInstant": {
39
+ "type": "object",
40
+ "required": ["timePosition"],
41
+ "additionalProperties": false,
42
+ "properties": {
43
+ "id": {
44
+ "type": "string"
45
+ },
46
+ "description": {
47
+ "type": "string"
48
+ },
49
+ "timePosition": {
50
+ "$ref": "../schema.json#definitions/date"
51
+ }
52
+ }
53
+ },
54
+ "timePeriod": {
55
+ "type": "object",
56
+ "required": ["beginPosition", "endPosition"],
57
+ "additionalProperties": false,
58
+ "properties": {
59
+ "id": {
60
+ "type": "string"
61
+ },
62
+ "description": {
63
+ "type": "string"
64
+ },
65
+ "beginPosition": {
66
+ "$ref": "../schema.json#definitions/date"
67
+ },
68
+ "endPosition": {
69
+ "$ref": "../schema.json#definitions/date"
70
+ }
71
+ }
72
+ },
73
+ "temporalElement": {
74
+ "type": "object",
75
+ "additionalProperties": false,
76
+ "minProperties": 1,
77
+ "properties": {
78
+ "timeInstant": {
79
+ "type": "array",
80
+ "items": {
81
+ "$ref": "#definitions/timeInstant"
82
+ }
83
+ },
84
+ "timePeriod": {
85
+ "type": "array",
86
+ "items": {
87
+ "$ref": "#definitions/timePeriod"
88
+ }
89
+ },
90
+ "date": {
91
+ "type": "array",
92
+ "items": {
93
+ "$ref": "../schema.json#definitions/date"
94
+ }
95
+ }
96
+ }
97
+ },
98
+ "verticalExtent": {
99
+ "type": "object",
100
+ "additionalProperties": false,
101
+ "required": ["minimumValue", "maximumValue", "verticalCRSTitle", "verticalCRSLink"],
102
+ "properties": {
103
+ "minimumValue": {
104
+ "type": "number"
105
+ },
106
+ "maximumValue": {
107
+ "type": "number"
108
+ },
109
+ "verticalCRSTitle": {
110
+ "type": "string"
111
+ },
112
+ "verticalCRSLink": {
113
+ "type": "string"
114
+ }
115
+ }
116
+ }
117
+ }
118
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-04/schema#",
3
+ "id": "bbox.json#",
4
+ "description": "A bounding box as defined by GeoJSON, minimum of 4 elements",
5
+ "type": "array",
6
+ "minItems": 4,
7
+ "items": {
8
+ "type": "number"
9
+ }
10
+ }
@@ -0,0 +1,53 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-04/schema#",
3
+ "id": "crs.json#",
4
+ "title": "crs",
5
+ "description": "a Coordinate Reference System object",
6
+ "type": [ "object", "null" ],
7
+ "required": [ "type", "properties" ],
8
+ "properties": {
9
+ "type": { "type": "string" },
10
+ "properties": { "type": "object" }
11
+ },
12
+ "additionalProperties": false,
13
+ "oneOf": [
14
+ { "$ref": "#/definitions/namedCrs" },
15
+ { "$ref": "#/definitions/linkedCrs" }
16
+ ],
17
+ "definitions": {
18
+ "namedCrs": {
19
+ "properties": {
20
+ "type": { "enum": [ "name" ] },
21
+ "properties": {
22
+ "required": [ "name" ],
23
+ "additionalProperties": false,
24
+ "properties": {
25
+ "name": {
26
+ "type": "string",
27
+ "FIXME": "semantic validation necessary"
28
+ }
29
+ }
30
+ }
31
+ }
32
+ },
33
+ "linkedObject": {
34
+ "type": "object",
35
+ "required": [ "href" ],
36
+ "properties": {
37
+ "href": {
38
+ "$ref": "../../schema.json#definitions/url"
39
+ },
40
+ "type": {
41
+ "type": "string",
42
+ "description": "Suggested values: proj4, ogjwkt, esriwkt"
43
+ }
44
+ }
45
+ },
46
+ "linkedCrs": {
47
+ "properties": {
48
+ "type": { "enum": [ "link" ] },
49
+ "properties": { "$ref": "#/definitions/linkedObject" }
50
+ }
51
+ }
52
+ }
53
+ }
@@ -0,0 +1,131 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-04/schema#",
3
+ "id": "geojson.json#",
4
+ "title": "Geo JSON object",
5
+ "description": "Schema for a Geo JSON object",
6
+ "type": "object",
7
+ "required": ["type"],
8
+ "properties": {
9
+ "crs": {
10
+ "$ref": "crs.json#"
11
+ },
12
+ "bbox": {
13
+ "$ref": "bbox.json#"
14
+ }
15
+ },
16
+ "oneOf": [
17
+ {
18
+ "$ref": "geometry.json#"
19
+ }, {
20
+ "$ref": "#/definitions/geometryCollection"
21
+ }, {
22
+ "$ref": "#/definitions/feature"
23
+ }, {
24
+ "$ref": "#/definitions/featureCollection"
25
+ }
26
+ ],
27
+ "definitions": {
28
+ "geometryCollection": {
29
+ "title": "GeometryCollection",
30
+ "description": "A collection of geometry objects",
31
+ "required": ["geometries"],
32
+ "properties": {
33
+ "type": {
34
+ "enum": ["GeometryCollection"]
35
+ },
36
+ "geometries": {
37
+ "type": "array",
38
+ "items": {
39
+ "$ref": "geometry.json#"
40
+ }
41
+ }
42
+ }
43
+ },
44
+ "feature": {
45
+ "title": "Feature",
46
+ "description": "A Geo JSON feature object",
47
+ "required": ["geometry", "properties"],
48
+ "properties": {
49
+ "type": {
50
+ "enum": ["Feature"]
51
+ },
52
+ "geometry": {
53
+ "oneOf": [
54
+ {
55
+ "type": "null"
56
+ }, {
57
+ "$ref": "geometry.json#"
58
+ }
59
+ ]
60
+ },
61
+ "properties": {
62
+ "$ref": "#/definitions/featureProperties"
63
+ },
64
+ "id": {
65
+ "type": ["string", "number"]
66
+ }
67
+ }
68
+ },
69
+ "featureCollection": {
70
+ "title": "FeatureCollection",
71
+ "description": "A Geo JSON feature collection",
72
+ "required": ["features"],
73
+ "properties": {
74
+ "type": {
75
+ "enum": ["FeatureCollection"]
76
+ },
77
+ "properties": {
78
+ "$ref": "#/definitions/featureProperties"
79
+ },
80
+ "features": {
81
+ "type": "array",
82
+ "items": {
83
+ "$ref": "#/definitions/feature"
84
+ }
85
+ }
86
+ }
87
+ },
88
+ "featureProperties": {
89
+ "title": "FeatureProperties",
90
+ "description": "Properties of a feature or collection.",
91
+ "oneOf": [
92
+ {
93
+ "type": "null"
94
+ }, {
95
+ "type": "object",
96
+ "properties": {
97
+ "includesData": {
98
+ "type": ["boolean", "null"]
99
+ },
100
+ "temporalElement": {
101
+
102
+ "$ref": "../extent.json#definitions/temporalElement"
103
+ },
104
+ "verticalElement": {
105
+ "type": "array",
106
+ "items": {
107
+ "$ref": "../extent.json#definitions/verticalExtent"
108
+ }
109
+ },
110
+ "featureName": {
111
+ "type": "string"
112
+ },
113
+ "featureScope": {
114
+ "type": "string"
115
+ },
116
+ "featureAcquisitionMethod": {
117
+ "type": "string"
118
+ },
119
+ "assignedId": {
120
+ "type": "array",
121
+ "items": {
122
+ "$ref": "../contact.json#/definitions/contactRef"
123
+ }
124
+ }
125
+ }
126
+ }
127
+ ]
128
+ }
129
+ }
130
+ }
131
+
@@ -0,0 +1,123 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-04/schema#",
3
+ "id": "geometry.json#",
4
+ "title": "geometry",
5
+ "description": "One geometry as defined by GeoJSON",
6
+ "type": "object",
7
+ "required": ["type", "coordinates"],
8
+ "oneOf": [
9
+ {
10
+ "title": "Point",
11
+ "properties": {
12
+ "type": {
13
+ "enum": ["Point"]
14
+ },
15
+ "coordinates": {
16
+ "$ref": "#/definitions/position"
17
+ }
18
+ }
19
+ }, {
20
+ "title": "MultiPoint",
21
+ "properties": {
22
+ "type": {
23
+ "enum": ["MultiPoint"]
24
+ },
25
+ "coordinates": {
26
+ "$ref": "#/definitions/positionArray"
27
+ }
28
+ }
29
+ }, {
30
+ "title": "LineString",
31
+ "properties": {
32
+ "type": {
33
+ "enum": ["LineString"]
34
+ },
35
+ "coordinates": {
36
+ "$ref": "#/definitions/lineString"
37
+ }
38
+ }
39
+ }, {
40
+ "title": "MultiLineString",
41
+ "properties": {
42
+ "type": {
43
+ "enum": ["MultiLineString"]
44
+ },
45
+ "coordinates": {
46
+ "type": "array",
47
+ "items": {
48
+ "$ref": "#/definitions/lineString"
49
+ }
50
+ }
51
+ }
52
+ }, {
53
+ "title": "Polygon",
54
+ "properties": {
55
+ "type": {
56
+ "enum": ["Polygon"]
57
+ },
58
+ "coordinates": {
59
+ "$ref": "#/definitions/polygon"
60
+ }
61
+ }
62
+ }, {
63
+ "title": "MultiPolygon",
64
+ "properties": {
65
+ "type": {
66
+ "enum": ["MultiPolygon"]
67
+ },
68
+ "coordinates": {
69
+ "type": "array",
70
+ "items": {
71
+ "$ref": "#/definitions/polygon"
72
+ }
73
+ }
74
+ }
75
+ }
76
+ ],
77
+ "definitions": {
78
+ "position": {
79
+ "description": "A single position",
80
+ "type": "array",
81
+ "minItems": 2,
82
+ "items": {
83
+ "type": "number"
84
+ }
85
+ ,
86
+ "additionalItems": false
87
+ },
88
+ "positionArray": {
89
+ "description": "An array of positions",
90
+ "type": "array",
91
+ "items": {
92
+ "$ref": "#/definitions/position"
93
+ }
94
+ },
95
+ "lineString": {
96
+ "description": "An array of two or more positions",
97
+ "allOf": [
98
+ {
99
+ "$ref": "#/definitions/positionArray"
100
+ }, {
101
+ "minItems": 2
102
+ }
103
+ ]
104
+ },
105
+ "linearRing": {
106
+ "description": "An array of four positions where the first equals the last",
107
+ "allOf": [
108
+ {
109
+ "$ref": "#/definitions/positionArray"
110
+ }, {
111
+ "minItems": 4
112
+ }
113
+ ]
114
+ },
115
+ "polygon": {
116
+ "description": "An array of linear rings",
117
+ "type": "array",
118
+ "items": {
119
+ "$ref": "#/definitions/linearRing"
120
+ }
121
+ }
122
+ }
123
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "id": "graphicOverview.json#",
3
+ "$schema": "http://json-schema.org/draft-04/schema#",
4
+ "description": "schema for browse graphic",
5
+ "type": "object",
6
+ "required": ["fileName"],
7
+ "additionalProperties": true,
8
+ "properties": {
9
+ "fileName": {
10
+ "type": "string"
11
+ },
12
+ "fileDescription": {
13
+ "type": "string"
14
+ },
15
+ "fileType": {
16
+ "type": "string"
17
+ },
18
+ "fileLink": {
19
+ "$ref": "../schema.json#definitions/url"
20
+ }
21
+ }
22
+ }
@@ -0,0 +1,37 @@
1
+ {
2
+ "id": "keyword.json#",
3
+ "$schema": "http://json-schema.org/draft-04/schema#",
4
+ "description": "schema for a keyword entry",
5
+ "type": "object",
6
+ "required": ["keyword"],
7
+ "additionalProperties": false,
8
+ "properties": {
9
+ "keyword": {
10
+ "type": "array",
11
+ "items": {
12
+ "type": "string"
13
+ },
14
+ "uniqueItems": true
15
+ },
16
+ "keywordType": {
17
+ "type": "string"
18
+ },
19
+ "thesaurus": {
20
+ "$ref": "#/definitions/thesaurus"
21
+ }
22
+ },
23
+ "definitions": {
24
+ "thesaurus": {
25
+ "type": "object",
26
+ "additionalProperties": false,
27
+ "properties": {
28
+ "thesaurusLink": {
29
+ "$ref": "../schema.json#definitions/url"
30
+ },
31
+ "citation": {
32
+ "$ref": "citation.json#definitions/citationBase"
33
+ }
34
+ }
35
+ }
36
+ }
37
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "id": "maintInfo.json#",
3
+ "$schema": "http://json-schema.org/draft-04/schema#",
4
+ "description": "schema for maintenance information",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "properties": {
8
+ "maintenanceFrequency": {
9
+ "type": "string"
10
+ },
11
+ "maintenanceNote": {
12
+ "type": "array",
13
+ "items": {
14
+ "type": "string"
15
+ }
16
+ }
17
+ ,
18
+ "maintenanceContact": {
19
+ "type": "array",
20
+ "uniqueItems": true,
21
+ "items": {
22
+ "$ref": "contact.json#/definitions/contactRef"
23
+ }
24
+ }
25
+ }
26
+ }
@@ -0,0 +1,88 @@
1
+ {
2
+ "id": "metadata.json#",
3
+ "$schema": "http://json-schema.org/draft-04/schema#",
4
+ "description": "schema for metadata section",
5
+ "type": "object",
6
+ "required": ["resourceInfo"],
7
+ "additionalProperties": false,
8
+ "properties": {
9
+ "metadataInfo": {
10
+ "required": ["metadataContact", "metadataCreationDate"],
11
+ "additionalProperties": false,
12
+ "properties": {
13
+ "metadataIdentifier": {
14
+ "type": "string"
15
+ },
16
+ "parentMetadataIdentifier": {
17
+ "type": "string"
18
+ },
19
+ "metadataScope": {
20
+ "type": "array",
21
+ "items": {
22
+ "type": "string"
23
+ },
24
+ "uniqueItems": true
25
+ },
26
+ "metadataContact": {
27
+ "type": "array",
28
+ "minItems": 1,
29
+ "items": {
30
+ "$ref": "contact.json#/definitions/contactRef"
31
+ }
32
+ },
33
+ "metadataCharacterSet": {
34
+ "type": "string"
35
+ },
36
+ "metadataCreationDate": {
37
+ "$ref": "../schema.json#definitions/date"
38
+ },
39
+ "metadataLastUpdate": {
40
+ "$ref": "../schema.json#definitions/date"
41
+ },
42
+ "metadataUri": {
43
+ "$ref": "../schema.json#definitions/uri"
44
+ },
45
+ "metadataStatus": {
46
+ "type": "string"
47
+ },
48
+ "metadataMaintenance": {
49
+ "$ref": "./maintInfo.json#"
50
+ }
51
+ }
52
+ },
53
+ "resourceInfo": {
54
+ "$ref": "./resourceInfo.json#"
55
+ },
56
+ "distributionInfo": {
57
+ "type": "array",
58
+ "minItems": 1,
59
+ "items": {
60
+ "$ref": "./distributor.json#"
61
+ }
62
+ },
63
+ "associatedResource": {
64
+ "additionalProperties": false,
65
+ "type": "array",
66
+ "minItems": 1,
67
+ "items": {
68
+ "associationType": {
69
+ "type": "string"
70
+ },
71
+ "resourceType": {
72
+ "type": "string"
73
+ },
74
+ "resourceCitation": {
75
+ "$ref": "./citation.json#"
76
+ }
77
+ }
78
+ },
79
+ "additionalDocumentation": {
80
+ "additionalProperties": false,
81
+ "type": "array",
82
+ "minItems": 1,
83
+ "items": {
84
+ "$ref": "./citation.json#"
85
+ }
86
+ }
87
+ }
88
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "id": "onlineResource.json#",
3
+ "$schema": "http://json-schema.org/draft-04/schema#",
4
+ "description": "schema for online resource",
5
+ "type": "object",
6
+ "required": ["uri"],
7
+ "additionalProperties": false,
8
+ "properties": {
9
+ "uri": {
10
+ "$ref": "../schema.json#definitions/uri"
11
+ },
12
+ "name": {
13
+ "type": "string"
14
+ },
15
+ "protocol": {
16
+ "type": "string"
17
+ },
18
+ "doi": {
19
+ "type": "string"
20
+ },
21
+ "description": {
22
+ "type": "string"
23
+ },
24
+ "function": {
25
+ "type": "string"
26
+ }
27
+ }
28
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "id": "resolution.json#",
3
+ "$schema": "http://json-schema.org/draft-04/schema#",
4
+ "description": "schema for spatial resolution",
5
+ "anyOf": [
6
+ {
7
+ "type": "object",
8
+ "required": ["equivalentScale"],
9
+ "additionalProperties": true,
10
+ "properties": {
11
+ "equivalentScale": {
12
+ "type": "number"
13
+ }
14
+ }
15
+ }, {
16
+ "type": "object",
17
+ "required": ["distance"],
18
+ "additionalProperties": true,
19
+ "properties": {
20
+ "distance": {
21
+ "type": "number"
22
+ },
23
+ "uom": {
24
+ "type": "string"
25
+ }
26
+ }
27
+ }
28
+ ]
29
+ }