geoblacklight 3.4.0 → 4.0.0.pre.alpha

Sign up to get free protection for your applications and to get access to all the features.
Files changed (110) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +5 -0
  3. data/app/models/concerns/geoblacklight/solr_document/citation.rb +2 -2
  4. data/app/models/concerns/geoblacklight/solr_document.rb +4 -4
  5. data/app/models/concerns/geoblacklight/spatial_search_behavior.rb +3 -3
  6. data/app/views/catalog/_header_icons.html.erb +1 -1
  7. data/app/views/catalog/_home_text.html.erb +2 -2
  8. data/app/views/relation/_relations.html.erb +15 -0
  9. data/app/views/relation/index.html.erb +4 -16
  10. data/app/views/relation/index.json.jbuilder +6 -2
  11. data/config/initializers/rails_config.rb +0 -8
  12. data/config/locales/geoblacklight.en.yml +8 -0
  13. data/lib/generators/geoblacklight/templates/catalog_controller.rb +78 -36
  14. data/lib/generators/geoblacklight/templates/settings.gbl_v1.yml +195 -0
  15. data/lib/generators/geoblacklight/templates/settings.yml +81 -22
  16. data/lib/geoblacklight/download/geojson_download.rb +1 -1
  17. data/lib/geoblacklight/download/geotiff_download.rb +1 -1
  18. data/lib/geoblacklight/download/hgl_download.rb +1 -1
  19. data/lib/geoblacklight/download/kmz_download.rb +1 -1
  20. data/lib/geoblacklight/download/shapefile_download.rb +1 -1
  21. data/lib/geoblacklight/references.rb +1 -1
  22. data/lib/geoblacklight/relation/ancestors.rb +4 -3
  23. data/lib/geoblacklight/relation/descendants.rb +4 -3
  24. data/lib/geoblacklight/relation/relation_response.rb +21 -6
  25. data/lib/geoblacklight/version.rb +1 -1
  26. data/schema/{geoblacklight-schema.json → geoblacklight-schema-1.0.json} +1 -1
  27. data/schema/geoblacklight-schema-aardvark.json +211 -0
  28. data/solr/conf/schema.xml +38 -30
  29. data/solr/conf/solrconfig.xml +15 -15
  30. data/spec/components/geoblacklight/homepage_feature_facet_component_spec.rb +1 -1
  31. data/spec/config/initializers/rails_config_spec.rb +5 -8
  32. data/spec/controllers/catalog_controller_spec.rb +6 -6
  33. data/spec/features/download_layer_spec.rb +1 -1
  34. data/spec/features/esri_viewer_spec.rb +0 -1
  35. data/spec/features/home_page_spec.rb +4 -4
  36. data/spec/features/missing_metadata_spec.rb +2 -2
  37. data/spec/features/relations_spec.rb +2 -2
  38. data/spec/features/search_results_map_spec.rb +2 -1
  39. data/spec/features/search_results_overlap_ratio_spec.rb +2 -2
  40. data/spec/features/split_view.html.erb_spec.rb +15 -11
  41. data/spec/fixtures/solr_documents/README.md +48 -36
  42. data/spec/fixtures/solr_documents/actual-papermap1.json +41 -18
  43. data/spec/fixtures/solr_documents/actual-point1.json +47 -27
  44. data/spec/fixtures/solr_documents/actual-polygon1.json +43 -18
  45. data/spec/fixtures/solr_documents/actual-raster1.json +52 -23
  46. data/spec/fixtures/solr_documents/all-relationships.json +48 -0
  47. data/spec/fixtures/solr_documents/baruch_ancestor1.json +62 -37
  48. data/spec/fixtures/solr_documents/baruch_ancestor2.json +62 -37
  49. data/spec/fixtures/solr_documents/baruch_documentation_download.json +60 -34
  50. data/spec/fixtures/solr_documents/bbox-spans-180.json +34 -16
  51. data/spec/fixtures/solr_documents/cornell_html_metadata.json +46 -26
  52. data/spec/fixtures/solr_documents/esri-dynamic-layer-all-layers.json +43 -25
  53. data/spec/fixtures/solr_documents/esri-dynamic-layer-single-layer.json +45 -28
  54. data/spec/fixtures/solr_documents/esri-feature-layer.json +44 -34
  55. data/spec/fixtures/solr_documents/esri-image-map-layer.json +45 -31
  56. data/spec/fixtures/solr_documents/esri-tiled_map_layer.json +42 -17
  57. data/spec/fixtures/solr_documents/esri-wms-layer.json +46 -21
  58. data/spec/fixtures/solr_documents/harvard_raster.json +55 -36
  59. data/spec/fixtures/solr_documents/iiif-eastern-hemisphere.json +35 -22
  60. data/spec/fixtures/solr_documents/index-map-polygon-no-downloadurl.json +48 -27
  61. data/spec/fixtures/solr_documents/index-map-polygon.json +48 -27
  62. data/spec/fixtures/solr_documents/index-map-stanford.json +54 -25
  63. data/spec/fixtures/solr_documents/index_map_point.json +54 -26
  64. data/spec/fixtures/solr_documents/metadata_no_geom.json +27 -0
  65. data/spec/fixtures/solr_documents/metadata_no_provider.json +39 -0
  66. data/spec/fixtures/solr_documents/multiple-downloads.json +33 -20
  67. data/spec/fixtures/solr_documents/no_locn_geometry.json +25 -0
  68. data/spec/fixtures/solr_documents/no_spatial.json +37 -19
  69. data/spec/fixtures/solr_documents/oembed.json +34 -17
  70. data/spec/fixtures/solr_documents/princeton-child1.json +45 -28
  71. data/spec/fixtures/solr_documents/princeton-child2.json +45 -28
  72. data/spec/fixtures/solr_documents/princeton-child3.json +45 -28
  73. data/spec/fixtures/solr_documents/princeton-child4.json +45 -28
  74. data/spec/fixtures/solr_documents/princeton-parent.json +46 -23
  75. data/spec/fixtures/solr_documents/public_direct_download.json +48 -21
  76. data/spec/fixtures/solr_documents/public_iiif_princeton.json +49 -24
  77. data/spec/fixtures/solr_documents/public_polygon_mit.json +31 -15
  78. data/spec/fixtures/solr_documents/restricted-line.json +52 -21
  79. data/spec/fixtures/solr_documents/the-related-record.json +27 -0
  80. data/spec/fixtures/solr_documents/tms.json +33 -17
  81. data/spec/fixtures/solr_documents/umn_metro_result1.json +44 -28
  82. data/spec/fixtures/solr_documents/umn_state_result1.json +44 -26
  83. data/spec/fixtures/solr_documents/umn_state_result2.json +45 -24
  84. data/spec/fixtures/solr_documents/uva_slug_colon.json +43 -20
  85. data/spec/lib/geoblacklight/download/geojson_download_spec.rb +1 -1
  86. data/spec/lib/geoblacklight/download/geotiff_download_spec.rb +1 -1
  87. data/spec/lib/geoblacklight/download/hgl_download_spec.rb +1 -1
  88. data/spec/lib/geoblacklight/download/kmz_download_spec.rb +1 -1
  89. data/spec/lib/geoblacklight/download/shapefile_download_spec.rb +1 -1
  90. data/spec/lib/geoblacklight/download_spec.rb +1 -1
  91. data/spec/lib/geoblacklight/references_spec.rb +2 -2
  92. data/spec/lib/geoblacklight/relation/ancestors_spec.rb +3 -3
  93. data/spec/lib/geoblacklight/relation/descendants_spec.rb +3 -3
  94. data/spec/lib/geoblacklight/relation/relation_response_spec.rb +32 -17
  95. data/spec/models/concerns/geoblacklight/solr_document_spec.rb +4 -4
  96. metadata +15 -19
  97. data/app/views/relation/_ancestors.html.erb +0 -8
  98. data/app/views/relation/_descendants.html.erb +0 -15
  99. data/config/initializers/new_gbl_settings_defaults_3_3.yml +0 -10
  100. data/schema/format-values.md +0 -50
  101. data/schema/geoblacklight-schema-deprecated.md +0 -39
  102. data/schema/geoblacklight-schema.md +0 -323
  103. data/schema/geometry-type-values.md +0 -11
  104. data/schema/references.md +0 -23
  105. data/schema/schema-commentary.md +0 -198
  106. data/schema/subjects.md +0 -41
  107. data/schema/type-values.md +0 -10
  108. data/spec/fixtures/solr_documents/metadata_no_dct_provenance_s.json +0 -30
  109. data/spec/fixtures/solr_documents/metadata_no_layer_geom_type_s.json +0 -17
  110. data/spec/fixtures/solr_documents/metadata_no_solr_geom.json +0 -23
