adiwg-mdjson_schemas 1.0.0rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +18 -0
  3. data/.travis.yml +7 -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 +25 -0
  10. data/examples/additionalDocumentation.json +61 -0
  11. data/examples/address.json +10 -0
  12. data/examples/associatedResource.json +119 -0
  13. data/examples/citation.json +128 -0
  14. data/examples/contact.json +205 -0
  15. data/examples/contactRef.json +12 -0
  16. data/examples/dataDictionary.json +547 -0
  17. data/examples/dataQuality.json +272 -0
  18. data/examples/date.json +19 -0
  19. data/examples/distributor.json +113 -0
  20. data/examples/extent_linestring.json +288 -0
  21. data/examples/extent_point.json +246 -0
  22. data/examples/extent_polygon.json +353 -0
  23. data/examples/format.json +14 -0
  24. data/examples/full_example.json +2844 -0
  25. data/examples/full_example2.json +2325 -0
  26. data/examples/geojson.json +446 -0
  27. data/examples/graphicOverview.json +28 -0
  28. data/examples/hierarchyLevel.json +90 -0
  29. data/examples/keywords.json +144 -0
  30. data/examples/lcc_project_example.json +326 -0
  31. data/examples/legalConstraints.json +17 -0
  32. data/examples/maintInfo.json +34 -0
  33. data/examples/metadataInfo.json +103 -0
  34. data/examples/minimum_example.json +35 -0
  35. data/examples/onlineResource.json +17 -0
  36. data/examples/resolution.json +9 -0
  37. data/examples/resourceInfo.json +1264 -0
  38. data/examples/resourceMaintenance.json +10 -0
  39. data/examples/securityConstraints.json +13 -0
  40. data/examples/spatialRef.json +14 -0
  41. data/examples/taxonomy.json +197 -0
  42. data/examples/temporalElement.json +29 -0
  43. data/examples/uri.json +16 -0
  44. data/examples/usage.json +35 -0
  45. data/examples/verticalExtent.json +18 -0
  46. data/lib/adiwg-mdjson_schemas.rb +1 -0
  47. data/lib/adiwg/mdjson_schemas.rb +7 -0
  48. data/lib/adiwg/mdjson_schemas/utils.rb +20 -0
  49. data/lib/adiwg/mdjson_schemas/validator.rb +42 -0
  50. data/lib/adiwg/mdjson_schemas/version.rb +6 -0
  51. data/schema/schema.json +64 -0
  52. data/schema/schema/citation.json +186 -0
  53. data/schema/schema/contact.json +255 -0
  54. data/schema/schema/dataDictionary.json +209 -0
  55. data/schema/schema/dataQuality.json +159 -0
  56. data/schema/schema/distributor.json +171 -0
  57. data/schema/schema/extent.json +214 -0
  58. data/schema/schema/geojson/bbox.json +14 -0
  59. data/schema/schema/geojson/crs.json +99 -0
  60. data/schema/schema/geojson/geojson.json +194 -0
  61. data/schema/schema/geojson/geometry.json +203 -0
  62. data/schema/schema/graphicOverview.json +42 -0
  63. data/schema/schema/keyword.json +39 -0
  64. data/schema/schema/maintInfo.json +43 -0
  65. data/schema/schema/metadata.json +173 -0
  66. data/schema/schema/onlineResource.json +42 -0
  67. data/schema/schema/resolution.json +51 -0
  68. data/schema/schema/resourceConstraint.json +108 -0
  69. data/schema/schema/resourceInfo.json +305 -0
  70. data/schema/schema/taxonomy.json +122 -0
  71. data/schema/schema/usage.json +39 -0
  72. data/templates/mdJson_template.json +1065 -0
  73. data/test/draft-04.json +189 -0
  74. data/test/tc_schemas.rb +210 -0
  75. data/test/tc_utils.rb +27 -0
  76. metadata +178 -0
