geoblacklight 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (418) hide show
  1. checksums.yaml +7 -0
  2. data/.circleci/config.yml +195 -0
  3. data/.github/ISSUE_TEMPLATE.md +17 -0
  4. data/.gitignore +21 -0
  5. data/.gitmodules +0 -0
  6. data/.hound.yml +8 -0
  7. data/.jshintignore +2 -0
  8. data/.jshintrc +67 -0
  9. data/.rubocop.yml +99 -0
  10. data/.rubocop_todo.yml +196 -0
  11. data/.solr_wrapper +5 -0
  12. data/CODE_OF_CONDUCT.md +76 -0
  13. data/CONTRIBUTING.md +49 -0
  14. data/Gemfile +39 -0
  15. data/LICENSE.txt +13 -0
  16. data/README.md +39 -0
  17. data/Rakefile +125 -0
  18. data/app/assets/images/blacklight/arrow-circle-down.svg +4 -0
  19. data/app/assets/images/blacklight/baruch-cuny.svg +6 -0
  20. data/app/assets/images/blacklight/berkeley.svg +7 -0
  21. data/app/assets/images/blacklight/book.svg +6 -0
  22. data/app/assets/images/blacklight/bookmark.svg +6 -0
  23. data/app/assets/images/blacklight/cd-rom.svg +6 -0
  24. data/app/assets/images/blacklight/chicago.svg +7 -0
  25. data/app/assets/images/blacklight/columbia.svg +6 -0
  26. data/app/assets/images/blacklight/cornell.svg +8 -0
  27. data/app/assets/images/blacklight/dvd-rom.svg +6 -0
  28. data/app/assets/images/blacklight/email.svg +6 -0
  29. data/app/assets/images/blacklight/esri-globe.svg +34 -0
  30. data/app/assets/images/blacklight/geoblacklight-icons.json +2079 -0
  31. data/app/assets/images/blacklight/globe.svg +4 -0
  32. data/app/assets/images/blacklight/harvard.svg +6 -0
  33. data/app/assets/images/blacklight/home.svg +4 -0
  34. data/app/assets/images/blacklight/illinois.svg +7 -0
  35. data/app/assets/images/blacklight/image.svg +6 -0
  36. data/app/assets/images/blacklight/indiana.svg +6 -0
  37. data/app/assets/images/blacklight/iowa.svg +6 -0
  38. data/app/assets/images/blacklight/leaf.svg +6 -0
  39. data/app/assets/images/blacklight/lewis-clark.svg +8 -0
  40. data/app/assets/images/blacklight/line.svg +7 -0
  41. data/app/assets/images/blacklight/logo.svg +1 -0
  42. data/app/assets/images/blacklight/map-marker.svg +6 -0
  43. data/app/assets/images/blacklight/map.svg +6 -0
  44. data/app/assets/images/blacklight/maryland.svg +6 -0
  45. data/app/assets/images/blacklight/massgis.svg +6 -0
  46. data/app/assets/images/blacklight/metadata.svg +6 -0
  47. data/app/assets/images/blacklight/michigan-state.svg +7 -0
  48. data/app/assets/images/blacklight/michigan.svg +6 -0
  49. data/app/assets/images/blacklight/minnesota.svg +6 -0
  50. data/app/assets/images/blacklight/mit.svg +6 -0
  51. data/app/assets/images/blacklight/mixed.svg +8 -0
  52. data/app/assets/images/blacklight/multilinestring.svg +9 -0
  53. data/app/assets/images/blacklight/multipoint.svg +6 -0
  54. data/app/assets/images/blacklight/multipolygon.svg +9 -0
  55. data/app/assets/images/blacklight/nyu.svg +9 -0
  56. data/app/assets/images/blacklight/ohio-state.svg +8 -0
  57. data/app/assets/images/blacklight/pagelines-brands.svg +6 -0
  58. data/app/assets/images/blacklight/paper-map.svg +6 -0
  59. data/app/assets/images/blacklight/penn-state.svg +7 -0
  60. data/app/assets/images/blacklight/point.svg +6 -0
  61. data/app/assets/images/blacklight/polygon.svg +7 -0
  62. data/app/assets/images/blacklight/polyline.svg +9 -0
  63. data/app/assets/images/blacklight/princeton.svg +6 -0
  64. data/app/assets/images/blacklight/public.svg +6 -0
  65. data/app/assets/images/blacklight/purdue.svg +7 -0
  66. data/app/assets/images/blacklight/raster.svg +6 -0
  67. data/app/assets/images/blacklight/restricted.svg +6 -0
  68. data/app/assets/images/blacklight/sms.svg +6 -0
  69. data/app/assets/images/blacklight/stanford.svg +6 -0
  70. data/app/assets/images/blacklight/table.svg +6 -0
  71. data/app/assets/images/blacklight/tags.svg +4 -0
  72. data/app/assets/images/blacklight/texas.svg +6 -0
  73. data/app/assets/images/blacklight/tufts.svg +6 -0
  74. data/app/assets/images/blacklight/ucla.svg +6 -0
  75. data/app/assets/images/blacklight/uva.svg +6 -0
  76. data/app/assets/images/blacklight/web_services.svg +6 -0
  77. data/app/assets/images/blacklight/wisconsin.svg +6 -0
  78. data/app/assets/javascripts/geoblacklight/basemaps.js +85 -0
  79. data/app/assets/javascripts/geoblacklight/controls.js +1 -0
  80. data/app/assets/javascripts/geoblacklight/controls/opacity.js +6 -0
  81. data/app/assets/javascripts/geoblacklight/downloaders.js +1 -0
  82. data/app/assets/javascripts/geoblacklight/downloaders/downloader.js +61 -0
  83. data/app/assets/javascripts/geoblacklight/downloaders/hgl_downloader.js +32 -0
  84. data/app/assets/javascripts/geoblacklight/geoblacklight.js +42 -0
  85. data/app/assets/javascripts/geoblacklight/modules.js +1 -0
  86. data/app/assets/javascripts/geoblacklight/modules/collapse.js +7 -0
  87. data/app/assets/javascripts/geoblacklight/modules/download.js +11 -0
  88. data/app/assets/javascripts/geoblacklight/modules/geosearch.js +133 -0
  89. data/app/assets/javascripts/geoblacklight/modules/help_text.js +7 -0
  90. data/app/assets/javascripts/geoblacklight/modules/home.js +16 -0
  91. data/app/assets/javascripts/geoblacklight/modules/item.js +13 -0
  92. data/app/assets/javascripts/geoblacklight/modules/layer_opacity.js +68 -0
  93. data/app/assets/javascripts/geoblacklight/modules/metadata.js +15 -0
  94. data/app/assets/javascripts/geoblacklight/modules/metadata_download_button.js +53 -0
  95. data/app/assets/javascripts/geoblacklight/modules/relations.js +14 -0
  96. data/app/assets/javascripts/geoblacklight/modules/results.js +82 -0
  97. data/app/assets/javascripts/geoblacklight/modules/util.js +38 -0
  98. data/app/assets/javascripts/geoblacklight/templates/index_map_download.hbs +19 -0
  99. data/app/assets/javascripts/geoblacklight/templates/index_map_info.hbs +40 -0
  100. data/app/assets/javascripts/geoblacklight/viewers.js +1 -0
  101. data/app/assets/javascripts/geoblacklight/viewers/esri.js +77 -0
  102. data/app/assets/javascripts/geoblacklight/viewers/esri/dynamic_map_layer.js +85 -0
  103. data/app/assets/javascripts/geoblacklight/viewers/esri/feature_layer.js +76 -0
  104. data/app/assets/javascripts/geoblacklight/viewers/esri/image_map_layer.js +14 -0
  105. data/app/assets/javascripts/geoblacklight/viewers/esri/tiled_map_layer.js +50 -0
  106. data/app/assets/javascripts/geoblacklight/viewers/iiif.js +25 -0
  107. data/app/assets/javascripts/geoblacklight/viewers/index_map.js +70 -0
  108. data/app/assets/javascripts/geoblacklight/viewers/map.js +67 -0
  109. data/app/assets/javascripts/geoblacklight/viewers/oembed.js +13 -0
  110. data/app/assets/javascripts/geoblacklight/viewers/viewer.js +65 -0
  111. data/app/assets/javascripts/geoblacklight/viewers/wms.js +74 -0
  112. data/app/assets/stylesheets/geoblacklight/_blacklight_overrides.scss +51 -0
  113. data/app/assets/stylesheets/geoblacklight/_geoblacklight.scss +36 -0
  114. data/app/assets/stylesheets/geoblacklight/_styles.scss +4 -0
  115. data/app/assets/stylesheets/geoblacklight/application.scss +2 -0
  116. data/app/assets/stylesheets/geoblacklight/modules/downloads.scss +93 -0
  117. data/app/assets/stylesheets/geoblacklight/modules/facets.scss +5 -0
  118. data/app/assets/stylesheets/geoblacklight/modules/geosearch.scss +29 -0
  119. data/app/assets/stylesheets/geoblacklight/modules/home.scss +28 -0
  120. data/app/assets/stylesheets/geoblacklight/modules/icon-customization.scss +50 -0
  121. data/app/assets/stylesheets/geoblacklight/modules/index_maps.scss +7 -0
  122. data/app/assets/stylesheets/geoblacklight/modules/item.scss +26 -0
  123. data/app/assets/stylesheets/geoblacklight/modules/layer_opacity.scss +87 -0
  124. data/app/assets/stylesheets/geoblacklight/modules/metadata.scss +31 -0
  125. data/app/assets/stylesheets/geoblacklight/modules/metadata_content.scss +43 -0
  126. data/app/assets/stylesheets/geoblacklight/modules/metadata_markup.scss +9 -0
  127. data/app/assets/stylesheets/geoblacklight/modules/metadata_missing.scss +7 -0
  128. data/app/assets/stylesheets/geoblacklight/modules/mixins.scss +5 -0
  129. data/app/assets/stylesheets/geoblacklight/modules/modal.scss +14 -0
  130. data/app/assets/stylesheets/geoblacklight/modules/relations.scss +15 -0
  131. data/app/assets/stylesheets/geoblacklight/modules/results.scss +68 -0
  132. data/app/assets/stylesheets/geoblacklight/modules/search_widgets.scss +5 -0
  133. data/app/assets/stylesheets/geoblacklight/modules/sidebar.scss +60 -0
  134. data/app/assets/stylesheets/geoblacklight/modules/toolbar.scss +70 -0
  135. data/app/assets/stylesheets/geoblacklight/modules/web_services.scss +5 -0
  136. data/app/controllers/download_controller.rb +114 -0
  137. data/app/controllers/relation_controller.rb +20 -0
  138. data/app/controllers/wms_controller.rb +15 -0
  139. data/app/helpers/arcgis_helper.rb +12 -0
  140. data/app/helpers/blacklight_helper.rb +9 -0
  141. data/app/helpers/carto_helper.rb +29 -0
  142. data/app/helpers/geoblacklight_helper.rb +323 -0
  143. data/app/models/concerns/geoblacklight/solr_document.rb +113 -0
  144. data/app/models/concerns/geoblacklight/solr_document/arcgis.rb +10 -0
  145. data/app/models/concerns/geoblacklight/solr_document/carto.rb +28 -0
  146. data/app/models/concerns/geoblacklight/solr_document/finder.rb +38 -0
  147. data/app/models/concerns/geoblacklight/solr_document/inspection.rb +15 -0
  148. data/app/models/concerns/geoblacklight/spatial_search_behavior.rb +69 -0
  149. data/app/presenters/geoblacklight/document_presenter.rb +23 -0
  150. data/app/views/catalog/_data_dictionary.html.erb +6 -0
  151. data/app/views/catalog/_document_action.html.erb +6 -0
  152. data/app/views/catalog/_document_split.html.erb +6 -0
  153. data/app/views/catalog/_download_generated_link.html.erb +4 -0
  154. data/app/views/catalog/_download_link.html.erb +3 -0
  155. data/app/views/catalog/_downloads_generated.html.erb +6 -0
  156. data/app/views/catalog/_downloads_primary.html.erb +14 -0
  157. data/app/views/catalog/_downloads_secondary.html.erb +39 -0
  158. data/app/views/catalog/_exports.html.erb +3 -0
  159. data/app/views/catalog/_facet_tag_item.html.erb +3 -0
  160. data/app/views/catalog/_facet_tag_layout.html.erb +2 -0
  161. data/app/views/catalog/_header_icons.html.erb +3 -0
  162. data/app/views/catalog/_home_text.html.erb +43 -0
  163. data/app/views/catalog/_icon_facet.html.erb +16 -0
  164. data/app/views/catalog/_index_split_default.html.erb +22 -0
  165. data/app/views/catalog/_metadata.html.erb +27 -0
  166. data/app/views/catalog/_relations_container.html.erb +1 -0
  167. data/app/views/catalog/_results_pagination.html.erb +12 -0
  168. data/app/views/catalog/_show_default_attribute_table.html.erb +19 -0
  169. data/app/views/catalog/_show_default_viewer_container.html.erb +12 -0
  170. data/app/views/catalog/_show_default_viewer_information.html.erb +4 -0
  171. data/app/views/catalog/_show_downloads.html.erb +34 -0
  172. data/app/views/catalog/_show_header_default.html.erb +4 -0
  173. data/app/views/catalog/_show_sidebar.html.erb +12 -0
  174. data/app/views/catalog/_show_tools.html.erb +25 -0
  175. data/app/views/catalog/_web_services.html.erb +8 -0
  176. data/app/views/catalog/_web_services_default.html.erb +8 -0
  177. data/app/views/catalog/_web_services_wfs.html.erb +8 -0
  178. data/app/views/catalog/_web_services_wms.html.erb +8 -0
  179. data/app/views/catalog/index.html.erb +13 -0
  180. data/app/views/catalog/metadata.html.erb +11 -0
  181. data/app/views/catalog/metadata/_content.html.erb +3 -0
  182. data/app/views/catalog/metadata/_markup.html.erb +8 -0
  183. data/app/views/catalog/metadata/_missing.html.erb +6 -0
  184. data/app/views/catalog/web_services.html.erb +10 -0
  185. data/app/views/download/hgl.html.erb +25 -0
  186. data/app/views/relation/_ancestors.html.erb +11 -0
  187. data/app/views/relation/_descendants.html.erb +18 -0
  188. data/app/views/relation/index.html.erb +13 -0
  189. data/app/views/relation/index.json.jbuilder +3 -0
  190. data/app/views/shared/_header_navbar.html.erb +38 -0
  191. data/config/initializers/rails_config.rb +3 -0
  192. data/config/locales/geoblacklight.en.yml +163 -0
  193. data/geoblacklight.gemspec +49 -0
  194. data/lib/generators/geoblacklight/install_generator.rb +105 -0
  195. data/lib/generators/geoblacklight/templates/Procfile +3 -0
  196. data/lib/generators/geoblacklight/templates/catalog_controller.rb +272 -0
  197. data/lib/generators/geoblacklight/templates/geoblacklight.js +10 -0
  198. data/lib/generators/geoblacklight/templates/geoblacklight.scss +4 -0
  199. data/lib/generators/geoblacklight/templates/package.json +14 -0
  200. data/lib/generators/geoblacklight/templates/settings.yml +127 -0
  201. data/lib/generators/geoblacklight/templates/webpacker.yml +67 -0
  202. data/lib/generators/geoblacklight/webpacker_generator.rb +35 -0
  203. data/lib/geoblacklight.rb +50 -0
  204. data/lib/geoblacklight/bounding_box.rb +45 -0
  205. data/lib/geoblacklight/catalog_helper_override.rb +13 -0
  206. data/lib/geoblacklight/constants.rb +28 -0
  207. data/lib/geoblacklight/download.rb +108 -0
  208. data/lib/geoblacklight/download/geojson_download.rb +22 -0
  209. data/lib/geoblacklight/download/geotiff_download.rb +20 -0
  210. data/lib/geoblacklight/download/hgl_download.rb +18 -0
  211. data/lib/geoblacklight/download/kmz_download.rb +22 -0
  212. data/lib/geoblacklight/download/shapefile_download.rb +20 -0
  213. data/lib/geoblacklight/engine.rb +27 -0
  214. data/lib/geoblacklight/exceptions.rb +27 -0
  215. data/lib/geoblacklight/geoblacklight_helper_behavior.rb +14 -0
  216. data/lib/geoblacklight/item_viewer.rb +54 -0
  217. data/lib/geoblacklight/metadata.rb +18 -0
  218. data/lib/geoblacklight/metadata/base.rb +93 -0
  219. data/lib/geoblacklight/metadata/fgdc.rb +14 -0
  220. data/lib/geoblacklight/metadata/html.rb +13 -0
  221. data/lib/geoblacklight/metadata/iso19139.rb +14 -0
  222. data/lib/geoblacklight/metadata_transformer.rb +33 -0
  223. data/lib/geoblacklight/metadata_transformer/base.rb +42 -0
  224. data/lib/geoblacklight/metadata_transformer/fgdc.rb +8 -0
  225. data/lib/geoblacklight/metadata_transformer/iso19139.rb +8 -0
  226. data/lib/geoblacklight/reference.rb +45 -0
  227. data/lib/geoblacklight/references.rb +132 -0
  228. data/lib/geoblacklight/relation/ancestors.rb +27 -0
  229. data/lib/geoblacklight/relation/descendants.rb +27 -0
  230. data/lib/geoblacklight/relation/relation_response.rb +24 -0
  231. data/lib/geoblacklight/routes.rb +7 -0
  232. data/lib/geoblacklight/routes/downloadable.rb +14 -0
  233. data/lib/geoblacklight/routes/exportable.rb +17 -0
  234. data/lib/geoblacklight/routes/wms.rb +13 -0
  235. data/lib/geoblacklight/version.rb +3 -0
  236. data/lib/geoblacklight/view_helper_override.rb +40 -0
  237. data/lib/geoblacklight/wms_layer.rb +35 -0
  238. data/lib/geoblacklight/wms_layer/feature_info_response.rb +32 -0
  239. data/lib/tasks/geoblacklight.rake +108 -0
  240. data/package.json +4 -0
  241. data/schema/format-values.md +50 -0
  242. data/schema/geoblacklight-schema-deprecated.md +39 -0
  243. data/schema/geoblacklight-schema.json +214 -0
  244. data/schema/geoblacklight-schema.md +323 -0
  245. data/schema/geometry-type-values.md +11 -0
  246. data/schema/references.md +23 -0
  247. data/schema/schema-commentary.md +198 -0
  248. data/schema/subjects.md +41 -0
  249. data/schema/type-values.md +10 -0
  250. data/solr/conf/_rest_managed.json +3 -0
  251. data/solr/conf/admin-extra.html +31 -0
  252. data/solr/conf/core.properties +5 -0
  253. data/solr/conf/elevate.xml +36 -0
  254. data/solr/conf/mapping-ISOLatin1Accent.txt +246 -0
  255. data/solr/conf/protwords.txt +21 -0
  256. data/solr/conf/schema.xml +198 -0
  257. data/solr/conf/scripts.conf +24 -0
  258. data/solr/conf/solrconfig.xml +243 -0
  259. data/solr/conf/spellings.txt +2 -0
  260. data/solr/conf/stopwords.txt +58 -0
  261. data/solr/conf/stopwords_en.txt +58 -0
  262. data/solr/conf/synonyms.txt +31 -0
  263. data/solr/conf/xslt/example.xsl +132 -0
  264. data/solr/conf/xslt/example_atom.xsl +67 -0
  265. data/solr/conf/xslt/example_rss.xsl +66 -0
  266. data/solr/conf/xslt/luke.xsl +337 -0
  267. data/spec/controllers/catalog_controller_spec.rb +82 -0
  268. data/spec/controllers/download_controller_spec.rb +120 -0
  269. data/spec/controllers/relation_controller_spec.rb +11 -0
  270. data/spec/controllers/wms_controller_spec.rb +34 -0
  271. data/spec/factories/user.rb +7 -0
  272. data/spec/features/bookmarks_spec.rb +10 -0
  273. data/spec/features/configurable_basemap_spec.rb +35 -0
  274. data/spec/features/data_dictionary_download_spec.rb +16 -0
  275. data/spec/features/download_layer_spec.rb +93 -0
  276. data/spec/features/empty_search_spec.rb +11 -0
  277. data/spec/features/esri_viewer_spec.rb +42 -0
  278. data/spec/features/exports_spec.rb +36 -0
  279. data/spec/features/help_text_spec.rb +8 -0
  280. data/spec/features/home_page_spec.rb +40 -0
  281. data/spec/features/iiif_viewer_spec.rb +8 -0
  282. data/spec/features/index_map_spec.rb +31 -0
  283. data/spec/features/layer_inspection_spec.rb +10 -0
  284. data/spec/features/layer_opacity_spec.rb +20 -0
  285. data/spec/features/layer_preview_spec.rb +17 -0
  286. data/spec/features/layer_with_no_references_spec.rb +8 -0
  287. data/spec/features/linkified_attribute_table_spec.rb +11 -0
  288. data/spec/features/metadata_panel_spec.rb +78 -0
  289. data/spec/features/missing_metadata_spec.rb +24 -0
  290. data/spec/features/oembed_spec.rb +9 -0
  291. data/spec/features/relations_spec.rb +51 -0
  292. data/spec/features/saved_searches_spec.rb +13 -0
  293. data/spec/features/search_bar_spec.rb +12 -0
  294. data/spec/features/search_results_map_spec.rb +55 -0
  295. data/spec/features/search_results_overlap_ratio_spec.rb +55 -0
  296. data/spec/features/search_spec.rb +14 -0
  297. data/spec/features/show_page_metadata_spec.rb +12 -0
  298. data/spec/features/sms_spec.rb +15 -0
  299. data/spec/features/split_view.html.erb_spec.rb +75 -0
  300. data/spec/features/suppressed_records_spec.rb +14 -0
  301. data/spec/features/web_services_modal_spec.rb +25 -0
  302. data/spec/fixtures/fgdc/harvard-g7064-s2-1834-k3.xml +1 -0
  303. data/spec/fixtures/iso19139/stanford-cg357zz0321.xml +581 -0
  304. data/spec/fixtures/mods/fb897vt9938.mods +111 -0
  305. data/spec/fixtures/mods/stanford-cg357zz0321.mods +113 -0
  306. data/spec/fixtures/solr_documents/README.md +40 -0
  307. data/spec/fixtures/solr_documents/actual-papermap1.json +23 -0
  308. data/spec/fixtures/solr_documents/actual-point1.json +37 -0
  309. data/spec/fixtures/solr_documents/actual-polygon1.json +23 -0
  310. data/spec/fixtures/solr_documents/actual-raster1.json +38 -0
  311. data/spec/fixtures/solr_documents/baruch_ancestor1.json +46 -0
  312. data/spec/fixtures/solr_documents/baruch_ancestor2.json +46 -0
  313. data/spec/fixtures/solr_documents/baruch_documentation_download.json +49 -0
  314. data/spec/fixtures/solr_documents/bbox-spans-180.json +20 -0
  315. data/spec/fixtures/solr_documents/cornell_html_metadata.json +42 -0
  316. data/spec/fixtures/solr_documents/esri-dynamic-layer-all-layers.json +38 -0
  317. data/spec/fixtures/solr_documents/esri-dynamic-layer-single-layer.json +40 -0
  318. data/spec/fixtures/solr_documents/esri-feature-layer.json +46 -0
  319. data/spec/fixtures/solr_documents/esri-image-map-layer.json +42 -0
  320. data/spec/fixtures/solr_documents/esri-tiled_map_layer.json +22 -0
  321. data/spec/fixtures/solr_documents/esri-wms-layer.json +33 -0
  322. data/spec/fixtures/solr_documents/harvard_raster.json +44 -0
  323. data/spec/fixtures/solr_documents/iiif-eastern-hemisphere.json +30 -0
  324. data/spec/fixtures/solr_documents/index-map-polygon-no-downloadurl.json +37 -0
  325. data/spec/fixtures/solr_documents/index-map-polygon.json +37 -0
  326. data/spec/fixtures/solr_documents/index-map-stanford.json +37 -0
  327. data/spec/fixtures/solr_documents/index_map_point.json +27 -0
  328. data/spec/fixtures/solr_documents/metadata_no_dct_provenance_s.json +30 -0
  329. data/spec/fixtures/solr_documents/metadata_no_layer_geom_type_s.json +17 -0
  330. data/spec/fixtures/solr_documents/metadata_no_solr_geom.json +23 -0
  331. data/spec/fixtures/solr_documents/no_spatial.json +21 -0
  332. data/spec/fixtures/solr_documents/oembed.json +24 -0
  333. data/spec/fixtures/solr_documents/princeton-child1.json +30 -0
  334. data/spec/fixtures/solr_documents/princeton-child2.json +30 -0
  335. data/spec/fixtures/solr_documents/princeton-child3.json +30 -0
  336. data/spec/fixtures/solr_documents/princeton-child4.json +30 -0
  337. data/spec/fixtures/solr_documents/princeton-parent.json +25 -0
  338. data/spec/fixtures/solr_documents/public_direct_download.json +34 -0
  339. data/spec/fixtures/solr_documents/public_iiif_princeton.json +36 -0
  340. data/spec/fixtures/solr_documents/public_polygon_mit.json +27 -0
  341. data/spec/fixtures/solr_documents/restricted-line.json +37 -0
  342. data/spec/fixtures/solr_documents/umn_metro_result1.json +41 -0
  343. data/spec/fixtures/solr_documents/umn_state_result1.json +38 -0
  344. data/spec/fixtures/solr_documents/umn_state_result2.json +38 -0
  345. data/spec/fixtures/solr_documents/uva_slug_colon.json +25 -0
  346. data/spec/helpers/arcgis_helper_spec.rb +14 -0
  347. data/spec/helpers/carto_helper_spec.rb +11 -0
  348. data/spec/helpers/geoblacklight_helper_spec.rb +329 -0
  349. data/spec/javascripts/geoblacklight_spec.js +21 -0
  350. data/spec/javascripts/metadata_download_button_spec.js +14 -0
  351. data/spec/javascripts/spec_helper.js +32 -0
  352. data/spec/javascripts/util_spec.js +12 -0
  353. data/spec/lib/geoblacklight/bounding_box_spec.rb +27 -0
  354. data/spec/lib/geoblacklight/controller_override_spec.rb +1 -0
  355. data/spec/lib/geoblacklight/document_presenter_spec.rb +61 -0
  356. data/spec/lib/geoblacklight/download/geojson_download_spec.rb +19 -0
  357. data/spec/lib/geoblacklight/download/geotiff_download_spec.rb +20 -0
  358. data/spec/lib/geoblacklight/download/hgl_download_spec.rb +60 -0
  359. data/spec/lib/geoblacklight/download/kmz_download_spec.rb +20 -0
  360. data/spec/lib/geoblacklight/download/shapefile_download_spec.rb +19 -0
  361. data/spec/lib/geoblacklight/download_spec.rb +177 -0
  362. data/spec/lib/geoblacklight/geoblacklight_helper_behavior_spec.rb +30 -0
  363. data/spec/lib/geoblacklight/item_viewer_spec.rb +63 -0
  364. data/spec/lib/geoblacklight/metadata/base_spec.rb +157 -0
  365. data/spec/lib/geoblacklight/metadata/html_spec.rb +18 -0
  366. data/spec/lib/geoblacklight/metadata_spec.rb +42 -0
  367. data/spec/lib/geoblacklight/metadata_transformer/base_spec.rb +35 -0
  368. data/spec/lib/geoblacklight/metadata_transformer/fgdc_spec.rb +23 -0
  369. data/spec/lib/geoblacklight/metadata_transformer/iso19139_spec.rb +23 -0
  370. data/spec/lib/geoblacklight/metadata_transformer_spec.rb +69 -0
  371. data/spec/lib/geoblacklight/reference_spec.rb +64 -0
  372. data/spec/lib/geoblacklight/references_spec.rb +216 -0
  373. data/spec/lib/geoblacklight/relation/ancestors_spec.rb +32 -0
  374. data/spec/lib/geoblacklight/relation/descendants_spec.rb +32 -0
  375. data/spec/lib/geoblacklight/relation/relation_response_spec.rb +43 -0
  376. data/spec/lib/geoblacklight/view_helper_override_spec.rb +37 -0
  377. data/spec/lib/geoblacklight/wms_layer/feature_info_response_spec.rb +50 -0
  378. data/spec/lib/geoblacklight/wms_layer_spec.rb +99 -0
  379. data/spec/models/concerns/geoblacklight/solr_document/carto_spec.rb +61 -0
  380. data/spec/models/concerns/geoblacklight/solr_document/finder_spec.rb +40 -0
  381. data/spec/models/concerns/geoblacklight/solr_document/inspection_spec.rb +16 -0
  382. data/spec/models/concerns/geoblacklight/solr_document_spec.rb +251 -0
  383. data/spec/models/concerns/geoblacklight/spatial_search_behavior_spec.rb +84 -0
  384. data/spec/routing/catalog_routing_spec.rb +8 -0
  385. data/spec/spec_helper.rb +79 -0
  386. data/spec/support/backport_test_helpers.rb +45 -0
  387. data/spec/support/features.rb +5 -0
  388. data/spec/support/features/session_helpers.rb +20 -0
  389. data/spec/teaspoon_env.rb +213 -0
  390. data/spec/test_app_templates/Gemfile.extra +1 -0
  391. data/spec/test_app_templates/lib/generators/test_app_generator.rb +49 -0
  392. data/spec/test_app_templates/metadata/fgdc.html +129 -0
  393. data/spec/test_app_templates/metadata/fgdc.xml +145 -0
  394. data/spec/test_app_templates/metadata/iso.html +275 -0
  395. data/spec/test_app_templates/metadata/iso.xml +511 -0
  396. data/spec/test_app_templates/solr_documents +1 -0
  397. data/spec/views/catalog/_document_split.html.erb_spec.rb +5 -0
  398. data/spec/views/catalog/_index_split.html.erb_spec.rb +5 -0
  399. data/spec/views/catalog/_results_pagination.html.erb_spec.rb +9 -0
  400. data/spec/views/catalog/_show_downloads.html.erb_spec.rb +41 -0
  401. data/spec/views/catalog/_show_tools.html.erb_spec.rb +39 -0
  402. data/template.rb +19 -0
  403. data/vendor/assets/images/layers-2x.png +0 -0
  404. data/vendor/assets/images/layers.png +0 -0
  405. data/vendor/assets/images/marker-icon-2x.png +0 -0
  406. data/vendor/assets/images/marker-icon.png +0 -0
  407. data/vendor/assets/images/marker-shadow.png +0 -0
  408. data/vendor/assets/javascripts/esri-leaflet.js +5 -0
  409. data/vendor/assets/javascripts/esri-leaflet.js.map +1 -0
  410. data/vendor/assets/javascripts/leaflet-iiif.js +302 -0
  411. data/vendor/assets/javascripts/leaflet-src.js.map +1 -0
  412. data/vendor/assets/javascripts/leaflet.js.erb +13922 -0
  413. data/vendor/assets/javascripts/native.history.js +1 -0
  414. data/vendor/assets/javascripts/readmore.js +618 -0
  415. data/vendor/assets/javascripts/readmore.js.map +1 -0
  416. data/vendor/assets/stylesheets/leaflet-label.css +54 -0
  417. data/vendor/assets/stylesheets/leaflet.css +635 -0
  418. metadata +967 -0