@@ -27,31 +27,47 @@ HOMEPAGE_MAP_GEOM: null
27
27
 
28
28
  # Solr field mappings
29
29
  FIELDS:
30
- :CREATOR: 'dc_creator_sm'
31
- :DESCRIPTION: 'dc_description_s'
32
- :FILE_FORMAT: 'dc_format_s'
33
- :GEOM_TYPE: 'layer_geom_type_s'
34
- :GEOMETRY: 'solr_geom'
35
- :IDENTIFIER: 'dc_identifier_s'
36
- :ISSUED: 'dct_issued_s'
37
- :LANGUAGE: 'dc_language_s'
38
- :LAYER_MODIFIED: 'layer_modified_dt'
30
+ :ACCESS_RIGHTS: 'dct_accessRights_s'
31
+ :ALTERNATIVE_TITLE: 'dct_alternative_sm'
32
+ :CENTROID: 'dcat_centroid_ss'
33
+ :CREATOR: 'dct_creator_sm'
34
+ :DATE_ISSUED: 'dct_issued_s'
35
+ :DATE_RANGE: 'gbl_dateRange_drsim'
36
+ :DESCRIPTION: 'dct_description_sm'
37
+ :FORMAT: 'dct_format_s'
38
+ :FILE_SIZE: 'gbl_fileSize_s'
39
+ :GEOREFERENCED: 'gbl_georeferenced_b'
40
+ :ID: 'id'
41
+ :IDENTIFIER: 'dct_identifier_sm'
42
+ :INDEX_YEAR: 'gbl_indexYear_im'
43
+ :IS_PART_OF: 'dct_isPartOf_sm'
44
+ :IS_REPLACED_BY: 'dct_isReplacedBy_sm'
45
+ :ISO_TOPIC_CATEGORY: 'dcat_theme_sm'
46
+ :KEYWORD: 'dcat_keyword_sm'
47
+ :LANGUAGE: 'dct_language_sm'
48
+ :LICENSE: 'dct_license_sm'
49
+ :MEMBER_OF: 'pcdm_memberOf_sm'
50
+ :METADATA_VERSION: 'gbl_mdVersion_s'
51
+ :MODIFIED: 'gbl_mdModified_dt'
39
52
  :OVERLAP_FIELD: 'solr_bboxtype'
