geoblacklight 3.2.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 (190) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +148 -0
  3. data/.gitignore +8 -0
  4. data/.rubocop.yml +14 -10
  5. data/.rubocop_todo.yml +361 -26
  6. data/README.md +3 -3
  7. data/Rakefile +19 -12
  8. data/app/assets/images/blacklight/michigan-state-university.svg +6 -0
  9. data/app/assets/images/blacklight/pennsylvania-state-university.svg +6 -0
  10. data/app/assets/images/blacklight/purdue-university.svg +6 -0
  11. data/app/assets/images/blacklight/the-ohio-state-university.svg +7 -0
  12. data/app/assets/images/blacklight/university-of-chicago.svg +6 -0
  13. data/app/assets/images/blacklight/university-of-illinois-urbana-champaign.svg +6 -0
  14. data/app/assets/images/blacklight/university-of-iowa.svg +5 -0
  15. data/app/assets/images/blacklight/university-of-maryland.svg +5 -0
  16. data/app/assets/images/blacklight/university-of-michigan.svg +5 -0
  17. data/app/assets/images/blacklight/university-of-minnesota.svg +5 -0
  18. data/app/assets/images/blacklight/university-of-nebraska-lincoln.svg +8 -0
  19. data/app/assets/images/blacklight/university-of-wisconsin-madison.svg +5 -0
  20. data/app/assets/images/favicon.ico +0 -0
  21. data/app/assets/javascripts/geoblacklight/geoblacklight.js +18 -1
  22. data/app/assets/javascripts/geoblacklight/modules/bookmarks.js +43 -0
  23. data/app/assets/javascripts/geoblacklight/modules/metadata_download_button.js +6 -1
  24. data/app/assets/javascripts/geoblacklight/modules/results.js +7 -8
  25. data/app/assets/javascripts/geoblacklight/modules/util.js +5 -0
  26. data/app/assets/javascripts/geoblacklight/viewers/esri.js +1 -1
  27. data/app/assets/javascripts/geoblacklight/viewers/index_map.js +1 -1
  28. data/app/assets/javascripts/geoblacklight/viewers/map.js +12 -2
  29. data/app/assets/javascripts/geoblacklight/viewers/tms.js +10 -0
  30. data/app/assets/javascripts/geoblacklight/viewers/wms.js +1 -1
  31. data/app/assets/stylesheets/geoblacklight/modules/icon-customization.scss +41 -0
  32. data/app/assets/stylesheets/geoblacklight/modules/results.scss +1 -1
  33. data/app/assets/stylesheets/geoblacklight/modules/toolbar.scss +6 -0
  34. data/app/components/geoblacklight/homepage_feature_facet_component.html.erb +11 -0
  35. data/app/components/geoblacklight/homepage_feature_facet_component.rb +13 -0
  36. data/{lib → app/helpers}/geoblacklight/geoblacklight_helper_behavior.rb +6 -4
  37. data/app/helpers/geoblacklight_helper.rb +14 -8
  38. data/app/models/concerns/geoblacklight/solr_document/citation.rb +2 -2
  39. data/app/models/concerns/geoblacklight/solr_document.rb +11 -16
  40. data/app/models/concerns/geoblacklight/spatial_search_behavior.rb +5 -5
  41. data/app/views/catalog/_arcgis.html.erb +1 -1
  42. data/app/views/catalog/_data_dictionary.html.erb +1 -2
  43. data/app/views/catalog/_document_split.html.erb +1 -1
  44. data/app/views/catalog/_header_icons.html.erb +1 -1
  45. data/app/views/catalog/_home_text.html.erb +7 -29
  46. data/app/views/catalog/_index_split_default.html.erb +1 -1
  47. data/app/views/catalog/_show_default_viewer_container.html.erb +1 -1
  48. data/app/views/catalog/_show_header_default.html.erb +1 -1
  49. data/app/views/download/hgl.html.erb +13 -11
  50. data/app/views/relation/_relations.html.erb +15 -0
  51. data/app/views/relation/index.html.erb +4 -16
  52. data/app/views/relation/index.json.jbuilder +6 -2
  53. data/babel.config.json +4 -0
  54. data/config/initializers/new_gbl_settings_defaults_3_4.yml +6 -0
  55. data/config/locales/geoblacklight.en.yml +12 -0
  56. data/geoblacklight.gemspec +5 -3
  57. data/jest.config.js +25 -0
  58. data/lib/generators/geoblacklight/install_generator.rb +1 -1
  59. data/lib/generators/geoblacklight/templates/catalog_controller.rb +78 -35
  60. data/lib/generators/geoblacklight/templates/settings.gbl_v1.yml +195 -0
  61. data/lib/generators/geoblacklight/templates/settings.yml +91 -17
  62. data/lib/geoblacklight/bounding_box.rb +1 -1
  63. data/lib/geoblacklight/constants.rb +1 -0
  64. data/lib/geoblacklight/download/geojson_download.rb +1 -1
  65. data/lib/geoblacklight/download/geotiff_download.rb +1 -1
  66. data/lib/geoblacklight/download/hgl_download.rb +1 -1
  67. data/lib/geoblacklight/download/kmz_download.rb +2 -2
  68. data/lib/geoblacklight/download/shapefile_download.rb +1 -1
  69. data/lib/geoblacklight/geometry.rb +85 -0
  70. data/lib/geoblacklight/item_viewer.rb +5 -1
  71. data/lib/geoblacklight/metadata/base.rb +1 -7
  72. data/lib/geoblacklight/references.rb +1 -1
  73. data/lib/geoblacklight/relation/ancestors.rb +4 -3
  74. data/lib/geoblacklight/relation/descendants.rb +4 -3
  75. data/lib/geoblacklight/relation/relation_response.rb +21 -6
  76. data/lib/geoblacklight/version.rb +1 -1
  77. data/lib/geoblacklight/view_helper_override.rb +1 -1
  78. data/lib/geoblacklight/wms_layer.rb +1 -4
  79. data/lib/geoblacklight.rb +1 -3
  80. data/lib/tasks/geoblacklight.rake +5 -0
  81. data/package.json +17 -1
  82. data/schema/{geoblacklight-schema.json → geoblacklight-schema-1.0.json} +1 -1
  83. data/schema/geoblacklight-schema-aardvark.json +211 -0
  84. data/setupJest.js +14 -0
  85. data/solr/conf/schema.xml +35 -29
  86. data/solr/conf/solrconfig.xml +15 -15
  87. data/spec/components/geoblacklight/homepage_feature_facet_component_spec.rb +39 -0
  88. data/spec/config/initializers/rails_config_spec.rb +15 -0
  89. data/spec/controllers/catalog_controller_spec.rb +7 -7
  90. data/spec/features/esri_viewer_spec.rb +1 -1
  91. data/spec/features/home_page_spec.rb +4 -4
  92. data/spec/features/layer_opacity_spec.rb +1 -0
  93. data/spec/features/metadata_panel_spec.rb +1 -1
  94. data/spec/features/missing_metadata_spec.rb +2 -2
  95. data/spec/features/relations_spec.rb +2 -2
  96. data/spec/features/search_results_map_spec.rb +2 -1
  97. data/spec/features/search_results_overlap_ratio_spec.rb +2 -2
  98. data/spec/features/split_view.html.erb_spec.rb +16 -12
  99. data/spec/features/tms_spec.rb +10 -0
  100. data/spec/fixtures/solr_documents/README.md +48 -36
  101. data/spec/fixtures/solr_documents/actual-papermap1.json +41 -18
  102. data/spec/fixtures/solr_documents/actual-point1.json +47 -27
  103. data/spec/fixtures/solr_documents/actual-polygon1.json +43 -18
  104. data/spec/fixtures/solr_documents/actual-raster1.json +52 -23
  105. data/spec/fixtures/solr_documents/all-relationships.json +48 -0
  106. data/spec/fixtures/solr_documents/baruch_ancestor1.json +62 -37
  107. data/spec/fixtures/solr_documents/baruch_ancestor2.json +62 -37
  108. data/spec/fixtures/solr_documents/baruch_documentation_download.json +60 -34
  109. data/spec/fixtures/solr_documents/bbox-spans-180.json +34 -16
  110. data/spec/fixtures/solr_documents/cornell_html_metadata.json +46 -26
  111. data/spec/fixtures/solr_documents/esri-dynamic-layer-all-layers.json +43 -25
  112. data/spec/fixtures/solr_documents/esri-dynamic-layer-single-layer.json +45 -28
  113. data/spec/fixtures/solr_documents/esri-feature-layer.json +44 -34
  114. data/spec/fixtures/solr_documents/esri-image-map-layer.json +45 -31
  115. data/spec/fixtures/solr_documents/esri-tiled_map_layer.json +42 -17
  116. data/spec/fixtures/solr_documents/esri-wms-layer.json +46 -21
  117. data/spec/fixtures/solr_documents/harvard_raster.json +55 -36
  118. data/spec/fixtures/solr_documents/iiif-eastern-hemisphere.json +35 -22
  119. data/spec/fixtures/solr_documents/index-map-polygon-no-downloadurl.json +48 -27
  120. data/spec/fixtures/solr_documents/index-map-polygon.json +48 -27
  121. data/spec/fixtures/solr_documents/index-map-stanford.json +54 -25
  122. data/spec/fixtures/solr_documents/index_map_point.json +54 -26
  123. data/spec/fixtures/solr_documents/metadata_no_geom.json +27 -0
  124. data/spec/fixtures/solr_documents/metadata_no_provider.json +39 -0
  125. data/spec/fixtures/solr_documents/multiple-downloads.json +33 -20
  126. data/spec/fixtures/solr_documents/no_locn_geometry.json +25 -0
  127. data/spec/fixtures/solr_documents/no_spatial.json +37 -19
  128. data/spec/fixtures/solr_documents/oembed.json +34 -17
  129. data/spec/fixtures/solr_documents/princeton-child1.json +45 -28
  130. data/spec/fixtures/solr_documents/princeton-child2.json +45 -28
  131. data/spec/fixtures/solr_documents/princeton-child3.json +45 -28
  132. data/spec/fixtures/solr_documents/princeton-child4.json +45 -28
  133. data/spec/fixtures/solr_documents/princeton-parent.json +46 -23
  134. data/spec/fixtures/solr_documents/public_direct_download.json +48 -21
  135. data/spec/fixtures/solr_documents/public_iiif_princeton.json +49 -24
  136. data/spec/fixtures/solr_documents/public_polygon_mit.json +31 -15
  137. data/spec/fixtures/solr_documents/restricted-line.json +52 -21
  138. data/spec/fixtures/solr_documents/the-related-record.json +27 -0
  139. data/spec/fixtures/solr_documents/tms.json +45 -0
  140. data/spec/fixtures/solr_documents/umn_metro_result1.json +44 -28
  141. data/spec/fixtures/solr_documents/umn_state_result1.json +44 -26
  142. data/spec/fixtures/solr_documents/umn_state_result2.json +45 -24
  143. data/spec/fixtures/solr_documents/uva_slug_colon.json +43 -20
  144. data/spec/{lib → helpers}/geoblacklight/geoblacklight_helper_behavior_spec.rb +1 -0
  145. data/spec/helpers/geoblacklight_helper_spec.rb +30 -4
  146. data/spec/javascripts/geoblacklight_spec.js +0 -6
  147. data/spec/javascripts/metadata_download_button_spec.js +5 -3
  148. data/spec/javascripts/util_spec.js +2 -4
  149. data/spec/lib/geoblacklight/download/geojson_download_spec.rb +1 -1
  150. data/spec/lib/geoblacklight/download/geotiff_download_spec.rb +1 -1
  151. data/spec/lib/geoblacklight/download/hgl_download_spec.rb +1 -1
  152. data/spec/lib/geoblacklight/download/kmz_download_spec.rb +2 -2
  153. data/spec/lib/geoblacklight/download/shapefile_download_spec.rb +1 -1
  154. data/spec/lib/geoblacklight/download_spec.rb +1 -1
  155. data/spec/lib/geoblacklight/geometry_spec.rb +59 -0
  156. data/spec/lib/geoblacklight/item_viewer_spec.rb +12 -0
  157. data/spec/lib/geoblacklight/references_spec.rb +3 -3
  158. data/spec/lib/geoblacklight/relation/ancestors_spec.rb +3 -3
  159. data/spec/lib/geoblacklight/relation/descendants_spec.rb +3 -3
  160. data/spec/lib/geoblacklight/relation/relation_response_spec.rb +32 -17
  161. data/spec/models/concerns/geoblacklight/solr_document_spec.rb +4 -4
  162. data/spec/spec_helper.rb +2 -0
  163. data/spec/support/view_component_capybara_test_helpers.rb +8 -0
  164. data/spec/test_app_templates/Gemfile.extra +1 -0
  165. data/spec/test_app_templates/lib/generators/test_app_generator.rb +0 -7
  166. data/spec/views/catalog/_document_split.html.erb_spec.rb +1 -1
  167. data/spec/views/catalog/_index_split.html.erb_spec.rb +1 -1
  168. data/template.rb +1 -0
  169. metadata +99 -51
  170. data/.circleci/config.yml +0 -256
  171. data/app/views/catalog/_document_action.html.erb +0 -6
  172. data/app/views/catalog/_facet_tag_item.html.erb +0 -3
  173. data/app/views/catalog/_facet_tag_layout.html.erb +0 -2
  174. data/app/views/relation/_ancestors.html.erb +0 -8
  175. data/app/views/relation/_descendants.html.erb +0 -15
  176. data/schema/format-values.md +0 -50
  177. data/schema/geoblacklight-schema-deprecated.md +0 -39
  178. data/schema/geoblacklight-schema.md +0 -323
  179. data/schema/geometry-type-values.md +0 -11
  180. data/schema/references.md +0 -23
  181. data/schema/schema-commentary.md +0 -198
  182. data/schema/subjects.md +0 -41
  183. data/schema/type-values.md +0 -10
  184. data/spec/fixtures/solr_documents/metadata_no_dct_provenance_s.json +0 -30
  185. data/spec/fixtures/solr_documents/metadata_no_layer_geom_type_s.json +0 -17
  186. data/spec/fixtures/solr_documents/metadata_no_solr_geom.json +0 -23
  187. data/spec/javascripts/geoblacklight/viewers/esri/tiled_map_layer_spec.js +0 -12
  188. data/spec/javascripts/spec_helper.js +0 -32
  189. data/spec/lib/geoblacklight/controller_override_spec.rb +0 -2
  190. data/spec/teaspoon_env.rb +0 -214