@@ -0,0 +1,214 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-04/schema#",
3
+ "description": "Schema for GeoBlacklight. See https://github.com/geoblacklight/geoblacklight/wiki/Schema for more details.",
4
+ "id": "http://geoblacklight.org/v1.0/schema",
5
+ "title": "GeoBlacklight Schema",
6
+ "definitions": {
7
+ "layer": {
8
+ "title": "layer",
9
+ "description": "A GIS data layer. See [this example](https://github.com/OpenGeoMetadata/edu.stanford.purl/blob/master/bb/099/zb/1450/geoblacklight.json) metadata layer.",
10
+ "type": "object",
11
+ "required": [
12
+ "dc_title_s",
13
+ "dc_identifier_s",
14
+ "dc_rights_s",
15
+ "dct_provenance_s",
16
+ "layer_slug_s",
17
+ "solr_geom"
18
+ ],
19
+ "properties": {
20
+ "uuid": {
21
+ "type": "string",
22
+ "description": "*DEPRECATED* (use `dc_identifier_s`): Unique identifier for layer that is globally unique.",
23
+ "example": "http://purl.stanford.edu/vr593vj7147"
24
+ },
25
+ "dc_identifier_s": {
26
+ "type": "string",
27
+ "description": "Unique identifier for layer as a URI. It should be globally unique across all institutions, assumed not to be end-user visible, and is usually of the form `http://institution/id`. See https://github.com/geoblacklight/geoblacklight/wiki/Schema for more detailed documentation.",
28
+ "example": "http://purl.stanford.edu/vr593vj7147"
29
+ },
30
+ "dc_title_s": {
31
+ "type": "string",
32
+ "description": "Title for the layer.",
33
+ "example": "My Title"
34
+ },
35
+ "dc_description_s": {
36
+ "type": "string",
37
+ "description": "Description for the layer. *Optional*",
38
+ "example": "My Description"
39
+ },
40
+ "dc_rights_s": {
41
+ "type": "string",
42
+ "enum": [
43
+ "Public",
44
+ "Restricted"
45
+ ],
46
+ "description": "Access rights for the layer."
47
+ },
48
+ "dct_provenance_s": {
49
+ "type": "string",
50
+ "description": "Institution who holds the layer.",
51
+ "example": "Stanford"
52
+ },
53
+ "dct_references_s": {
54
+ "type": "string",
55
+ "description": "External resources that are available for the layer. The value is a JSON hash where each key is a URI for the protocol or format, and the value is the URL to the external resource. See `dct_references_s` [detailed documentation](http://geoblacklight.org/tutorial/2015/02/09/geoblacklight-overview.html). *Optional*",
56
+ "pattern": "\\{.*\\}",
57
+ "example": "{ ... }"
58
+ },
59
+ "georss_box_s": {
60
+ "type": "string",
61
+ "description": "*DEPRECATED* (use `solr_geom`): Bounding box for the layer, as maximum values for S W N E.",
62
+ "example": "12.6 -119.4 19.9 84.8"
63
+ },
64
+ "layer_id_s": {
65
+ "type": "string",
66
+ "description": "The complete identifier for the layer via WMS/WFS/WCS protocol. *Optional*",
67
+ "example": "druid:vr593vj7147"
68
+ },
69
+ "layer_geom_type_s": {
70
+ "type": "string",
71
+ "enum": [
72
+ "Point",
73
+ "Line",
74
+ "Polygon",
75
+ "Raster",
76
+ "Scanned Map",
77
+ "Image",
78
+ "Mixed"
79
+ ],
80
+ "description": "Geometry type for layer data, using controlled vocabulary. *Optional*"
81
+ },
82
+ "layer_modified_dt": {
83
+ "type": "string",
84
+ "format": "date-time",
85
+ "description": "Last modification date for the metadata record, using XML Schema dateTime format (YYYY-MM-DDThh:mm:ssZ). *Optional*"
86
+ },
87
+ "layer_slug_s": {
88
+ "type": "string",
89
+ "description": "Identifies a layer in human-readable keywords. Note this value is visible to the user, and used for Permalinks. The value should be alpha-numeric characters separated by dashes, and is typically of the form `institution-keyword1-keyword2`. It should also be globally unique across all institutions in *your* GeoBlacklight index. See https://github.com/geoblacklight/geoblacklight/wiki/Schema for more detailed documentation.",
90
+ "pattern": "^[-a-zA-Z0-9]+$",
91
+ "example": "stanford-andhra-pradesh-village-boundaries"
92
+ },
93
+ "solr_geom": {
94
+ "type": "string",
95
+ "pattern": "ENVELOPE(.*,.*,.*,.*)",
96
+ "description": "Bounding box of the layer as a ENVELOPE WKT (from the CQL standard) using coordinates in (West, East, North, South) order. Note that this field is indexed as a Solr spatial (RPT) field.",
97
+ "example": "ENVELOPE(76.76, 84.76, 19.91, 12.62)"
98
+ },
99
+ "solr_year_i": {
100
+ "type": "integer",
101
+ "description": "*DEPRECATED* (only used by the Blacklight range plugin, not core GeoBlacklight, and generally you want a multi-valued field here): *Derived from* `dct_temporal_sm`. Year for which layer is valid and only a single value. Note that this field is indexed as a Solr numeric field.",
102
+ "example": "1989"
103
+ },
104
+ "dc_creator_sm": {
105
+ "type": "array",
106
+ "items": {
107
+ "type": "string"
108
+ },
109
+ "description": "Author(s) of the layer. *Optional*",
110
+ "example": "George Washington, Thomas Jefferson"
111
+ },
112
+ "dc_format_s": {
113
+ "type": "string",
114
+ "description": "File format for the layer, ideally using a controlled vocabulary. *Optional*",
115
+ "example": "Shapefile, GeoTIFF, ArcGRID"
116
+ },
117
+ "dc_language_s": {
118
+ "type": "string",
119
+ "description": "Language for the layer. *Optional*. Note that future versions of the schema may make this a multi-valued field.",
120
+ "example": "English"
121
+ },
122
+ "dc_publisher_s": {
123
+ "type": "string",
124
+ "description": "Publisher of the layer. *Optional*",
125
+ "example": "ML InfoMap"
126
+ },
127
+ "dc_subject_sm": {
128
+ "type": "array",
129
+ "items": {
130
+ "type": "string"
131
+ },
132
+ "description": "Subjects for the layer, preferrably in a controlled vocabulary. *Optional*",
133
+ "example": "Census, Human settlements"
134
+ },
135
+ "dc_type_s": {
136
+ "type": "string",
137
+ "enum": [
138
+ "Dataset",
139
+ "Image",
140
+ "PhysicalObject"
141
+ ],
142
+ "description": "Resource type of the layer, using DCMI Type Vocabulary, usually a `Dataset`. *Optional*"
143
+ },
144
+ "dct_spatial_sm": {
145
+ "type": "array",
146
+ "items": {
147
+ "type": "string"
148
+ },
149
+ "description": "Spatial coverage and place names for the layer, preferrably in a controlled vocabulary. *Optional*",
150
+ "example": "Paris, San Francisco"
151
+ },
152
+ "dct_temporal_sm": {
153
+ "type": "array",
154
+ "items": {
155
+ "type": "string"
156
+ },
157
+ "description": "Temporal coverage for the layer, typically years or dates. Note that this field is not in a specific date format. *Optional*",
158
+ "example": "1989, circa 2010, 2007-2009"
159
+ },
160
+ "dct_issued_dt": {
161
+ "type": "string",
162
+ "format": "date-time",
163
+ "description": "Issued date for the layer, using XML Schema dateTime format (YYYY-MM-DDThh:mm:ssZ). *Optional*"
164
+ },
165
+ "dct_isPartOf_sm": {
166
+ "type": "array",
167
+ "items": {
168
+ "type": "string"
169
+ },
170
+ "description": "Holding entity for the layer, such as the title of a collection. *Optional*",
171
+ "example": "Village Maps of India"
172
+ },
173
+ "georss_point_s": {
174
+ "type": "string",
175
+ "description": "*DEPRECATED* (use `georss_box_s`): Point representation for layer as y, x - i.e., centroid",
176
+ "example": "12.6 -119.4"
177
+ },
178
+ "dc_relation_sm": {
179
+ "type": "array",
180
+ "items": {
181
+ "type": "string"
182
+ },
183
+ "description": "*DEPRECATED* (use `dct_isPartOf_sm`). A reference to a related resource for this layer. *Optional*",
184
+ "example": "http://purl.stanford.edu/vr593vj7147"
185
+ },
186
+ "dc_source_sm": {
187
+ "type": "array",
188
+ "items": {
189
+ "type": "string"
190
+ },
191
+ "description": "The identity of a layer from which this layer's data was derived. *Optional*",
192
+ "example": "stanford-vr593vj7147"
193
+ },
194
+ "geoblacklight_version": {
195
+ "type": "string",
196
+ "description": "The version of the GeoBlacklight Schema to which this metadata record conforms.",
197
+ "enum": [
198
+ "1.0"
199
+ ]
200
+ }
201
+ }
202
+ }
203
+ },
204
+ "anyOf": [
205
+ {
206
+ "$ref": "#/definitions/layer"
207
+ }, {
208
+ "type": "array",
209
+ "items": {
210
+ "$ref": "#/definitions/layer"
211
+ }
212
+ }
213
+ ]
214
+ }
@@ -0,0 +1,323 @@
1
+ ## GeoBlacklight 1.0 Metadata Schema
2
+ This is an overview of the GeoBlacklight Metadata Schema, Version 1.0. For more information on applications of these elements, visit the [Schema Commentary document](/schema/schema-commentary.md).
3
+ ## Brief
4
+
5
+ | Label | uri| Required?|
6
+ |------------------- |-----------------------|:----------:|
7
+ | [Identifier](#identifier) | `dc_identifier_s`| X|
8
+ | [Rights](#rights) | `dc_rights_s`| X|
9
+ | [Title](#title) | `dc_title_s`| X|
10
+ | [Provenance](#provenance) | `dct_provenance_s`| X|
11
+ | [Schema Version](#schema-version) | `geoblacklight_version`| X|
12
+ | [Slug](#slug) | `layer_slug_s`| X|
13
+ | [Bounding Box](#bounding-box) | `solr_geom`| X|
14
+ | [Solr Year](#solr-year) | `solr_year_i`||
15
+ | [Creator](#creator) | `dc_creator_sm`||
16
+ | [Description](#description) | `dc_description_s`||
17
+ | [Format](#format) | `dc_format_s`||
18
+ | [Language](#language) | `dc_language_sm`||
19
+ | [Publisher](#publisher) | `dc_publisher_sm`||
20
+ | [Source](#source) | `dc_source_sm`||
21
+ | [Subject](#subject) | `dc_subject_sm`||
22
+ | [Type](#type) | `dc_type_s`||
23
+ | [Is Part Of](#is-part-of) | `dct_isPartOf_sm`||
24
+ | [Date Issued](#date-issued) | `dct_issued_s`||
25
+ | [References](#references) | `dct_references_s`||
26
+ | [Spatial Coverage](#spatial-coverage) | `dct_spatial_sm`||
27
+ | [Temporal Coverage](#temporal-coverage) | `dct_temporal_sm`||
28
+ | [Geometry Type](#geometry-type) | `layer_geom_type_s`||
29
+ | [Layer ID](#layer-id) | `layer_id_s`||
30
+ | [Modified Date](#modified-date) | `layer_modified_dt`|||
31
+
32
+
33
+ ## Details
34
+
35
+ ### Identifier
36
+ | Label | Identifier|
37
+ |:------------------------------|:-----------|
38
+ | uri | `dc_identifier_s`|
39
+ | Required | yes|
40
+ | Type | string|
41
+ | Description | Unique identifier for layer as a URI. It should be globally unique across all institutions, assumed not to be end-user visible|
42
+ | Entry Guidelines | This is usually in the form of http://institution/id.|
43
+ | Controlled Vocabulary | no|
44
+ | Element Set | Dublin Core Metadata Element Set|
45
+ | Example | "http://purl.stanford.edu/vr593vj7147"|
46
+
47
+
48
+ ### Rights
49
+ | Label | Rights|
50
+ |:------------------------------|:---------------------------------------------------------|
51
+ | uri | `dc_rights_s`|
52
+ | Required | yes|
53
+ | Type | string|
54
+ | Description | Signals access in the geoportal and is indicated by a padlock icon. Users need to sign in to download restricted items|
55
+ | Entry Guidelines | Choose either Public or Restricted|
56
+ | Controlled Vocabulary | "Public" or "Restricted"|
57
+ | Element Set | Dublin Core Metadata Element Set|
58
+ | Example | "Public"|
59
+
60
+ ### Title
61
+ | Label | Title|
62
+ |:------------------------------|:-----------|
63
+ | uri | `dc_title_s`|
64
+ | Required | yes|
65
+ | Type | string|
66
+ | Description | The name of the resource|
67
+ | Entry Guidelines | Titles should include place names and dates when available.|
68
+ | Controlled Vocabulary | no|
69
+ | Element Set | Dublin Core Metadata Element Set|
70
+ | Example | "Roads: Minneapolis, Minnesota, 2010"|
71
+
72
+ ### Provenance
73
+ | Label | Provenance|
74
+ |:------------------------------|:---------------------------------------------------------|
75
+ | uri | `dct_provenance_s`|
76
+ | Required | yes|
77
+ | Type | string|
78
+ | Description | The name of the institution that holds the resource or acts as the custodian for the metadata record|
79
+ | Entry Guidelines | The value for this field should be one of the agreed upon shortened names for each institution. This will embed the correct icon into the search results and item pages.|
80
+ | Controlled Vocabulary | This repository contains the insitutions that have shared icons: https://github.com/geoblacklight/geoblacklight-icons|
81
+ | Element Set | DCMI Metadata Terms|
82
+ | Example | "Stanford"|
83
+
84
+ ### Schema Version
85
+ | Label | Schema Version|
86
+ |:------------------------------|:---------------------------------------------------------|
87
+ | uri | `geoblacklight_version` |
88
+ | Required | yes|
89
+ | Type | string|
90
+ | Description | Indicates which version of the GeoBlacklight schema is in use|
91
+ | Entry Guidelines | Only current value is "1.0"|
92
+ | Controlled Vocabulary | no|
93
+ | Element Set | GeoBlacklight|
94
+ | Example | "1.0"|
95
+
96
+ ### Slug
97
+ | Label | Slug|
98
+ |:------------------------------|:---------------------------------------------------------|
99
+ | uri | `layer_slug_s`|
100
+ | Required | yes|
101
+ | Type | string|
102
+ | Description | This is a string appended to the base URL of a GeoBlacklight installation to create a unique landing page for each resource. It is visible to the user and serves the purpose of forming a persistent URL for each catalog item.|
103
+ | Entry Guidelines | This string must be a globally unique value. The value should be alpha-numeric characters separated by dashes.|
104
+ | Controlled Vocabulary | no|
105
+ | Element Set | GeoBlacklight|
106
+ | Example | "stanford-andhra-pradesh-village-boundaries"|
107
+
108
+ ### Bounding Box
109
+ | Label | Bounding Box|
110
+ |:------------------------------|:---------------------------------------------------------|
111
+ | uri | `solr_geom`|
112
+ | Required | yes|
113
+ | Type | string|
114
+ | Description | The rectangular extents of the resource. Note that this field is indexed as a Solr spatial (RPT) field|
115
+ | Entry Guidelines | Bounding box of the layer as a ENVELOPE WKT (from the CQL standard) using coordinates in (West, East, North, South) order. The pattern is: ENVELOPE(.*,.*,.*,.*)|
116
+ | Controlled Vocabulary | no|
117
+ | Element Set | GeoBlacklight|
118
+ | Example | "ENVELOPE(76.76, 84.76, 19.91, 12.62)"|
119
+
120
+ ### Solr Year
121
+ | Label | Solr Year|
122
+ |:------------------------------|:---------------------------------------------------------|
123
+ | uri | `solr_year_i`|
124
+ | Required | no|
125
+ | Type | integer|
126
+ | Description | A four digit integer representing a year of temporal coverage or date issued for the resource. This field is used to populate the Year facet and the optional [Blacklight Range Limit gem](https://github.com/projectblacklight/blacklight_range_limit)|
127
+ | Entry Guidelines | This field must be an integer.|
128
+ | Controlled Vocabulary | no|
129
+ | Element Set | GeoBlacklight|
130
+ | Example | "1982"|
131
+
132
+ ### Creator
133
+ | Label | Creator|
134
+ |:------------------------------|:---------------------------------------------------------|
135
+ | uri | `dc_creator_sm`|
136
+ | Required | no|
137
+ | Type | array|
138
+ | Description | The person(s) or organization that created the resource|
139
+ | Entry Guidelines | This may be an individual or an organization. If available, it should match with the Library of Congress Name Authority File.|
140
+ | Controlled Vocabulary | The suggested controlled vocabulary is the [Library of Congress Name Authority File](http://id.loc.gov/authorities/names.html).|
141
+ | Element Set | Dublin Core Metadata Element Set|
142
+ | Example | "George Washington", "Thomas Jefferson"|
143
+
144
+ ### Description
145
+ | Label| Description|
146
+ |:------------------------------|:---------------------------------------------------------|
147
+ | uri | `dc_description_s`|
148
+ | Required | no|
149
+ | Type | string|
150
+ | Description | At minimum, this is a reiteration of the title in sentence format. Other relevant information, such as data creation methods, data sources, and special licenses, may also be included.|
151
+ | Entry Guidelines | This is a plain text field.|
152
+ | Controlled Vocabulary | no|
153
+ | Element Set | Dublin Core Metadata Element Set|
154
+ | Example | "This polygon shapefile represents boundaries of election districts in New York City. It was harvested from the NYC Open Data Portal."|
155
+
156
+ ### Format
157
+ | Label | Format|
158
+ |:------------------------------|:---------------------------------------------------------|
159
+ | uri | `dc_format_s`|
160
+ | Required | no|
161
+ | Type | string|
162
+ | Description | This indicates the file format of the data. If a download link is included, this value shows up on the item page display in the download widget|
163
+ | Entry Guidelines | Choose from set values (see Format list)|
164
+ | Controlled Vocabulary | [Format Controlled Vocabulary](/schema/format-values.md)|
165
+ | Element Set | Dublin Core Metadata Element Set|
166
+ | Example | "Shapefile"|
167
+
168
+ ### Language
169
+ | Label | Language|
170
+ |:------------------------------|:---------------------------------------------------------|
171
+ | uri | `dc_language_sm`|
172
+ | Required | no|
173
+ | Type | array|
174
+ | Description | Indicates the language of the data or map|
175
+ | Entry Guidelines | Spell out language (in English) instead of using the ISO 639-1 code (e.g.,“French” instead of “fra”).|
176
+ | Controlled Vocabulary | no|
177
+ | Element Set | Dublin Core Metadata Element Set|
178
+ | Example | "English"|
179
+
180
+ ### Publisher
181
+ | Label | Publisher|
182
+ |:------------------------------|:---------------------------------------------------------|
183
+ | uri | `dc_publisher_s`|
184
+ | Required | no|
185
+ | Type | array|
186
+ | Description | The organization that made the original resource available|
187
+ | Entry Guidelines | This should always be an organization.|
188
+ | Controlled Vocabulary | The suggested controlled vocabulary is the [Library of Congress Name Authority File](http://id.loc.gov/authorities/names.html).|
189
+ | Element Set | Dublin Core Metadata Element Set|
190
+ | Example | "ML InfoMap (Firm)"|
191
+
192
+ ### Source
193
+ | Label | Source|
194
+ |:------------------------------|:---------------------------------------------------------|
195
+ | uri | `dc_source_sm`|
196
+ | Required | no|
197
+ | Type | array|
198
+ | Description | This is used to indicate parent/child relationships between data layers and activates the Data Relations widget in GeoBlacklight|
199
+ | Entry Guidelines | This is only added to the child records. Enter the layer_slug_s of the parent record(s) into this field.|
200
+ | Controlled Vocabulary | no|
201
+ | Element Set | Dublin Core Metadata Element Set|
202
+ | Example | "stanford-vr593vj7147"|
203
+
204
+ ### Subject
205
+ | Label | Subject|
206
+ |:------------------------------|:---------------------------------------------------------|
207
+ | uri | `dc_subject_sm`|
208
+ | Required | no|
209
+ | Type | array|
210
+ | Description | These are theme or topic keywords|
211
+ | Entry Guidelines | These should be consistent and chosen from a controlled vocabulary. Use sentence style capitalization, where only the first word of a phrase is capitalized.|
212
+ | Controlled Vocabulary | Recommended thesauri are [ISO Topic Categories](https://www2.usgs.gov/science/about/thesaurus-full.php?thcode=15) and Library of Congress Subject Headings.|
213
+ | Element Set | Dublin Core Metadata Element Set|
214
+ | Example | "Census", "Human settlements"|
215
+
216
+
217
+ ### Type
218
+ | Label | Type|
219
+ |:------------------------------|:---------------------------------------------------------|
220
+ | uri | `dc_type_s`|
221
+ | Required | no|
222
+ | Type | string|
223
+ | Description | This is a general element to indicate the larger genre of the resource|
224
+ | Entry Guidelines | Choose from Dublin Core Type values|
225
+ | Controlled Vocabulary | [Type Controlled Vocabulary](/schema/type-values.md)|
226
+ | Element Set | Dublin Core Metadata Element Set|
227
+ | Example | "Dataset"|
228
+
229
+ ### Is Part Of
230
+ | Label | Is Part Of|
231
+ |:------------------------------|:---------------------------------------------------------|
232
+ | uri | `dct_isPartOf_sm`|
233
+ | Required | no|
234
+ | Type | array|
235
+ | Description | Holding entity for the layer, such as the title of a collection|
236
+ | Entry Guidelines | Plain text that is indexed in the Collections facet|
237
+ | Controlled Vocabulary | no|
238
+ | Element Set | [DCMI Metadata Terms](http://dublincore.org/documents/dcmi-terms/)|
239
+ | Example | "Village Maps of India"|
240
+
241
+ ### Date Issued
242
+ | Label | Date Issued|
243
+ |:------------------------------|:---------------------------------------------------------|
244
+ | uri | `dct_issued_s`|
245
+ | Required | no|
246
+ | Type | string|
247
+ | Description | This is the publication date for the resource|
248
+ | Entry Guidelines | Use any date format, such as the XML Schema dateTime format (YYYY-MM-DDThh:mm:ssZ)|
249
+ | Controlled Vocabulary | no|
250
+ | Element Set | [DCMI Metadata Terms](http://dublincore.org/documents/dcmi-terms/)|
251
+ | Example | "2015-01-01"|
252
+
253
+ ### References
254
+ | Label | References|
255
+ |:------------------------------|:---------------------------------------------------------|
256
+ | uri | `dct_references_s`|
257
+ | Required | no|
258
+ | Type | string|
259
+ | Description | This element is a hash of key/value pairs for different types of external links. It integrates external services and references using the CatInterOp approach|
260
+ | Entry Guidelines | See [External Services](https://github.com/geoblacklight/geoblacklight/wiki/Schema#external-services)|
261
+ | Controlled Vocabulary | [References URIs](/schema/references.md)|
262
+ | Element Set | DCMI Metadata Terms|
263
+ | Example | "dct_references_s": "{\"http://schema.org/url\":\"http://purl.stanford.edu/bm662dm5913\",\"http://schema.org/downloadUrl\":\"http://stacks.stanford.edu/file/druid:bm662dm5913/data.zip\"}"|
264
+
265
+ ### Spatial Coverage
266
+ | Label | Spatial Coverage|
267
+ |:------------------------------|:---------------------------------------------------------|
268
+ | uri | `dct_spatial_sm`|
269
+ | Required | no|
270
+ | Type | array|
271
+ | Description | This field is for place name keywords|
272
+ | Entry Guidelines | Place name text strings should be specified out to the nation level. It is typical for the place name to represent the largest extent the data layer represents.|
273
+ | Controlled Vocabulary | Recommended thesaurus is [GeoNames](https://www.geonames.org/)|
274
+ | Element Set | DCMI Metadata Terms|
275
+ | Example | "Philadelphia, Pennsylvania, United States"|
276
+
277
+ ### Temporal Coverage
278
+ | Label | Temporal Coverage|
279
+ |:------------------------------|:---------------------------------------------------------|
280
+ | uri | `dct_temporal_sm`|
281
+ | Required | no|
282
+ | Type | array|
283
+ | Description | This represents the "Ground Condition" of the resource, meaning the time period data was collected or is intended to represent. Displays on the item page in the Year value|
284
+ | Entry Guidelines | This is a text string and can indicate uncertainty|
285
+ | Controlled Vocabulary | no|
286
+ | Element Set | DCMI Metadata Terms|
287
+ | Example | "2007-2009"|
288
+
289
+ ### Geometry Type
290
+ | Label | Geometry Type|
291
+ |:------------------------------|:---------------------------------------------------------|
292
+ | uri | `layer_geom_type_s`|
293
+ | Required | no|
294
+ | Type | string|
295
+ | Description | This element shows up as Data type in GeoBlacklight, and each value has an associated icon|
296
+ | Entry Guidelines | Choose from set values (see Controlled Vocabulary Lists)|
297
+ | Controlled Vocabulary | [Geometry Type Controlled Vocabulary](/schema/geometry-type-values.md)|
298
+ | Element Set | GeoBlacklight|
299
+ | Example | "Polygon"|
300
+
301
+ ### Layer ID
302
+ | Label | Layer ID|
303
+ |:------------------------------|:---------------------------------------------------------|
304
+ | uri | `layer_id_s`|
305
+ | Required | no|
306
+ | Type | string|
307
+ | Description | Indicates the layer id for any WMS or WFS web services listed in the dct_references_s field|
308
+ | Entry Guidelines | Only the layer name is added here. The base service endpoint URLs (e.g. "https://maps-public.geo.nyu.edu/geoserver/sdr/wms") are added to the `dct_references_s` field.|
309
+ | Controlled Vocabulary | no|
310
+ | Element Set | GeoBlacklight|
311
+ | Example | "druid:vr593vj7147"|
312
+
313
+ ### Modified Date
314
+ | Label | Modified Date|
315
+ |:------------------------------|:---------------------------------------------------------|
316
+ | uri | `layer_modified_dt`|
317
+ | Required | no|
318
+ | Type | date-time|
319
+ | Description | Last modification date for the metadata record|
320
+ | Entry Guidelines | Use the XML Schema dateTime format (YYYY-MM-DDThh:mm:ssZ)|
321
+ | Controlled Vocabulary | no|
322
+ | Element Set | GeoBlacklight|
323
+ | Example | "2015-01-01T12:00:00Z"|