40
- :PART_OF: 'dct_isPartOf_sm'
41
- :PUBLISHER: 'dc_publisher_s'
42
- :PROVENANCE: 'dct_provenance_s'
53
+ :PUBLISHER: 'dct_publisher_sm'
54
+ :PROVIDER: 'schema_provider_s'
43
55
  :REFERENCES: 'dct_references_s'
44
- :RIGHTS: 'dc_rights_s'
56
+ :RELATION: 'dct_relation_sm'
57
+ :REPLACES: 'dct_replaces_sm'
58
+ :RESOURCE_CLASS: 'gbl_resourceClass_sm'
59
+ :RESOURCE_TYPE: 'gbl_resourceType_sm'
60
+ :RIGHTS: 'dct_rights_sm'
61
+ :RIGHTS_HOLDER: 'dct_rightsHolder_sm'
62
+ :SOURCE: 'dct_source_sm'
45
63
  :SPATIAL_COVERAGE: 'dct_spatial_sm'
46
- :SUBJECT: 'dc_subject_sm'
47
- :SOURCE: 'dc_source_sm'
48
- :SUPPRESSED: 'suppressed_b'
49
- :TEMPORAL: 'dct_temporal_sm'
50
- :TITLE: 'dc_title_s'
51
- :TYPE: 'dc_type_s'
52
- :UNIQUE_KEY: 'layer_slug_s'
53
- :WXS_IDENTIFIER: 'layer_id_s'
54
- :YEAR: 'solr_year_i'
64
+ :SPATIAL_EXTENT: 'locn_geometry'
65
+ :SUBJECT: 'dct_subject_sm'
66
+ :SUPPRESSED: 'gbl_suppressed_b'
67
+ :TEMPORAL_COVERAGE: 'dct_temporal_sm'
68
+ :TITLE: 'dct_title_s'
69
+ :VERSION: 'dct_isVersionOf_sm'
70
+ :WXS_IDENTIFIER: 'gbl_wxsIdentifier_s'
55
71
 