@@ -1,11 +0,0 @@
1
- ## Geometry Type Vocabulary
2
-
3
- | Label | Icon Link | Definition|
4
- |:----------------------------|:-------------|:---------------------------------------------------------|
5
- |Point|[Icon](https://github.com/geoblacklight/geoblacklight-icons/blob/master/graphics/point.svg)|Geospatial dataset made up of pairs of x,y coordinates|
6
- |Line|[Icon](https://github.com/geoblacklight/geoblacklight-icons/blob/master/graphics/line.svg)|Geospatial dataset made up of straight or curved connected x,y coordinates|
7
- |Polygon|[Icon](https://github.com/geoblacklight/geoblacklight-icons/blob/master/graphics/polygon.svg)|Geospatial dataset made up of closed connections of x,y coordinates|
8
- |Image|[Icon](https://github.com/geoblacklight/geoblacklight-icons/blob/master/graphics/image.svg)|Static born-digital maps and scanned map images|
9
- |Raster|[Icon](https://github.com/geoblacklight/geoblacklight-icons/blob/master/graphics/raster.svg)|Geospatial dataset that is presented as an array of cells comprised of single or multiple bands|
10
- |Mixed|[Icon](https://github.com/geoblacklight/geoblacklight-icons/blob/master/graphics/mixed.svg)|Geospatial dataset with multiple geometry types|
11
- |Table|[Icon](https://github.com/geoblacklight/geoblacklight-icons/blob/master/graphics/table.svg)|Nonspatial dataset as a text file with delimiter separated values|
data/schema/references.md DELETED
@@ -1,23 +0,0 @@
1
- # External References
2
-
3
- The field `dct_references_s` defines external services and references using the [CatInterOp](https://github.com/OSGeo/Cat-Interop) approach. The field value is a serialized JSON array of key/value pairs, with keys representing XML namespace URI's and values the URL.
4
-
5
- Type | Reference URI | Enables in GeoBlacklight
6
- |:---- |:------------- |:------------------------|
7
- Web Mapping Service (WMS) | `http://www.opengis.net/def/serviceType/ogc/wms` | Layer preview, layer preview feature inspection, downloads (vector: KMZ, raster: GeoTIFF)|
8
- Web Feature Service (WFS) | `http://www.opengis.net/def/serviceType/ogc/wfs` | Vector downloads in GeoJSON and Shapefile|
9
- International Image Interoperability Framework (IIIF) Image API | `http://iiif.io/api/image` | Image viewer using [Leaflet-IIIF](https://github.com/mejackreed/Leaflet-IIIF)|
10
- Direct download file | `http://schema.org/downloadUrl` | Direct file download feature|
11
- Data dictionary / documentation download | `http://lccn.loc.gov/sh85035852` | Direct documentation download link|
12
- Full layer description | `http://schema.org/url` | Further descriptive information about layer|
13
- Metadata in ISO 19139 | `http://www.isotc211.org/schemas/2005/gmd/` | Structured metadata in ISO standard expressed as XML|
14
- Metadata in FGDC | `http://www.opengis.net/cat/csw/csdgm` | Structured metadata in FGDC standard expressed as XML|
15
- Metadata in MODS | `http://www.loc.gov/mods/v3` | Structured metadata in MODS format|
16
- Metadata in HTML | `http://www.w3.org/1999/xhtml` | Structured metadata in any standard expressed as HTML|
17
- ArcGIS FeatureLayer | `urn:x-esri:serviceType:ArcGIS#FeatureLayer` | Previewing of ArcGIS FeatureLayer Service|
18
- ArcGIS TiledMapLayer | `urn:x-esri:serviceType:ArcGIS#TiledMapLayer` | Previewing of ArcGIS TiledMapLayer Service|
19
- ArcGIS DynamicMapLayer | `urn:x-esri:serviceType:ArcGIS#DynamicMapLayer` | Previewing of ArcGIS DynamicMapLayer Service|
20
- ArcGIS ImageMapLayer | `urn:x-esri:serviceType:ArcGIS#ImageMapLayer` | Previewing of ArcGIS ImageMapLayer Service|
21
- Harvard Geospatial Library Email Download | `http://schema.org/DownloadAction` | Retrieve a file via email from the Harvard Geospatial Library|
22
- OpenIndexMap | `https://openindexmaps.org` | Provide an index map preview|
23
- oEmbed | `https://oembed.com` | Provide an object that is embeddable through an oEmbed service
@@ -1,198 +0,0 @@
1
- ## Commentary and Suggestions for the GeoBlacklight 1.0 Metadata Schema
2
-
3
- This document elaborates on the application of fields in the
4
- GeoBlacklight 1.0 Metadata Schema with recommendations from the
5
- GeoBlacklight community of practice.
6
-
7
- For a profile of the schema, visit
8
- [here](/schema/geoblacklight-schema.md).
9
-
10
- ### Identifier
11
-
12
- This field is required, but it is not displayed in the interface. It may
13
- be identical to the `layer_slug_s` field, or it may be related to or derived from the `layer_id_s`. This value is
14
- ideally a persistent identifier or permalink (such as a [PURL](https://en.wikipedia.org/wiki/Persistent_uniform_resource_locator) or [Handle](https://en.wikipedia.org/wiki/Handle_System).
15
-
16
- ### Rights
17
-
18
- This field can be set to "Public", which allows users to view and
19
- download an item, or "Restricted", which requires a user to log in to an
20
- authentication service. If there are additional licenses or rights
21
- associated with a resource, administrators will have to create a custom field in the local Solr schema.
22
-
23
- ### Title
24
-
25
- The title is the most prominent metadata field that users see when
26
- browsing or scanning search results. Since many datasets are created
27
- with ambiguous or non-unique titles, it may be worth the effort to
28
- improve or enhance them. The ideal sequence of a title is something akin
29
- to Topic of Layer: Place, Year. Putting the year at the end of a title
30
- produces better search results, since titles are left-anchored.
31
-
32
- ### Provenance
33
-
34
- This field indicates the institution that contributed the resource. The
35
- current community of practice is for this field to hold the name of the
36
- university or institution that has created the GeoBlacklight metadata
37
- record and/or hosts the dataset. Projects are encouraged to submit their
38
- institutional icon to the GeoBlacklight Icons repository to display with the resource.
39
-
40
- ### Schema Version
41
-
42
- "1.0" is the current version of the GeoBlacklight schema.
43
-
44
- ### Slug
45
-
46
- The slug makes up the URL for the resource in GeoBlacklight. If having a
47
- readable slug is desired, it is common to use the form,
48
- institution-keyword1-keyword2 (words or characters are separated by hyphens).
49
-
50
- ### Bounding Box
51
-
52
- The rectangular bounding box is to aid searching with the map interface.
53
- Although accuracy is encouraged, it may not always be necessary to to
54
- have precise bounding coordinates. The field functions to facilitate discovery more than to indicate exact extents.
55
-
56
- ### Solr Year
57
-
58
- This field is a four digit integer that must be inferred by the temporal
59
- coverage or date issued of the resource. If a single record spans multiple years, choose the earliest year for the `solr_year_i` field.
60
-
61
- ### Creator
62
-
63
- The `dc_creator_sm` field is best reserved for instances in which an
64
- individual person has collected, produced, or generated analyses of
65
- data (as opposed to an agency releasing a data product or resource). See also the comments on `dc_publisher_sm`.
66
-
67
- ### Description
68
-
69
- The `dc_description_s` field is the second most prominent value that users see
70
- when search or browsing for items. Although not required, it is strongly
71
- recommended. If the description is minimal or lacking, it can be
72
- improved by concatenating available metadata fields, such as title,
73
- date, format, and place. This is a plain text field, so html code is not
74
- supported here unless the application is customized. It is recommended to assume that discovery happens in multiple contexts (i.e., GeoBlacklight metadata may be integrated into other discovery environments), so descriptions should use complete sentences that signpost what the data object is, even though that is evident within GeoBlacklight itself.
75
-
76
- ### Format
77
-
78
- A long list of formats is available [here.](/schema/format-values.md)
79
- The most important thing to remember about the `dc_format_s` field is that it is
80
- required for Download functionality. Whatever value is in the `dc_format_s`
81
- field will show up as text in the Download widget, unless the application has local customizations.
82
-
83
- ### Language
84
-
85
- This field is intended to indicate the language of the dataset, map,
86
- and/or supporting documentation. The most common practice in this community
87
- is to spell the name language out in English (e.g., "French").
88
-
89
- ### Publisher
90
-
91
- The distinction between `dc_publisher_sm` and `dc_creator_sm` for data
92
- is often vague. Publishers should be the administrative body or
93
- organization that made the original resource available, regardless of
94
- who compiled or produced the data.
95
-
96
- ### Source
97
-
98
- The `dc_source_sm` field exists to indicate parent-child relationships between
99
- records. Common uses include: individual sheets within a map series that
100
- can point to a Shapefile that serves as an index map, individual
101
- Shapefile layers that have been derived from a Geodatabase that can
102
- point to the record for the GeoDatabase, or collection-level and related
103
- individual layer records. See
104
- https://github.com/geoblacklight/geoblacklight/wiki/Using-data-relations-widget for more information.
105
-
106
- ### Subject
107
-
108
- This field is indexed as a facet by default for GeoBlacklight
109
- applications, and it can become unwieldy when aggregating metadata
110
- records from multiple sources. Controlled vocabularies for GIS data have
111
- typically been expressed as ISO Topic Categories and localized thesauri,
112
- while scanned maps are typically described with Library of Congress
113
- Subject Headings. Even within these vocabularies, localized spellings
114
- and abbreviations will result in considerable variations between
115
- institutions. Institutions are encouraged to observe what terms are
116
- commonly in use and, at the very least, strive for internal consistency
117
- with controlled vocabularies and spellings. This facilitates easier
118
- metadata sharing across projects, such as the repositories in
119
- [OpenGeoMetadata](https://github.com/OpenGeoMetadata). Some institutions
120
- choose to create custom keyword fields to hold local, unnormalized
121
- values. It is recommended not to use Library of Congress Subject Headings to indicate the geography or spatial coverage of a dataset; instead, use the `dct_spatial_sm` field for this.
122
-
123
- ### Type
124
-
125
- The `dc_type_s` field is optional, but it can be useful for categorizing
126
- between datasets, scanned maps, and collections. The GeoBlacklight schema
127
- observes the Dublin Core controlled vocabulary for [Type](/schema/type-values.md).
128
-
129
- ### Is Part Of
130
-
131
- The `dct_isPartOf_sm` field is most often used as a way to group
132
- collections arbitrarily. Such groupings often have meaning within local
133
- institutions and can be shorthand for keeping like items
134
- together. For example, the value could mark all of the items in a single
135
- data submission, all of the items that pertain to a class that is
136
- working with GIS data, or all of the items harvested from a specific
137
- Open Data portal.
138
-
139
- ### Date Issued
140
-
141
- Although the `dct_issued_s` field is optional, it is often useful when
142
- a clear Temporal Coverage value is not present. For example, one may
143
- want to preserve a dataset with an uncertain lineage, but there is an
144
- indicator on a data portal on the date of last update.
145
-
146
- ### References
147
-
148
- All of the external links for the resource are added to the `dct_references_s`
149
- field as a serialized JSON array of key/value pairs. For example:
150
-
151
- ```
152
- <field name="dct_references_s">
153
- {
154
- "http://schema.org/url":"http://purl.stanford.edu/bb509gh7292",
155
- "http://schema.org/downloadUrl":"http://stacks.stanford.edu/file/druid:bb509gh7292/data.zip",
156
- "http://www.loc.gov/mods/v3":"http://purl.stanford.edu/bb509gh7292.mods",
157
- "http://www.isotc211.org/schemas/2005/gmd/":"http://opengeometadata.stanford.edu/metadata/edu.stanford.purl/druid:bb509gh7292/iso19139.xml",
158
- "http://www.w3.org/1999/xhtml":"http://opengeometadata.stanford.edu/metadata/edu.stanford.purl/druid:bb509gh7292/default.html",
159
- "http://www.opengis.net/def/serviceType/ogc/wfs":"https://geowebservices-restricted.stanford.edu/geoserver/wfs",
160
- "http://www.opengis.net/def/serviceType/ogc/wms":"https://geowebservices-restricted.stanford.edu/geoserver/wms"
161
- }
162
- </field>
163
- ```
164
- See the [References controlled vocabulary](/schema/references.md) for the URIs of the keys and their recommended uses.
165
-
166
- ### Spatial Coverage
167
-
168
- It is recommended to have at least one place name for each layer that
169
- corresponds to the logical extent of the area of that layer. Adding
170
- additional place names that fall within the layer should be done only if
171
- they are topically relevant to the content of the data. If a long list of
172
- place names is desired in the metadata for search purposes, a customized
173
- hidden field is recommended.
174
-
175
- ### Temporal Coverage
176
-
177
- The `dct_temporal_sm` field is multi-valued, so multiple strings can be used to indicate the time period the resource depicts, when the
178
- data was collected, and/or when the resources was created. Examples include: “1910?”, “1800-1805”, “before 2000”. If a single dataset spans multiple years, one can add each intervening year as a discrete value (e.g., 2007,2008,2009,2010). However, a common convention is to include only the first and last year (e.g., 2007,2010 for a dataset encompassing the span of time between 2007 and 2010).
179
-
180
- ### Geometry Type
181
-
182
- This field helps to differentiate between vector (Point, Line, Polygon),
183
- raster (Raster, Image), nonspatial formats (table), or a combination
184
- (Mixed). If processing metadata from a geospatial web server, this value
185
- may be programmatically determined. However, in many cases, it must be manually
186
- determined. The field is tied to icons for the resource, and provides
187
- the user with visual clues to the item. However, if the element is
188
- troublesome or unnecessary for a particular institution, it can be
189
- omitted. [See the controlled vocabulary.](/schema/geometry-type-values.md)
190
-
191
- ### Layer ID
192
-
193
- The Layer ID is used to point to specific layers within a geospatial web
194
- service. This field is not used for ArcGIS Rest Services.
195
-
196
- ### Modified Date
197
-
198
- This value should indicate when the metadata (not the resource itself) was last modified.
data/schema/subjects.md DELETED
@@ -1,41 +0,0 @@
1
- These charts lists the most common terms and spellings for Subjects
2
- in the GeoBlacklight community.
3
-
4
- ## Geospatial Data
5
-
6
- Common spelling | Related terms
7
- |----|-------------
8
- Farming | Agriculture
9
- Biota | Biology |ISO Topic Category
10
- Boundaries | Administrative and political boundaries; Cities and towns
11
- Climatology, Meteorology, and Atmosphere | Climate
12
- Economy
13
- Elevation
14
- Environment |
15
- Geoscientific Information | Geology
16
- Health ||
17
- Imagery and Base Maps | Imagery; Basemaps; Landcover
18
- Intelligence and Military |
19
- Inland Waters |
20
- Location |
21
- Oceans |
22
- Planning and Cadastral | Property
23
- Society |
24
- Structure | Facilities and Structures
25
- Transportation |
26
- Utilities and Communications | Utilities
27
-
28
- ## Maps
29
-
30
- Common spelling | Related terms
31
- |:---- |:------------- |
32
- Aeronautical charts
33
- Atlases
34
- Bathymetric maps
35
- Cadastral maps
36
- Fire insurance maps
37
- Geological maps
38
- Road maps
39
- Thematic maps
40
- Topographic maps
41
- Tourist maps
@@ -1,10 +0,0 @@
1
- ## GeoBlacklight Type Values
2
-
3
- | Label | Dublin Core Link | Definition|
4
- |:----------------------------|:-------------|:---------------------------------------------------------|
5
- |Dataset|[DCMI Link](http://dublincore.org/documents/dcmi-terms/#dcmitype-Dataset)|Data encoded in a defined structure. Includes geospatial formats as vector, raster, and tabular data.|
6
- |Image|[DCMI Link](http://dublincore.org/documents/dcmi-terms/#dcmitype-Image)|A visual representation other than text. Includes static born-digital maps, scanned map images, and aerial photography.|
7
- |Collection|[DCMI Link](http://dublincore.org/documents/dcmi-terms/#dcmitype-Collection)|An aggregation of resources. Describes a group of resources that may or may not be separately described.|
8
- |Interactive Resource|[DCMI Link](http://dublincore.org/documents/dcmi-terms/#dcmitype-InteractiveResource)|External web applications that require the user to input information to generate a filtered dataset|
9
- |Collection|[DCMI Link](http://dublincore.org/documents/dcmi-terms/#dcmitype-Collection)|An aggregation of resources. Describes a group of resources that may or may not be separately described.|
10
- |Physical Object|[DCMI Link](http://dublincore.org/documents/dcmi-terms/#dcmitype-PhysicalObject)|Non-digital resource, such as a paper map or a globe|
@@ -1,30 +0,0 @@
1
- {
2
- "geoblacklight_version": "1.0",
3
- "layer_modified_dt": "2019-12-16T15:57:35Z",
4
- "layer_slug_s": "99-0001-noProvenance",
5
- "dc_identifier_s": "99-0001-noProvenance",
6
- "dc_title_s": "Social Explorer",
7
- "dct_temporal_sm": [
8
- "1790-present"
9
- ],
10
- "dc_description_s": "Requires creating a free account or logging in through an organization with licensed access. This interactive website includes the entire US census history from 1790 to 2000, the American Community Survey (ACS), and the Religious Congregations and Membership Study (RCMS) from 1980 to 2000? the most complete census available on religion in the U.S. Overall, the site contains 39 billion data points, 200,000 variables, and 15,000 interactive maps",
11
- "dc_subject_sm": [
12
- "Society"
13
- ],
14
- "dc_type_sm": [
15
- "Interactive Resource"
16
- ],
17
- "dc_rights_s": "Restricted",
18
- "layer_geom_type_s": "Table",
19
- "solr_geom": "ENVELOPE(-179.9,-64.4,71.6,-14.8)",
20
- "dc_publisher_sm": [
21
- "Social Explorer"
22
- ],
23
- "dc_creator_sm": [
24
- "Queens College (New York, N.Y.). Department of Sociology"
25
- ],
26
- "dct_spatial_sm": [
27
- "United States"
28
- ],
29
- "dct_references_s": "{\"http://schema.org/url\":\"https://www.socialexplorer.com/\"}"
30
- }
@@ -1,17 +0,0 @@
1
- {
2
- "geoblacklight_version": "1.0",
3
- "layer_modified_dt": "2020-01-17T15:31:30Z",
4
- "layer_slug_s": "05d-03-noGeomType",
5
- "dc_identifier_s": "05d-03-noGeomType",
6
- "dc_title_s": "University of Minnesota Digital Conservancy DRUM",
7
- "dc_description_s": "DRUM is a publicly available collection of digital research data generated by University of Minnesota researchers, students, and staff. Anyone can search and download the data housed in the repository, instantly or by request.",
8
- "dc_publisher_sm": [
9
- "University of Minnesota Digital Conservancy"
10
- ],
11
- "dc_type_sm": [
12
- "Collection"
13
- ],
14
- "dct_provenance_s": "Minnesota",
15
- "dc_rights_s": "Public",
16
- "dct_references_s": "{\"http://schema.org/url\":\"https://conservancy.umn.edu/handle/11299/166578\"}"
17
- }
@@ -1,23 +0,0 @@
1
- {
2
- "geoblacklight_version": "1.0",
3
- "layer_modified_dt": "2020-01-23T14:01:19Z",
4
- "layer_slug_s": "05d-p16022coll246-noGeo",
5
- "dc_identifier_s": "05d-p16022coll246-noGeo",
6
- "dc_title_s": "Ames Library of South Asia Maps",
7
- "dc_description_s": "A collection of maps covering Asia held by the University of Minnesota's Ames Library of South Asia.",
8
- "dc_publisher_sm": [
9
- "University of Minnesota"
10
- ],
11
- "dc_type_sm": [
12
- "Collection"
13
- ],
14
- "layer_geom_type_s": "Table",
15
- "dct_provenance_s": "Minnesota",
16
- "dct_spatial_sm": [
17
- "Asia",
18
- "India",
19
- "Afghanistan"
20
- ],
21
- "dc_rights_s": "Public",
22
- "dct_references_s": "{\"http://schema.org/url\":\"https://umedia.lib.umn.edu/search?facets[collection_name_s][]=Ames+Library+of+South+Asia+Maps\"}"
23
- }
@@ -1,12 +0,0 @@
1
- //= require geoblacklight
2
-
3
- describe('setupInspection', function() {
4
- describe('Inspect attribute on the map', function() {
5
- it('identifyFeatures is defined', function() {
6
- expect(L.esri.identifyFeatures).toBeDefined();
7
- });
8
- it('Tasks is not defined', function() {
9
- expect(L.esri.Tasks).toBeUndefined();
10
- });
11
- });
12
- });
@@ -1,32 +0,0 @@
1
- // Teaspoon includes some support files, but you can use anything from your own support path too.
2
- // require support/jasmine-jquery-1.7.0
3
- // require support/jasmine-jquery-2.0.0
4
- // require support/jasmine-jquery-2.1.0
5
- // require support/sinon
6
- // require support/your-support-file
7
- //
8
- // PhantomJS (Teaspoons default driver) doesn't have support for Function.prototype.bind, which has caused confusion.
9
- // Use this polyfill to avoid the confusion.
10
- //= require support/bind-poly
11
- //
12
- // You can require your own javascript files here. By default this will include everything in application, however you
13
- // may get better load performance if you require the specific files that are being used in the spec that tests them.
14
- //= require application
15
- //
16
- // Deferring execution
17
- // If you're using CommonJS, RequireJS or some other asynchronous library you can defer execution. Call
18
- // Teaspoon.execute() after everything has been loaded. Simple example of a timeout:
19
- //
20
- // Teaspoon.defer = true
21
- // setTimeout(Teaspoon.execute, 1000)
22
- //
23
- // Matching files
24
- // By default Teaspoon will look for files that match _spec.{js,js.coffee,.coffee}. Add a filename_spec.js file in your
25
- // spec path and it'll be included in the default suite automatically. If you want to customize suites, check out the
26
- // configuration in teaspoon_env.rb
27
- //
28
- // Manifest
29
- // If you'd rather require your spec files manually (to control order for instance) you can disable the suite matcher in
30
- // the configuration and use this file as a manifest.
31
- //
32
- // For more information: http://github.com/modeset/teaspoon
@@ -1,2 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'spec_helper'
data/spec/teaspoon_env.rb DELETED
@@ -1,214 +0,0 @@
1
- # frozen_string_literal: true
2
- unless defined?(Rails)
3
- ENV['RAILS_ROOT'] = File.expand_path('../../', __FILE__)
4
- require File.expand_path('../../config/environment', __FILE__)
5
- end
6
-
7
- # Teaspoon doesn't allow you to pass client driver options to the Selenium WebDriver. This monkey patch
8
- # is a temporary fix until this PR is merged: https://github.com/jejacks0n/teaspoon/pull/519.
9
- require 'teaspoon/driver/selenium'
10
-
11
- Teaspoon::Driver::Selenium.class_eval do
12
- def run_specs(runner, url)
13
- driver = ::Selenium::WebDriver.for(
14
- driver_options[:client_driver],
15
- **driver_options[:selenium_options].to_hash.to_options
16
- )
17
- driver.navigate.to(url)
18
-
19
- ::Selenium::WebDriver::Wait.new(driver_options).until do
20
- done = driver.execute_script('return window.Teaspoon && window.Teaspoon.finished')
21
- driver.execute_script('return window.Teaspoon && window.Teaspoon.getMessages() || []').each do |line|
22
- runner.process("#{line}\n")
23
- end
24
- done
25
- end
26
- ensure
27
- driver&.quit
28
- end
29
- end
30
-
31
- Teaspoon.configure do |config|
32
- # Determines where the Teaspoon routes will be mounted. Changing this to "/jasmine" would allow you to browse to
33
- # `http://localhost:3000/jasmine` to run your tests.
34
- config.mount_at = '/teaspoon'
35
-
36
- # Specifies the root where Teaspoon will look for files. If you're testing an engine using a dummy application it can
37
- # be useful to set this to your engines root (e.g. `Teaspoon::Engine.root`).
38
- # Note: Defaults to `Rails.root` if nil.
39
- config.root = Geoblacklight::Engine.root
40
-
41
- # Paths that will be appended to the Rails assets paths
42
- # Note: Relative to `config.root`.
43
- config.asset_paths = ['spec/javascripts', 'spec/javascripts/stylesheets']
44
-
45
- # Fixtures are rendered through a controller, which allows using HAML, RABL/JBuilder, etc. Files in these paths will
46
- # be rendered as fixtures.
47
- config.fixture_paths = ['spec/javascripts/fixtures']
48
-
49
- # SUITES
50
- #
51
- # You can modify the default suite configuration and create new suites here. Suites are isolated from one another.
52
- #
53
- # When defining a suite you can provide a name and a block. If the name is left blank, :default is assumed. You can
54
- # omit various directives and the ones defined in the default suite will be used.
55
- #
56
- # To run a specific suite
57
- # - in the browser: http://localhost/teaspoon/[suite_name]
58
- # - with the rake task: rake teaspoon suite=[suite_name]
59
- # - with the cli: teaspoon --suite=[suite_name]
60
- config.suite do |suite|
61
- # Specify the framework you would like to use. This allows you to select versions, and will do some basic setup for
62
- # you -- which you can override with the directives below. This should be specified first, as it can override other
63
- # directives.
64
- # Note: If no version is specified, the latest is assumed.
65
- #
66
- # Versions: 1.3.1, 2.0.3, 2.1.3, 2.2.0
67
- suite.use_framework :jasmine, '2.2.0'
68
-
69
- # Specify a file matcher as a regular expression and all matching files will be loaded when the suite is run. These
70
- # files need to be within an asset path. You can add asset paths using the `config.asset_paths`.
71
- suite.matcher = '{spec/javascripts,app/assets}/**/*_spec.{js,js.coffee,coffee}'
72
-
73
- # Load additional JS files, but requiring them in your spec helper is the preferred way to do this.
74
- # suite.javascripts = []
75
-
76
- # You can include your own stylesheets if you want to change how Teaspoon looks.
77
- # Note: Spec related CSS can and should be loaded using fixtures.
78
- # suite.stylesheets = ["teaspoon"]
79
-
80
- # This suites spec helper, which can require additional support files. This file is loaded before any of your test
81
- # files are loaded.
82
- suite.helper = 'spec_helper'
83
-
84
- # Partial to be rendered in the head tag of the runner. You can use the provided ones or define your own by creating
85
- # a `_boot.html.erb` in your fixtures path, and adjust the config to `"/boot"` for instance.
86
- #
87
- # Available: boot, boot_require_js
88
- suite.boot_partial = 'boot'
89
-
90
- # Partial to be rendered in the body tag of the runner. You can define your own to create a custom body structure.
91
- suite.body_partial = 'body'
92
-
93
- # Hooks allow you to use `Teaspoon.hook("fixtures")` before, after, or during your spec run. This will make a
94
- # synchronous Ajax request to the server that will call all of the blocks you've defined for that hook name.
95
- # suite.hook :fixtures, &proc{}
96
-
97
- # Determine whether specs loaded into the test harness should be embedded as individual script tags or concatenated
98
- # into a single file. Similar to Rails' asset `debug: true` and `config.assets.debug = true` options. By default,
99
- # Teaspoon expands all assets to provide more valuable stack traces that reference individual source files.
100
- # suite.expand_assets = true
101
- end
102
-
103
- # Example suite. Since we're just filtering to files already within the root test/javascripts, these files will also
104
- # be run in the default suite -- but can be focused into a more specific suite.
105
- # config.suite :targeted do |suite|
106
- # suite.matcher = "spec/javascripts/targeted/*_spec.{js,js.coffee,coffee}"
107
- # end
108
-
109
- # CONSOLE RUNNER SPECIFIC
110
- #
111
- # These configuration directives are applicable only when running via the rake task or command line interface. These
112
- # directives can be overridden using the command line interface arguments or with ENV variables when using the rake
113
- # task.
114
- #
115
- # Command Line Interface:
116
- # teaspoon --driver=phantomjs --server-port=31337 --fail-fast=true --format=junit --suite=my_suite /spec/file_spec.js
117
- #
118
- # Rake:
119
- # teaspoon DRIVER=phantomjs SERVER_PORT=31337 FAIL_FAST=true FORMATTERS=junit suite=my_suite
120
-
121
- # Specify which headless driver to use. Supports PhantomJS and Selenium Webdriver.
122
- #
123
- # Available: :phantomjs, :selenium, :capybara_webkit
124
- # PhantomJS: https://github.com/modeset/teaspoon/wiki/Using-PhantomJS
125
- # Selenium Webdriver: https://github.com/modeset/teaspoon/wiki/Using-Selenium-WebDriver
126
- # Capybara Webkit: https://github.com/modeset/teaspoon/wiki/Using-Capybara-Webkit
127
- config.driver = :selenium
128
- config.driver_options = {
129
- client_driver: :chrome,
130
- selenium_options: {
131
- options: Selenium::WebDriver::Chrome::Options.new(args: ['headless', 'disable-gpu'])
132
- }
133
- }
134
-
135
- # Specify additional options for the driver.
136
- #
137
- # PhantomJS: https://github.com/modeset/teaspoon/wiki/Using-PhantomJS
138
- # Selenium Webdriver: https://github.com/modeset/teaspoon/wiki/Using-Selenium-WebDriver
139
- # Capybara Webkit: https://github.com/modeset/teaspoon/wiki/Using-Capybara-Webkit
140
- # config.driver_options = nil
141
-
142
- # Specify the timeout for the driver. Specs are expected to complete within this time frame or the run will be
143
- # considered a failure. This is to avoid issues that can arise where tests stall.
144
- # config.driver_timeout = 180
145
-
146
- # Specify a server to use with Rack (e.g. thin, mongrel). If nil is provided Rack::Server is used.
147
- # config.server = nil
148
-
149
- # Specify a port to run on a specific port, otherwise Teaspoon will use a random available port.
150
- # config.server_port = nil
151
-
152
- # Timeout for starting the server in seconds. If your server is slow to start you may have to bump this, or you may
153
- # want to lower this if you know it shouldn't take long to start.
154
- # config.server_timeout = 20
155
-
156
- # Force Teaspoon to fail immediately after a failing suite. Can be useful to make Teaspoon fail early if you have
157
- # several suites, but in environments like CI this may not be desirable.
158
- # config.fail_fast = true
159
-
160
- # Specify the formatters to use when outputting the results.
161
- # Note: Output files can be specified by using `"junit>/path/to/output.xml"`.
162
- #
163
- # Available: :dot, :clean, :documentation, :json, :junit, :pride, :rspec_html, :snowday, :swayze_or_oprah, :tap, :tap_y, :teamcity
164
- # config.formatters = [:dot]
165
-
166
- # Specify if you want color output from the formatters.
167
- # config.color = true
168
-
169
- # Teaspoon pipes all console[log/debug/error] to $stdout. This is useful to catch places where you've forgotten to
170
- # remove them, but in verbose applications this may not be desirable.
171
- # config.suppress_log = false
172
-
173
- # COVERAGE REPORTS / THRESHOLD ASSERTIONS
174
- #
175
- # Coverage reports requires Istanbul (https://github.com/gotwarlost/istanbul) to add instrumentation to your code and
176
- # display coverage statistics.
177
- #
178
- # Coverage configurations are similar to suites. You can define several, and use different ones under different
179
- # conditions.
180
- #
181
- # To run with a specific coverage configuration
182
- # - with the rake task: rake teaspoon USE_COVERAGE=[coverage_name]
183
- # - with the cli: teaspoon --coverage=[coverage_name]
184
-
185
- # Specify that you always want a coverage configuration to be used. Otherwise, specify that you want coverage
186
- # on the CLI.
187
- # Set this to "true" or the name of your coverage config.
188
- # config.use_coverage = nil
189
-
190
- # You can have multiple coverage configs by passing a name to config.coverage.
191
- # e.g. config.coverage :ci do |coverage|
192
- # The default coverage config name is :default.
193
- config.coverage do |coverage|
194
- # Which coverage reports Istanbul should generate. Correlates directly to what Istanbul supports.
195
- #
196
- # Available: text-summary, text, html, lcov, lcovonly, cobertura, teamcity
197
- # coverage.reports = ["text-summary", "html"]
198
-
199
- # The path that the coverage should be written to - when there's an artifact to write to disk.
200
- # Note: Relative to `config.root`.
201
- # coverage.output_path = "coverage"
202
-
203
- # Assets to be ignored when generating coverage reports. Accepts an array of filenames or regular expressions. The
204
- # default excludes assets from vendor, gems and support libraries.
205
- # coverage.ignore = [%r{/lib/ruby/gems/}, %r{/vendor/assets/}, %r{/support/}, %r{/(.+)_helper.}]
206
-
207
- # Various thresholds requirements can be defined, and those thresholds will be checked at the end of a run. If any
208
- # aren't met the run will fail with a message. Thresholds can be defined as a percentage (0-100), or nil.
209
- # coverage.statements = nil
210
- # coverage.functions = nil
211
- # coverage.branches = nil
212
- # coverage.lines = nil
213
- end
214
- end