@@ -0,0 +1,10 @@
1
+ [
2
+ {
3
+ "maintenanceFrequency": "daily",
4
+ "maintenanceNote": ["model is updated each morning"]
5
+ }, {
6
+ "maintenanceFrequency": "asNeeded"
7
+ }, {
8
+ "maintenanceNote": ["Test of missing frequency code."]
9
+ }
10
+ ]
@@ -0,0 +1,13 @@
1
+ [
2
+ {
3
+ "classification": "unclassified",
4
+ "userNote": "security clearance not required",
5
+ "classificationSystem": "none",
6
+ "handlingDescription": "this is how to handle things..."
7
+ }, {
8
+ "classification": "intellectualPropertyRights"
9
+ }, {
10
+ "classification": "secret",
11
+ "userNote": "shhhhh"
12
+ }
13
+ ]
@@ -0,0 +1,14 @@
1
+ {
2
+ "name":[
3
+ "Alaska State Plane Zone 4",
4
+ "UTM Zone 9"
5
+ ],
6
+ "epsgNumber":[
7
+ 102634,
8
+ 32609
9
+ ],
10
+ "wkt":[
11
+ "PROJCS[\"NAD_1983_StatePlane_Alaska_4_FIPS_5004_Feet\",GEOGCS[\"GCS_North_American_1983\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS_1980\",6378137,298.257222101]],PRIMEM[\"Greenwich\",0],UNIT[\"Degree\",0.017453292519943295]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"False_Easting\",1640416.666666667],PARAMETER[\"False_Northing\",0],PARAMETER[\"Central_Meridian\",-150],PARAMETER[\"Scale_Factor\",0.9999],PARAMETER[\"Latitude_Of_Origin\",54],UNIT[\"Foot_US\",0.30480060960121924],AUTHORITY[\"EPSG\",\"102634\"]]",
12
+ "PROJCS[\"WGS 84 / UTM zone 9N\",GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\",-129],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_northing\",0],AUTHORITY[\"EPSG\",\"32609\"],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]]"
13
+ ]
14
+ }
@@ -0,0 +1,197 @@
1
+ [
2
+ {
3
+ "classificationSystem": [
4
+ {
5
+ "title": "title1",
6
+ "date": [
7
+ {
8
+ "date": "1111-11-11",
9
+ "dateType": "dateType11"
10
+ }, {
11
+ "date": "1112-11-11",
12
+ "dateType": "dateType12"
13
+ }
14
+ ],
15
+ "edition": "edition",
16
+ "responsibleParty": [
17
+ {
18
+ "contactId": "contactId11",
19
+ "role": "role11"
20
+ }, {
21
+ "contactId": "contactId12",
22
+ "role": "role12"
23
+ }
24
+ ],
25
+ "presentationForm": ["presentationForm11", "presentationForm12"],
26
+ "identifier": [
27
+ {
28
+ "identifier": "identifier111",
29
+ "type": "type111",
30
+ "authority": {
31
+ "title": "title111",
32
+ "date": [
33
+ {
34
+ "date": "1111-11-11",
35
+ "dateType": "dateType111"
36
+ }
37
+ ],
38
+ "responsibleParty": [
39
+ {
40
+ "contactId": "contactId111",
41
+ "role": "role111"
42
+ }
43
+ ],
44
+ "onlineResource": [
45
+ {
46
+ "uri": "http://thisisanexample111.com",
47
+ "protocol": "protocol111",
48
+ "name": "name111",
49
+ "description": "description111",
50
+ "function": "function111"
51
+ }
52
+ ]
53
+ }
54
+ }
55
+ ],
56
+ "onlineResource": [
57
+ {
58
+ "uri": "http://thisisanexample11.com",
59
+ "protocol": "protocol11",
60
+ "name": "name11",
61
+ "description": "description11",
62
+ "function": "function11"
63
+ }, {
64
+ "uri": "http://thisisanexample12.com",
65
+ "protocol": "protocol12",
66
+ "name": "name12",
67
+ "description": "description12",
68
+ "function": "function12"
69
+ }
70
+ ]
71
+ }
72
+ ],
73
+ "taxonGeneralScope": "taxonGeneralScope1",
74
+ "observer": [
75
+ {
76
+ "contactId": "contactId11",
77
+ "role": "role11"
78
+ }, {
79
+ "contactId": "contactId12",
80
+ "role": "role12"
81
+ }
82
+ ],
83
+ "taxonomicProcedure": "taxonomicProcedure1",
84
+ "voucher": {
85
+ "specimen": "specimen1",
86
+ "repository": {
87
+ "contactId": "contactId1",
88
+ "role": "role1"
89
+ }
90
+ },
91
+ "taxonClass": [
92
+ {
93
+ "common": "common11",
94
+ "taxonRank": "taxonRank11",
95
+ "taxonValue": "taxonValue11"
96
+ }, {
97
+ "common": "common12",
98
+ "taxonRank": "taxonRank12",
99
+ "taxonValue": "taxonValue12"
100
+ }
101
+ ]
102
+ }, {
103
+ "classificationSystem": [
104
+ {
105
+ "title": "Otter Record Survey",
106
+ "date": [
107
+ {
108
+ "date": "2000",
109
+ "dateType": "publication"
110
+ }
111
+ ],
112
+ "responsibleParty": [
113
+ {
114
+ "contactId": "2",
115
+ "role": "publisher"
116
+ }
117
+ ]
118
+ }, {
119
+ "title": "Another Record Survey",
120
+ "date": [
121
+ {
122
+ "date": "2003",
123
+ "dateType": "publication"
124
+ }
125
+ ],
126
+ "responsibleParty": [
127
+ {
128
+ "contactId": "1",
129
+ "role": "publisher"
130
+ }
131
+ ]
132
+ }
133
+ ],
134
+ "taxonGeneralScope": "The otters observed were identified to the subspecies criterion and identified as southern sea otters.",
135
+ "observer": [
136
+ {
137
+ "contactId": "1",
138
+ "role": "principalInvestigator"
139
+ }, {
140
+ "contactId": "2",
141
+ "role": "pointOfContact"
142
+ }
143
+ ],
144
+ "taxonomicProcedure": "volunteers observed sea otters using binoculars in pairs",
145
+ "voucher": {
146
+ "specimen": "weathered skull found on beach",
147
+ "repository": {
148
+ "contactId": "2",
149
+ "role": "publisher"
150
+ }
151
+ },
152
+ "taxonClass": [
153
+ {
154
+ "taxonRank": "Kingdom",
155
+ "taxonValue": "Animalia"
156
+ }, {
157
+ "taxonRank": "Phylum",
158
+ "taxonValue": "Chordata"
159
+ }, {
160
+ "taxonRank": "Subphylum",
161
+ "taxonValue": "Vertebrata"
162
+ }, {
163
+ "taxonRank": "Class",
164
+ "taxonValue": "Mammalia"
165
+ }, {
166
+ "taxonRank": "Subclass",
167
+ "taxonValue": "Theria"
168
+ }, {
169
+ "taxonRank": "Infraclass",
170
+ "taxonValue": "Eutheria"
171
+ }, {
172
+ "taxonRank": "Order",
173
+ "taxonValue": "Carnivora"
174
+ }, {
175
+ "taxonRank": "Suborder",
176
+ "taxonValue": "Caniformia"
177
+ }, {
178
+ "taxonRank": "Family",
179
+ "taxonValue": "Mustilidae"
180
+ }, {
181
+ "taxonRank": "Subfamily",
182
+ "taxonValue": "Lutrinae"
183
+ }, {
184
+ "taxonRank": "Genus",
185
+ "taxonValue": "Enhydra"
186
+ }, {
187
+ "common": "Sea Otter",
188
+ "taxonRank": "Species",
189
+ "taxonValue": "Enhydra lutris"
190
+ }, {
191
+ "common": "Southern Sea Otter",
192
+ "taxonRank": "Subspecies",
193
+ "taxonValue": "Enhydra"
194
+ }
195
+ ]
196
+ }
197
+ ]
@@ -0,0 +1,29 @@
1
+ [
2
+ {
3
+ "date": ["1111-11-11", "1112-11-11"],
4
+ "timeInstant": [
5
+ {
6
+ "id": "id1",
7
+ "description": "description1",
8
+ "timePosition": "1111-11-11T11:11:11.1+11:11"
9
+ }, {
10
+ "id": "id2",
11
+ "description": "description2",
12
+ "timePosition": "1112-11-11T11:11:11.1+11:11"
13
+ }
14
+ ],
15
+ "timePeriod": [
16
+ {
17
+ "id": "id1",
18
+ "description": "description1",
19
+ "beginPosition": "1111-11-11T11:11:11.1+11:11",
20
+ "endPosition": "1111-12-11T11:11:11.1+11:11"
21
+ }, {
22
+ "id": "id2",
23
+ "description": "description2",
24
+ "beginPosition": "1112-11-11T11:11:11.1+11:11",
25
+ "endPosition": "1112-12-11T11:11:11.1+11:11"
26
+ }
27
+ ]
28
+ }
29
+ ]
@@ -0,0 +1,16 @@
1
+ [
2
+ "http://datypic.com",
3
+ "mailto:info@datypic.com",
4
+ "ftp://test.net/%C3%A9dition.html",
5
+ "http://datypic.com/prod.html#shirt",
6
+ "urn:example:org",
7
+ "ftp://ftp.is.co.za/rfc/rfc1808.txt",
8
+ "http://www.ietf.org/rfc/rfc2396.txt",
9
+ "ldap://[2001:db8::7]/c=GB?objectClass?one",
10
+ "mailto:John.Doe@example.com",
11
+ "news:comp.infosystems.www.servers.unix",
12
+ "tel:+1-816-555-1212",
13
+ "telnet://192.0.2.16:80/",
14
+ "urn:oasis:names:specification:docbook:dtd:xml:4.1.2",
15
+ "http://dx.doi.org/10.1000/182"
16
+ ]
@@ -0,0 +1,35 @@
1
+ [
2
+ {
3
+ "specificUsage": "specificUsage",
4
+ "userDeterminedLimitation": "userDeterminedLimitation",
5
+ "userContactInfo": [
6
+ {
7
+ "contactId": "contactId1",
8
+ "role": "role1"
9
+ }, {
10
+ "contactId": "contactId2",
11
+ "role": "role2"
12
+ }
13
+ ]
14
+ }, {
15
+ "specificUsage": "Developed for land use planning.",
16
+ "userDeterminedLimitation": "Not suitable for use for navigation.",
17
+ "userContactInfo": [
18
+ {
19
+ "contactId": "3",
20
+ "role": "publisher"
21
+ }, {
22
+ "contactId": "3",
23
+ "role": "author"
24
+ }
25
+ ]
26
+ }, {
27
+ "specificUsage": "Bathymetry datasets developed for modeling physical oceanographic conditions in the Barrow Straight.",
28
+ "userContactInfo": [
29
+ {
30
+ "contactId": "1",
31
+ "role": "custodian"
32
+ }
33
+ ]
34
+ }
35
+ ]
@@ -0,0 +1,18 @@
1
+ [
2
+ {
3
+ "minimumValue": 1,
4
+ "maximumValue": 1,
5
+ "verticalCRSTitle": "verticalCRSTitle",
6
+ "verticalCRSUri": "http://thisisanexample.com"
7
+ }, {
8
+ "minimumValue": 125,
9
+ "maximumValue": 222,
10
+ "verticalCRSTitle": "NAVD88 height (ftUS)",
11
+ "verticalCRSUri": "http://www.epsg-registry.org/export.htm?gml=urn:ogc:def:axis-name:EPSG::9904"
12
+ }, {
13
+ "minimumValue": 1500,
14
+ "maximumValue": 0,
15
+ "verticalCRSTitle": "NAVD88 depth",
16
+ "verticalCRSUri": "http://www.epsg-registry.org/export.htm?gml=urn:ogc:def:crs:EPSG::6357"
17
+ }
18
+ ]
@@ -0,0 +1 @@
1
+ require 'adiwg/mdjson_schemas.rb'
@@ -0,0 +1,7 @@
1
+ require "adiwg/mdjson_schemas/version"
2
+
3
+ module ADIWG
4
+ module MdjsonSchemas
5
+ autoload :Utils, 'adiwg/mdjson_schemas/utils'
6
+ end
7
+ end
@@ -0,0 +1,20 @@
1
+ module ADIWG
2
+ module MdjsonSchemas
3
+ module Utils
4
+ # Return the path to main schema.json file.
5
+ def self.schema_path
6
+ File.join(File.dirname(File.expand_path(__FILE__)), '../../../schema/schema.json')
7
+ end
8
+
9
+ # Return the path to schema directory.
10
+ def self.schema_dir
11
+ File.join(File.dirname(File.expand_path(__FILE__)), '../../../schema/')
12
+ end
13
+
14
+ # Return the path to examples directory.
15
+ def self.examples_dir
16
+ File.join(File.dirname(File.expand_path(__FILE__)), '../../../examples/')
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,42 @@
1
+ =begin
2
+ * Description: Patches json-schema gem to work on windows
3
+ * Author: Josh Bradley
4
+ * Date: 2014-09-17
5
+ * License: Public Domain
6
+ =end
7
+
8
+ module JSON
9
+
10
+ class Validator
11
+
12
+ def load_ref_schema(parent_schema,ref)
13
+ uri = URI.parse(ref)
14
+ if uri.relative?
15
+ uri = parent_schema.uri.clone
16
+
17
+ # Check for absolute path
18
+ path = ref.split("#")[0]
19
+
20
+ # This is a self reference and thus the schema does not need to be
21
+ # re-loaded
22
+ if path.nil? || path == ''
23
+ return
24
+ end
25
+
26
+ if path && path[0,1] == '/'
27
+ uri.path = Pathname.new(path).cleanpath.to_s
28
+ else
29
+ uri = parent_schema.uri.merge(path)
30
+ end
31
+ uri.fragment = ''
32
+ end
33
+
34
+ if Validator.schemas[uri.to_s].nil?
35
+ schema = JSON::Schema.new(JSON::Validator.parse(open(uri.to_s.chomp('#')).read), uri, @options[:version])
36
+ Validator.add_schema(schema)
37
+ build_schemas(schema)
38
+ end
39
+ end
40
+
41
+ end
42
+ end
@@ -0,0 +1,6 @@
1
+ module ADIWG
2
+ module MdjsonSchemas
3
+ # Current schema version number
4
+ VERSION = "1.0.0rc1"
5
+ end
6
+ end
@@ -0,0 +1,64 @@
1
+ {
2
+ "id": "schema.json#",
3
+ "$schema": "http://json-schema.org/draft-04/schema#",
4
+ "version": "1.0.0",
5
+ "description": "schema for ADIwg mdJSON metadata",
6
+ "type": "object",
7
+ "required": ["version", "contact", "metadata"],
8
+ "properties": {
9
+ "version": {
10
+ "type": "object",
11
+ "description": "Identifies the version of the JSON schema standard that applies to the metadata.",
12
+ "example": "../examples/full_example.json#/version",
13
+ "required": ["name", "version"],
14
+ "additionalProperties": false,
15
+ "properties": {
16
+ "name": {
17
+ "type": "string",
18
+ "example": "../examples/full_example.json#/version",
19
+ "description": "Schema identifier, i.e. the name of the schema standard."
20
+ },
21
+ "version": {
22
+ "type": "string",
23
+ "example": "../examples/full_example.json#/version",
24
+ "description": "Specific version number of the schema standard.",
25
+ "pattern": "[0-9]\\.[0-9]\\.[0-9]"
26
+ }
27
+ }
28
+ },
29
+ "contact": {
30
+ "$ref": "schema/contact.json"
31
+ },
32
+ "metadata": {
33
+ "$ref": "schema/metadata.json"
34
+ },
35
+ "dataDictionary": {
36
+ "type": "array",
37
+ "example": "../examples/full_example.json#/dataDictionary",
38
+ "items": {
39
+ "$ref": "schema/dataDictionary.json"
40
+ }
41
+ }
42
+ },
43
+ "definitions": {
44
+ "url": {
45
+ "type": "string",
46
+ "pattern": "(https?|ftp):\\/\\/(-\\.)?([^\\s\\/?\\.#-]+\\.?)+(\\/[^\\s]*)?$"
47
+ },
48
+ "uri": {
49
+ "type": "string",
50
+ "description": "Location (address) for on-line access using a Uniform Resource Identifier, usually in the form of a Uniform Resource Locator (URL).",
51
+ "example": "../examples/uri.json",
52
+ "translation": {
53
+ "ISO 19115-2": ["CI_OnlineResource > linkage"]
54
+ },
55
+ "pattern": "([A-Za-z][A-Za-z0-9+\\-.]*):(?:(//)(?:((?:[A-Za-z0-9\\-._~!$&'()*+,;=:]|%[0-9A-Fa-f]{2})*)@)?((?:\\[(?:(?:(?:(?:[0-9A-Fa-f]{1,4}:){6}|::(?:[0-9A-Fa-f]{1,4}:){5}|(?:[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:){4}|(?:(?:[0-9A-Fa-f]{1,4}:){0,1}[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:){3}|(?:(?:[0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:){2}|(?:(?:[0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})?::[0-9A-Fa-f]{1,4}:|(?:(?:[0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})?::)(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))|(?:(?:[0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})?::[0-9A-Fa-f]{1,4}|(?:(?:[0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})?::)|[Vv][0-9A-Fa-f]+\\.[A-Za-z0-9\\-._~!$&'()*+,;=:]+)\\]|(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)|(?:[A-Za-z0-9\\-._~!$&'()*+,;=]|%[0-9A-Fa-f]{2})*))(?::([0-9]*))?((?:/(?:[A-Za-z0-9\\-._~!$&'()*+,;=:@]|%[0-9A-Fa-f]{2})*)*)|/((?:(?:[A-Za-z0-9\\-._~!$&'()*+,;=:@]|%[0-9A-Fa-f]{2})+(?:/(?:[A-Za-z0-9\\-._~!$&'()*+,;=:@]|%[0-9A-Fa-f]{2})*)*)?)|((?:[A-Za-z0-9\\-._~!$&'()*+,;=:@]|%[0-9A-Fa-f]{2})+(?:/(?:[A-Za-z0-9\\-._~!$&'()*+,;=:@]|%[0-9A-Fa-f]{2})*)*)|)(?:\\?((?:[A-Za-z0-9\\-._~!$&'()*+,;=:@/?]|%[0-9A-Fa-f]{2})*))?(?:\\#((?:[A-Za-z0-9\\-._~!$&'()*+,;=:@/?]|%[0-9A-Fa-f]{2})*))?"
56
+ },
57
+ "date": {
58
+ "type": "string",
59
+ "description": "An ISO 8601 date/timestamp.",
60
+ "example": "../examples/date.json",
61
+ "pattern": "^(\\d{4}(-\\d{2})?(-\\d{2})?$)|(^\\d{4}-\\d{2}-\\d{2}(T\\d{2})?(\\:\\d{2}(\\:\\d{2}(\\.\\d+)?)?|Z)?(Z|(-|\\+)\\d{2}(:\\d{2})?)?$)"
62
+ }
63
+ }
64
+ }