56
72
  # Institution deployed at
57
73
  INSTITUTION: 'Stanford'
@@ -83,6 +99,49 @@ WEBSERVICES_SHOWN:
83
99
  - 'dynamic_map_layer'
84
100
  - 'image_map_layer'
85
101
 
102
+ # Relationships to display
103
+ RELATIONSHIPS_SHOWN:
104
+ MEMBER_OF:
105
+ field: pcdm_memberOf_sm
106
+ query_type: ancestors
107
+ icon: nil
108
+ label: geoblacklight.relations.member_of
109
+ PART_OF:
110
+ field: dct_isPartOf_sm
111
+ query_type: ancestors
112
+ icon: nil
113
+ label: geoblacklight.relations.part_of
114
+ RELATION:
115
+ field: dct_relation_sm
116
+ query_type: ancestors
117
+ icon: nil
118
+ label: geoblacklight.relations.relation
119
+ REPLACES:
120
+ field: dct_replaces_sm
121
+ query_type: ancestors
122
+ icon: nil
123
+ label: geoblacklight.relations.replaces
124
+ REPLACED_BY:
125
+ field: dct_isReplacedBy_sm
126
+ query_type: descendants
127
+ icon: nil
128
+ label: geoblacklight.relations.replaced_by
129
+ SOURCE_ANCESTORS:
130
+ field: dct_source_sm
131
+ query_type: ancestors
132
+ icon: pagelines-brands
133
+ label: geoblacklight.relations.ancestor
134
+ SOURCE_DESCENDANTS:
135
+ field: dct_source_sm
136
+ query_type: descendants
137
+ icon: leaf
138
+ label: geoblacklight.relations.descendant
139
+ VERSION_OF:
140
+ field: dct_isVersionOf_sm
141
+ query_type: descendants
142
+ icon: nil
143
+ label: geoblacklight.relations.version_of
144
+
86
145
  # WMS Parameters
87
146
  WMS_PARAMS:
88
147
  :SERVICE: 'WMS'
@@ -10,7 +10,7 @@ module Geoblacklight
10
10
  }.freeze
11
11
 
12
12
  def initialize(document, options = {})
13
- request_params = GEOJSON_DOWNLOAD_PARAMS.merge(typeName: document[:layer_id_s])
13
+ request_params = GEOJSON_DOWNLOAD_PARAMS.merge(typeName: document[Settings.FIELDS.WXS_IDENTIFIER])
14
14
  super(document, {
15
15
  type: 'geojson',
16
16
  extension: 'json',
@@ -7,7 +7,7 @@ module Geoblacklight
7
7
  }.freeze
8
8
 
9
9
  def initialize(document, options = {})
10
- request_params = GEOTIFF_DOWNLOAD_PARAMS.merge(layers: document[:layer_id_s])
10
+ request_params = GEOTIFF_DOWNLOAD_PARAMS.merge(layers: document[Settings.FIELDS.WXS_IDENTIFIER])
11
11
  super(document, {
12
12
  type: 'geotiff',
13
13
  extension: 'tif',
@@ -3,7 +3,7 @@ module Geoblacklight
3
3
  class HglDownload < Geoblacklight::Download
4
4
  def initialize(document, email, options = {})
5
5
  request_params = {
6
- 'LayerName' => document[:layer_id_s].sub(/^cite:/, ''),
6
+ 'LayerName' => document[Settings.FIELDS.WXS_IDENTIFIER].sub(/^cite:/, ''),
7
7
  'UserEmail' => email
8
8
  }
9
9
  super(document, {
@@ -10,7 +10,7 @@ module Geoblacklight
10
10
 
11
11
  def initialize(document, options = {})
12
12
  bbox_wsen = document.geometry.bounding_box
13
- request_params = KMZ_DOWNLOAD_PARAMS.merge(layers: document[:layer_id_s], bbox: bbox_wsen)
13
+ request_params = KMZ_DOWNLOAD_PARAMS.merge(layers: document[Settings.FIELDS.WXS_IDENTIFIER], bbox: bbox_wsen)
14
14
  super(document, {
15
15
  type: 'kmz',
16
16
  extension: 'kmz',
@@ -8,7 +8,7 @@ module Geoblacklight
8
8
  outputformat: 'SHAPE-ZIP' }.freeze
9
9
 
10
10
  def initialize(document, options = {})
11
- request_params = SHAPEFILE_DOWNLOAD_PARAMS.merge(typeName: document[:layer_id_s])
11
+ request_params = SHAPEFILE_DOWNLOAD_PARAMS.merge(typeName: document[Settings.FIELDS.WXS_IDENTIFIER])
12
12
  super(document, {
13
13
  type: 'shapefile',
14
14
  extension: 'zip',
@@ -30,7 +30,7 @@ module Geoblacklight
30
30
  # Accessor for a document's file format
31
31
  # @return [String] file format for the document
32
32
  def format
33
- @document[Settings.FIELDS.FILE_FORMAT]
33
+ @document[Settings.FIELDS.FORMAT]
34
34
  end
35
35
 
36
36
  ##
@@ -2,14 +2,15 @@
2
2
  module Geoblacklight
3
3
  module Relation
4
4
  class Ancestors
5
- def initialize(id, repository)
5
+ def initialize(id, field, repository)
6
6
  @search_id = id
7
+ @field = field
7
8
  @repository = repository
8
9
  end
9
10
 
10
11
  def create_search_params
11
- { fq: ["{!join from=#{Settings.FIELDS.SOURCE} to=#{Settings.FIELDS.UNIQUE_KEY}}#{Settings.FIELDS.UNIQUE_KEY}:#{@search_id}"],
12
- fl: [Settings.FIELDS.TITLE, Settings.FIELDS.UNIQUE_KEY, Settings.FIELDS.GEOM_TYPE] }
12
+ { fq: ["{!join from=#{@field} to=#{Settings.FIELDS.ID}}#{Settings.FIELDS.ID}:#{@search_id}"],
13
+ fl: [Settings.FIELDS.TITLE, Settings.FIELDS.ID, Settings.FIELDS.RESOURCE_TYPE] }
13
14
  end
14
15
 
15
16
  def execute_query
@@ -2,14 +2,15 @@
2
2
  module Geoblacklight
3
3
  module Relation
4
4
  class Descendants
5
- def initialize(id, repository)
5
+ def initialize(id, field, repository)
6
6
  @search_id = id
7
+ @field = field
7
8
  @repository = repository
8
9
  end
9
10
 
10
11
  def create_search_params
11
- { fq: "#{Settings.FIELDS.SOURCE}:#{@search_id}",
12
- fl: [Settings.FIELDS.TITLE, Settings.FIELDS.UNIQUE_KEY, Settings.FIELDS.GEOM_TYPE] }
12
+ { fq: "#{@field}:#{@search_id}",
13
+ fl: [Settings.FIELDS.TITLE, Settings.FIELDS.ID, Settings.FIELDS.RESOURCE_TYPE] }
13
14
  end
14
15
 
15
16
  def execute_query
@@ -9,16 +9,31 @@ module Geoblacklight
9
9
  @repository = repository
10
10
  end
11
11
 
12
- def ancestors
13
- @ancestors ||= Geoblacklight::Relation::Ancestors.new(@search_id, @repository).results
12
+ def method_missing(method, *args, &block)
13
+ if Settings.RELATIONSHIPS_SHOWN.key?(method)
14
+ field = Settings.RELATIONSHIPS_SHOWN[method].field
15
+ query_type = query_type(Settings.RELATIONSHIPS_SHOWN[method])
16
+ @results = query_type.new(@search_id, field, @repository).results
17
+ else
18
+ super
19
+ end
14
20
  end
15
21
 
16
- def descendants
17
- @descendants ||= Geoblacklight::Relation::Descendants.new(@search_id, @repository).results
22
+ def respond_to_missing?(method_name, *args)
23
+ Settings.RELATIONSHIPS_SHOWN.key?(method_name) or super
18
24
  end
19
25
 
20
- def empty?
21
- !(ancestors['numFound'].positive? || descendants['numFound'].positive?)
26
+ private
27
+
28
+ def query_type(option)
29
+ case option.query_type
30
+ when 'ancestors'
31
+ Geoblacklight::Relation::Ancestors
32
+ when 'descendants'
33
+ Geoblacklight::Relation::Descendants
34
+ else
35
+ fail ArgumentError, "Bad RelationResponse query_type: #{option.query_type}. Only 'ancestors' or 'descendants' is allowed."
36
+ end
22
37
  end
23
38
  end
24
39
  end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Geoblacklight
3
- VERSION = '3.4.0'
3
+ VERSION = '4.0.0-alpha'
4
4
  end
@@ -2,7 +2,7 @@
2
2
  "$schema": "http://json-schema.org/draft-04/schema#",
3
3
  "description": "Schema for GeoBlacklight. See https://github.com/geoblacklight/geoblacklight/wiki/Schema for more details.",
4
4
  "id": "http://geoblacklight.org/v1.0/schema",
5
- "title": "GeoBlacklight Schema",
5
+ "title": "GeoBlacklight Schema - v1.0",
6
6
  "definitions": {
7
7
  "layer": {
8
8
  "title": "layer",
@@ -0,0 +1,211 @@
1
+ {
2
+ "$schema": "http://json-schema.org/schema#",
3
+ "description": "Schema for GeoBlacklight. See https://opengeometadata.github.io/aardvark/aardvarkMetadata.html for more details.",
4
+ "id": "http://geoblacklight.org/schema/aardvark",
5
+ "title": "GeoBlacklight Schema - Aardvark",
6
+ "type": "object",
7
+ "properties": {
8
+ "dct_title_s": { "type": "string" },
9
+ "dct_alternative_sm": {
10
+ "type": "array",
11
+ "items": {
12
+ "type": "string"
13
+ }
14
+ },
15
+ "dct_description_sm": {
16
+ "type": "array",
17
+ "items": {
18
+ "type": "string"
19
+ }
20
+ },
21
+ "dct_language_sm": {
22
+ "type": "array",
23
+ "items": {
24
+ "type": "string"
25
+ }
26
+ },
27
+ "dct_creator_sm": {
28
+ "type": "array",
29
+ "items": {
30
+ "type": "string"
31
+ }
32
+ },
33
+ "dct_publisher_sm": {
34
+ "type": "array",
35
+ "items": {
36
+ "type": "string"
37
+ }
38
+ },
39
+ "schema_provider_s": { "type": "string" },
40
+ "gbl_resourceClass_sm": {
41
+ "type": "array",
42
+ "items": {
43
+ "type": "string",
44
+ "enum": [
45
+ "Datasets",
46
+ "Maps",
47
+ "Imagery",
48
+ "Collections",
49
+ "Websites",
50
+ "Web services",
51
+ "Other"
52
+ ]
53
+ }
54
+ },
55
+ "gbl_resourceType_sm": {
56
+ "type": "array",
57
+ "items": {
58
+ "type": "string"
59
+ }
60
+ },
61
+ "dct_subject_sm": {
62
+ "type": "array",
63
+ "items": {
64
+ "type": "string"
65
+ }
66
+ },
67
+ "dcat_theme_sm": {
68
+ "type": "array",
69
+ "items": {
70
+ "type": "string",
71
+ "enum": [
72
+ "Farming",
73
+ "Biota",
74
+ "Boundaries",
75
+ "Climatology, Meteorology and Atmosphere",
76
+ "Economy",
77
+ "Elevation",
78
+ "Environment",
79
+ "Geoscientific Information",
80
+ "Health",
81
+ "Imagery and Base Maps",
82
+ "Intelligence and Military",
83
+ "Inland Waters",
84
+ "Location",
85
+ "Oceans",
86
+ "Planning and Cadastral",
87
+ "Society",
88
+ "Structure",
89
+ "Transportation",
90
+ "Utilities and Communications"
91
+ ]
92
+ }
93
+ },
94
+ "dcat_keyword_sm": {
95
+ "type": "array",
96
+ "items": {
97
+ "type": "string"
98
+ }
99
+ },
100
+ "dct_temporal_sm": {
101
+ "type": "array",
102
+ "items": {
103
+ "type": "string"
104
+ }
105
+ },
106
+ "dct_issued_s": { "type": "string" },
107
+ "gbl_indexYear_im": {
108
+ "type": "array",
109
+ "items": {
110
+ "type": "integer"
111
+ }
112
+ },
113
+ "gbl_dateRange_drsim": {
114
+ "type": "array",
115
+ "items": {
116
+ "type": "string"
117
+ }
118
+ },
119
+ "dct_spatial_sm": {
120
+ "type": "array",
121
+ "items": {
122
+ "type": "string"
123
+ }
124
+ },
125
+ "locn_geometry": { "type": "string" },
126
+ "dcat_centroid_ss": { "type": "string" },
127
+ "dct_relation_sm": {
128
+ "type": "array",
129
+ "items": {
130
+ "type": "string"
131
+ }
132
+ },
133
+ "pcdm_memberOf_sm": {
134
+ "type": "array",
135
+ "items": {
136
+ "type": "string"
137
+ }
138
+ },
139
+ "dct_isPartOf_sm": {
140
+ "type": "array",
141
+ "items": {
142
+ "type": "string"
143
+ }
144
+ },
145
+ "dct_source_sm": {
146
+ "type": "array",
147
+ "items": {
148
+ "type": "string"
149
+ }
150
+ },
151
+ "dct_isVersionOf_sm": {
152
+ "type": "array",
153
+ "items": {
154
+ "type": "string"
155
+ }
156
+ },
157
+ "dct_replaces_sm": {
158
+ "type": "array",
159
+ "items": {
160
+ "type": "string"
161
+ }
162
+ },
163
+ "dct_isReplacedBy_sm": {
164
+ "type": "array",
165
+ "items": {
166
+ "type": "string"
167
+ }
168
+ },
169
+ "dct_rights_sm": {
170
+ "type": "array",
171
+ "items": {
172
+ "type": "string"
173
+ }
174
+ },
175
+ "dct_rightsHolder_sm": {
176
+ "type": "array",
177
+ "items": {
178
+ "type": "string"
179
+ }
180
+ },
181
+ "dct_license_sm": {
182
+ "type": "array",
183
+ "items": {
184
+ "type": "string"
185
+ }
186
+ },
187
+ "dct_accessRights_s": { "type": "string" },
188
+ "dct_format_s": { "type": "string" },
189
+ "gbl_fileSize_s": { "type": "string" },
190
+ "gbl_wxsIdentifier_s": { "type": "string" },
191
+ "dct_references_s": { "type": "string" },
192
+ "id": { "type": "string" },
193
+ "dct_identifier_sm": {
194
+ "type": "array",
195
+ "items": {
196
+ "type": "string"
197
+ }
198
+ },
199
+ "gbl_mdModified_dt": {
200
+ "type": "string",
201
+ "format": "date-time"
202
+ },
203
+ "gbl_mdVersion_s": {
204
+ "type": "string",
205
+ "const": "Aardvark"
206
+ },
207
+ "gbl_suppressed_b": { "type": "boolean" },
208
+ "gbl_georeferenced_b": { "type": "boolean" }
209
+ },
210
+ "required": ["id", "dct_title_s", "gbl_resourceClass_sm", "dct_accessRights_s", "gbl_mdVersion_s"]
211
+ }