From bd36f762ca9f2da73517da4016d782b22f0d8224 Mon Sep 17 00:00:00 2001 From: acouch Date: Wed, 6 Mar 2019 15:15:00 -0500 Subject: [PATCH] Initial commit --- .gitignore | 23 + LICENSE | 21 + README.md | 0 api/data.json | 1 + api/dataset.json | 1 + api/dataset/afghanistan-election-dist.json | 1 + api/dataset/crime-data-for-the-ten-mo.json | 1 + api/dataset/florida-bike-lanes.json | 1 + api/dataset/gold-prices-in-london-195.json | 1 + api/dataset/london-deprivation-index.json | 1 + api/dataset/state-workforce-by-genera.json | 1 + api/dataset/us-national-foreclosure-s.json | 1 + api/dataset/us-tobacco-usage-statisti.json | 1 + api/dataset/varicella-chickenpox-inci.json | 1 + api/dataset/wisconsin-polling-places.json | 1 + api/distribution.json | 1 + .../1-2012-foreclosures-by-st.json | 1 + api/distribution/district-names.json | 1 + .../english-indices-of-depriv.json | 1 + api/distribution/florida-bike-lanes.json | 1 + api/distribution/madison-polling-places.json | 1 + .../property-crime-rates-for-.json | 1 + .../property-crime-statistics.json | 1 + api/distribution/retirements-2011-2015.json | 1 + .../retirements-eligible-vs-a.json | 1 + api/distribution/table-of-gold-prices.json | 1 + .../tobacco-taxation-by-state.json | 1 + api/distribution/us-adult-smoking-rate.json | 1 + .../varicella-incidence-rates.json | 1 + .../varicella-mortality-by-ag.json | 1 + .../violent-crime-data-for-th.json | 1 + .../violent-crime-statistics-.json | 1 + .../workforce-by-generation-2.json | 1 + api/keyword.json | 1 + api/keyword/country-afghanistan.json | 1 + api/keyword/crime.json | 1 + api/keyword/demographics.json | 1 + api/keyword/economy.json | 1 + api/keyword/election.json | 1 + api/keyword/health.json | 1 + api/keyword/no-keyword-provided.json | 1 + api/keyword/politics.json | 1 + api/keyword/price.json | 1 + api/keyword/public-safety.json | 1 + api/keyword/socioeconomic.json | 1 + api/keyword/spatial-data.json | 1 + api/keyword/time-series.json | 1 + api/keyword/transparency.json | 1 + api/keyword/united-kingdom.json | 1 + api/keyword/workforce.json | 1 + api/license.json | 1 + api/organization.json | 1 + .../advisory-council-for-infe.json | 1 + .../committee-on-internationa.json | 1 + api/organization/demogetdkancom.json | 1 + .../state-economic-council-co.json | 1 + api/organization/state-economic-council.json | 1 + api/routes.json | 1 + api/schema.json | 1 + api/search-index.json | 1 + api/sitemap.json | 1 + api/swagger.json | 1 + api/theme.json | 1 + api/theme/city-planning.json | 1 + api/theme/finance-and-budgeting.json | 1 + api/theme/health-care.json | 1 + api/theme/public-safety.json | 1 + api/theme/transportation.json | 1 + package.json | 52 + public/favicon.ico | Bin 0 -> 3870 bytes public/index.html | 41 + public/manifest.json | 15 + src/Add.js | 62 + src/App.js | 71 + src/Datasets.js | 64 + src/Detail.js | 52 + src/EditDataset.js | 48 + src/Groups.js | 59 + src/Home.js | 55 + src/Preview.js | 57 + src/Publish.js | 78 + src/Schema.js | 57 + src/api | 1 + src/assets/css/custom.css | 111 + src/assets/css/fileupload.css | 112 + src/assets/fonts/ionicons.eot | Bin 0 -> 120724 bytes src/assets/fonts/ionicons.svg | 2230 +++++++++++++++++ src/assets/fonts/ionicons.ttf | Bin 0 -> 188508 bytes src/assets/fonts/ionicons.woff | Bin 0 -> 67904 bytes src/assets/images/analytics-mock.png | Bin 0 -> 43067 bytes src/assets/images/datopian-logo.png | Bin 0 -> 104573 bytes src/assets/images/logo.svg | 52 + src/components/FileUpload/index.js | 29 + src/components/Footer/index.js | 40 + src/components/Header/SiteName.js | 27 + src/components/Header/Wrapper.js | 10 + src/components/Header/index.js | 23 + src/components/Pager/index.js | 75 + src/components/SchemaTable/formats.json | 17 + src/components/SchemaTable/index.js | 181 ++ src/components/Sidebar/Wrapper.js | 9 + src/components/Sidebar/index.js | 46 + src/context/DatasetContext.js | 28 + src/context/FileContext.js | 241 ++ src/context/GroupContext.js | 31 + src/context/cast/any.js | 10 + src/context/cast/array.js | 28 + src/context/cast/boolean.js | 34 + src/context/cast/config.js | 26 + src/context/cast/date.js | 48 + src/context/cast/datetime.js | 48 + src/context/cast/duration.js | 31 + src/context/cast/geojson.js | 51 + src/context/cast/geojson.json | 208 ++ src/context/cast/index.js | 34 + src/context/cast/integer.js | 29 + src/context/cast/number.js | 43 + src/context/cast/object.js | 28 + src/context/cast/string.js | 38 + src/context/cast/table-schema.json | 1560 ++++++++++++ src/context/cast/time.js | 48 + src/context/cast/topojson.json | 199 ++ src/context/cast/year.js | 36 + src/context/cast/yearmonth.js | 40 + src/context/validate.js | 63 + src/index.js | 8 + src/schemas/simple/UISchema.json | 7 + src/schemas/simple/dataset.json | 33 + 128 files changed, 6733 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 api/data.json create mode 100644 api/dataset.json create mode 100644 api/dataset/afghanistan-election-dist.json create mode 100644 api/dataset/crime-data-for-the-ten-mo.json create mode 100644 api/dataset/florida-bike-lanes.json create mode 100644 api/dataset/gold-prices-in-london-195.json create mode 100644 api/dataset/london-deprivation-index.json create mode 100644 api/dataset/state-workforce-by-genera.json create mode 100644 api/dataset/us-national-foreclosure-s.json create mode 100644 api/dataset/us-tobacco-usage-statisti.json create mode 100644 api/dataset/varicella-chickenpox-inci.json create mode 100644 api/dataset/wisconsin-polling-places.json create mode 100644 api/distribution.json create mode 100644 api/distribution/1-2012-foreclosures-by-st.json create mode 100644 api/distribution/district-names.json create mode 100644 api/distribution/english-indices-of-depriv.json create mode 100644 api/distribution/florida-bike-lanes.json create mode 100644 api/distribution/madison-polling-places.json create mode 100644 api/distribution/property-crime-rates-for-.json create mode 100644 api/distribution/property-crime-statistics.json create mode 100644 api/distribution/retirements-2011-2015.json create mode 100644 api/distribution/retirements-eligible-vs-a.json create mode 100644 api/distribution/table-of-gold-prices.json create mode 100644 api/distribution/tobacco-taxation-by-state.json create mode 100644 api/distribution/us-adult-smoking-rate.json create mode 100644 api/distribution/varicella-incidence-rates.json create mode 100644 api/distribution/varicella-mortality-by-ag.json create mode 100644 api/distribution/violent-crime-data-for-th.json create mode 100644 api/distribution/violent-crime-statistics-.json create mode 100644 api/distribution/workforce-by-generation-2.json create mode 100644 api/keyword.json create mode 100644 api/keyword/country-afghanistan.json create mode 100644 api/keyword/crime.json create mode 100644 api/keyword/demographics.json create mode 100644 api/keyword/economy.json create mode 100644 api/keyword/election.json create mode 100644 api/keyword/health.json create mode 100644 api/keyword/no-keyword-provided.json create mode 100644 api/keyword/politics.json create mode 100644 api/keyword/price.json create mode 100644 api/keyword/public-safety.json create mode 100644 api/keyword/socioeconomic.json create mode 100644 api/keyword/spatial-data.json create mode 100644 api/keyword/time-series.json create mode 100644 api/keyword/transparency.json create mode 100644 api/keyword/united-kingdom.json create mode 100644 api/keyword/workforce.json create mode 100644 api/license.json create mode 100644 api/organization.json create mode 100644 api/organization/advisory-council-for-infe.json create mode 100644 api/organization/committee-on-internationa.json create mode 100644 api/organization/demogetdkancom.json create mode 100644 api/organization/state-economic-council-co.json create mode 100644 api/organization/state-economic-council.json create mode 100644 api/routes.json create mode 100644 api/schema.json create mode 100644 api/search-index.json create mode 100644 api/sitemap.json create mode 100644 api/swagger.json create mode 100644 api/theme.json create mode 100644 api/theme/city-planning.json create mode 100644 api/theme/finance-and-budgeting.json create mode 100644 api/theme/health-care.json create mode 100644 api/theme/public-safety.json create mode 100644 api/theme/transportation.json create mode 100644 package.json create mode 100644 public/favicon.ico create mode 100644 public/index.html create mode 100644 public/manifest.json create mode 100644 src/Add.js create mode 100644 src/App.js create mode 100644 src/Datasets.js create mode 100644 src/Detail.js create mode 100644 src/EditDataset.js create mode 100644 src/Groups.js create mode 100644 src/Home.js create mode 100644 src/Preview.js create mode 100644 src/Publish.js create mode 100644 src/Schema.js create mode 120000 src/api create mode 100644 src/assets/css/custom.css create mode 100644 src/assets/css/fileupload.css create mode 100644 src/assets/fonts/ionicons.eot create mode 100644 src/assets/fonts/ionicons.svg create mode 100644 src/assets/fonts/ionicons.ttf create mode 100644 src/assets/fonts/ionicons.woff create mode 100644 src/assets/images/analytics-mock.png create mode 100644 src/assets/images/datopian-logo.png create mode 100644 src/assets/images/logo.svg create mode 100644 src/components/FileUpload/index.js create mode 100644 src/components/Footer/index.js create mode 100644 src/components/Header/SiteName.js create mode 100644 src/components/Header/Wrapper.js create mode 100644 src/components/Header/index.js create mode 100644 src/components/Pager/index.js create mode 100644 src/components/SchemaTable/formats.json create mode 100644 src/components/SchemaTable/index.js create mode 100644 src/components/Sidebar/Wrapper.js create mode 100644 src/components/Sidebar/index.js create mode 100644 src/context/DatasetContext.js create mode 100644 src/context/FileContext.js create mode 100644 src/context/GroupContext.js create mode 100644 src/context/cast/any.js create mode 100644 src/context/cast/array.js create mode 100644 src/context/cast/boolean.js create mode 100644 src/context/cast/config.js create mode 100644 src/context/cast/date.js create mode 100644 src/context/cast/datetime.js create mode 100644 src/context/cast/duration.js create mode 100644 src/context/cast/geojson.js create mode 100644 src/context/cast/geojson.json create mode 100644 src/context/cast/index.js create mode 100644 src/context/cast/integer.js create mode 100644 src/context/cast/number.js create mode 100644 src/context/cast/object.js create mode 100644 src/context/cast/string.js create mode 100644 src/context/cast/table-schema.json create mode 100644 src/context/cast/time.js create mode 100644 src/context/cast/topojson.json create mode 100644 src/context/cast/year.js create mode 100644 src/context/cast/yearmonth.js create mode 100644 src/context/validate.js create mode 100644 src/index.js create mode 100644 src/schemas/simple/UISchema.json create mode 100644 src/schemas/simple/dataset.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..80d5299 --- /dev/null +++ b/.gitignore @@ -0,0 +1,23 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +#production +/build + +# misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..b8b7806 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 Datopian + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/api/data.json b/api/data.json new file mode 100644 index 0000000..61bb6d2 --- /dev/null +++ b/api/data.json @@ -0,0 +1 @@ +{"@context":"https://project-open-data.cio.gov/v1.1/schema/catalog.jsonld","@id":"http://demo.getdkan.com/data.json","@type":"dcat:Catalog","conformsTo":"https://project-open-data.cio.gov/v1.1/schema","describedBy":"https://project-open-data.cio.gov/v1.1/schema/catalog.json","dataset":[{"@type":"dcat:Dataset","accessLevel":"public","contactPoint":{"fn":"Gray, Stefanie","hasEmail":"mailto:datademo@example.com"},"description":"

This data created by the National Democratic Institute (NDI) in partnership with Development Seed, a Washington, D.C.-based online communications consultancy, is designed to make data from the August 20, 2009, Afghanistan presidential election accessible and transparent. We have provided this csv file as there is no download for the whole dataset. There are many more files on the website.

\n","distribution":[{"@type":"dcat:Distribution","downloadURL":"http://demo.getdkan.com/sites/default/files/district_centerpoints_0.csv","mediaType":"text/csv","format":"csv","description":"

You can see this data plotted on a map, by clicking on 'Map' below. Individual data records can be seen by clicking on each point.

\n","title":"District Names","interra":{"id":"district-names","source":"dkandemo"},"identifier":"f8d6eeda-a0ca-4a0f-9bfd-7955cdbae92d","created":"2017-11-17","modified":"2017-11-17"}],"identifier":"c9e2d352-e24c-4051-9158-f48127aa5692","issued":"2012-10-30","keyword":[{"created":"2017-11-17T21:51:13.596Z","title":"country-afghanistan","modified":"2017-11-17T21:51:13.596Z","identifier":"country-afghanistan","interra":{"id":"country-afghanistan"}},{"created":"2017-11-17T21:51:13.597Z","title":"election","modified":"2017-11-17T21:51:13.597Z","identifier":"election","interra":{"id":"election"}},{"created":"2017-11-17T21:51:13.598Z","title":"politics","modified":"2017-11-17T21:51:13.598Z","identifier":"politics","interra":{"id":"politics"}},{"created":"2017-11-17T21:51:13.598Z","title":"transparency","modified":"2017-11-17T21:51:13.598Z","identifier":"transparency","interra":{"id":"transparency"}}],"landingPage":"http://demo.getdkan.com/dataset/afghanistan-election-districts","license":"http://opendefinition.org/licenses/odc-by/","modified":"2017-11-17","publisher":{"@type":"org:Organization","name":"Committee on International Affairs","interra":{"id":"committee-on-internationa","source":"dkandemo"},"identifier":"3b611ac7-17a1-48ee-a4e7-4fd08d9af3f7","created":"2017-11-17","modified":"2017-11-17"},"spatial":"POLYGON ((60.8642578125 29.878755346038, 61.787109375 30.977609093349, 61.7431640625 31.391157522825, 60.7763671875 31.653381399664, 60.8642578125 32.361403315275, 60.556640625 33.137551192346, 60.908203125 33.578014746144, 60.5126953125 33.614619292334, 60.5126953125 34.307143856288, 60.8642578125 34.343436068483, 61.3037109375 35.603718740697, 62.666015625 35.353216101238, 64.5556640625 36.421282443649, 64.86328125 37.195330582801, 65.654296875 37.195330582801, 65.654296875 37.474858084971, 67.9833984375 37.055177106661, 68.7744140625 37.265309955619, 69.345703125 37.125286284967, 69.697265625 37.683820326694, 70.3125 37.683820326694, 70.3125 38.065392351332, 71.0595703125 38.582526159353, 71.279296875 37.78808138412, 71.7626953125 37.926867601481, 71.4990234375 37.405073750177, 71.630859375 36.738884124394, 73.3447265625 37.474858084971, 73.7841796875 37.474858084971, 73.7841796875 37.265309955619, 74.7509765625 37.335224359306, 74.9267578125 37.160316546737, 74.1357421875 36.809284702059, 72.9931640625 36.949891786813, 71.54296875 36.315125147481, 71.2353515625 36.066862132579, 71.5869140625 35.460669951495, 71.54296875 34.813803317113, 71.103515625 34.560859367084, 71.1474609375 34.08906131585, 70.3125 33.979808728725, 69.873046875 33.979808728725, 70.2685546875 33.321348526699, 69.345703125 32.916485347314, 69.2578125 32.324275588877, 69.1259765625 31.802892586707, 68.7744140625 31.578535426473, 68.0712890625 31.802892586707, 67.67578125 31.615965936476, 67.8515625 31.353636941501, 67.4560546875 31.278550858947, 67.0166015625 31.278550858947, 66.4892578125 30.939924331023, 66.2255859375 30.334953881989, 66.357421875 29.91685223307, 65.0390625 29.535229562948, 64.248046875 29.611670115197, 64.2041015625 29.420460341013, 63.4130859375 29.458731185355, 62.6220703125 29.420460341013))","title":"Afghanistan Election Districts","interra":{"id":"afghanistan-election-dist","source":"dkandemo"}},{"@type":"dcat:Dataset","accessLevel":"public","accrualPeriodicity":"R/P1Y","contactPoint":{"fn":"Gray, Stefanie","hasEmail":"mailto:datademo@example.com"},"description":"

Source: FBI Uniform Crime Report, 2014 (https://www.fbi.gov/about-us/cjis/ucr/ucr)

\n

Data is split into two categories:

\n

Violent Crime: Includes aggravated assault, murder, rape and robbery.
Property Crime: Includes arson, burglary, larceny-theft and motor vehicle theft.

\n

Top 10 Most Populous U.S. Cities:

\n
    \n
  1. New York, NY
  2. \n
  3. Los Angeles, CA
  4. \n
  5. Chicago, IL
  6. \n
  7. Houston, TX
  8. \n
  9. Philadelphia, PA
  10. \n
  11. Las Vegas, NV
  12. \n
  13. Phoenix, AZ
  14. \n
  15. San Antonio, TX
  16. \n
  17. San Diego, TX
  18. \n
  19. Dallas, TX
  20. \n
\n

Related Data Dashboard: Crime in America's Top 10 Most Populous Cities

\n","distribution":[{"@type":"dcat:Distribution","downloadURL":"http://demo.getdkan.com/sites/default/files/ViolentCrimeRates.csv","mediaType":"text/csv","format":"csv","description":"

Source: FBI Uniform Crime Report, 2014 (https://www.fbi.gov/about-us/cjis/ucr/ucr)

\n

Includes information on the frequency of violent crimes in general, murder and non-negligent manslaughter, aggravated assault, rape and robbery. All crime rates are per 100,000 people.

\n","title":"Violent Crime Data for the Ten Most Populous Cities in the U.S.","interra":{"id":"violent-crime-data-for-th","source":"dkandemo"},"identifier":"b5bee926-93b8-47b4-b325-f31bb2510426","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"http://demo.getdkan.com/sites/default/files/PropertyCrimesByCity_3.csv","mediaType":"text/csv","format":"csv","title":"Property Crime Statistics by City","interra":{"id":"property-crime-statistics","source":"dkandemo"},"identifier":"c25cb14b-c662-4426-8002-c71174257dfb","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"http://demo.getdkan.com/sites/default/files/PropertyCrimeRates_1.csv","mediaType":"text/csv","format":"csv","description":"

Source: FBI Uniform Crime Report, 2014 (https://www.fbi.gov/about-us/cjis/ucr/ucr)

\n","title":"Property Crime Rates for 10 Most Populous US Cities (2015)","interra":{"id":"property-crime-rates-for-","source":"dkandemo"},"identifier":"7df5eafa-1c27-42a0-9b90-7d20b3fef736","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"http://demo.getdkan.com/sites/default/files/NumbersByCity.csv","mediaType":"text/csv","format":"csv","title":"Violent Crime Statistics by City ","interra":{"id":"violent-crime-statistics-","source":"dkandemo"},"identifier":"c1989976-c5c4-4cd8-9702-a0c76db4c58c","created":"2017-11-17","modified":"2017-11-17"}],"identifier":"d460252e-d42c-474a-9ea9-5287b1d595f6","issued":"2016-04-20","keyword":[{"created":"2017-11-17T21:51:13.542Z","title":"crime","modified":"2017-11-17T21:51:13.542Z","identifier":"crime","interra":{"id":"crime"}},{"created":"2017-11-17T21:51:13.543Z","title":"public safety","modified":"2017-11-17T21:51:13.543Z","identifier":"public-safety","interra":{"id":"public-safety"}}],"landingPage":"http://demo.getdkan.com/dataset/crime-data-ten-most-populous-cities-us","license":"http://opendefinition.org/licenses/odc-odbl/","modified":"2017-11-17","publisher":{"@type":"org:Organization","name":"demo.getdkan.com","interra":{"id":"demogetdkancom","source":"dkandemo"},"identifier":"3a326e8b-0aa0-497c-9f2b-c7d0bd083fc6","created":"2017-11-17","modified":"2017-11-17"},"spatial":"POLYGON ((-129.7265625 24.046463999667, -129.7265625 51.835777520452, -65.390625 51.835777520452, -65.390625 24.046463999667))","temporal":"2014-01-01T05:00:00+00:00/2014-01-01T05:00:00+00:00","theme":[{"created":"2017-11-17T21:51:13.545Z","title":"Public Safety","modified":"2017-11-17T21:51:13.545Z","identifier":"public-safety","icon":"safety","interra":{"id":"public-safety"}}],"title":"Crime Data for the Ten Most Populous Cities in the U.S.","interra":{"id":"crime-data-for-the-ten-mo","source":"dkandemo"}},{"@type":"dcat:Dataset","accessLevel":"public","accrualPeriodicity":"R/P1Y","contactPoint":{"fn":"admin","hasEmail":"mailto:noemailprovided@usa.gov"},"description":"

Data on bike lanes in Florida.

\n","distribution":[{"@type":"dcat:Distribution","downloadURL":"http://demo.getdkan.com/sites/default/files/Bike_Lane.csv","mediaType":"text/csv","format":"csv","title":"Florida Bike Lanes","interra":{"id":"florida-bike-lanes","source":"dkandemo"},"identifier":"bfcd3357-1e14-4ab0-bf9c-5a64bdcc623a","created":"2017-11-17","modified":"2017-11-17"}],"identifier":"cedcd327-4e5d-43f9-8eb1-c11850fa7c55","issued":"2016-06-22","landingPage":"http://demo.getdkan.com/dataset/florida-bike-lanes","license":"http://opendefinition.org/licenses/odc-odbl/","modified":"2017-11-17","publisher":{"@type":"org:Organization","name":"demo.getdkan.com","interra":{"id":"demogetdkancom","source":"dkandemo"},"identifier":"3a326e8b-0aa0-497c-9f2b-c7d0bd083fc6","created":"2017-11-17","modified":"2017-11-17"},"theme":[{"created":"2017-11-17T21:51:13.508Z","title":"Transportation","modified":"2017-11-17T21:51:13.508Z","identifier":"transportation","icon":"transport","interra":{"id":"transportation"}},{"created":"2017-11-17T21:51:13.509Z","title":"City Planning","modified":"2017-11-17T21:51:13.509Z","identifier":"city-planning","icon":"building-12","interra":{"id":"city-planning"}}],"title":"Florida Bike Lanes ","keyword":[{"created":"2017-11-17T21:51:13.503Z","title":"No keyword provided","modified":"2017-11-17T21:51:13.503Z","identifier":"no-keyword-provided","interra":{"id":"no-keyword-provided"}}],"interra":{"id":"florida-bike-lanes","source":"dkandemo"}},{"@type":"dcat:Dataset","accessLevel":"public","contactPoint":{"fn":"Gray, Stefanie","hasEmail":"mailto:datademo@example.com"},"description":"

Monthly gold prices (USD) in London from Bundesbank.

\n

General: 1 ounce of fine gold = 31.1034768g.

\n

Method of calculation:

\n\n

License: PDDL (Source indicates no restrictions on data).

\n","distribution":[{"@type":"dcat:Distribution","downloadURL":"http://demo.getdkan.com/sites/default/files/data_0.csv","mediaType":"text/csv","format":"csv","description":"

CSV file extracted and cleaned from source excel.

\n

Click on Graph button under Preview and plot date (x-axis) against price (y-axis) to see a line graph. Hovering over a point gives you the value of that data entry.

\n","title":"Table of Gold Prices","interra":{"id":"table-of-gold-prices","source":"dkandemo"},"identifier":"b9ed31f7-a4f2-4e98-98b3-fd28d3d97540","created":"2017-11-17","modified":"2017-11-17"}],"identifier":"5dc1cfcf-8028-476c-a020-f58ec6dd621c","issued":"2013-02-10","keyword":[{"created":"2017-11-17T21:51:13.589Z","title":"economy","modified":"2017-11-17T21:51:13.589Z","identifier":"economy","interra":{"id":"economy"}},{"created":"2017-11-17T21:51:13.591Z","title":"price","modified":"2017-11-17T21:51:13.591Z","identifier":"price","interra":{"id":"price"}},{"created":"2017-11-17T21:51:13.591Z","title":"time-series","modified":"2017-11-17T21:51:13.591Z","identifier":"time-series","interra":{"id":"time-series"}}],"landingPage":"http://demo.getdkan.com/dataset/gold-prices-london-1950-2008-monthly","license":"http://opendefinition.org/licenses/odc-pddl/","modified":"2017-11-17","publisher":{"@type":"org:Organization","name":"demo.getdkan.com","interra":{"id":"demogetdkancom","source":"dkandemo"},"identifier":"3a326e8b-0aa0-497c-9f2b-c7d0bd083fc6","created":"2017-11-17","modified":"2017-11-17"},"spatial":"POLYGON ((-0.56854248046875 51.253320526331, -0.56854248046875 51.725326868065, 0.3076171875 51.725326868065, 0.3076171875 51.253320526331))","temporal":"1950-01-01T05:00:00+00:00/1950-01-01T05:00:00+00:00","theme":[{"created":"2017-11-17T21:51:13.592Z","title":"Finance and Budgeting","modified":"2017-11-17T21:51:13.592Z","identifier":"finance-and-budgeting","icon":"budget","interra":{"id":"finance-and-budgeting"}}],"title":"Gold Prices in London 1950-2008 (Monthly)","interra":{"id":"gold-prices-in-london-195","source":"dkandemo"}},{"@type":"dcat:Dataset","accessLevel":"public","accrualPeriodicity":"R/P1Y","contactPoint":{"fn":"Gray, Stefanie","hasEmail":"mailto:datademo@example.com"},"description":"

Deprivation is measured across seven different areas or domains - income, employment, health, education, living environment, crime and barriers to services using a wide range of indicators, and the methods used show how each area compares with other areas across England using a combination of all these indicators.

\n

As stated by The Guardian, \"the data is based on a close analysis of the UK government's Indices of Multiple Deprivation - which measures relative poverty across England – by Alasdair Rae at the University of Sheffield.\" (Source)

\n

Source: http://data.london.gov.uk/dataset/indices-of-deprivation-2015

\n

Related Data Story: London Income Analysis

\n","distribution":[{"@type":"dcat:Distribution","downloadURL":"http://demo.getdkan.com/sites/default/files/IMD-MAPS.zip","mediaType":"application/zip","format":"zip","title":"English Indices of Deprivation 2010","interra":{"id":"english-indices-of-depriv","source":"dkandemo"},"identifier":"554f79c0-6911-4af7-8879-7f0a63fae186","created":"2017-11-17","modified":"2017-11-17"}],"identifier":"fb3525f2-d32a-451e-8869-906ed41f7695","issued":"2016-04-21","keyword":[{"created":"2017-11-17T21:51:13.565Z","title":"demographics","modified":"2017-11-17T21:51:13.565Z","identifier":"demographics","interra":{"id":"demographics"}},{"created":"2017-11-17T21:51:13.589Z","title":"economy","modified":"2017-11-17T21:51:13.589Z","identifier":"economy","interra":{"id":"economy"}},{"created":"2017-11-17T21:51:13.530Z","title":"spatial data","modified":"2017-11-17T21:51:13.530Z","identifier":"spatial-data","interra":{"id":"spatial-data"}},{"created":"2017-11-17T21:51:13.531Z","title":"United Kingdom","modified":"2017-11-17T21:51:13.531Z","identifier":"united-kingdom","interra":{"id":"united-kingdom"}}],"landingPage":"http://demo.getdkan.com/dataset/london-deprivation-index","license":"http://opendefinition.org/licenses/odc-odbl/","modified":"2017-11-17","publisher":{"@type":"org:Organization","name":"State Economic Council, Committee on International Affairs","interra":{"id":"state-economic-council-co","source":"dkandemo"},"identifier":"3590d6cd-dd24-4347-9d98-c8d5583e566d","created":"2017-11-17","modified":"2017-11-17"},"references":["http://www.lfpress.com/2016/05/13/expert-panel-says-londons-living-wage-is-1553h-londoners-need-30284-to-meet-basic-needs"],"spatial":"POLYGON ((-1.1178588867187 51.08282186161, -1.1178588867187 51.859531509855, 1.1178588867187 51.859531509855, 1.1178588867187 51.08282186161))","theme":[{"created":"2017-11-17T21:51:13.592Z","title":"Finance and Budgeting","modified":"2017-11-17T21:51:13.592Z","identifier":"finance-and-budgeting","icon":"budget","interra":{"id":"finance-and-budgeting"}}],"title":"London Deprivation Index","interra":{"id":"london-deprivation-index","source":"dkandemo"}},{"@type":"dcat:Dataset","accessLevel":"public","contactPoint":{"fn":"Stefanie Gray","hasEmail":"mailto:stefanie@example.com"},"description":"

Information about the state workforce, broken down into four generational cohorts.

\n

Note: This dataset has been given a vague name because it is anonymized demo data, not actual state data.

\n","distribution":[{"@type":"dcat:Distribution","downloadURL":"http://demo.getdkan.com/sites/default/files/GenChart_0_0.csv","mediaType":"text/csv","format":"csv","description":"

Population of state employees broken down into Gen X, Gen Y, Baby Boomers and Over 65+.

\n","title":"Workforce By Generation (2011-2015)","interra":{"id":"workforce-by-generation-2","source":"dkandemo"},"identifier":"51e860de-401f-40ca-921a-1e6b498b8505","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"http://demo.getdkan.com/sites/default/files/retirements_0.csv","mediaType":"text/csv","format":"csv","description":"

Total number of employees who retired from the state workforce, 2011-2015.

\n","title":"Retirements (2011 - 2015)","interra":{"id":"retirements-2011-2015","source":"dkandemo"},"identifier":"7b04f63a-9cc9-4566-a04b-c8c30fb2def4","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"http://demo.getdkan.com/sites/default/files/2015EligibleVsActual.csv","mediaType":"text/csv","format":"csv","description":"

This data, ranging from fiscal year 2011 to fiscal year 2015, depicts the percentage of the workforce that is eligible to retire compared to the percentage of the workforce who actually retired.

\n","title":"Retirements: Eligible vs. Actual","interra":{"id":"retirements-eligible-vs-a","source":"dkandemo"},"identifier":"813a7529-49d7-40be-ad97-dbd3abec1967","created":"2017-11-17","modified":"2017-11-17"}],"identifier":"95f8eac4-fd1f-4b35-8472-5c87e9425dfa","issued":"2016-04-11","keyword":[{"created":"2017-11-17T21:51:13.565Z","title":"demographics","modified":"2017-11-17T21:51:13.565Z","identifier":"demographics","interra":{"id":"demographics"}},{"created":"2017-11-17T21:51:13.558Z","title":"socioeconomic","modified":"2017-11-17T21:51:13.558Z","identifier":"socioeconomic","interra":{"id":"socioeconomic"}},{"created":"2017-11-17T21:51:13.559Z","title":"workforce","modified":"2017-11-17T21:51:13.559Z","identifier":"workforce","interra":{"id":"workforce"}}],"landingPage":"http://demo.getdkan.com/dataset/state-workforce-generation-2011-2015","license":"http://opendefinition.org/licenses/gfdl/","modified":"2017-11-17","publisher":{"@type":"org:Organization","name":"State Economic Council","interra":{"id":"state-economic-council","source":"dkandemo"},"identifier":"d48ea7d8-ef73-4d59-894a-327822b803db","created":"2017-11-17","modified":"2017-11-17"},"temporal":"2011-01-01T05:00:00+00:00/2011-01-01T05:00:00+00:00","title":"State Workforce by Generation (2011-2015)","interra":{"id":"state-workforce-by-genera","source":"dkandemo"}},{"@type":"dcat:Dataset","accessLevel":"public","accrualPeriodicity":"R/P1Y","contactPoint":{"fn":"Gray, Stefanie","hasEmail":"mailto:datademo@example.com"},"description":"

County data: http://www.npr.org/templates/story/story.php?storyId=111494514

\n

State data: http://statehealthfacts.org/comparetable.jsp?ind=649&cat=1

\n","distribution":[{"@type":"dcat:Distribution","downloadURL":"http://demo.getdkan.com/sites/default/files/us_foreclosures_jan_2012_by_state_0.csv","mediaType":"text/csv","format":"csv","description":"

US National Foreclosure Statistics - By State - January 2012

\n","title":"1-2012-Foreclosures-by-State","interra":{"id":"1-2012-foreclosures-by-st","source":"dkandemo"},"identifier":"eb8f7a37-8e9f-4799-ba75-8e1abafb18c6","created":"2017-11-17","modified":"2017-11-17"}],"identifier":"74c06c81-9fe0-439c-aba9-cd5c980a6df4","issued":"2013-02-10","keyword":[{"created":"2017-11-17T21:51:13.589Z","title":"economy","modified":"2017-11-17T21:51:13.589Z","identifier":"economy","interra":{"id":"economy"}},{"created":"2017-11-17T21:51:13.598Z","title":"politics","modified":"2017-11-17T21:51:13.598Z","identifier":"politics","interra":{"id":"politics"}},{"created":"2017-11-17T21:51:13.598Z","title":"transparency","modified":"2017-11-17T21:51:13.598Z","identifier":"transparency","interra":{"id":"transparency"}}],"landingPage":"http://demo.getdkan.com/dataset/us-national-foreclosure-statistics-january-2012","license":"http://opendefinition.org/licenses/cc-zero/","modified":"2017-11-17","publisher":{"@type":"org:Organization","name":"demo.getdkan.com","interra":{"id":"demogetdkancom","source":"dkandemo"},"identifier":"3a326e8b-0aa0-497c-9f2b-c7d0bd083fc6","created":"2017-11-17","modified":"2017-11-17"},"spatial":"POLYGON ((-126.9140625 24.046463999667, -126.9140625 50.625073063414, -65.56640625 50.625073063414, -65.56640625 24.046463999667))","temporal":"2012-01-01T05:00:00+00:00/2012-01-01T05:00:00+00:00","title":"US National Foreclosure Statistics January 2012","interra":{"id":"us-national-foreclosure-s","source":"dkandemo"}},{"@type":"dcat:Dataset","accessLevel":"public","accrualPeriodicity":"R/P1Y","contactPoint":{"fn":"CDC INFO","hasEmail":"mailto:cdcinfo@cdc.gov"},"description":"

Statistics on U.S. smoking rates and tobacco taxation rates for all fifty states.

\n

Source: Centers for Disease Control and Prevention, 2015
http://www.cdc.gov/tobacco/data_statistics/state_data/

\n

Related Data Story: State-Level Policies Reduce Smoking Rates Nationwide

\n","distribution":[{"@type":"dcat:Distribution","downloadURL":"http://demo.getdkan.com/sites/default/files/TobaccoTaxes2016_2_1.csv","mediaType":"text/csv","format":"csv","description":"

Source: The Campaign for Tobacco-Free Kids, April 2016: https://www.tobaccofreekids.org/research/factsheets/pdf/0097.pdf

\n","title":"Tobacco Taxation by State as of April 2016","interra":{"id":"tobacco-taxation-by-state","source":"dkandemo"},"identifier":"3b60d94a-21f0-4a4f-a99c-e234c8ec00b5","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"http://demo.getdkan.com/sites/default/files/CDCSmokingRates.csv","mediaType":"text/csv","format":"csv","description":"

Source: Centers for Disease Control and Prevention, 2015

\n","title":"U.S. Adult Smoking Rate","interra":{"id":"us-adult-smoking-rate","source":"dkandemo"},"identifier":"5eb31ded-2bb6-460f-bc39-f09f158219e7","created":"2017-11-17","modified":"2017-11-17"}],"identifier":"1f2042ad-c513-4fcf-a933-cae6c6fd35e6","issued":"2016-04-10","keyword":[{"created":"2017-11-17T21:51:13.565Z","title":"demographics","modified":"2017-11-17T21:51:13.565Z","identifier":"demographics","interra":{"id":"demographics"}},{"created":"2017-11-17T21:51:13.573Z","title":"health","modified":"2017-11-17T21:51:13.573Z","identifier":"health","interra":{"id":"health"}}],"landingPage":"http://demo.getdkan.com/dataset/us-tobacco-usage-statistics","license":"http://opendefinition.org/licenses/cc-by/","modified":"2017-11-17","publisher":{"@type":"org:Organization","name":"Advisory Council for Infectious Disease","interra":{"id":"advisory-council-for-infe","source":"dkandemo"},"identifier":"77df7dc5-7645-49de-bb0e-63e9c71a02d0","created":"2017-11-17","modified":"2017-11-17"},"spatial":"POLYGON ((-127.705078125 24.206889622398, -127.705078125 50.625073063414, -63.193359375 50.625073063414, -63.193359375 24.206889622398))","theme":[{"created":"2017-11-17T21:51:13.574Z","title":"Health Care","modified":"2017-11-17T21:51:13.574Z","identifier":"health-care","icon":"healthcare","interra":{"id":"health-care"}}],"title":"U.S. Tobacco Usage Statistics","interra":{"id":"us-tobacco-usage-statisti","source":"dkandemo"}},{"@type":"dcat:Dataset","accessLevel":"public","contactPoint":{"fn":"CDC INFO","hasEmail":"mailto:cdcinfo@cdc.gov"},"description":"

Centers for Disease Control and Prevention data regarding varicella (chickenpox) virus incidence and mortality rates.

\n

Source: https://data.cdc.gov/NNDSS/NNDSS-Table-II-Varicella-to-West-Nile-virus-d...

\n

Related Data Story: An End to Chickenpox: The Varicella Vaccine's Success Story

\n","distribution":[{"@type":"dcat:Distribution","downloadURL":"http://demo.getdkan.com/sites/default/files/varicelladeaths1970_1994.csv","mediaType":"text/csv","format":"csv","description":"

Source: Centers for Disease Control and Prevention in Atlanta, Georgia. “Varicella Mortality: Trends before Vaccine Licensure in the United States, 1970–1994” published August 2000 in the Journal of Infectious Diseases.

\n","title":"Varicella Mortality by Age Group, 1970-1994","interra":{"id":"varicella-mortality-by-ag","source":"dkandemo"},"identifier":"4c008779-109f-4048-a0bf-3f97c73c0bc7","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"http://demo.getdkan.com/sites/default/files/varicelladeaths1970_1994.csv","mediaType":"text/csv","format":"csv","description":"

Source: Centers for Disease Control and Prevention in Atlanta, Georgia. “Varicella Mortality: Trends before Vaccine Licensure in the United States, 1970–1994” published August 2000 in the Journal of Infectious Diseases.

\n","title":"Varicella Mortality by Age Group, 1970-1994","interra":{"id":"varicella-mortality-by-ag","source":"dkandemo"},"identifier":"4c008779-109f-4048-a0bf-3f97c73c0bc7","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"http://demo.getdkan.com/sites/default/files/varicellaincidencerates_0.csv","mediaType":"text/csv","format":"csv","description":"

Source: \"Impact of Vaccination on the Epidemiology of Varicella: 1995–2009\" published in the journal Pediatrics in August 2011.

\n","title":"Varicella Incidence Rates After Vaccine Introduced in U.S., 1995-2009","interra":{"id":"varicella-incidence-rates","source":"dkandemo"},"identifier":"f6d3e11d-c960-4a25-8b4e-e8098fed2401","created":"2017-11-17","modified":"2017-11-17"}],"identifier":"e1f2ebcd-ee23-454f-87b5-df0306658418","issued":"2016-04-06","keyword":[{"created":"2017-11-17T21:51:13.573Z","title":"health","modified":"2017-11-17T21:51:13.573Z","identifier":"health","interra":{"id":"health"}}],"landingPage":"http://demo.getdkan.com/dataset/varicella-chickenpox-incidence-and-mortality-and-after-vaccine","license":"http://opendefinition.org/licenses/cc-by-sa/","modified":"2017-11-17","publisher":{"@type":"org:Organization","name":"Advisory Council for Infectious Disease","interra":{"id":"advisory-council-for-infe","source":"dkandemo"},"identifier":"77df7dc5-7645-49de-bb0e-63e9c71a02d0","created":"2017-11-17","modified":"2017-11-17"},"spatial":"POLYGON ((-128.056640625 24.206889622398, -128.056640625 50.176898122001, -64.775390625 50.176898122001, -64.775390625 24.206889622398))","theme":[{"created":"2017-11-17T21:51:13.574Z","title":"Health Care","modified":"2017-11-17T21:51:13.574Z","identifier":"health-care","icon":"healthcare","interra":{"id":"health-care"}}],"title":"Varicella (Chickenpox) Incidence and Mortality, Before and After the Vaccine","interra":{"id":"varicella-chickenpox-inci","source":"dkandemo"}},{"@type":"dcat:Dataset","accessLevel":"public","contactPoint":{"fn":"Couch, Aaron","hasEmail":"mailto:datademo@example.com"},"description":"

Polling places in the state of Wisconsin.

\n","distribution":[{"@type":"dcat:Distribution","downloadURL":"http://demo.getdkan.com/sites/default/files/Polling_Places_Madison_0.csv","mediaType":"text/csv","format":"csv","description":"

This is a list and map of polling places in Madison, WI.

\n

Original data here:
https://data.cityofmadison.com/Polling-Places/Polling-Places/rtyh-6ucr

\n","title":"Madison Polling Places","interra":{"id":"madison-polling-places","source":"dkandemo"},"identifier":"6f9d3daf-d415-4f70-ba4d-a9e4437d0c2f","created":"2017-11-17","modified":"2017-11-17"}],"identifier":"934400f2-a5dc-4abf-bf16-3f17335888d3","issued":"2013-02-11","keyword":[{"created":"2017-11-17T21:51:13.597Z","title":"election","modified":"2017-11-17T21:51:13.597Z","identifier":"election","interra":{"id":"election"}}],"landingPage":"http://demo.getdkan.com/dataset/wisconsin-polling-places","license":"http://opendefinition.org/licenses/cc-by/","modified":"2017-11-17","publisher":{"@type":"org:Organization","name":"Committee on International Affairs","interra":{"id":"committee-on-internationa","source":"dkandemo"},"identifier":"3b611ac7-17a1-48ee-a4e7-4fd08d9af3f7","created":"2017-11-17","modified":"2017-11-17"},"spatial":"POLYGON ((-90.415429 46.568478, -90.229213 46.508231, -90.119674 46.338446, -89.09001 46.135799, -88.662808 45.987922, -88.531362 46.020784, -88.10416 45.922199, -87.989145 45.796229, -87.781021 45.675736, -87.791975 45.500474, -87.885083 45.363551, -87.649574 45.341643, -87.742682 45.199243, -87.589328 45.095181, -87.627666 44.974688, -87.819359 44.95278, -87.983668 44.722749, -88.043914 44.563917, -87.928898 44.536533, -87.775544 44.640595, -87.611236 44.837764, -87.403112 44.914442, -87.238804 45.166381, -87.03068 45.22115, -87.047111 45.089704, -87.189511 44.969211, -87.468835 44.552964, -87.545512 44.322932, -87.540035 44.158624, -87.644097 44.103854, -87.737205 43.8793, -87.704344 43.687607, -87.791975 43.561637, -87.912467 43.249452, -87.885083 43.002989, -87.76459 42.783912, -87.802929 42.493634, -88.788778 42.493634, -90.639984 42.510065, -90.711184 42.636034, -91.067185 42.75105, -91.143862 42.909881, -91.176724 43.134436, -91.056231 43.254929, -91.204109 43.353514, -91.215062 43.501391, -91.269832 43.616407, -91.242447 43.775238, -91.43414 43.994316, -91.592971 44.032654, -91.877772 44.202439, -91.927065 44.333886, -92.233773 44.443425, -92.337835 44.552964, -92.545959 44.569394, -92.808852 44.750133, -92.737652 45.117088, -92.75956 45.286874, -92.644544 45.440228, -92.770513 45.566198, -92.885529 45.577151, -92.869098 45.719552, -92.639067 45.933153, -92.354266 46.015307, -92.29402 46.075553, -92.29402 46.667063, -92.091373 46.749217, -92.014696 46.705401, -91.790141 46.694447, -91.09457 46.864232, -90.837154 46.95734, -90.749522 46.88614, -90.886446 46.754694, -90.55783 46.584908))","title":"Wisconsin Polling Places","interra":{"id":"wisconsin-polling-places","source":"dkandemo"}}]} \ No newline at end of file diff --git a/api/dataset.json b/api/dataset.json new file mode 100644 index 0000000..a2dd3d5 --- /dev/null +++ b/api/dataset.json @@ -0,0 +1 @@ +[{"@type":"dcat:Dataset","accessLevel":"public","contactPoint":{"fn":"Gray, Stefanie","hasEmail":"mailto:datademo@example.com"},"description":"

This data created by the National Democratic Institute (NDI) in partnership with Development Seed, a Washington, D.C.-based online communications consultancy, is designed to make data from the August 20, 2009, Afghanistan presidential election accessible and transparent. We have provided this csv file as there is no download for the whole dataset. There are many more files on the website.

\n","distribution":[{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/district_centerpoints.csv","mediaType":"text/csv","format":"csv","description":"

You can see this data plotted on a map, by clicking on 'Map' below. Individual data records can be seen by clicking on each point.

\n","title":"District Names","interra":{"id":"district-names","source":"dkandemo"},"schema":{"fields":[{"name":"state","type":"string"},{"name":"total.foreclosures","type":"integer"},{"name":"foreclosure.ratio","type":"integer"}]},"identifier":"f8d6eeda-a0ca-4a0f-9bfd-7955cdbae92d","created":"2017-11-17","modified":"2017-11-17"}],"identifier":"c9e2d352-e24c-4051-9158-f48127aa5692","issued":"2012-10-30","keyword":[{"created":"2017-11-17T21:51:13.596Z","title":"country-afghanistan","modified":"2017-11-17T21:51:13.596Z","identifier":"country-afghanistan","interra":{"id":"country-afghanistan"}},{"created":"2017-11-17T21:51:13.597Z","title":"election","modified":"2017-11-17T21:51:13.597Z","identifier":"election","interra":{"id":"election"}},{"created":"2017-11-17T21:51:13.598Z","title":"politics","modified":"2017-11-17T21:51:13.598Z","identifier":"politics","interra":{"id":"politics"}},{"created":"2017-11-17T21:51:13.598Z","title":"transparency","modified":"2017-11-17T21:51:13.598Z","identifier":"transparency","interra":{"id":"transparency"}}],"landingPage":"http://demo.getdkan.com/dataset/afghanistan-election-districts","license":"http://opendefinition.org/licenses/odc-by/","modified":"2017-11-17","publisher":{"@type":"org:Organization","name":"Committee on International Affairs","description":"The Committee on International Affairs is a working group to identify opportunities to learn from and collaborate with government and organizations across the globe.","image":"http://catalog-demo.interra.io/media/map.png","interra":{"id":"committee-on-internationa","source":"dkandemo"},"identifier":"3b611ac7-17a1-48ee-a4e7-4fd08d9af3f7","created":"2017-11-17","modified":"2017-11-17"},"spatial":"POLYGON ((60.8642578125 29.878755346038, 61.787109375 30.977609093349, 61.7431640625 31.391157522825, 60.7763671875 31.653381399664, 60.8642578125 32.361403315275, 60.556640625 33.137551192346, 60.908203125 33.578014746144, 60.5126953125 33.614619292334, 60.5126953125 34.307143856288, 60.8642578125 34.343436068483, 61.3037109375 35.603718740697, 62.666015625 35.353216101238, 64.5556640625 36.421282443649, 64.86328125 37.195330582801, 65.654296875 37.195330582801, 65.654296875 37.474858084971, 67.9833984375 37.055177106661, 68.7744140625 37.265309955619, 69.345703125 37.125286284967, 69.697265625 37.683820326694, 70.3125 37.683820326694, 70.3125 38.065392351332, 71.0595703125 38.582526159353, 71.279296875 37.78808138412, 71.7626953125 37.926867601481, 71.4990234375 37.405073750177, 71.630859375 36.738884124394, 73.3447265625 37.474858084971, 73.7841796875 37.474858084971, 73.7841796875 37.265309955619, 74.7509765625 37.335224359306, 74.9267578125 37.160316546737, 74.1357421875 36.809284702059, 72.9931640625 36.949891786813, 71.54296875 36.315125147481, 71.2353515625 36.066862132579, 71.5869140625 35.460669951495, 71.54296875 34.813803317113, 71.103515625 34.560859367084, 71.1474609375 34.08906131585, 70.3125 33.979808728725, 69.873046875 33.979808728725, 70.2685546875 33.321348526699, 69.345703125 32.916485347314, 69.2578125 32.324275588877, 69.1259765625 31.802892586707, 68.7744140625 31.578535426473, 68.0712890625 31.802892586707, 67.67578125 31.615965936476, 67.8515625 31.353636941501, 67.4560546875 31.278550858947, 67.0166015625 31.278550858947, 66.4892578125 30.939924331023, 66.2255859375 30.334953881989, 66.357421875 29.91685223307, 65.0390625 29.535229562948, 64.248046875 29.611670115197, 64.2041015625 29.420460341013, 63.4130859375 29.458731185355, 62.6220703125 29.420460341013))","title":"Afghanistan Election Districts","interra":{"id":"afghanistan-election-dist","source":"dkandemo"}},{"@type":"dcat:Dataset","accessLevel":"public","accrualPeriodicity":"R/P1Y","contactPoint":{"fn":"Gray, Stefanie","hasEmail":"mailto:datademo@example.com"},"description":"

Source: FBI Uniform Crime Report, 2014 (https://www.fbi.gov/about-us/cjis/ucr/ucr)

\n

Data is split into two categories:

\n

Violent Crime: Includes aggravated assault, murder, rape and robbery.
Property Crime: Includes arson, burglary, larceny-theft and motor vehicle theft.

\n

Top 10 Most Populous U.S. Cities:

\n
    \n
  1. New York, NY
  2. \n
  3. Los Angeles, CA
  4. \n
  5. Chicago, IL
  6. \n
  7. Houston, TX
  8. \n
  9. Philadelphia, PA
  10. \n
  11. Las Vegas, NV
  12. \n
  13. Phoenix, AZ
  14. \n
  15. San Antonio, TX
  16. \n
  17. San Diego, TX
  18. \n
  19. Dallas, TX
  20. \n
\n

Related Data Dashboard: Crime in America's Top 10 Most Populous Cities

\n","distribution":[{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/ViolentCrimeRates.csv","mediaType":"text/csv","format":"csv","description":"

Source: FBI Uniform Crime Report, 2014 (https://www.fbi.gov/about-us/cjis/ucr/ucr)

\n

Includes information on the frequency of violent crimes in general, murder and non-negligent manslaughter, aggravated assault, rape and robbery. All crime rates are per 100,000 people.

\n","title":"Violent Crime Data for the Ten Most Populous Cities in the U.S.","interra":{"id":"violent-crime-data-for-th","source":"dkandemo"},"identifier":"b5bee926-93b8-47b4-b325-f31bb2510426","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/PropertyCrimesByCity.csv","mediaType":"text/csv","format":"csv","title":"Property Crime Statistics by City","interra":{"id":"property-crime-statistics","source":"dkandemo"},"identifier":"c25cb14b-c662-4426-8002-c71174257dfb","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/PropertyCrimeRates.csv","mediaType":"text/csv","format":"csv","description":"

Source: FBI Uniform Crime Report, 2014 (https://www.fbi.gov/about-us/cjis/ucr/ucr)

\n","title":"Property Crime Rates for 10 Most Populous US Cities (2015)","interra":{"id":"property-crime-rates-for-","source":"dkandemo"},"identifier":"7df5eafa-1c27-42a0-9b90-7d20b3fef736","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/NumbersByCity.csv","mediaType":"text/csv","format":"csv","title":"Violent Crime Statistics by City ","interra":{"id":"violent-crime-statistics-","source":"dkandemo"},"identifier":"c1989976-c5c4-4cd8-9702-a0c76db4c58c","created":"2017-11-17","modified":"2017-11-17"}],"identifier":"d460252e-d42c-474a-9ea9-5287b1d595f6","issued":"2016-04-20","keyword":[{"created":"2017-11-17T21:51:13.542Z","title":"crime","modified":"2017-11-17T21:51:13.542Z","identifier":"crime","interra":{"id":"crime"}},{"created":"2017-11-17T21:51:13.543Z","title":"public safety","modified":"2017-11-17T21:51:13.543Z","identifier":"public-safety","interra":{"id":"public-safety"}}],"landingPage":"http://demo.getdkan.com/dataset/crime-data-ten-most-populous-cities-us","license":"http://opendefinition.org/licenses/odc-odbl/","modified":"2017-11-17","publisher":{"@type":"org:Organization","name":"DKAN Demo Examples","description":"These are examples from the DKAN demo site.","image":"http://catalog-demo.interra.io/media/dkan-logo.svg","interra":{"id":"demogetdkancom","source":"dkandemo"},"identifier":"3a326e8b-0aa0-497c-9f2b-c7d0bd083fc6","created":"2017-11-17","modified":"2017-11-17"},"spatial":"POLYGON ((-129.7265625 24.046463999667, -129.7265625 51.835777520452, -65.390625 51.835777520452, -65.390625 24.046463999667))","temporal":"2014-01-01T05:00:00+00:00/2014-01-01T05:00:00+00:00","theme":[{"created":"2017-11-17T21:51:13.545Z","title":"Public Safety","modified":"2017-11-17T21:51:13.545Z","identifier":"public-safety","icon":"safety","interra":{"id":"public-safety"}}],"title":"Crime Data for the Ten Most Populous Cities in the U.S.","interra":{"id":"crime-data-for-the-ten-mo","source":"dkandemo"}},{"@type":"dcat:Dataset","accessLevel":"public","accrualPeriodicity":"R/P1Y","contactPoint":{"fn":"admin","hasEmail":"mailto:noemailprovided@usa.gov"},"description":"

Data on bike lanes in Florida.

\n","distribution":[{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/Bike_Lane.csv","mediaType":"text/csv","format":"csv","title":"Florida Bike Lanes","interra":{"id":"florida-bike-lanes","source":"dkandemo"},"identifier":"bfcd3357-1e14-4ab0-bf9c-5a64bdcc623a","created":"2017-11-17","modified":"2017-11-17"}],"identifier":"cedcd327-4e5d-43f9-8eb1-c11850fa7c55","issued":"2016-06-22","landingPage":"http://demo.getdkan.com/dataset/florida-bike-lanes","license":"http://opendefinition.org/licenses/odc-odbl/","modified":"2017-11-17","publisher":{"@type":"org:Organization","name":"DKAN Demo Examples","description":"These are examples from the DKAN demo site.","image":"http://catalog-demo.interra.io/media/dkan-logo.svg","interra":{"id":"demogetdkancom","source":"dkandemo"},"identifier":"3a326e8b-0aa0-497c-9f2b-c7d0bd083fc6","created":"2017-11-17","modified":"2017-11-17"},"theme":[{"created":"2017-11-17T21:51:13.508Z","title":"Transportation","modified":"2017-11-17T21:51:13.508Z","identifier":"transportation","icon":"transport","interra":{"id":"transportation"}},{"created":"2017-11-17T21:51:13.509Z","title":"City Planning","modified":"2017-11-17T21:51:13.509Z","identifier":"city-planning","icon":"building-12","interra":{"id":"city-planning"}}],"title":"Florida Bike Lanes ","keyword":[{"created":"2017-11-17T21:51:13.503Z","title":"No keyword provided","modified":"2017-11-17T21:51:13.503Z","identifier":"no-keyword-provided","interra":{"id":"no-keyword-provided"}}],"interra":{"id":"florida-bike-lanes","source":"dkandemo"}},{"@type":"dcat:Dataset","accessLevel":"public","contactPoint":{"fn":"Gray, Stefanie","hasEmail":"mailto:datademo@example.com"},"description":"

Monthly gold prices (USD) in London from Bundesbank.

\n

General: 1 ounce of fine gold = 31.1034768g.

\n

Method of calculation:

\n\n

License: PDDL (Source indicates no restrictions on data).

\n","distribution":[{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/data.csv","mediaType":"text/csv","format":"csv","description":"

CSV file extracted and cleaned from source excel.

\n

Click on Graph button under Preview and plot date (x-axis) against price (y-axis) to see a line graph. Hovering over a point gives you the value of that data entry.

\n","title":"Table of Gold Prices","interra":{"id":"table-of-gold-prices","source":"dkandemo"},"identifier":"b9ed31f7-a4f2-4e98-98b3-fd28d3d97540","created":"2017-11-17","modified":"2017-11-17"}],"identifier":"5dc1cfcf-8028-476c-a020-f58ec6dd621c","issued":"2013-02-10","keyword":[{"created":"2017-11-17T21:51:13.589Z","title":"economy","modified":"2017-11-17T21:51:13.589Z","identifier":"economy","interra":{"id":"economy"}},{"created":"2017-11-17T21:51:13.591Z","title":"price","modified":"2017-11-17T21:51:13.591Z","identifier":"price","interra":{"id":"price"}},{"created":"2017-11-17T21:51:13.591Z","title":"time-series","modified":"2017-11-17T21:51:13.591Z","identifier":"time-series","interra":{"id":"time-series"}}],"landingPage":"http://demo.getdkan.com/dataset/gold-prices-london-1950-2008-monthly","license":"http://opendefinition.org/licenses/odc-pddl/","modified":"2017-11-17","publisher":{"@type":"org:Organization","name":"DKAN Demo Examples","description":"These are examples from the DKAN demo site.","image":"http://catalog-demo.interra.io/media/dkan-logo.svg","interra":{"id":"demogetdkancom","source":"dkandemo"},"identifier":"3a326e8b-0aa0-497c-9f2b-c7d0bd083fc6","created":"2017-11-17","modified":"2017-11-17"},"spatial":"POLYGON ((-0.56854248046875 51.253320526331, -0.56854248046875 51.725326868065, 0.3076171875 51.725326868065, 0.3076171875 51.253320526331))","temporal":"1950-01-01T05:00:00+00:00/1950-01-01T05:00:00+00:00","theme":[{"created":"2017-11-17T21:51:13.592Z","title":"Finance and Budgeting","modified":"2017-11-17T21:51:13.592Z","identifier":"finance-and-budgeting","icon":"budget","interra":{"id":"finance-and-budgeting"}}],"title":"Gold Prices in London 1950-2008 (Monthly)","interra":{"id":"gold-prices-in-london-195","source":"dkandemo"}},{"@type":"dcat:Dataset","accessLevel":"public","accrualPeriodicity":"R/P1Y","contactPoint":{"fn":"Gray, Stefanie","hasEmail":"mailto:datademo@example.com"},"description":"

Deprivation is measured across seven different areas or domains - income, employment, health, education, living environment, crime and barriers to services using a wide range of indicators, and the methods used show how each area compares with other areas across England using a combination of all these indicators.

\n

As stated by The Guardian, \"the data is based on a close analysis of the UK government's Indices of Multiple Deprivation - which measures relative poverty across England – by Alasdair Rae at the University of Sheffield.\" (Source)

\n

Source: http://data.london.gov.uk/dataset/indices-of-deprivation-2015

\n

Related Data Story: London Income Analysis

\n","distribution":[{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/media/IMD-MAPS.zip","mediaType":"application/zip","format":"zip","title":"English Indices of Deprivation 2010","interra":{"id":"english-indices-of-depriv","source":"dkandemo"},"identifier":"554f79c0-6911-4af7-8879-7f0a63fae186","created":"2017-11-17","modified":"2017-11-17"}],"identifier":"fb3525f2-d32a-451e-8869-906ed41f7695","issued":"2016-04-21","keyword":[{"created":"2017-11-17T21:51:13.565Z","title":"demographics","modified":"2017-11-17T21:51:13.565Z","identifier":"demographics","interra":{"id":"demographics"}},{"created":"2017-11-17T21:51:13.589Z","title":"economy","modified":"2017-11-17T21:51:13.589Z","identifier":"economy","interra":{"id":"economy"}},{"created":"2017-11-17T21:51:13.530Z","title":"spatial data","modified":"2017-11-17T21:51:13.530Z","identifier":"spatial-data","interra":{"id":"spatial-data"}},{"created":"2017-11-17T21:51:13.531Z","title":"United Kingdom","modified":"2017-11-17T21:51:13.531Z","identifier":"united-kingdom","interra":{"id":"united-kingdom"}}],"landingPage":"http://demo.getdkan.com/dataset/london-deprivation-index","license":"http://opendefinition.org/licenses/odc-odbl/","modified":"2017-11-17","publisher":{"@type":"org:Organization","name":"State Economic Council","description":"The State Economic Council is responsible for increasing economic development of the state by collecting statistics and performing analysis on the labor force, workforce and employer demographics, generational trends, etc.","image":"http://catalog-demo.interra.io/media/money-saving.png","interra":{"id":"state-economic-council","source":"dkandemo"},"identifier":"d48ea7d8-ef73-4d59-894a-327822b803db","created":"2017-11-17","modified":"2017-11-17"},"references":["http://www.lfpress.com/2016/05/13/expert-panel-says-londons-living-wage-is-1553h-londoners-need-30284-to-meet-basic-needs"],"spatial":"POLYGON ((-1.1178588867187 51.08282186161, -1.1178588867187 51.859531509855, 1.1178588867187 51.859531509855, 1.1178588867187 51.08282186161))","theme":[{"created":"2017-11-17T21:51:13.592Z","title":"Finance and Budgeting","modified":"2017-11-17T21:51:13.592Z","identifier":"finance-and-budgeting","icon":"budget","interra":{"id":"finance-and-budgeting"}}],"title":"London Deprivation Index","interra":{"id":"london-deprivation-index","source":"dkandemo"}},{"@type":"dcat:Dataset","accessLevel":"public","contactPoint":{"fn":"Stefanie Gray","hasEmail":"mailto:stefanie@example.com"},"description":"

Information about the state workforce, broken down into four generational cohorts.

\n

Note: This dataset has been given a vague name because it is anonymized demo data, not actual state data.

\n","distribution":[{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/media/GenChart_0_0.csv","mediaType":"text/csv","format":"csv","description":"

Population of state employees broken down into Gen X, Gen Y, Baby Boomers and Over 65+.

\n","title":"Workforce By Generation (2011-2015)","interra":{"id":"workforce-by-generation-2","source":"dkandemo"},"identifier":"51e860de-401f-40ca-921a-1e6b498b8505","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/retirements_0.csv","mediaType":"text/csv","format":"csv","description":"

Total number of employees who retired from the state workforce, 2011-2015.

\n","title":"Retirements (2011 - 2015)","interra":{"id":"retirements-2011-2015","source":"dkandemo"},"identifier":"7b04f63a-9cc9-4566-a04b-c8c30fb2def4","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/2015EligibleVsActual.csv","mediaType":"text/csv","format":"csv","description":"

This data, ranging from fiscal year 2011 to fiscal year 2015, depicts the percentage of the workforce that is eligible to retire compared to the percentage of the workforce who actually retired.

\n","title":"Retirements: Eligible vs. Actual","interra":{"id":"retirements-eligible-vs-a","source":"dkandemo"},"identifier":"813a7529-49d7-40be-ad97-dbd3abec1967","created":"2017-11-17","modified":"2017-11-17"}],"identifier":"95f8eac4-fd1f-4b35-8472-5c87e9425dfa","issued":"2016-04-11","keyword":[{"created":"2017-11-17T21:51:13.565Z","title":"demographics","modified":"2017-11-17T21:51:13.565Z","identifier":"demographics","interra":{"id":"demographics"}},{"created":"2017-11-17T21:51:13.558Z","title":"socioeconomic","modified":"2017-11-17T21:51:13.558Z","identifier":"socioeconomic","interra":{"id":"socioeconomic"}},{"created":"2017-11-17T21:51:13.559Z","title":"workforce","modified":"2017-11-17T21:51:13.559Z","identifier":"workforce","interra":{"id":"workforce"}}],"landingPage":"http://demo.getdkan.com/dataset/state-workforce-generation-2011-2015","license":"http://opendefinition.org/licenses/gfdl/","modified":"2017-11-17","publisher":{"@type":"org:Organization","name":"State Economic Council","description":"The State Economic Council is responsible for increasing economic development of the state by collecting statistics and performing analysis on the labor force, workforce and employer demographics, generational trends, etc.","image":"http://catalog-demo.interra.io/media/money-saving.png","interra":{"id":"state-economic-council","source":"dkandemo"},"identifier":"d48ea7d8-ef73-4d59-894a-327822b803db","created":"2017-11-17","modified":"2017-11-17"},"temporal":"2011-01-01T05:00:00+00:00/2011-01-01T05:00:00+00:00","title":"State Workforce by Generation (2011-2015)","interra":{"id":"state-workforce-by-genera","source":"dkandemo"}},{"@type":"dcat:Dataset","accessLevel":"public","accrualPeriodicity":"R/P1Y","contactPoint":{"fn":"Gray, Stefanie","hasEmail":"mailto:datademo@example.com"},"description":"

County data: http://www.npr.org/templates/story/story.php?storyId=111494514

\n

State data: http://statehealthfacts.org/comparetable.jsp?ind=649&cat=1

\n","distribution":[{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/us_foreclosures_jan_2012_by_state.csv","mediaType":"text/csv","format":"csv","description":"

US National Foreclosure Statistics - By State - January 2012

\n","title":"1-2012-Foreclosures-by-State","interra":{"id":"1-2012-foreclosures-by-st","source":"dkandemo"},"identifier":"eb8f7a37-8e9f-4799-ba75-8e1abafb18c6","schema":{"fields":[{"name":"lon","type":"number"},{"name":"lat","type":"number"},{"name":"Unit_Type","type":"string"},{"name":"Dist_Name","type":"string"},{"name":"Prov_Name","type":"string"},{"name":"Dari_Dist","type":"string"},{"name":"Dari_Prov","type":"string"},{"name":"Dist_ID","type":"integer"},{"name":"Prov_ID","type":"integer"}]},"created":"2017-11-17","modified":"2017-11-17"}],"identifier":"74c06c81-9fe0-439c-aba9-cd5c980a6df4","issued":"2013-02-10","keyword":[{"created":"2017-11-17T21:51:13.589Z","title":"economy","modified":"2017-11-17T21:51:13.589Z","identifier":"economy","interra":{"id":"economy"}},{"created":"2017-11-17T21:51:13.598Z","title":"politics","modified":"2017-11-17T21:51:13.598Z","identifier":"politics","interra":{"id":"politics"}},{"created":"2017-11-17T21:51:13.598Z","title":"transparency","modified":"2017-11-17T21:51:13.598Z","identifier":"transparency","interra":{"id":"transparency"}}],"landingPage":"http://demo.getdkan.com/dataset/us-national-foreclosure-statistics-january-2012","license":"http://opendefinition.org/licenses/cc-zero/","modified":"2017-11-17","publisher":{"@type":"org:Organization","name":"DKAN Demo Examples","description":"These are examples from the DKAN demo site.","image":"http://catalog-demo.interra.io/media/dkan-logo.svg","interra":{"id":"demogetdkancom","source":"dkandemo"},"identifier":"3a326e8b-0aa0-497c-9f2b-c7d0bd083fc6","created":"2017-11-17","modified":"2017-11-17"},"spatial":"POLYGON ((-126.9140625 24.046463999667, -126.9140625 50.625073063414, -65.56640625 50.625073063414, -65.56640625 24.046463999667))","temporal":"2012-01-01T05:00:00+00:00/2012-01-01T05:00:00+00:00","title":"US National Foreclosure Statistics January 2012","interra":{"id":"us-national-foreclosure-s","source":"dkandemo"}},{"@type":"dcat:Dataset","accessLevel":"public","accrualPeriodicity":"R/P1Y","contactPoint":{"fn":"CDC INFO","hasEmail":"mailto:cdcinfo@cdc.gov"},"description":"

Statistics on U.S. smoking rates and tobacco taxation rates for all fifty states.

\n

Source: Centers for Disease Control and Prevention, 2015
http://www.cdc.gov/tobacco/data_statistics/state_data/

\n

Related Data Story: State-Level Policies Reduce Smoking Rates Nationwide

\n","distribution":[{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/TobaccoTaxes2016.csv","mediaType":"text/csv","format":"csv","description":"

Source: The Campaign for Tobacco-Free Kids, April 2016: https://www.tobaccofreekids.org/research/factsheets/pdf/0097.pdf

\n","title":"Tobacco Taxation by State as of April 2016","interra":{"id":"tobacco-taxation-by-state","source":"dkandemo"},"identifier":"3b60d94a-21f0-4a4f-a99c-e234c8ec00b5","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/CDCSmokingRates.csv","mediaType":"text/csv","format":"csv","description":"

Source: Centers for Disease Control and Prevention, 2015

\n","title":"U.S. Adult Smoking Rate","interra":{"id":"us-adult-smoking-rate","source":"dkandemo"},"identifier":"5eb31ded-2bb6-460f-bc39-f09f158219e7","created":"2017-11-17","modified":"2017-11-17"}],"identifier":"1f2042ad-c513-4fcf-a933-cae6c6fd35e6","issued":"2016-04-10","keyword":[{"created":"2017-11-17T21:51:13.565Z","title":"demographics","modified":"2017-11-17T21:51:13.565Z","identifier":"demographics","interra":{"id":"demographics"}},{"created":"2017-11-17T21:51:13.573Z","title":"health","modified":"2017-11-17T21:51:13.573Z","identifier":"health","interra":{"id":"health"}}],"landingPage":"http://demo.getdkan.com/dataset/us-tobacco-usage-statistics","license":"http://opendefinition.org/licenses/cc-by/","modified":"2017-11-17","publisher":{"@type":"org:Organization","name":"Advisory Council for Infectious Disease","description":"Advisory Council for Infectious Disease is a working group that performs research and prepares reports to inform treatment and prevention programs nationally.","image":"http://catalog-demo.interra.io/media/clipboard.png","interra":{"id":"advisory-council-for-infe","source":"dkandemo"},"identifier":"77df7dc5-7645-49de-bb0e-63e9c71a02d0","created":"2017-11-17","modified":"2017-11-17"},"spatial":"POLYGON ((-127.705078125 24.206889622398, -127.705078125 50.625073063414, -63.193359375 50.625073063414, -63.193359375 24.206889622398))","theme":[{"created":"2017-11-17T21:51:13.574Z","title":"Health Care","modified":"2017-11-17T21:51:13.574Z","identifier":"health-care","icon":"healthcare","interra":{"id":"health-care"}}],"title":"U.S. Tobacco Usage Statistics","interra":{"id":"us-tobacco-usage-statisti","source":"dkandemo"}},{"@type":"dcat:Dataset","accessLevel":"public","contactPoint":{"fn":"CDC INFO","hasEmail":"mailto:cdcinfo@cdc.gov"},"description":"

Centers for Disease Control and Prevention data regarding varicella (chickenpox) virus incidence and mortality rates.

\n

Source: https://data.cdc.gov/NNDSS/NNDSS-Table-II-Varicella-to-West-Nile-virus-d...

\n

Related Data Story: An End to Chickenpox: The Varicella Vaccine's Success Story

\n","distribution":[{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/varicelladeaths1970_1994.csv","mediaType":"text/csv","format":"csv","description":"

Source: Centers for Disease Control and Prevention in Atlanta, Georgia. “Varicella Mortality: Trends before Vaccine Licensure in the United States, 1970–1994” published August 2000 in the Journal of Infectious Diseases.

\n","title":"Varicella Mortality by Age Group, 1970-1994","interra":{"id":"varicella-mortality-by-ag","source":"dkandemo"},"identifier":"4c008779-109f-4048-a0bf-3f97c73c0bc7","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/varicelladeaths1970_1994.csv","mediaType":"text/csv","format":"csv","description":"

Source: Centers for Disease Control and Prevention in Atlanta, Georgia. “Varicella Mortality: Trends before Vaccine Licensure in the United States, 1970–1994” published August 2000 in the Journal of Infectious Diseases.

\n","title":"Varicella Mortality by Age Group, 1970-1994","interra":{"id":"varicella-mortality-by-ag","source":"dkandemo"},"identifier":"4c008779-109f-4048-a0bf-3f97c73c0bc7","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/varicellaincidencerates.csv","mediaType":"text/csv","format":"csv","description":"

Source: \"Impact of Vaccination on the Epidemiology of Varicella: 1995–2009\" published in the journal Pediatrics in August 2011.

\n","title":"Varicella Incidence Rates After Vaccine Introduced in U.S., 1995-2009","interra":{"id":"varicella-incidence-rates","source":"dkandemo"},"identifier":"f6d3e11d-c960-4a25-8b4e-e8098fed2401","created":"2017-11-17","modified":"2017-11-17"}],"identifier":"e1f2ebcd-ee23-454f-87b5-df0306658418","issued":"2016-04-06","keyword":[{"created":"2017-11-17T21:51:13.573Z","title":"health","modified":"2017-11-17T21:51:13.573Z","identifier":"health","interra":{"id":"health"}}],"landingPage":"http://demo.getdkan.com/dataset/varicella-chickenpox-incidence-and-mortality-and-after-vaccine","license":"http://opendefinition.org/licenses/cc-by-sa/","modified":"2017-11-17","publisher":{"@type":"org:Organization","name":"Advisory Council for Infectious Disease","description":"Advisory Council for Infectious Disease is a working group that performs research and prepares reports to inform treatment and prevention programs nationally.","image":"http://catalog-demo.interra.io/media/clipboard.png","interra":{"id":"advisory-council-for-infe","source":"dkandemo"},"identifier":"77df7dc5-7645-49de-bb0e-63e9c71a02d0","created":"2017-11-17","modified":"2017-11-17"},"spatial":"POLYGON ((-128.056640625 24.206889622398, -128.056640625 50.176898122001, -64.775390625 50.176898122001, -64.775390625 24.206889622398))","theme":[{"created":"2017-11-17T21:51:13.574Z","title":"Health Care","modified":"2017-11-17T21:51:13.574Z","identifier":"health-care","icon":"healthcare","interra":{"id":"health-care"}}],"title":"Varicella (Chickenpox) Incidence and Mortality, Before and After the Vaccine","interra":{"id":"varicella-chickenpox-inci","source":"dkandemo"}},{"@type":"dcat:Dataset","accessLevel":"public","contactPoint":{"fn":"Couch, Aaron","hasEmail":"mailto:datademo@example.com"},"description":"

Polling places in the state of Wisconsin.

\n","distribution":[{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/Polling_Places_Madison.csv","mediaType":"text/csv","format":"csv","description":"

This is a list and map of polling places in Madison, WI.

\n

Original data here:
https://data.cityofmadison.com/Polling-Places/Polling-Places/rtyh-6ucr

\n","title":"Madison Polling Places","interra":{"id":"madison-polling-places","source":"dkandemo"},"identifier":"6f9d3daf-d415-4f70-ba4d-a9e4437d0c2f","created":"2017-11-17","modified":"2017-11-17"}],"identifier":"934400f2-a5dc-4abf-bf16-3f17335888d3","issued":"2013-02-11","keyword":[{"created":"2017-11-17T21:51:13.597Z","title":"election","modified":"2017-11-17T21:51:13.597Z","identifier":"election","interra":{"id":"election"}}],"landingPage":"http://demo.getdkan.com/dataset/wisconsin-polling-places","license":"http://opendefinition.org/licenses/cc-by/","modified":"2017-11-17","publisher":{"@type":"org:Organization","name":"Committee on International Affairs","description":"The Committee on International Affairs is a working group to identify opportunities to learn from and collaborate with government and organizations across the globe.","image":"http://catalog-demo.interra.io/media/map.png","interra":{"id":"committee-on-internationa","source":"dkandemo"},"identifier":"3b611ac7-17a1-48ee-a4e7-4fd08d9af3f7","created":"2017-11-17","modified":"2017-11-17"},"spatial":"POLYGON ((-90.415429 46.568478, -90.229213 46.508231, -90.119674 46.338446, -89.09001 46.135799, -88.662808 45.987922, -88.531362 46.020784, -88.10416 45.922199, -87.989145 45.796229, -87.781021 45.675736, -87.791975 45.500474, -87.885083 45.363551, -87.649574 45.341643, -87.742682 45.199243, -87.589328 45.095181, -87.627666 44.974688, -87.819359 44.95278, -87.983668 44.722749, -88.043914 44.563917, -87.928898 44.536533, -87.775544 44.640595, -87.611236 44.837764, -87.403112 44.914442, -87.238804 45.166381, -87.03068 45.22115, -87.047111 45.089704, -87.189511 44.969211, -87.468835 44.552964, -87.545512 44.322932, -87.540035 44.158624, -87.644097 44.103854, -87.737205 43.8793, -87.704344 43.687607, -87.791975 43.561637, -87.912467 43.249452, -87.885083 43.002989, -87.76459 42.783912, -87.802929 42.493634, -88.788778 42.493634, -90.639984 42.510065, -90.711184 42.636034, -91.067185 42.75105, -91.143862 42.909881, -91.176724 43.134436, -91.056231 43.254929, -91.204109 43.353514, -91.215062 43.501391, -91.269832 43.616407, -91.242447 43.775238, -91.43414 43.994316, -91.592971 44.032654, -91.877772 44.202439, -91.927065 44.333886, -92.233773 44.443425, -92.337835 44.552964, -92.545959 44.569394, -92.808852 44.750133, -92.737652 45.117088, -92.75956 45.286874, -92.644544 45.440228, -92.770513 45.566198, -92.885529 45.577151, -92.869098 45.719552, -92.639067 45.933153, -92.354266 46.015307, -92.29402 46.075553, -92.29402 46.667063, -92.091373 46.749217, -92.014696 46.705401, -91.790141 46.694447, -91.09457 46.864232, -90.837154 46.95734, -90.749522 46.88614, -90.886446 46.754694, -90.55783 46.584908))","title":"Wisconsin Polling Places","interra":{"id":"wisconsin-polling-places","source":"dkandemo"}}] \ No newline at end of file diff --git a/api/dataset/afghanistan-election-dist.json b/api/dataset/afghanistan-election-dist.json new file mode 100644 index 0000000..b544e02 --- /dev/null +++ b/api/dataset/afghanistan-election-dist.json @@ -0,0 +1 @@ +{"@type":"dcat:Dataset","accessLevel":"public","contactPoint":{"fn":"Gray, Stefanie","hasEmail":"mailto:datademo@example.com"},"description":"

This data created by the National Democratic Institute (NDI) in partnership with Development Seed, a Washington, D.C.-based online communications consultancy, is designed to make data from the August 20, 2009, Afghanistan presidential election accessible and transparent. We have provided this csv file as there is no download for the whole dataset. There are many more files on the website.

\n","distribution":[{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/district_centerpoints.csv","mediaType":"text/csv","format":"csv","description":"

You can see this data plotted on a map, by clicking on 'Map' below. Individual data records can be seen by clicking on each point.

\n","title":"District Names","interra":{"id":"district-names","source":"dkandemo"},"schema":{"fields":[{"name":"state","type":"string"},{"name":"total.foreclosures","type":"integer"},{"name":"foreclosure.ratio","type":"integer"}]},"identifier":"f8d6eeda-a0ca-4a0f-9bfd-7955cdbae92d","created":"2017-11-17","modified":"2017-11-17"}],"identifier":"c9e2d352-e24c-4051-9158-f48127aa5692","issued":"2012-10-30","keyword":[{"created":"2017-11-17T21:51:13.596Z","title":"country-afghanistan","modified":"2017-11-17T21:51:13.596Z","identifier":"country-afghanistan","interra":{"id":"country-afghanistan"}},{"created":"2017-11-17T21:51:13.597Z","title":"election","modified":"2017-11-17T21:51:13.597Z","identifier":"election","interra":{"id":"election"}},{"created":"2017-11-17T21:51:13.598Z","title":"politics","modified":"2017-11-17T21:51:13.598Z","identifier":"politics","interra":{"id":"politics"}},{"created":"2017-11-17T21:51:13.598Z","title":"transparency","modified":"2017-11-17T21:51:13.598Z","identifier":"transparency","interra":{"id":"transparency"}}],"landingPage":"http://demo.getdkan.com/dataset/afghanistan-election-districts","license":"http://opendefinition.org/licenses/odc-by/","modified":"2017-11-17","publisher":{"@type":"org:Organization","name":"Committee on International Affairs","description":"The Committee on International Affairs is a working group to identify opportunities to learn from and collaborate with government and organizations across the globe.","image":"http://catalog-demo.interra.io/media/map.png","interra":{"id":"committee-on-internationa","source":"dkandemo"},"identifier":"3b611ac7-17a1-48ee-a4e7-4fd08d9af3f7","created":"2017-11-17","modified":"2017-11-17"},"spatial":"POLYGON ((60.8642578125 29.878755346038, 61.787109375 30.977609093349, 61.7431640625 31.391157522825, 60.7763671875 31.653381399664, 60.8642578125 32.361403315275, 60.556640625 33.137551192346, 60.908203125 33.578014746144, 60.5126953125 33.614619292334, 60.5126953125 34.307143856288, 60.8642578125 34.343436068483, 61.3037109375 35.603718740697, 62.666015625 35.353216101238, 64.5556640625 36.421282443649, 64.86328125 37.195330582801, 65.654296875 37.195330582801, 65.654296875 37.474858084971, 67.9833984375 37.055177106661, 68.7744140625 37.265309955619, 69.345703125 37.125286284967, 69.697265625 37.683820326694, 70.3125 37.683820326694, 70.3125 38.065392351332, 71.0595703125 38.582526159353, 71.279296875 37.78808138412, 71.7626953125 37.926867601481, 71.4990234375 37.405073750177, 71.630859375 36.738884124394, 73.3447265625 37.474858084971, 73.7841796875 37.474858084971, 73.7841796875 37.265309955619, 74.7509765625 37.335224359306, 74.9267578125 37.160316546737, 74.1357421875 36.809284702059, 72.9931640625 36.949891786813, 71.54296875 36.315125147481, 71.2353515625 36.066862132579, 71.5869140625 35.460669951495, 71.54296875 34.813803317113, 71.103515625 34.560859367084, 71.1474609375 34.08906131585, 70.3125 33.979808728725, 69.873046875 33.979808728725, 70.2685546875 33.321348526699, 69.345703125 32.916485347314, 69.2578125 32.324275588877, 69.1259765625 31.802892586707, 68.7744140625 31.578535426473, 68.0712890625 31.802892586707, 67.67578125 31.615965936476, 67.8515625 31.353636941501, 67.4560546875 31.278550858947, 67.0166015625 31.278550858947, 66.4892578125 30.939924331023, 66.2255859375 30.334953881989, 66.357421875 29.91685223307, 65.0390625 29.535229562948, 64.248046875 29.611670115197, 64.2041015625 29.420460341013, 63.4130859375 29.458731185355, 62.6220703125 29.420460341013))","title":"Afghanistan Election Districts","interra":{"id":"afghanistan-election-dist","source":"dkandemo"}} diff --git a/api/dataset/crime-data-for-the-ten-mo.json b/api/dataset/crime-data-for-the-ten-mo.json new file mode 100644 index 0000000..0bd65b3 --- /dev/null +++ b/api/dataset/crime-data-for-the-ten-mo.json @@ -0,0 +1 @@ +{"@type":"dcat:Dataset","accessLevel":"public","accrualPeriodicity":"R/P1Y","contactPoint":{"fn":"Gray, Stefanie","hasEmail":"mailto:datademo@example.com"},"description":"

Source: FBI Uniform Crime Report, 2014 (https://www.fbi.gov/about-us/cjis/ucr/ucr)

\n

Data is split into two categories:

\n

Violent Crime: Includes aggravated assault, murder, rape and robbery.
Property Crime: Includes arson, burglary, larceny-theft and motor vehicle theft.

\n

Top 10 Most Populous U.S. Cities:

\n
    \n
  1. New York, NY
  2. \n
  3. Los Angeles, CA
  4. \n
  5. Chicago, IL
  6. \n
  7. Houston, TX
  8. \n
  9. Philadelphia, PA
  10. \n
  11. Las Vegas, NV
  12. \n
  13. Phoenix, AZ
  14. \n
  15. San Antonio, TX
  16. \n
  17. San Diego, TX
  18. \n
  19. Dallas, TX
  20. \n
\n

Related Data Dashboard: Crime in America's Top 10 Most Populous Cities

\n","distribution":[{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/ViolentCrimeRates.csv","mediaType":"text/csv","format":"csv","description":"

Source: FBI Uniform Crime Report, 2014 (https://www.fbi.gov/about-us/cjis/ucr/ucr)

\n

Includes information on the frequency of violent crimes in general, murder and non-negligent manslaughter, aggravated assault, rape and robbery. All crime rates are per 100,000 people.

\n","title":"Violent Crime Data for the Ten Most Populous Cities in the U.S.","interra":{"id":"violent-crime-data-for-th","source":"dkandemo"},"identifier":"b5bee926-93b8-47b4-b325-f31bb2510426","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/PropertyCrimesByCity.csv","mediaType":"text/csv","format":"csv","title":"Property Crime Statistics by City","interra":{"id":"property-crime-statistics","source":"dkandemo"},"identifier":"c25cb14b-c662-4426-8002-c71174257dfb","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/PropertyCrimeRates.csv","mediaType":"text/csv","format":"csv","description":"

Source: FBI Uniform Crime Report, 2014 (https://www.fbi.gov/about-us/cjis/ucr/ucr)

\n","title":"Property Crime Rates for 10 Most Populous US Cities (2015)","interra":{"id":"property-crime-rates-for-","source":"dkandemo"},"identifier":"7df5eafa-1c27-42a0-9b90-7d20b3fef736","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/NumbersByCity.csv","mediaType":"text/csv","format":"csv","title":"Violent Crime Statistics by City ","interra":{"id":"violent-crime-statistics-","source":"dkandemo"},"identifier":"c1989976-c5c4-4cd8-9702-a0c76db4c58c","created":"2017-11-17","modified":"2017-11-17"}],"identifier":"d460252e-d42c-474a-9ea9-5287b1d595f6","issued":"2016-04-20","keyword":[{"created":"2017-11-17T21:51:13.542Z","title":"crime","modified":"2017-11-17T21:51:13.542Z","identifier":"crime","interra":{"id":"crime"}},{"created":"2017-11-17T21:51:13.543Z","title":"public safety","modified":"2017-11-17T21:51:13.543Z","identifier":"public-safety","interra":{"id":"public-safety"}}],"landingPage":"http://demo.getdkan.com/dataset/crime-data-ten-most-populous-cities-us","license":"http://opendefinition.org/licenses/odc-odbl/","modified":"2017-11-17","publisher":{"@type":"org:Organization","name":"DKAN Demo Examples","description":"These are examples from the DKAN demo site.","image":"http://catalog-demo.interra.io/media/dkan-logo.svg","interra":{"id":"demogetdkancom","source":"dkandemo"},"identifier":"3a326e8b-0aa0-497c-9f2b-c7d0bd083fc6","created":"2017-11-17","modified":"2017-11-17"},"spatial":"POLYGON ((-129.7265625 24.046463999667, -129.7265625 51.835777520452, -65.390625 51.835777520452, -65.390625 24.046463999667))","temporal":"2014-01-01T05:00:00+00:00/2014-01-01T05:00:00+00:00","theme":[{"created":"2017-11-17T21:51:13.545Z","title":"Public Safety","modified":"2017-11-17T21:51:13.545Z","identifier":"public-safety","icon":"safety","interra":{"id":"public-safety"}}],"title":"Crime Data for the Ten Most Populous Cities in the U.S.","interra":{"id":"crime-data-for-the-ten-mo","source":"dkandemo"}} diff --git a/api/dataset/florida-bike-lanes.json b/api/dataset/florida-bike-lanes.json new file mode 100644 index 0000000..dead6fc --- /dev/null +++ b/api/dataset/florida-bike-lanes.json @@ -0,0 +1 @@ +{"@type":"dcat:Dataset","accessLevel":"public","accrualPeriodicity":"R/P1Y","contactPoint":{"fn":"admin","hasEmail":"mailto:noemailprovided@usa.gov"},"description":"

Data on bike lanes in Florida.

\n","distribution":[{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/Bike_Lane.csv","mediaType":"text/csv","format":"csv","title":"Florida Bike Lanes","interra":{"id":"florida-bike-lanes","source":"dkandemo"},"identifier":"bfcd3357-1e14-4ab0-bf9c-5a64bdcc623a","created":"2017-11-17","modified":"2017-11-17"}],"identifier":"cedcd327-4e5d-43f9-8eb1-c11850fa7c55","issued":"2016-06-22","landingPage":"http://demo.getdkan.com/dataset/florida-bike-lanes","license":"http://opendefinition.org/licenses/odc-odbl/","modified":"2017-11-17","publisher":{"@type":"org:Organization","name":"DKAN Demo Examples","description":"These are examples from the DKAN demo site.","image":"http://catalog-demo.interra.io/media/dkan-logo.svg","interra":{"id":"demogetdkancom","source":"dkandemo"},"identifier":"3a326e8b-0aa0-497c-9f2b-c7d0bd083fc6","created":"2017-11-17","modified":"2017-11-17"},"theme":[{"created":"2017-11-17T21:51:13.508Z","title":"Transportation","modified":"2017-11-17T21:51:13.508Z","identifier":"transportation","icon":"transport","interra":{"id":"transportation"}},{"created":"2017-11-17T21:51:13.509Z","title":"City Planning","modified":"2017-11-17T21:51:13.509Z","identifier":"city-planning","icon":"building-12","interra":{"id":"city-planning"}}],"title":"Florida Bike Lanes ","keyword":[{"created":"2017-11-17T21:51:13.503Z","title":"No keyword provided","modified":"2017-11-17T21:51:13.503Z","identifier":"no-keyword-provided","interra":{"id":"no-keyword-provided"}}],"interra":{"id":"florida-bike-lanes","source":"dkandemo"}} diff --git a/api/dataset/gold-prices-in-london-195.json b/api/dataset/gold-prices-in-london-195.json new file mode 100644 index 0000000..bf6efcb --- /dev/null +++ b/api/dataset/gold-prices-in-london-195.json @@ -0,0 +1 @@ +{"@type":"dcat:Dataset","accessLevel":"public","contactPoint":{"fn":"Gray, Stefanie","hasEmail":"mailto:datademo@example.com"},"description":"

Monthly gold prices (USD) in London from Bundesbank.

\n

General: 1 ounce of fine gold = 31.1034768g.

\n

Method of calculation:

\n\n

License: PDDL (Source indicates no restrictions on data).

\n","distribution":[{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/data.csv","mediaType":"text/csv","format":"csv","description":"

CSV file extracted and cleaned from source excel.

\n

Click on Graph button under Preview and plot date (x-axis) against price (y-axis) to see a line graph. Hovering over a point gives you the value of that data entry.

\n","title":"Table of Gold Prices","interra":{"id":"table-of-gold-prices","source":"dkandemo"},"identifier":"b9ed31f7-a4f2-4e98-98b3-fd28d3d97540","created":"2017-11-17","modified":"2017-11-17"}],"identifier":"5dc1cfcf-8028-476c-a020-f58ec6dd621c","issued":"2013-02-10","keyword":[{"created":"2017-11-17T21:51:13.589Z","title":"economy","modified":"2017-11-17T21:51:13.589Z","identifier":"economy","interra":{"id":"economy"}},{"created":"2017-11-17T21:51:13.591Z","title":"price","modified":"2017-11-17T21:51:13.591Z","identifier":"price","interra":{"id":"price"}},{"created":"2017-11-17T21:51:13.591Z","title":"time-series","modified":"2017-11-17T21:51:13.591Z","identifier":"time-series","interra":{"id":"time-series"}}],"landingPage":"http://demo.getdkan.com/dataset/gold-prices-london-1950-2008-monthly","license":"http://opendefinition.org/licenses/odc-pddl/","modified":"2017-11-17","publisher":{"@type":"org:Organization","name":"DKAN Demo Examples","description":"These are examples from the DKAN demo site.","image":"http://catalog-demo.interra.io/media/dkan-logo.svg","interra":{"id":"demogetdkancom","source":"dkandemo"},"identifier":"3a326e8b-0aa0-497c-9f2b-c7d0bd083fc6","created":"2017-11-17","modified":"2017-11-17"},"spatial":"POLYGON ((-0.56854248046875 51.253320526331, -0.56854248046875 51.725326868065, 0.3076171875 51.725326868065, 0.3076171875 51.253320526331))","temporal":"1950-01-01T05:00:00+00:00/1950-01-01T05:00:00+00:00","theme":[{"created":"2017-11-17T21:51:13.592Z","title":"Finance and Budgeting","modified":"2017-11-17T21:51:13.592Z","identifier":"finance-and-budgeting","icon":"budget","interra":{"id":"finance-and-budgeting"}}],"title":"Gold Prices in London 1950-2008 (Monthly)","interra":{"id":"gold-prices-in-london-195","source":"dkandemo"}} diff --git a/api/dataset/london-deprivation-index.json b/api/dataset/london-deprivation-index.json new file mode 100644 index 0000000..eccbb28 --- /dev/null +++ b/api/dataset/london-deprivation-index.json @@ -0,0 +1 @@ +{"@type":"dcat:Dataset","accessLevel":"public","accrualPeriodicity":"R/P1Y","contactPoint":{"fn":"Gray, Stefanie","hasEmail":"mailto:datademo@example.com"},"description":"

Deprivation is measured across seven different areas or domains - income, employment, health, education, living environment, crime and barriers to services using a wide range of indicators, and the methods used show how each area compares with other areas across England using a combination of all these indicators.

\n

As stated by The Guardian, \"the data is based on a close analysis of the UK government's Indices of Multiple Deprivation - which measures relative poverty across England – by Alasdair Rae at the University of Sheffield.\" (Source)

\n

Source: http://data.london.gov.uk/dataset/indices-of-deprivation-2015

\n

Related Data Story: London Income Analysis

\n","distribution":[{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/media/IMD-MAPS.zip","mediaType":"application/zip","format":"zip","title":"English Indices of Deprivation 2010","interra":{"id":"english-indices-of-depriv","source":"dkandemo"},"identifier":"554f79c0-6911-4af7-8879-7f0a63fae186","created":"2017-11-17","modified":"2017-11-17"}],"identifier":"fb3525f2-d32a-451e-8869-906ed41f7695","issued":"2016-04-21","keyword":[{"created":"2017-11-17T21:51:13.565Z","title":"demographics","modified":"2017-11-17T21:51:13.565Z","identifier":"demographics","interra":{"id":"demographics"}},{"created":"2017-11-17T21:51:13.589Z","title":"economy","modified":"2017-11-17T21:51:13.589Z","identifier":"economy","interra":{"id":"economy"}},{"created":"2017-11-17T21:51:13.530Z","title":"spatial data","modified":"2017-11-17T21:51:13.530Z","identifier":"spatial-data","interra":{"id":"spatial-data"}},{"created":"2017-11-17T21:51:13.531Z","title":"United Kingdom","modified":"2017-11-17T21:51:13.531Z","identifier":"united-kingdom","interra":{"id":"united-kingdom"}}],"landingPage":"http://demo.getdkan.com/dataset/london-deprivation-index","license":"http://opendefinition.org/licenses/odc-odbl/","modified":"2017-11-17","publisher":{"@type":"org:Organization","name":"State Economic Council","description":"The State Economic Council is responsible for increasing economic development of the state by collecting statistics and performing analysis on the labor force, workforce and employer demographics, generational trends, etc.","image":"http://catalog-demo.interra.io/media/money-saving.png","interra":{"id":"state-economic-council","source":"dkandemo"},"identifier":"d48ea7d8-ef73-4d59-894a-327822b803db","created":"2017-11-17","modified":"2017-11-17"},"references":["http://www.lfpress.com/2016/05/13/expert-panel-says-londons-living-wage-is-1553h-londoners-need-30284-to-meet-basic-needs"],"spatial":"POLYGON ((-1.1178588867187 51.08282186161, -1.1178588867187 51.859531509855, 1.1178588867187 51.859531509855, 1.1178588867187 51.08282186161))","theme":[{"created":"2017-11-17T21:51:13.592Z","title":"Finance and Budgeting","modified":"2017-11-17T21:51:13.592Z","identifier":"finance-and-budgeting","icon":"budget","interra":{"id":"finance-and-budgeting"}}],"title":"London Deprivation Index","interra":{"id":"london-deprivation-index","source":"dkandemo"}} diff --git a/api/dataset/state-workforce-by-genera.json b/api/dataset/state-workforce-by-genera.json new file mode 100644 index 0000000..d45dda2 --- /dev/null +++ b/api/dataset/state-workforce-by-genera.json @@ -0,0 +1 @@ +{"@type":"dcat:Dataset","accessLevel":"public","contactPoint":{"fn":"Stefanie Gray","hasEmail":"mailto:stefanie@example.com"},"description":"

Information about the state workforce, broken down into four generational cohorts.

\n

Note: This dataset has been given a vague name because it is anonymized demo data, not actual state data.

\n","distribution":[{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/media/GenChart_0_0.csv","mediaType":"text/csv","format":"csv","description":"

Population of state employees broken down into Gen X, Gen Y, Baby Boomers and Over 65+.

\n","title":"Workforce By Generation (2011-2015)","interra":{"id":"workforce-by-generation-2","source":"dkandemo"},"identifier":"51e860de-401f-40ca-921a-1e6b498b8505","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/retirements_0.csv","mediaType":"text/csv","format":"csv","description":"

Total number of employees who retired from the state workforce, 2011-2015.

\n","title":"Retirements (2011 - 2015)","interra":{"id":"retirements-2011-2015","source":"dkandemo"},"identifier":"7b04f63a-9cc9-4566-a04b-c8c30fb2def4","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/2015EligibleVsActual.csv","mediaType":"text/csv","format":"csv","description":"

This data, ranging from fiscal year 2011 to fiscal year 2015, depicts the percentage of the workforce that is eligible to retire compared to the percentage of the workforce who actually retired.

\n","title":"Retirements: Eligible vs. Actual","interra":{"id":"retirements-eligible-vs-a","source":"dkandemo"},"identifier":"813a7529-49d7-40be-ad97-dbd3abec1967","created":"2017-11-17","modified":"2017-11-17"}],"identifier":"95f8eac4-fd1f-4b35-8472-5c87e9425dfa","issued":"2016-04-11","keyword":[{"created":"2017-11-17T21:51:13.565Z","title":"demographics","modified":"2017-11-17T21:51:13.565Z","identifier":"demographics","interra":{"id":"demographics"}},{"created":"2017-11-17T21:51:13.558Z","title":"socioeconomic","modified":"2017-11-17T21:51:13.558Z","identifier":"socioeconomic","interra":{"id":"socioeconomic"}},{"created":"2017-11-17T21:51:13.559Z","title":"workforce","modified":"2017-11-17T21:51:13.559Z","identifier":"workforce","interra":{"id":"workforce"}}],"landingPage":"http://demo.getdkan.com/dataset/state-workforce-generation-2011-2015","license":"http://opendefinition.org/licenses/gfdl/","modified":"2017-11-17","publisher":{"@type":"org:Organization","name":"State Economic Council","description":"The State Economic Council is responsible for increasing economic development of the state by collecting statistics and performing analysis on the labor force, workforce and employer demographics, generational trends, etc.","image":"http://catalog-demo.interra.io/media/money-saving.png","interra":{"id":"state-economic-council","source":"dkandemo"},"identifier":"d48ea7d8-ef73-4d59-894a-327822b803db","created":"2017-11-17","modified":"2017-11-17"},"temporal":"2011-01-01T05:00:00+00:00/2011-01-01T05:00:00+00:00","title":"State Workforce by Generation (2011-2015)","interra":{"id":"state-workforce-by-genera","source":"dkandemo"}} diff --git a/api/dataset/us-national-foreclosure-s.json b/api/dataset/us-national-foreclosure-s.json new file mode 100644 index 0000000..136e8db --- /dev/null +++ b/api/dataset/us-national-foreclosure-s.json @@ -0,0 +1 @@ +{"@type":"dcat:Dataset","accessLevel":"public","accrualPeriodicity":"R/P1Y","contactPoint":{"fn":"Gray, Stefanie","hasEmail":"mailto:datademo@example.com"},"description":"

County data: http://www.npr.org/templates/story/story.php?storyId=111494514

\n

State data: http://statehealthfacts.org/comparetable.jsp?ind=649&cat=1

\n","distribution":[{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/us_foreclosures_jan_2012_by_state.csv","mediaType":"text/csv","format":"csv","description":"

US National Foreclosure Statistics - By State - January 2012

\n","title":"1-2012-Foreclosures-by-State","interra":{"id":"1-2012-foreclosures-by-st","source":"dkandemo"},"identifier":"eb8f7a37-8e9f-4799-ba75-8e1abafb18c6","schema":{"fields":[{"name":"lon","type":"number"},{"name":"lat","type":"number"},{"name":"Unit_Type","type":"string"},{"name":"Dist_Name","type":"string"},{"name":"Prov_Name","type":"string"},{"name":"Dari_Dist","type":"string"},{"name":"Dari_Prov","type":"string"},{"name":"Dist_ID","type":"integer"},{"name":"Prov_ID","type":"integer"}]},"created":"2017-11-17","modified":"2017-11-17"}],"identifier":"74c06c81-9fe0-439c-aba9-cd5c980a6df4","issued":"2013-02-10","keyword":[{"created":"2017-11-17T21:51:13.589Z","title":"economy","modified":"2017-11-17T21:51:13.589Z","identifier":"economy","interra":{"id":"economy"}},{"created":"2017-11-17T21:51:13.598Z","title":"politics","modified":"2017-11-17T21:51:13.598Z","identifier":"politics","interra":{"id":"politics"}},{"created":"2017-11-17T21:51:13.598Z","title":"transparency","modified":"2017-11-17T21:51:13.598Z","identifier":"transparency","interra":{"id":"transparency"}}],"landingPage":"http://demo.getdkan.com/dataset/us-national-foreclosure-statistics-january-2012","license":"http://opendefinition.org/licenses/cc-zero/","modified":"2017-11-17","publisher":{"@type":"org:Organization","name":"DKAN Demo Examples","description":"These are examples from the DKAN demo site.","image":"http://catalog-demo.interra.io/media/dkan-logo.svg","interra":{"id":"demogetdkancom","source":"dkandemo"},"identifier":"3a326e8b-0aa0-497c-9f2b-c7d0bd083fc6","created":"2017-11-17","modified":"2017-11-17"},"spatial":"POLYGON ((-126.9140625 24.046463999667, -126.9140625 50.625073063414, -65.56640625 50.625073063414, -65.56640625 24.046463999667))","temporal":"2012-01-01T05:00:00+00:00/2012-01-01T05:00:00+00:00","title":"US National Foreclosure Statistics January 2012","interra":{"id":"us-national-foreclosure-s","source":"dkandemo"}} diff --git a/api/dataset/us-tobacco-usage-statisti.json b/api/dataset/us-tobacco-usage-statisti.json new file mode 100644 index 0000000..be6324d --- /dev/null +++ b/api/dataset/us-tobacco-usage-statisti.json @@ -0,0 +1 @@ +{"@type":"dcat:Dataset","accessLevel":"public","accrualPeriodicity":"R/P1Y","contactPoint":{"fn":"CDC INFO","hasEmail":"mailto:cdcinfo@cdc.gov"},"description":"

Statistics on U.S. smoking rates and tobacco taxation rates for all fifty states.

\n

Source: Centers for Disease Control and Prevention, 2015
http://www.cdc.gov/tobacco/data_statistics/state_data/

\n

Related Data Story: State-Level Policies Reduce Smoking Rates Nationwide

\n","distribution":[{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/TobaccoTaxes2016.csv","mediaType":"text/csv","format":"csv","description":"

Source: The Campaign for Tobacco-Free Kids, April 2016: https://www.tobaccofreekids.org/research/factsheets/pdf/0097.pdf

\n","title":"Tobacco Taxation by State as of April 2016","interra":{"id":"tobacco-taxation-by-state","source":"dkandemo"},"identifier":"3b60d94a-21f0-4a4f-a99c-e234c8ec00b5","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/CDCSmokingRates.csv","mediaType":"text/csv","format":"csv","description":"

Source: Centers for Disease Control and Prevention, 2015

\n","title":"U.S. Adult Smoking Rate","interra":{"id":"us-adult-smoking-rate","source":"dkandemo"},"identifier":"5eb31ded-2bb6-460f-bc39-f09f158219e7","created":"2017-11-17","modified":"2017-11-17"}],"identifier":"1f2042ad-c513-4fcf-a933-cae6c6fd35e6","issued":"2016-04-10","keyword":[{"created":"2017-11-17T21:51:13.565Z","title":"demographics","modified":"2017-11-17T21:51:13.565Z","identifier":"demographics","interra":{"id":"demographics"}},{"created":"2017-11-17T21:51:13.573Z","title":"health","modified":"2017-11-17T21:51:13.573Z","identifier":"health","interra":{"id":"health"}}],"landingPage":"http://demo.getdkan.com/dataset/us-tobacco-usage-statistics","license":"http://opendefinition.org/licenses/cc-by/","modified":"2017-11-17","publisher":{"@type":"org:Organization","name":"Advisory Council for Infectious Disease","description":"Advisory Council for Infectious Disease is a working group that performs research and prepares reports to inform treatment and prevention programs nationally.","image":"http://catalog-demo.interra.io/media/clipboard.png","interra":{"id":"advisory-council-for-infe","source":"dkandemo"},"identifier":"77df7dc5-7645-49de-bb0e-63e9c71a02d0","created":"2017-11-17","modified":"2017-11-17"},"spatial":"POLYGON ((-127.705078125 24.206889622398, -127.705078125 50.625073063414, -63.193359375 50.625073063414, -63.193359375 24.206889622398))","theme":[{"created":"2017-11-17T21:51:13.574Z","title":"Health Care","modified":"2017-11-17T21:51:13.574Z","identifier":"health-care","icon":"healthcare","interra":{"id":"health-care"}}],"title":"U.S. Tobacco Usage Statistics","interra":{"id":"us-tobacco-usage-statisti","source":"dkandemo"}} diff --git a/api/dataset/varicella-chickenpox-inci.json b/api/dataset/varicella-chickenpox-inci.json new file mode 100644 index 0000000..7829b36 --- /dev/null +++ b/api/dataset/varicella-chickenpox-inci.json @@ -0,0 +1 @@ +{"@type":"dcat:Dataset","accessLevel":"public","contactPoint":{"fn":"CDC INFO","hasEmail":"mailto:cdcinfo@cdc.gov"},"description":"

Centers for Disease Control and Prevention data regarding varicella (chickenpox) virus incidence and mortality rates.

\n

Source: https://data.cdc.gov/NNDSS/NNDSS-Table-II-Varicella-to-West-Nile-virus-d...

\n

Related Data Story: An End to Chickenpox: The Varicella Vaccine's Success Story

\n","distribution":[{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/varicelladeaths1970_1994.csv","mediaType":"text/csv","format":"csv","description":"

Source: Centers for Disease Control and Prevention in Atlanta, Georgia. “Varicella Mortality: Trends before Vaccine Licensure in the United States, 1970–1994” published August 2000 in the Journal of Infectious Diseases.

\n","title":"Varicella Mortality by Age Group, 1970-1994","interra":{"id":"varicella-mortality-by-ag","source":"dkandemo"},"identifier":"4c008779-109f-4048-a0bf-3f97c73c0bc7","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/varicelladeaths1970_1994.csv","mediaType":"text/csv","format":"csv","description":"

Source: Centers for Disease Control and Prevention in Atlanta, Georgia. “Varicella Mortality: Trends before Vaccine Licensure in the United States, 1970–1994” published August 2000 in the Journal of Infectious Diseases.

\n","title":"Varicella Mortality by Age Group, 1970-1994","interra":{"id":"varicella-mortality-by-ag","source":"dkandemo"},"identifier":"4c008779-109f-4048-a0bf-3f97c73c0bc7","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/varicellaincidencerates.csv","mediaType":"text/csv","format":"csv","description":"

Source: \"Impact of Vaccination on the Epidemiology of Varicella: 1995–2009\" published in the journal Pediatrics in August 2011.

\n","title":"Varicella Incidence Rates After Vaccine Introduced in U.S., 1995-2009","interra":{"id":"varicella-incidence-rates","source":"dkandemo"},"identifier":"f6d3e11d-c960-4a25-8b4e-e8098fed2401","created":"2017-11-17","modified":"2017-11-17"}],"identifier":"e1f2ebcd-ee23-454f-87b5-df0306658418","issued":"2016-04-06","keyword":[{"created":"2017-11-17T21:51:13.573Z","title":"health","modified":"2017-11-17T21:51:13.573Z","identifier":"health","interra":{"id":"health"}}],"landingPage":"http://demo.getdkan.com/dataset/varicella-chickenpox-incidence-and-mortality-and-after-vaccine","license":"http://opendefinition.org/licenses/cc-by-sa/","modified":"2017-11-17","publisher":{"@type":"org:Organization","name":"Advisory Council for Infectious Disease","description":"Advisory Council for Infectious Disease is a working group that performs research and prepares reports to inform treatment and prevention programs nationally.","image":"http://catalog-demo.interra.io/media/clipboard.png","interra":{"id":"advisory-council-for-infe","source":"dkandemo"},"identifier":"77df7dc5-7645-49de-bb0e-63e9c71a02d0","created":"2017-11-17","modified":"2017-11-17"},"spatial":"POLYGON ((-128.056640625 24.206889622398, -128.056640625 50.176898122001, -64.775390625 50.176898122001, -64.775390625 24.206889622398))","theme":[{"created":"2017-11-17T21:51:13.574Z","title":"Health Care","modified":"2017-11-17T21:51:13.574Z","identifier":"health-care","icon":"healthcare","interra":{"id":"health-care"}}],"title":"Varicella (Chickenpox) Incidence and Mortality, Before and After the Vaccine","interra":{"id":"varicella-chickenpox-inci","source":"dkandemo"}} diff --git a/api/dataset/wisconsin-polling-places.json b/api/dataset/wisconsin-polling-places.json new file mode 100644 index 0000000..d2faaa0 --- /dev/null +++ b/api/dataset/wisconsin-polling-places.json @@ -0,0 +1 @@ +{"@type":"dcat:Dataset","accessLevel":"public","contactPoint":{"fn":"Couch, Aaron","hasEmail":"mailto:datademo@example.com"},"description":"

Polling places in the state of Wisconsin.

\n","distribution":[{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/Polling_Places_Madison.csv","mediaType":"text/csv","format":"csv","description":"

This is a list and map of polling places in Madison, WI.

\n

Original data here:
https://data.cityofmadison.com/Polling-Places/Polling-Places/rtyh-6ucr

\n","title":"Madison Polling Places","interra":{"id":"madison-polling-places","source":"dkandemo"},"identifier":"6f9d3daf-d415-4f70-ba4d-a9e4437d0c2f","created":"2017-11-17","modified":"2017-11-17"}],"identifier":"934400f2-a5dc-4abf-bf16-3f17335888d3","issued":"2013-02-11","keyword":[{"created":"2017-11-17T21:51:13.597Z","title":"election","modified":"2017-11-17T21:51:13.597Z","identifier":"election","interra":{"id":"election"}}],"landingPage":"http://demo.getdkan.com/dataset/wisconsin-polling-places","license":"http://opendefinition.org/licenses/cc-by/","modified":"2017-11-17","publisher":{"@type":"org:Organization","name":"Committee on International Affairs","description":"The Committee on International Affairs is a working group to identify opportunities to learn from and collaborate with government and organizations across the globe.","image":"http://catalog-demo.interra.io/media/map.png","interra":{"id":"committee-on-internationa","source":"dkandemo"},"identifier":"3b611ac7-17a1-48ee-a4e7-4fd08d9af3f7","created":"2017-11-17","modified":"2017-11-17"},"spatial":"POLYGON ((-90.415429 46.568478, -90.229213 46.508231, -90.119674 46.338446, -89.09001 46.135799, -88.662808 45.987922, -88.531362 46.020784, -88.10416 45.922199, -87.989145 45.796229, -87.781021 45.675736, -87.791975 45.500474, -87.885083 45.363551, -87.649574 45.341643, -87.742682 45.199243, -87.589328 45.095181, -87.627666 44.974688, -87.819359 44.95278, -87.983668 44.722749, -88.043914 44.563917, -87.928898 44.536533, -87.775544 44.640595, -87.611236 44.837764, -87.403112 44.914442, -87.238804 45.166381, -87.03068 45.22115, -87.047111 45.089704, -87.189511 44.969211, -87.468835 44.552964, -87.545512 44.322932, -87.540035 44.158624, -87.644097 44.103854, -87.737205 43.8793, -87.704344 43.687607, -87.791975 43.561637, -87.912467 43.249452, -87.885083 43.002989, -87.76459 42.783912, -87.802929 42.493634, -88.788778 42.493634, -90.639984 42.510065, -90.711184 42.636034, -91.067185 42.75105, -91.143862 42.909881, -91.176724 43.134436, -91.056231 43.254929, -91.204109 43.353514, -91.215062 43.501391, -91.269832 43.616407, -91.242447 43.775238, -91.43414 43.994316, -91.592971 44.032654, -91.877772 44.202439, -91.927065 44.333886, -92.233773 44.443425, -92.337835 44.552964, -92.545959 44.569394, -92.808852 44.750133, -92.737652 45.117088, -92.75956 45.286874, -92.644544 45.440228, -92.770513 45.566198, -92.885529 45.577151, -92.869098 45.719552, -92.639067 45.933153, -92.354266 46.015307, -92.29402 46.075553, -92.29402 46.667063, -92.091373 46.749217, -92.014696 46.705401, -91.790141 46.694447, -91.09457 46.864232, -90.837154 46.95734, -90.749522 46.88614, -90.886446 46.754694, -90.55783 46.584908))","title":"Wisconsin Polling Places","interra":{"id":"wisconsin-polling-places","source":"dkandemo"}} diff --git a/api/distribution.json b/api/distribution.json new file mode 100644 index 0000000..845b74b --- /dev/null +++ b/api/distribution.json @@ -0,0 +1 @@ +[{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/us_foreclosures_jan_2012_by_state.csv","mediaType":"text/csv","format":"csv","description":"

US National Foreclosure Statistics - By State - January 2012

\n","title":"1-2012-Foreclosures-by-State","interra":{"id":"1-2012-foreclosures-by-st","source":"dkandemo"},"identifier":"eb8f7a37-8e9f-4799-ba75-8e1abafb18c6","schema":{"fields":[{"name":"lon","type":"number"},{"name":"lat","type":"number"},{"name":"Unit_Type","type":"string"},{"name":"Dist_Name","type":"string"},{"name":"Prov_Name","type":"string"},{"name":"Dari_Dist","type":"string"},{"name":"Dari_Prov","type":"string"},{"name":"Dist_ID","type":"integer"},{"name":"Prov_ID","type":"integer"}]},"created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/district_centerpoints.csv","mediaType":"text/csv","format":"csv","description":"

You can see this data plotted on a map, by clicking on 'Map' below. Individual data records can be seen by clicking on each point.

\n","title":"District Names","interra":{"id":"district-names","source":"dkandemo"},"schema":{"fields":[{"name":"state","type":"string"},{"name":"total.foreclosures","type":"integer"},{"name":"foreclosure.ratio","type":"integer"}]},"identifier":"f8d6eeda-a0ca-4a0f-9bfd-7955cdbae92d","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/media/IMD-MAPS.zip","mediaType":"application/zip","format":"zip","title":"English Indices of Deprivation 2010","interra":{"id":"english-indices-of-depriv","source":"dkandemo"},"identifier":"554f79c0-6911-4af7-8879-7f0a63fae186","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/Bike_Lane.csv","mediaType":"text/csv","format":"csv","title":"Florida Bike Lanes","interra":{"id":"florida-bike-lanes","source":"dkandemo"},"identifier":"bfcd3357-1e14-4ab0-bf9c-5a64bdcc623a","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/Polling_Places_Madison.csv","mediaType":"text/csv","format":"csv","description":"

This is a list and map of polling places in Madison, WI.

\n

Original data here:
https://data.cityofmadison.com/Polling-Places/Polling-Places/rtyh-6ucr

\n","title":"Madison Polling Places","interra":{"id":"madison-polling-places","source":"dkandemo"},"identifier":"6f9d3daf-d415-4f70-ba4d-a9e4437d0c2f","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/PropertyCrimeRates.csv","mediaType":"text/csv","format":"csv","description":"

Source: FBI Uniform Crime Report, 2014 (https://www.fbi.gov/about-us/cjis/ucr/ucr)

\n","title":"Property Crime Rates for 10 Most Populous US Cities (2015)","interra":{"id":"property-crime-rates-for-","source":"dkandemo"},"identifier":"7df5eafa-1c27-42a0-9b90-7d20b3fef736","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/PropertyCrimesByCity.csv","mediaType":"text/csv","format":"csv","title":"Property Crime Statistics by City","interra":{"id":"property-crime-statistics","source":"dkandemo"},"identifier":"c25cb14b-c662-4426-8002-c71174257dfb","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/retirements_0.csv","mediaType":"text/csv","format":"csv","description":"

Total number of employees who retired from the state workforce, 2011-2015.

\n","title":"Retirements (2011 - 2015)","interra":{"id":"retirements-2011-2015","source":"dkandemo"},"identifier":"7b04f63a-9cc9-4566-a04b-c8c30fb2def4","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/2015EligibleVsActual.csv","mediaType":"text/csv","format":"csv","description":"

This data, ranging from fiscal year 2011 to fiscal year 2015, depicts the percentage of the workforce that is eligible to retire compared to the percentage of the workforce who actually retired.

\n","title":"Retirements: Eligible vs. Actual","interra":{"id":"retirements-eligible-vs-a","source":"dkandemo"},"identifier":"813a7529-49d7-40be-ad97-dbd3abec1967","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/data.csv","mediaType":"text/csv","format":"csv","description":"

CSV file extracted and cleaned from source excel.

\n

Click on Graph button under Preview and plot date (x-axis) against price (y-axis) to see a line graph. Hovering over a point gives you the value of that data entry.

\n","title":"Table of Gold Prices","interra":{"id":"table-of-gold-prices","source":"dkandemo"},"identifier":"b9ed31f7-a4f2-4e98-98b3-fd28d3d97540","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/TobaccoTaxes2016.csv","mediaType":"text/csv","format":"csv","description":"

Source: The Campaign for Tobacco-Free Kids, April 2016: https://www.tobaccofreekids.org/research/factsheets/pdf/0097.pdf

\n","title":"Tobacco Taxation by State as of April 2016","interra":{"id":"tobacco-taxation-by-state","source":"dkandemo"},"identifier":"3b60d94a-21f0-4a4f-a99c-e234c8ec00b5","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/CDCSmokingRates.csv","mediaType":"text/csv","format":"csv","description":"

Source: Centers for Disease Control and Prevention, 2015

\n","title":"U.S. Adult Smoking Rate","interra":{"id":"us-adult-smoking-rate","source":"dkandemo"},"identifier":"5eb31ded-2bb6-460f-bc39-f09f158219e7","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/varicellaincidencerates.csv","mediaType":"text/csv","format":"csv","description":"

Source: \"Impact of Vaccination on the Epidemiology of Varicella: 1995–2009\" published in the journal Pediatrics in August 2011.

\n","title":"Varicella Incidence Rates After Vaccine Introduced in U.S., 1995-2009","interra":{"id":"varicella-incidence-rates","source":"dkandemo"},"identifier":"f6d3e11d-c960-4a25-8b4e-e8098fed2401","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/varicelladeaths1970_1994.csv","mediaType":"text/csv","format":"csv","description":"

Source: Centers for Disease Control and Prevention in Atlanta, Georgia. “Varicella Mortality: Trends before Vaccine Licensure in the United States, 1970–1994” published August 2000 in the Journal of Infectious Diseases.

\n","title":"Varicella Mortality by Age Group, 1970-1994","interra":{"id":"varicella-mortality-by-ag","source":"dkandemo"},"identifier":"4c008779-109f-4048-a0bf-3f97c73c0bc7","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/ViolentCrimeRates.csv","mediaType":"text/csv","format":"csv","description":"

Source: FBI Uniform Crime Report, 2014 (https://www.fbi.gov/about-us/cjis/ucr/ucr)

\n

Includes information on the frequency of violent crimes in general, murder and non-negligent manslaughter, aggravated assault, rape and robbery. All crime rates are per 100,000 people.

\n","title":"Violent Crime Data for the Ten Most Populous Cities in the U.S.","interra":{"id":"violent-crime-data-for-th","source":"dkandemo"},"identifier":"b5bee926-93b8-47b4-b325-f31bb2510426","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/NumbersByCity.csv","mediaType":"text/csv","format":"csv","title":"Violent Crime Statistics by City ","interra":{"id":"violent-crime-statistics-","source":"dkandemo"},"identifier":"c1989976-c5c4-4cd8-9702-a0c76db4c58c","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/media/GenChart_0_0.csv","mediaType":"text/csv","format":"csv","description":"

Population of state employees broken down into Gen X, Gen Y, Baby Boomers and Over 65+.

\n","title":"Workforce By Generation (2011-2015)","interra":{"id":"workforce-by-generation-2","source":"dkandemo"},"identifier":"51e860de-401f-40ca-921a-1e6b498b8505","created":"2017-11-17","modified":"2017-11-17"}] \ No newline at end of file diff --git a/api/distribution/1-2012-foreclosures-by-st.json b/api/distribution/1-2012-foreclosures-by-st.json new file mode 100644 index 0000000..2d81e6f --- /dev/null +++ b/api/distribution/1-2012-foreclosures-by-st.json @@ -0,0 +1 @@ +{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/us_foreclosures_jan_2012_by_state.csv","mediaType":"text/csv","format":"csv","description":"

US National Foreclosure Statistics - By State - January 2012

\n","title":"1-2012-Foreclosures-by-State","interra":{"id":"1-2012-foreclosures-by-st","source":"dkandemo"},"identifier":"eb8f7a37-8e9f-4799-ba75-8e1abafb18c6","schema":{"fields":[{"name":"lon","type":"number"},{"name":"lat","type":"number"},{"name":"Unit_Type","type":"string"},{"name":"Dist_Name","type":"string"},{"name":"Prov_Name","type":"string"},{"name":"Dari_Dist","type":"string"},{"name":"Dari_Prov","type":"string"},{"name":"Dist_ID","type":"integer"},{"name":"Prov_ID","type":"integer"}]},"created":"2017-11-17","modified":"2017-11-17"} diff --git a/api/distribution/district-names.json b/api/distribution/district-names.json new file mode 100644 index 0000000..215a13a --- /dev/null +++ b/api/distribution/district-names.json @@ -0,0 +1 @@ +{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/district_centerpoints.csv","mediaType":"text/csv","format":"csv","description":"

You can see this data plotted on a map, by clicking on 'Map' below. Individual data records can be seen by clicking on each point.

\n","title":"District Names","interra":{"id":"district-names","source":"dkandemo"},"schema":{"fields":[{"name":"state","type":"string"},{"name":"total.foreclosures","type":"integer"},{"name":"foreclosure.ratio","type":"integer"}]},"identifier":"f8d6eeda-a0ca-4a0f-9bfd-7955cdbae92d","created":"2017-11-17","modified":"2017-11-17"} diff --git a/api/distribution/english-indices-of-depriv.json b/api/distribution/english-indices-of-depriv.json new file mode 100644 index 0000000..169891b --- /dev/null +++ b/api/distribution/english-indices-of-depriv.json @@ -0,0 +1 @@ +{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/media/IMD-MAPS.zip","mediaType":"application/zip","format":"zip","title":"English Indices of Deprivation 2010","interra":{"id":"english-indices-of-depriv","source":"dkandemo"},"identifier":"554f79c0-6911-4af7-8879-7f0a63fae186","created":"2017-11-17","modified":"2017-11-17"} diff --git a/api/distribution/florida-bike-lanes.json b/api/distribution/florida-bike-lanes.json new file mode 100644 index 0000000..e29ab57 --- /dev/null +++ b/api/distribution/florida-bike-lanes.json @@ -0,0 +1 @@ +{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/Bike_Lane.csv","mediaType":"text/csv","format":"csv","title":"Florida Bike Lanes","interra":{"id":"florida-bike-lanes","source":"dkandemo"},"identifier":"bfcd3357-1e14-4ab0-bf9c-5a64bdcc623a","created":"2017-11-17","modified":"2017-11-17"} diff --git a/api/distribution/madison-polling-places.json b/api/distribution/madison-polling-places.json new file mode 100644 index 0000000..38cda8e --- /dev/null +++ b/api/distribution/madison-polling-places.json @@ -0,0 +1 @@ +{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/Polling_Places_Madison.csv","mediaType":"text/csv","format":"csv","description":"

This is a list and map of polling places in Madison, WI.

\n

Original data here:
https://data.cityofmadison.com/Polling-Places/Polling-Places/rtyh-6ucr

\n","title":"Madison Polling Places","interra":{"id":"madison-polling-places","source":"dkandemo"},"identifier":"6f9d3daf-d415-4f70-ba4d-a9e4437d0c2f","created":"2017-11-17","modified":"2017-11-17"} diff --git a/api/distribution/property-crime-rates-for-.json b/api/distribution/property-crime-rates-for-.json new file mode 100644 index 0000000..b11bdcc --- /dev/null +++ b/api/distribution/property-crime-rates-for-.json @@ -0,0 +1 @@ +{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/PropertyCrimeRates.csv","mediaType":"text/csv","format":"csv","description":"

Source: FBI Uniform Crime Report, 2014 (https://www.fbi.gov/about-us/cjis/ucr/ucr)

\n","title":"Property Crime Rates for 10 Most Populous US Cities (2015)","interra":{"id":"property-crime-rates-for-","source":"dkandemo"},"identifier":"7df5eafa-1c27-42a0-9b90-7d20b3fef736","created":"2017-11-17","modified":"2017-11-17"} diff --git a/api/distribution/property-crime-statistics.json b/api/distribution/property-crime-statistics.json new file mode 100644 index 0000000..7f38ed7 --- /dev/null +++ b/api/distribution/property-crime-statistics.json @@ -0,0 +1 @@ +{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/PropertyCrimesByCity.csv","mediaType":"text/csv","format":"csv","title":"Property Crime Statistics by City","interra":{"id":"property-crime-statistics","source":"dkandemo"},"identifier":"c25cb14b-c662-4426-8002-c71174257dfb","created":"2017-11-17","modified":"2017-11-17"} diff --git a/api/distribution/retirements-2011-2015.json b/api/distribution/retirements-2011-2015.json new file mode 100644 index 0000000..af2eeb9 --- /dev/null +++ b/api/distribution/retirements-2011-2015.json @@ -0,0 +1 @@ +{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/retirements_0.csv","mediaType":"text/csv","format":"csv","description":"

Total number of employees who retired from the state workforce, 2011-2015.

\n","title":"Retirements (2011 - 2015)","interra":{"id":"retirements-2011-2015","source":"dkandemo"},"identifier":"7b04f63a-9cc9-4566-a04b-c8c30fb2def4","created":"2017-11-17","modified":"2017-11-17"} diff --git a/api/distribution/retirements-eligible-vs-a.json b/api/distribution/retirements-eligible-vs-a.json new file mode 100644 index 0000000..3ca3c32 --- /dev/null +++ b/api/distribution/retirements-eligible-vs-a.json @@ -0,0 +1 @@ +{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/2015EligibleVsActual.csv","mediaType":"text/csv","format":"csv","description":"

This data, ranging from fiscal year 2011 to fiscal year 2015, depicts the percentage of the workforce that is eligible to retire compared to the percentage of the workforce who actually retired.

\n","title":"Retirements: Eligible vs. Actual","interra":{"id":"retirements-eligible-vs-a","source":"dkandemo"},"identifier":"813a7529-49d7-40be-ad97-dbd3abec1967","created":"2017-11-17","modified":"2017-11-17"} diff --git a/api/distribution/table-of-gold-prices.json b/api/distribution/table-of-gold-prices.json new file mode 100644 index 0000000..856b932 --- /dev/null +++ b/api/distribution/table-of-gold-prices.json @@ -0,0 +1 @@ +{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/data.csv","mediaType":"text/csv","format":"csv","description":"

CSV file extracted and cleaned from source excel.

\n

Click on Graph button under Preview and plot date (x-axis) against price (y-axis) to see a line graph. Hovering over a point gives you the value of that data entry.

\n","title":"Table of Gold Prices","interra":{"id":"table-of-gold-prices","source":"dkandemo"},"identifier":"b9ed31f7-a4f2-4e98-98b3-fd28d3d97540","created":"2017-11-17","modified":"2017-11-17"} diff --git a/api/distribution/tobacco-taxation-by-state.json b/api/distribution/tobacco-taxation-by-state.json new file mode 100644 index 0000000..2b1c88a --- /dev/null +++ b/api/distribution/tobacco-taxation-by-state.json @@ -0,0 +1 @@ +{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/TobaccoTaxes2016.csv","mediaType":"text/csv","format":"csv","description":"

Source: The Campaign for Tobacco-Free Kids, April 2016: https://www.tobaccofreekids.org/research/factsheets/pdf/0097.pdf

\n","title":"Tobacco Taxation by State as of April 2016","interra":{"id":"tobacco-taxation-by-state","source":"dkandemo"},"identifier":"3b60d94a-21f0-4a4f-a99c-e234c8ec00b5","created":"2017-11-17","modified":"2017-11-17"} diff --git a/api/distribution/us-adult-smoking-rate.json b/api/distribution/us-adult-smoking-rate.json new file mode 100644 index 0000000..9495170 --- /dev/null +++ b/api/distribution/us-adult-smoking-rate.json @@ -0,0 +1 @@ +{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/CDCSmokingRates.csv","mediaType":"text/csv","format":"csv","description":"

Source: Centers for Disease Control and Prevention, 2015

\n","title":"U.S. Adult Smoking Rate","interra":{"id":"us-adult-smoking-rate","source":"dkandemo"},"identifier":"5eb31ded-2bb6-460f-bc39-f09f158219e7","created":"2017-11-17","modified":"2017-11-17"} diff --git a/api/distribution/varicella-incidence-rates.json b/api/distribution/varicella-incidence-rates.json new file mode 100644 index 0000000..527bd3c --- /dev/null +++ b/api/distribution/varicella-incidence-rates.json @@ -0,0 +1 @@ +{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/varicellaincidencerates.csv","mediaType":"text/csv","format":"csv","description":"

Source: \"Impact of Vaccination on the Epidemiology of Varicella: 1995–2009\" published in the journal Pediatrics in August 2011.

\n","title":"Varicella Incidence Rates After Vaccine Introduced in U.S., 1995-2009","interra":{"id":"varicella-incidence-rates","source":"dkandemo"},"identifier":"f6d3e11d-c960-4a25-8b4e-e8098fed2401","created":"2017-11-17","modified":"2017-11-17"} diff --git a/api/distribution/varicella-mortality-by-ag.json b/api/distribution/varicella-mortality-by-ag.json new file mode 100644 index 0000000..2a60c5f --- /dev/null +++ b/api/distribution/varicella-mortality-by-ag.json @@ -0,0 +1 @@ +{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/varicelladeaths1970_1994.csv","mediaType":"text/csv","format":"csv","description":"

Source: Centers for Disease Control and Prevention in Atlanta, Georgia. “Varicella Mortality: Trends before Vaccine Licensure in the United States, 1970–1994” published August 2000 in the Journal of Infectious Diseases.

\n","title":"Varicella Mortality by Age Group, 1970-1994","interra":{"id":"varicella-mortality-by-ag","source":"dkandemo"},"identifier":"4c008779-109f-4048-a0bf-3f97c73c0bc7","created":"2017-11-17","modified":"2017-11-17"} diff --git a/api/distribution/violent-crime-data-for-th.json b/api/distribution/violent-crime-data-for-th.json new file mode 100644 index 0000000..30410f7 --- /dev/null +++ b/api/distribution/violent-crime-data-for-th.json @@ -0,0 +1 @@ +{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/ViolentCrimeRates.csv","mediaType":"text/csv","format":"csv","description":"

Source: FBI Uniform Crime Report, 2014 (https://www.fbi.gov/about-us/cjis/ucr/ucr)

\n

Includes information on the frequency of violent crimes in general, murder and non-negligent manslaughter, aggravated assault, rape and robbery. All crime rates are per 100,000 people.

\n","title":"Violent Crime Data for the Ten Most Populous Cities in the U.S.","interra":{"id":"violent-crime-data-for-th","source":"dkandemo"},"identifier":"b5bee926-93b8-47b4-b325-f31bb2510426","created":"2017-11-17","modified":"2017-11-17"} diff --git a/api/distribution/violent-crime-statistics-.json b/api/distribution/violent-crime-statistics-.json new file mode 100644 index 0000000..39335ce --- /dev/null +++ b/api/distribution/violent-crime-statistics-.json @@ -0,0 +1 @@ +{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/NumbersByCity.csv","mediaType":"text/csv","format":"csv","title":"Violent Crime Statistics by City ","interra":{"id":"violent-crime-statistics-","source":"dkandemo"},"identifier":"c1989976-c5c4-4cd8-9702-a0c76db4c58c","created":"2017-11-17","modified":"2017-11-17"} diff --git a/api/distribution/workforce-by-generation-2.json b/api/distribution/workforce-by-generation-2.json new file mode 100644 index 0000000..79557dd --- /dev/null +++ b/api/distribution/workforce-by-generation-2.json @@ -0,0 +1 @@ +{"@type":"dcat:Distribution","downloadURL":"http://catalog-demo.interra.io/media/media/GenChart_0_0.csv","mediaType":"text/csv","format":"csv","description":"

Population of state employees broken down into Gen X, Gen Y, Baby Boomers and Over 65+.

\n","title":"Workforce By Generation (2011-2015)","interra":{"id":"workforce-by-generation-2","source":"dkandemo"},"identifier":"51e860de-401f-40ca-921a-1e6b498b8505","created":"2017-11-17","modified":"2017-11-17"} diff --git a/api/keyword.json b/api/keyword.json new file mode 100644 index 0000000..994728d --- /dev/null +++ b/api/keyword.json @@ -0,0 +1 @@ +[{"created":"2017-11-17T21:51:13.596Z","title":"country-afghanistan","modified":"2017-11-17T21:51:13.596Z","identifier":"country-afghanistan","interra":{"id":"country-afghanistan"}},{"created":"2017-11-17T21:51:13.542Z","title":"crime","modified":"2017-11-17T21:51:13.542Z","identifier":"crime","interra":{"id":"crime"}},{"created":"2017-11-17T21:51:13.565Z","title":"demographics","modified":"2017-11-17T21:51:13.565Z","identifier":"demographics","interra":{"id":"demographics"}},{"created":"2017-11-17T21:51:13.589Z","title":"economy","modified":"2017-11-17T21:51:13.589Z","identifier":"economy","interra":{"id":"economy"}},{"created":"2017-11-17T21:51:13.597Z","title":"election","modified":"2017-11-17T21:51:13.597Z","identifier":"election","interra":{"id":"election"}},{"created":"2017-11-17T21:51:13.573Z","title":"health","modified":"2017-11-17T21:51:13.573Z","identifier":"health","interra":{"id":"health"}},{"created":"2017-11-17T21:51:13.503Z","title":"No keyword provided","modified":"2017-11-17T21:51:13.503Z","identifier":"no-keyword-provided","interra":{"id":"no-keyword-provided"}},{"created":"2017-11-17T21:51:13.598Z","title":"politics","modified":"2017-11-17T21:51:13.598Z","identifier":"politics","interra":{"id":"politics"}},{"created":"2017-11-17T21:51:13.591Z","title":"price","modified":"2017-11-17T21:51:13.591Z","identifier":"price","interra":{"id":"price"}},{"created":"2017-11-17T21:51:13.543Z","title":"public safety","modified":"2017-11-17T21:51:13.543Z","identifier":"public-safety","interra":{"id":"public-safety"}},{"created":"2017-11-17T21:51:13.558Z","title":"socioeconomic","modified":"2017-11-17T21:51:13.558Z","identifier":"socioeconomic","interra":{"id":"socioeconomic"}},{"created":"2017-11-17T21:51:13.530Z","title":"spatial data","modified":"2017-11-17T21:51:13.530Z","identifier":"spatial-data","interra":{"id":"spatial-data"}},{"created":"2017-11-17T21:51:13.591Z","title":"time-series","modified":"2017-11-17T21:51:13.591Z","identifier":"time-series","interra":{"id":"time-series"}},{"created":"2017-11-17T21:51:13.598Z","title":"transparency","modified":"2017-11-17T21:51:13.598Z","identifier":"transparency","interra":{"id":"transparency"}},{"created":"2017-11-17T21:51:13.531Z","title":"United Kingdom","modified":"2017-11-17T21:51:13.531Z","identifier":"united-kingdom","interra":{"id":"united-kingdom"}},{"created":"2017-11-17T21:51:13.559Z","title":"workforce","modified":"2017-11-17T21:51:13.559Z","identifier":"workforce","interra":{"id":"workforce"}}] \ No newline at end of file diff --git a/api/keyword/country-afghanistan.json b/api/keyword/country-afghanistan.json new file mode 100644 index 0000000..de7912f --- /dev/null +++ b/api/keyword/country-afghanistan.json @@ -0,0 +1 @@ +{"created":"2017-11-17T21:51:13.596Z","title":"country-afghanistan","modified":"2017-11-17T21:51:13.596Z","identifier":"country-afghanistan","interra":{"id":"country-afghanistan"}} diff --git a/api/keyword/crime.json b/api/keyword/crime.json new file mode 100644 index 0000000..187740c --- /dev/null +++ b/api/keyword/crime.json @@ -0,0 +1 @@ +{"created":"2017-11-17T21:51:13.542Z","title":"crime","modified":"2017-11-17T21:51:13.542Z","identifier":"crime","interra":{"id":"crime"}} diff --git a/api/keyword/demographics.json b/api/keyword/demographics.json new file mode 100644 index 0000000..fff08e4 --- /dev/null +++ b/api/keyword/demographics.json @@ -0,0 +1 @@ +{"created":"2017-11-17T21:51:13.565Z","title":"demographics","modified":"2017-11-17T21:51:13.565Z","identifier":"demographics","interra":{"id":"demographics"}} diff --git a/api/keyword/economy.json b/api/keyword/economy.json new file mode 100644 index 0000000..f749698 --- /dev/null +++ b/api/keyword/economy.json @@ -0,0 +1 @@ +{"created":"2017-11-17T21:51:13.589Z","title":"economy","modified":"2017-11-17T21:51:13.589Z","identifier":"economy","interra":{"id":"economy"}} diff --git a/api/keyword/election.json b/api/keyword/election.json new file mode 100644 index 0000000..a2553af --- /dev/null +++ b/api/keyword/election.json @@ -0,0 +1 @@ +{"created":"2017-11-17T21:51:13.597Z","title":"election","modified":"2017-11-17T21:51:13.597Z","identifier":"election","interra":{"id":"election"}} diff --git a/api/keyword/health.json b/api/keyword/health.json new file mode 100644 index 0000000..3453b61 --- /dev/null +++ b/api/keyword/health.json @@ -0,0 +1 @@ +{"created":"2017-11-17T21:51:13.573Z","title":"health","modified":"2017-11-17T21:51:13.573Z","identifier":"health","interra":{"id":"health"}} diff --git a/api/keyword/no-keyword-provided.json b/api/keyword/no-keyword-provided.json new file mode 100644 index 0000000..9f98494 --- /dev/null +++ b/api/keyword/no-keyword-provided.json @@ -0,0 +1 @@ +{"created":"2017-11-17T21:51:13.503Z","title":"No keyword provided","modified":"2017-11-17T21:51:13.503Z","identifier":"no-keyword-provided","interra":{"id":"no-keyword-provided"}} diff --git a/api/keyword/politics.json b/api/keyword/politics.json new file mode 100644 index 0000000..caca1d8 --- /dev/null +++ b/api/keyword/politics.json @@ -0,0 +1 @@ +{"created":"2017-11-17T21:51:13.598Z","title":"politics","modified":"2017-11-17T21:51:13.598Z","identifier":"politics","interra":{"id":"politics"}} diff --git a/api/keyword/price.json b/api/keyword/price.json new file mode 100644 index 0000000..626438a --- /dev/null +++ b/api/keyword/price.json @@ -0,0 +1 @@ +{"created":"2017-11-17T21:51:13.591Z","title":"price","modified":"2017-11-17T21:51:13.591Z","identifier":"price","interra":{"id":"price"}} diff --git a/api/keyword/public-safety.json b/api/keyword/public-safety.json new file mode 100644 index 0000000..297540d --- /dev/null +++ b/api/keyword/public-safety.json @@ -0,0 +1 @@ +{"created":"2017-11-17T21:51:13.543Z","title":"public safety","modified":"2017-11-17T21:51:13.543Z","identifier":"public-safety","interra":{"id":"public-safety"}} diff --git a/api/keyword/socioeconomic.json b/api/keyword/socioeconomic.json new file mode 100644 index 0000000..c1d4352 --- /dev/null +++ b/api/keyword/socioeconomic.json @@ -0,0 +1 @@ +{"created":"2017-11-17T21:51:13.558Z","title":"socioeconomic","modified":"2017-11-17T21:51:13.558Z","identifier":"socioeconomic","interra":{"id":"socioeconomic"}} diff --git a/api/keyword/spatial-data.json b/api/keyword/spatial-data.json new file mode 100644 index 0000000..52e045b --- /dev/null +++ b/api/keyword/spatial-data.json @@ -0,0 +1 @@ +{"created":"2017-11-17T21:51:13.530Z","title":"spatial data","modified":"2017-11-17T21:51:13.530Z","identifier":"spatial-data","interra":{"id":"spatial-data"}} diff --git a/api/keyword/time-series.json b/api/keyword/time-series.json new file mode 100644 index 0000000..8977e42 --- /dev/null +++ b/api/keyword/time-series.json @@ -0,0 +1 @@ +{"created":"2017-11-17T21:51:13.591Z","title":"time-series","modified":"2017-11-17T21:51:13.591Z","identifier":"time-series","interra":{"id":"time-series"}} diff --git a/api/keyword/transparency.json b/api/keyword/transparency.json new file mode 100644 index 0000000..cb58e8a --- /dev/null +++ b/api/keyword/transparency.json @@ -0,0 +1 @@ +{"created":"2017-11-17T21:51:13.598Z","title":"transparency","modified":"2017-11-17T21:51:13.598Z","identifier":"transparency","interra":{"id":"transparency"}} diff --git a/api/keyword/united-kingdom.json b/api/keyword/united-kingdom.json new file mode 100644 index 0000000..ba71603 --- /dev/null +++ b/api/keyword/united-kingdom.json @@ -0,0 +1 @@ +{"created":"2017-11-17T21:51:13.531Z","title":"United Kingdom","modified":"2017-11-17T21:51:13.531Z","identifier":"united-kingdom","interra":{"id":"united-kingdom"}} diff --git a/api/keyword/workforce.json b/api/keyword/workforce.json new file mode 100644 index 0000000..0453d6b --- /dev/null +++ b/api/keyword/workforce.json @@ -0,0 +1 @@ +{"created":"2017-11-17T21:51:13.559Z","title":"workforce","modified":"2017-11-17T21:51:13.559Z","identifier":"workforce","interra":{"id":"workforce"}} diff --git a/api/license.json b/api/license.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/api/license.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/api/organization.json b/api/organization.json new file mode 100644 index 0000000..ce82f64 --- /dev/null +++ b/api/organization.json @@ -0,0 +1 @@ +[{"@type":"org:Organization","name":"Advisory Council for Infectious Disease","description":"Advisory Council for Infectious Disease is a working group that performs research and prepares reports to inform treatment and prevention programs nationally.","image":"http://catalog-demo.interra.io/media/clipboard.png","interra":{"id":"advisory-council-for-infe","source":"dkandemo"},"identifier":"77df7dc5-7645-49de-bb0e-63e9c71a02d0","created":"2017-11-17","modified":"2017-11-17"},{"@type":"org:Organization","name":"Committee on International Affairs","description":"The Committee on International Affairs is a working group to identify opportunities to learn from and collaborate with government and organizations across the globe.","image":"http://catalog-demo.interra.io/media/map.png","interra":{"id":"committee-on-internationa","source":"dkandemo"},"identifier":"3b611ac7-17a1-48ee-a4e7-4fd08d9af3f7","created":"2017-11-17","modified":"2017-11-17"},{"@type":"org:Organization","name":"DKAN Demo Examples","description":"These are examples from the DKAN demo site.","image":"http://catalog-demo.interra.io/media/dkan-logo.svg","interra":{"id":"demogetdkancom","source":"dkandemo"},"identifier":"3a326e8b-0aa0-497c-9f2b-c7d0bd083fc6","created":"2017-11-17","modified":"2017-11-17"},{"@type":"org:Organization","name":"State Economic Council","description":"The State Economic Council is responsible for increasing economic development of the state by collecting statistics and performing analysis on the labor force, workforce and employer demographics, generational trends, etc.","image":"http://catalog-demo.interra.io/media/money-saving.png","interra":{"id":"state-economic-council","source":"dkandemo"},"identifier":"d48ea7d8-ef73-4d59-894a-327822b803db","created":"2017-11-17","modified":"2017-11-17"}] \ No newline at end of file diff --git a/api/organization/advisory-council-for-infe.json b/api/organization/advisory-council-for-infe.json new file mode 100644 index 0000000..8ac8d06 --- /dev/null +++ b/api/organization/advisory-council-for-infe.json @@ -0,0 +1 @@ +{"@type":"org:Organization","name":"Advisory Council for Infectious Disease","description":"Advisory Council for Infectious Disease is a working group that performs research and prepares reports to inform treatment and prevention programs nationally.","image":"http://catalog-demo.interra.io/media/clipboard.png","interra":{"id":"advisory-council-for-infe","source":"dkandemo"},"identifier":"77df7dc5-7645-49de-bb0e-63e9c71a02d0","created":"2017-11-17","modified":"2017-11-17"} diff --git a/api/organization/committee-on-internationa.json b/api/organization/committee-on-internationa.json new file mode 100644 index 0000000..903121e --- /dev/null +++ b/api/organization/committee-on-internationa.json @@ -0,0 +1 @@ +{"@type":"org:Organization","name":"Committee on International Affairs","description":"The Committee on International Affairs is a working group to identify opportunities to learn from and collaborate with government and organizations across the globe.","image":"http://catalog-demo.interra.io/media/map.png","interra":{"id":"committee-on-internationa","source":"dkandemo"},"identifier":"3b611ac7-17a1-48ee-a4e7-4fd08d9af3f7","created":"2017-11-17","modified":"2017-11-17"} diff --git a/api/organization/demogetdkancom.json b/api/organization/demogetdkancom.json new file mode 100644 index 0000000..a5d6d64 --- /dev/null +++ b/api/organization/demogetdkancom.json @@ -0,0 +1 @@ +{"@type":"org:Organization","name":"DKAN Demo Examples","description":"These are examples from the DKAN demo site.","image":"http://catalog-demo.interra.io/media/dkan-logo.svg","interra":{"id":"demogetdkancom","source":"dkandemo"},"identifier":"3a326e8b-0aa0-497c-9f2b-c7d0bd083fc6","created":"2017-11-17","modified":"2017-11-17"} diff --git a/api/organization/state-economic-council-co.json b/api/organization/state-economic-council-co.json new file mode 100644 index 0000000..dc67be0 --- /dev/null +++ b/api/organization/state-economic-council-co.json @@ -0,0 +1 @@ +{"@type":"org:Organization","name":"State Economic Council, Committee on International Affairs","interra":{"id":"state-economic-council-co","source":"dkandemo"},"identifier":"3590d6cd-dd24-4347-9d98-c8d5583e566d","created":"2017-11-17","modified":"2017-11-17"} diff --git a/api/organization/state-economic-council.json b/api/organization/state-economic-council.json new file mode 100644 index 0000000..0a72bff --- /dev/null +++ b/api/organization/state-economic-council.json @@ -0,0 +1 @@ +{"@type":"org:Organization","name":"State Economic Council","description":"The State Economic Council is responsible for increasing economic development of the state by collecting statistics and performing analysis on the labor force, workforce and employer demographics, generational trends, etc.","image":"http://catalog-demo.interra.io/media/money-saving.png","interra":{"id":"state-economic-council","source":"dkandemo"},"identifier":"d48ea7d8-ef73-4d59-894a-327822b803db","created":"2017-11-17","modified":"2017-11-17"} diff --git a/api/routes.json b/api/routes.json new file mode 100644 index 0000000..eac09a2 --- /dev/null +++ b/api/routes.json @@ -0,0 +1 @@ +{"dataset":[{"c9e2d352-e24c-4051-9158-f48127aa5692":"afghanistan-election-dist"},{"d460252e-d42c-474a-9ea9-5287b1d595f6":"crime-data-for-the-ten-mo"},{"cedcd327-4e5d-43f9-8eb1-c11850fa7c55":"florida-bike-lanes"},{"5dc1cfcf-8028-476c-a020-f58ec6dd621c":"gold-prices-in-london-195"},{"fb3525f2-d32a-451e-8869-906ed41f7695":"london-deprivation-index"},{"95f8eac4-fd1f-4b35-8472-5c87e9425dfa":"state-workforce-by-genera"},{"74c06c81-9fe0-439c-aba9-cd5c980a6df4":"us-national-foreclosure-s"},{"1f2042ad-c513-4fcf-a933-cae6c6fd35e6":"us-tobacco-usage-statisti"},{"e1f2ebcd-ee23-454f-87b5-df0306658418":"varicella-chickenpox-inci"},{"934400f2-a5dc-4abf-bf16-3f17335888d3":"wisconsin-polling-places"}],"organization":[{"77df7dc5-7645-49de-bb0e-63e9c71a02d0":"advisory-council-for-infe"},{"3b611ac7-17a1-48ee-a4e7-4fd08d9af3f7":"committee-on-internationa"},{"3a326e8b-0aa0-497c-9f2b-c7d0bd083fc6":"demogetdkancom"},{"3590d6cd-dd24-4347-9d98-c8d5583e566d":"state-economic-council-co"},{"d48ea7d8-ef73-4d59-894a-327822b803db":"state-economic-council"}],"distribution":[{"eb8f7a37-8e9f-4799-ba75-8e1abafb18c6":"1-2012-foreclosures-by-st"},{"f8d6eeda-a0ca-4a0f-9bfd-7955cdbae92d":"district-names"},{"554f79c0-6911-4af7-8879-7f0a63fae186":"english-indices-of-depriv"},{"bfcd3357-1e14-4ab0-bf9c-5a64bdcc623a":"florida-bike-lanes"},{"6f9d3daf-d415-4f70-ba4d-a9e4437d0c2f":"madison-polling-places"},{"7df5eafa-1c27-42a0-9b90-7d20b3fef736":"property-crime-rates-for-"},{"c25cb14b-c662-4426-8002-c71174257dfb":"property-crime-statistics"},{"7b04f63a-9cc9-4566-a04b-c8c30fb2def4":"retirements-2011-2015"},{"813a7529-49d7-40be-ad97-dbd3abec1967":"retirements-eligible-vs-a"},{"b9ed31f7-a4f2-4e98-98b3-fd28d3d97540":"table-of-gold-prices"},{"3b60d94a-21f0-4a4f-a99c-e234c8ec00b5":"tobacco-taxation-by-state"},{"5eb31ded-2bb6-460f-bc39-f09f158219e7":"us-adult-smoking-rate"},{"f6d3e11d-c960-4a25-8b4e-e8098fed2401":"varicella-incidence-rates"},{"4c008779-109f-4048-a0bf-3f97c73c0bc7":"varicella-mortality-by-ag"},{"b5bee926-93b8-47b4-b325-f31bb2510426":"violent-crime-data-for-th"},{"c1989976-c5c4-4cd8-9702-a0c76db4c58c":"violent-crime-statistics-"},{"51e860de-401f-40ca-921a-1e6b498b8505":"workforce-by-generation-2"}]} \ No newline at end of file diff --git a/api/schema.json b/api/schema.json new file mode 100644 index 0000000..82e62e8 --- /dev/null +++ b/api/schema.json @@ -0,0 +1 @@ +{"collections":["dataset","organization","distribution","keyword","license","theme"],"schema":{"organization":{"$schema":"http://json-schema.org/draft-04/schema#","id":"https://project-open-data.cio.gov/v1.1/schema/organization.json#","title":"Organization","description":"A Dataset Publisher Organization.","type":"object","required":["name"],"properties":{"@type":{"title":"Metadata Context","description":"IRI for the JSON-LD data type. This should be org:Organization for each publisher","type":"string","default":"org:Organization"},"name":{"title":"Publisher Name","description":"A full formatted name, eg Firstname Lastname","type":"string","minLength":1},"description":{"title":"Description","type":"string","description":"Description of the organization"},"identifier":{"type":"string","title":"Identifier"},"image":{"title":"Image","description":"Image or logo for the organization","type":"string","format":"uri"},"subOrganizationOf":{"title":"Parent Organization","type":"string"}}},"distribution":{"title":"Project Open Data Distribution","type":"object","required":["title"],"properties":{"@type":{"title":"Metadata Context","description":"IRI for the JSON-LD data type. This should be dcat:Distribution for each Distribution","default":"dcat:Distribution","type":"string"},"title":{"title":"Title","description":"Human-readable name of the distribution","type":"string","minLength":1},"identifier":{"title":"Identifier","description":"Distribution identifier","type":"string"},"description":{"title":"Description","description":"Human-readable description of the distribution","type":"string","minLength":1},"fileLocation":{"title":" ","type":"string"},"format":{"title":"Format","description":"A human-readable description of the file format of a distribution","type":"string"},"mediaType":{"title":"Media Type","description":"The machine-readable file format (IANA Media Type or MIME Type) of the distribution’s downloadURL","pattern":"^[-\\w]+/[-\\w]+(\\.[-\\w]+)*([+][-\\w]+)?$","type":"string"},"mediaSize":{"title":"Media Size","description":"The size of the meida file.","type":"integer"},"downloadURL":{"title":"Download URL","description":"URL providing direct access to a downloadable file of a dataset","type":"string","format":"uri"},"accessURL":{"title":"Access URL","description":"URL providing indirect access to a dataset","type":"string","format":"uri"},"conformsTo":{"title":"Data Standard","description":"URL providing indirect access to a dataset","type":"string","format":"uri"},"describedBy":{"title":"Data Dictionary","description":"URL to the data dictionary for the distribution found at the downloadURL","type":"string","format":"uri"},"describedByType":{"title":"Data Dictionary Type","description":"The machine-readable file format (IANA Media Type or MIME Type) of the distribution’s describedBy URL","pattern":"^[-\\w]+/[-\\w]+(\\.[-\\w]+)*([+][-\\w]+)?$","type":"string"},"isssued":{"title":"Release Date","description":"Date of formal issuance.","type":"string","pattern":"^([\\+-]?\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))([T\\s]((([01]\\d|2[0-3])((:?)[0-5]\\d)?|24\\:?00)([\\.,]\\d+(?!:))?)?(\\17[0-5]\\d([\\.,]\\d+)?)?([zZ]|([\\+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?)?$"},"schema":{"title":"Schema","description":"Ref of https://frictionlessdata.io/schemas/table-schema.json","type":"object","properties":{"fields":{"type":"array","items":{"title":"Table Schema Field","type":"object","properties":{"name":{"title":"Name","description":"A name for this field.","type":"string"},"title":{"title":"Title","description":"A human-readable title.","type":"string"},"description":{"title":"Description","description":"A text description. Markdown is encouraged.","type":"string"},"type":{"description":"The type for the data.","enum":["string","integer","number","boolean","object","array","date","time","datetime","year","yearmonth","duration","geopoint","geojson"]},"format":{"description":"The format keyword options for `string` are `default`, `email`, `uri`, `binary`, and `uuid`.","enum":["default","email","uri","binary","uuid"]}}}}}}}},"keyword":{"$schema":"http://json-schema.org/draft-04/schema","title":"Tags","description":"Tags (or keywords) help users discover your dataset; please include terms that would be used by technical and non-technical users.","type":"object","required":["title","identifier"],"properties":{"title":{"title":"Title","type":"string"},"identifier":{"type":"string","title":"Identifier"},"created":{"type":"string","title":"Created","format":"date-time"},"modified":{"type":"string","title":"Modified","format":"date-time"},"icon":{"type":"string","title":"icon"}}},"license":{"$schema":"http://json-schema.org/draft-04/schema","title":"License","description":"A license for datasets","type":"object","required":["title","identifier"],"properties":{"title":{"title":"Title","type":"string"},"identifier":{"type":"string","title":"Identifier"},"created":{"type":"string","title":"Created","format":"date-time"},"modified":{"type":"string","title":"Modified","format":"date-time"},"link":{"type":"string","description":"A link to the license definition","title":"definition","format":"uri"}}},"theme":{"$schema":"http://json-schema.org/draft-04/schema#","title":"Category","description":"Main thematic category of the dataset.","type":"object","required":["title","identifier","created","modified"],"properties":{"title":{"title":"Title","type":"string"},"identifier":{"type":"string","title":"Identifier"},"created":{"type":"string","title":"Created","format":"date-time"},"modified":{"type":"string","title":"Modified","format":"date-time"},"icon":{"type":"string","title":"icon"}}},"dataset":{"$schema":"http://json-schema.org/draft-04/schema","id":"https://project-open-data.cio.gov/v1.1/schema/dataset.json#","title":"Project Open Data Dataset","description":"The metadata format for all federal open data. Validates a single JSON object entry (as opposed to entire Data.json catalog).","type":"object","required":["title","description","identifier","accessLevel"],"properties":{"@type":{"title":"Metadata Context","type":"string","description":"IRI for the JSON-LD data type. This should be dcat:Dataset for each Dataset","default":"dcat:Dataset"},"title":{"title":"Title","description":"Human-readable name of the asset. Should be in plain English and include sufficient detail to facilitate search and discovery.","type":"string","minLength":1},"identifier":{"title":"Unique Identifier","description":"A unique identifier for the dataset or API as maintained within an Agency catalog or database.","type":"string","minLength":1},"description":{"title":"Description","description":"Human-readable description (e.g., an abstract) with sufficient detail to enable a user to quickly understand whether the asset is of interest.","type":"string","minLength":1},"accessLevel":{"description":"The degree to which this dataset could be made publicly-available, regardless of whether it has been made available. Choices: public (Data asset is or could be made publicly available to all without restrictions), restricted public (Data asset is available under certain use restrictions), or non-public (Data asset is not available to members of the public)","title":"Public Access Level","type":"string","enum":["public","restricted public","non-public"]},"rights":{"title":"Rights","description":"This may include information regarding access or restrictions based on privacy, security, or other policies. This should also provide an explanation for the selected \"accessLevel\" including instructions for how to access a restricted file, if applicable, or explanation for why a \"non-public\" or \"restricted public\" data assetis not \"public,\" if applicable. Text, 255 characters.","type":"string","maxLength":255},"accrualPeriodicity":{"title":"Frequency","description":"Frequency with which dataset is published.","type":"string"},"bureauCode":{"title":"Bureau Code","description":"Federal agencies, combined agency and bureau code from OMB Circular A-11, Appendix C in the format of 015:010.","type":"array","items":{"type":"string","pattern":"[0-9]{3}:[0-9]{2}"},"minItems":1,"uniqueItems":true},"describedBy":{"title":"Data Dictionary","description":"URL to the data dictionary for the dataset or API. Note that documentation other than a data dictionary can be referenced using Related Documents as shown in the expanded fields.","type":"string","format":"uri"},"describedByType":{"title":"Data Dictionary Type","description":"The machine-readable file format (IANA Media Type or MIME Type) of the distribution’s describedBy URL","pattern":"^[-\\w]+/[-\\w]+(\\.[-\\w]+)*([+][-\\w]+)?$","type":"string"},"conformsTo":{"title":"Data Standard","description":"URI used to identify a standardized specification the dataset conforms to","type":"string","format":"uri"},"dataQuality":{"title":"Data Quality","description":"Whether the dataset meets the agency’s Information Quality Guidelines (true/false).","type":"boolean"},"contactPoint":{"title":"Contact","description":"Contact person for dataset.","type":"object","items":{"type":"object","properties":{"@type":{"type":"string","title":"Metadata Context","description":"IRI for the JSON-LD data type. This should be vcard:Contact for contactPoint","default":"vcard:Contact"},"fn":{"title":"Contact Name","description":"A full formatted name, eg Firstname Lastname","type":"string","minLength":1},"hasEmail":{"title":"Email","description":"Email address for the contact","pattern":"^mailto:[\\w\\_\\~\\!\\$\\&\\'\\(\\)\\*\\+\\,\\;\\=\\:.-]+@[\\w.-]+\\.[\\w.-]+?$","type":"string"}}}},"distribution":{"title":"Distribution","description":"A container for the array of Distribution objects","type":"array","items":{"minItems":1,"uniqueItems":true,"title":"Project Open Data Distribution","type":"object","required":["title"],"properties":{"@type":{"title":"Metadata Context","description":"IRI for the JSON-LD data type. This should be dcat:Distribution for each Distribution","default":"dcat:Distribution","type":"string"},"title":{"title":"Title","description":"Human-readable name of the distribution","type":"string","minLength":1},"identifier":{"title":"Identifier","description":"Distribution identifier","type":"string"},"description":{"title":"Description","description":"Human-readable description of the distribution","type":"string","minLength":1},"fileLocation":{"title":" ","type":"string"},"format":{"title":"Format","description":"A human-readable description of the file format of a distribution","type":"string"},"mediaType":{"title":"Media Type","description":"The machine-readable file format (IANA Media Type or MIME Type) of the distribution’s downloadURL","pattern":"^[-\\w]+/[-\\w]+(\\.[-\\w]+)*([+][-\\w]+)?$","type":"string"},"mediaSize":{"title":"Media Size","description":"The size of the meida file.","type":"integer"},"downloadURL":{"title":"Download URL","description":"URL providing direct access to a downloadable file of a dataset","type":"string","format":"uri"},"accessURL":{"title":"Access URL","description":"URL providing indirect access to a dataset","type":"string","format":"uri"},"conformsTo":{"title":"Data Standard","description":"URL providing indirect access to a dataset","type":"string","format":"uri"},"describedBy":{"title":"Data Dictionary","description":"URL to the data dictionary for the distribution found at the downloadURL","type":"string","format":"uri"},"describedByType":{"title":"Data Dictionary Type","description":"The machine-readable file format (IANA Media Type or MIME Type) of the distribution’s describedBy URL","pattern":"^[-\\w]+/[-\\w]+(\\.[-\\w]+)*([+][-\\w]+)?$","type":"string"},"isssued":{"title":"Release Date","description":"Date of formal issuance.","type":"string","pattern":"^([\\+-]?\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))([T\\s]((([01]\\d|2[0-3])((:?)[0-5]\\d)?|24\\:?00)([\\.,]\\d+(?!:))?)?(\\17[0-5]\\d([\\.,]\\d+)?)?([zZ]|([\\+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?)?$"},"schema":{"title":"Schema","description":"Ref of https://frictionlessdata.io/schemas/table-schema.json","type":"object","properties":{"fields":{"type":"array","items":{"title":"Table Schema Field","type":"object","properties":{"name":{"title":"Name","description":"A name for this field.","type":"string"},"title":{"title":"Title","description":"A human-readable title.","type":"string"},"description":{"title":"Description","description":"A text description. Markdown is encouraged.","type":"string"},"type":{"description":"The type for the data.","enum":["string","integer","number","boolean","object","array","date","time","datetime","year","yearmonth","duration","geopoint","geojson"]},"format":{"description":"The format keyword options for `string` are `default`, `email`, `uri`, `binary`, and `uuid`.","enum":["default","email","uri","binary","uuid"]}}}}}}}}},"issued":{"title":"Release Date","description":"Date of formal issuance.","type":"string","pattern":"^([\\+-]?\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))([T\\s]((([01]\\d|2[0-3])((:?)[0-5]\\d)?|24\\:?00)([\\.,]\\d+(?!:))?)?(\\17[0-5]\\d([\\.,]\\d+)?)?([zZ]|([\\+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?)?$"},"keyword":{"title":"Tags","description":"Tags (or keywords) help users discover your dataset; please include terms that would be used by technical and non-technical users.","type":"array","items":{"$schema":"http://json-schema.org/draft-04/schema","title":"Tags","description":"Tags (or keywords) help users discover your dataset; please include terms that would be used by technical and non-technical users.","type":"object","required":["title","identifier"],"properties":{"title":{"title":"Title","type":"string"},"identifier":{"type":"string","title":"Identifier"},"created":{"type":"string","title":"Created","format":"date-time"},"modified":{"type":"string","title":"Modified","format":"date-time"},"icon":{"type":"string","title":"icon"}}}},"landingPage":{"title":"Homepage URL","description":"Alternative landing page used to redirect user to a contextual, Agency-hosted “homepage” for the Dataset or API when selecting this resource from the Data.gov user interface.","type":"string","format":"uri"},"language":{"title":"Language","description":"The language of the dataset.","type":"array","default":["en"],"items":{"type":"string","pattern":"^(((([A-Za-z]{2,3}(-([A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-([A-Za-z]{4}))?(-([A-Za-z]{2}|[0-9]{3}))?(-([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-([0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(x(-[A-Za-z0-9]{1,8})+))?)|(x(-[A-Za-z0-9]{1,8})+)|((en-GB-oed|i-ami|i-bnn|i-default|i-enochian|i-hak|i-klingon|i-lux|i-mingo|i-navajo|i-pwn|i-tao|i-tay|i-tsu|sgn-BE-FR|sgn-BE-NL|sgn-CH-DE)|(art-lojban|cel-gaulish|no-bok|no-nyn|zh-guoyu|zh-hakka|zh-min|zh-min-nan|zh-xiang)))$"}},"license":{"title":"License","description":"The license dataset or API is published with. See Open Licenses for more information.","type":"string","format":"uri"},"modified":{"title":"Last Update","description":"Most recent date on which the dataset was changed, updated or modified.","type":"string","pattern":"^([\\+-]?\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))([T\\s]((([01]\\d|2[0-3])((:?)[0-5]\\d)?|24\\:?00)([\\.,]\\d+(?!:))?)?(\\17[0-5]\\d([\\.,]\\d+)?)?([zZ]|([\\+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?)?$"},"primaryITInvestmentUII":{"title":"Primary IT Investment UII","description":"For linking a dataset with an IT Unique Investment Identifier (UII)","type":"string","pattern":"[0-9]{3}-[0-9]{9}"},"programCode":{"title":"Program Code","description":"Federal agencies, list the primary program related to this data asset, from the Federal Program Inventory. Use the format of 015:001","type":"array","items":{"type":"string","pattern":"[0-9]{3}:[0-9]{3}"},"minItems":1,"uniqueItems":true},"publisher":{"type":"object","properties":{"$schema":"http://json-schema.org/draft-04/schema#","id":"https://project-open-data.cio.gov/v1.1/schema/organization.json#","title":"Organization","description":"A Dataset Publisher Organization.","type":"object","required":["name"],"properties":{"@type":{"title":"Metadata Context","description":"IRI for the JSON-LD data type. This should be org:Organization for each publisher","type":"string","default":"org:Organization"},"name":{"title":"Publisher Name","description":"A full formatted name, eg Firstname Lastname","type":"string","minLength":1},"description":{"title":"Description","type":"string","description":"Description of the organization"},"identifier":{"type":"string","title":"Identifier"},"image":{"title":"Image","description":"Image or logo for the organization","type":"string","format":"uri"},"subOrganizationOf":{"title":"Parent Organization","type":"string"}}}},"references":{"title":"Related Documents","description":"Related documents such as technical information about a dataset, developer documentation, etc.","type":"array","items":{"type":"string","format":"uri"}},"spatial":{"title":"Spatial","description":"The range of spatial applicability of a dataset. Could include a spatial region like a bounding box or a named place.","type":"string","minLength":1},"systemOfRecords":{"title":"System of Records","description":"If the systems is designated as a system of records under the Privacy Act of 1974, provide the URL to the System of Records Notice related to this dataset.","minLength":1,"type":"string"},"temporal":{"title":"Temporal","description":"The range of temporal applicability of a dataset (i.e., a start and end date of applicability for the data).","type":"string","pattern":"^([\\+-]?\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))([T\\s]((([01]\\d|2[0-3])((:?)[0-5]\\d)?|24\\:?00)([\\.,]\\d+(?!:))?)?(\\17[0-5]\\d([\\.,]\\d+)?)?([zZ]|([\\+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?)?(\\/)([\\+-]?\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))([T\\s]((([01]\\d|2[0-3])((:?)[0-5]\\d)?|24\\:?00)([\\.,]\\d+(?!:))?)?(\\17[0-5]\\d([\\.,]\\d+)?)?([zZ]|([\\+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?)?$"},"isPartOf":{"title":"Collection","description":"The collection of which the dataset is a subset","type":"string","minLength":1},"theme":{"title":"Category","description":"Main thematic category of the dataset.","type":"array","items":{"minLength":1,"minItems":1,"$schema":"http://json-schema.org/draft-04/schema#","title":"Category","description":"Main thematic category of the dataset.","type":"object","required":["title","identifier","created","modified"],"properties":{"title":{"title":"Title","type":"string"},"identifier":{"type":"string","title":"Identifier"},"created":{"type":"string","title":"Created","format":"date-time"},"modified":{"type":"string","title":"Modified","format":"date-time"},"icon":{"type":"string","title":"icon"}}},"uniqueItems":true}}}},"map":{"organization":{"name":"title"},"dataset":{"issued":"created"}},"uiSchema":{"datasets":{"description":{"ui:widget":"textarea"},"identifier":{"ui:placeholder":"This will be computed from the title if not provided"},"@type":{"ui:widget":"hidden"},"contactPoint":{"items":{"@type":{"ui:widget":"hidden"}}},"distribution":{"items":{"ui:widget":"referenced","ui:options":{"collection":"distribution"}}},"theme":{"items":{"ui:widget":"referenced","ui:options":{"collection":"keyword"}}},"license":{"ui:widget":"referenced","ui:options":{"collection":"license"}},"ui:order":["@type","title","identifier","description","distribution","keyword","theme","accessLevel","rights","accrualPeriodicity","bureauCode","describedBy","describedByType","conformsTo","dataQuality","contactPoint","landingPage","language","primaryITInvestmentUII","programCode","publisher","references","spatial","systemOfRecords","temporal","license","isPartOf","issued","modified"]},"distributions":{"description":{"ui:widget":"textarea"},"identifier":{"ui:placeholder":"This will be computed from the title if not provided"},"@type":{"ui:widget":"hidden"},"describedBy":{"ui:widget":"hidden"},"describedByType":{"ui:widget":"hidden"},"conformsTo":{"ui:widget":"hidden"},"mediaType":{"ui:readonly":true},"mediaSize":{"ui:readonly":true},"accessURL":{"ui:readonly":true},"downloadURL":{"ui:readonly":true},"fileLocation":{"ui:widget":"distUpload"}},"organizations":{"@type":{"ui:widget":"hidden"},"image":{"ui:widget":"image"}}},"pageSchema":{"dataset":{"Main":{"description":{"type":"Text"},"theme":{"type":"Theme"},"keyword":{"type":"Tag"},"distribution":{"type":"Resource"}},"Table":{"issued":{"type":"String","label":true},"identifier":{"type":"String","label":true},"modified":{"type":"String","label":true},"programCode":{"type":"String","label":true},"bureauCode":{"type":"String","label":true},"conformsTo":{"type":"String","label":true},"dataQuality":{"type":"String","label":true},"accessLevel":{"type":"String","label":true},"temporal":{"type":"String","label":true},"rights":{"type":"String","label":true},"describedBy":{"type":"String","label":true},"describedByType":{"type":"String","label":true},"accrualPeriodicity":{"type":"String","label":true},"primaryITInvestmentUII":{"type":"String","label":true},"landingPage":{"type":"String","label":true},"isPartOf":{"type":"String","label":true},"systemOfRecords":{"type":"String","label":true},"spatial":{"type":"String","label":true}},"Left":{"publisher":{"type":"Org","labe":false},"spatial":{"type":"ExtentMap","label":true},"widget":{"type":"Social"}}},"distribution":{"Main":{"description":{"type":"Text"},"downloadURL":{"type":"FileDownload"},"accessURL":{"type":"FileDownload"},"widget":{"type":"FilePreview","fields":["downloadURL","accessURL"]},"schema":{"type":"Schema"}},"Table":{"isssued":{"type":"String","label":true},"identifier":{"type":"String","label":true},"format":{"type":"String","label":true},"fileLocation":{"type":"String","label":true},"mediaType":{"type":"String","label":true},"mediaSize":{"type":"String","label":true},"conformsTo":{"type":"String","label":true},"describedBy":{"type":"String","label":true},"describedByType":{"type":"String","label":true}}},"organization":{"Main":{"image":{"type":"Image","lable":false,"float":"left"},"description":{"type":"Text"},"widget":{"type":"SearchPage","collection":"publisher","arg":"name"}}}},"facets":{"keyword":{"label":"Tags","field":"keyword.title"},"theme":{"label":"Category","field":"theme.title"},"publisher":{"label":"Organization","field":"publisher.name"},"distribution":{"label":"Format","field":"distribution.format"}}} diff --git a/api/search-index.json b/api/search-index.json new file mode 100644 index 0000000..2427335 --- /dev/null +++ b/api/search-index.json @@ -0,0 +1 @@ +[{"doc":{"title":"Afghanistan Election Districts","keyword":[{"created":"2017-11-17T21:51:13.596Z","title":"country-afghanistan","modified":"2017-11-17T21:51:13.596Z","identifier":"country-afghanistan","interra":{"id":"country-afghanistan"}},{"created":"2017-11-17T21:51:13.597Z","title":"election","modified":"2017-11-17T21:51:13.597Z","identifier":"election","interra":{"id":"election"}},{"created":"2017-11-17T21:51:13.598Z","title":"politics","modified":"2017-11-17T21:51:13.598Z","identifier":"politics","interra":{"id":"politics"}},{"created":"2017-11-17T21:51:13.598Z","title":"transparency","modified":"2017-11-17T21:51:13.598Z","identifier":"transparency","interra":{"id":"transparency"}}],"publisher":{"@type":"org:Organization","name":"Committee on International Affairs","description":"The Committee on International Affairs is a working group to identify opportunities to learn from and collaborate with government and organizations across the globe.","image":"[interraUrl]/media/map.png","interra":{"id":"committee-on-internationa","source":"dkandemo"},"identifier":"3b611ac7-17a1-48ee-a4e7-4fd08d9af3f7","created":"2017-11-17","modified":"2017-11-17"},"description":"

This data created by the National Democratic Institute (NDI) in partnership with Development Seed, a Washington, D.C.-based online communications consultancy, is designed to make data from the August 20, 2009, Afghanistan presidential election accessible and transparent. We have provided this csv file as there is no download for the whole dataset. There are many more files on the website.

\n","modified":"2017-11-17","distribution":[{"@type":"dcat:Distribution","downloadURL":"[interraUrl]/media/district_centerpoints.csv","mediaType":"text/csv","format":"csv","description":"

You can see this data plotted on a map, by clicking on 'Map' below. Individual data records can be seen by clicking on each point.

\n","title":"District Names","interra":{"id":"district-names","source":"dkandemo"},"schema":{"fields":[{"name":"state","type":"string"},{"name":"total.foreclosures","type":"integer"},{"name":"foreclosure.ratio","type":"integer"}]},"identifier":"f8d6eeda-a0ca-4a0f-9bfd-7955cdbae92d","created":"2017-11-17","modified":"2017-11-17"}],"identifier":"c9e2d352-e24c-4051-9158-f48127aa5692","interra":{"id":"afghanistan-election-dist","source":"dkandemo"}},"ref":"afghanistan-election-dist"},{"doc":{"title":"Crime Data for the Ten Most Populous Cities in the U.S.","keyword":[{"created":"2017-11-17T21:51:13.542Z","title":"crime","modified":"2017-11-17T21:51:13.542Z","identifier":"crime","interra":{"id":"crime"}},{"created":"2017-11-17T21:51:13.543Z","title":"public safety","modified":"2017-11-17T21:51:13.543Z","identifier":"public-safety","interra":{"id":"public-safety"}}],"publisher":{"@type":"org:Organization","name":"DKAN Demo Examples","description":"These are examples from the DKAN demo site.","image":"[interraUrl]/media/dkan-logo.svg","interra":{"id":"demogetdkancom","source":"dkandemo"},"identifier":"3a326e8b-0aa0-497c-9f2b-c7d0bd083fc6","created":"2017-11-17","modified":"2017-11-17"},"description":"

Source: FBI Uniform Crime Report, 2014 (https://www.fbi.gov/about-us/cjis/ucr/ucr)

\n

Data is split into two categories:

\n

Violent Crime: Includes aggravated assault, murder, rape and robbery.
Property Crime: Includes arson, burglary, larceny-theft and motor vehicle theft.

\n

Top 10 Most Populous U.S. Cities:

\n
    \n
  1. New York, NY
  2. \n
  3. Los Angeles, CA
  4. \n
  5. Chicago, IL
  6. \n
  7. Houston, TX
  8. \n
  9. Philadelphia, PA
  10. \n
  11. Las Vegas, NV
  12. \n
  13. Phoenix, AZ
  14. \n
  15. San Antonio, TX
  16. \n
  17. San Diego, TX
  18. \n
  19. Dallas, TX
  20. \n
\n

Related Data Dashboard: Crime in America's Top 10 Most Populous Cities

\n","theme":[{"created":"2017-11-17T21:51:13.545Z","title":"Public Safety","modified":"2017-11-17T21:51:13.545Z","identifier":"public-safety","icon":"safety","interra":{"id":"public-safety"}}],"modified":"2017-11-17","distribution":[{"@type":"dcat:Distribution","downloadURL":"[interraUrl]/media/ViolentCrimeRates.csv","mediaType":"text/csv","format":"csv","description":"

Source: FBI Uniform Crime Report, 2014 (https://www.fbi.gov/about-us/cjis/ucr/ucr)

\n

Includes information on the frequency of violent crimes in general, murder and non-negligent manslaughter, aggravated assault, rape and robbery. All crime rates are per 100,000 people.

\n","title":"Violent Crime Data for the Ten Most Populous Cities in the U.S.","interra":{"id":"violent-crime-data-for-th","source":"dkandemo"},"identifier":"b5bee926-93b8-47b4-b325-f31bb2510426","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"[interraUrl]/media/PropertyCrimesByCity_3.csv","mediaType":"text/csv","format":"csv","title":"Property Crime Statistics by City","interra":{"id":"property-crime-statistics","source":"dkandemo"},"identifier":"c25cb14b-c662-4426-8002-c71174257dfb","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"[interraUrl]/media/PropertyCrimeRates_1.csv","mediaType":"text/csv","format":"csv","description":"

Source: FBI Uniform Crime Report, 2014 (https://www.fbi.gov/about-us/cjis/ucr/ucr)

\n","title":"Property Crime Rates for 10 Most Populous US Cities (2015)","interra":{"id":"property-crime-rates-for-","source":"dkandemo"},"identifier":"7df5eafa-1c27-42a0-9b90-7d20b3fef736","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"[interraUrl]/media/NumbersByCity.csv","mediaType":"text/csv","format":"csv","title":"Violent Crime Statistics by City ","interra":{"id":"violent-crime-statistics-","source":"dkandemo"},"identifier":"c1989976-c5c4-4cd8-9702-a0c76db4c58c","created":"2017-11-17","modified":"2017-11-17"}],"identifier":"d460252e-d42c-474a-9ea9-5287b1d595f6","interra":{"id":"crime-data-for-the-ten-mo","source":"dkandemo"}},"ref":"crime-data-for-the-ten-mo"},{"doc":{"title":"Florida Bike Lanes ","keyword":[{"created":"2017-11-17T21:51:13.503Z","title":"No keyword provided","modified":"2017-11-17T21:51:13.503Z","identifier":"no-keyword-provided","interra":{"id":"no-keyword-provided"}}],"publisher":{"@type":"org:Organization","name":"DKAN Demo Examples","description":"These are examples from the DKAN demo site.","image":"[interraUrl]/media/dkan-logo.svg","interra":{"id":"demogetdkancom","source":"dkandemo"},"identifier":"3a326e8b-0aa0-497c-9f2b-c7d0bd083fc6","created":"2017-11-17","modified":"2017-11-17"},"description":"

Data on bike lanes in Florida.

\n","theme":[{"created":"2017-11-17T21:51:13.508Z","title":"Transportation","modified":"2017-11-17T21:51:13.508Z","identifier":"transportation","icon":"transport","interra":{"id":"transportation"}},{"created":"2017-11-17T21:51:13.509Z","title":"City Planning","modified":"2017-11-17T21:51:13.509Z","identifier":"city-planning","icon":"building-12","interra":{"id":"city-planning"}}],"modified":"2017-11-17","distribution":[{"@type":"dcat:Distribution","downloadURL":"[interraUrl]/media/Bike_Lane.csv","mediaType":"text/csv","format":"csv","title":"Florida Bike Lanes","interra":{"id":"florida-bike-lanes","source":"dkandemo"},"identifier":"bfcd3357-1e14-4ab0-bf9c-5a64bdcc623a","created":"2017-11-17","modified":"2017-11-17"}],"identifier":"cedcd327-4e5d-43f9-8eb1-c11850fa7c55","interra":{"id":"florida-bike-lanes","source":"dkandemo"}},"ref":"florida-bike-lanes"},{"doc":{"title":"Gold Prices in London 1950-2008 (Monthly)","keyword":[{"created":"2017-11-17T21:51:13.589Z","title":"economy","modified":"2017-11-17T21:51:13.589Z","identifier":"economy","interra":{"id":"economy"}},{"created":"2017-11-17T21:51:13.591Z","title":"price","modified":"2017-11-17T21:51:13.591Z","identifier":"price","interra":{"id":"price"}},{"created":"2017-11-17T21:51:13.591Z","title":"time-series","modified":"2017-11-17T21:51:13.591Z","identifier":"time-series","interra":{"id":"time-series"}}],"publisher":{"@type":"org:Organization","name":"DKAN Demo Examples","description":"These are examples from the DKAN demo site.","image":"[interraUrl]/media/dkan-logo.svg","interra":{"id":"demogetdkancom","source":"dkandemo"},"identifier":"3a326e8b-0aa0-497c-9f2b-c7d0bd083fc6","created":"2017-11-17","modified":"2017-11-17"},"description":"

Monthly gold prices (USD) in London from Bundesbank.

\n

General: 1 ounce of fine gold = 31.1034768g.

\n

Method of calculation:

\n\n

License: PDDL (Source indicates no restrictions on data).

\n","theme":[{"created":"2017-11-17T21:51:13.592Z","title":"Finance and Budgeting","modified":"2017-11-17T21:51:13.592Z","identifier":"finance-and-budgeting","icon":"budget","interra":{"id":"finance-and-budgeting"}}],"modified":"2017-11-17","distribution":[{"@type":"dcat:Distribution","downloadURL":"[interraUrl]/media/data_0.csv","mediaType":"text/csv","format":"csv","description":"

CSV file extracted and cleaned from source excel.

\n

Click on Graph button under Preview and plot date (x-axis) against price (y-axis) to see a line graph. Hovering over a point gives you the value of that data entry.

\n","title":"Table of Gold Prices","interra":{"id":"table-of-gold-prices","source":"dkandemo"},"identifier":"b9ed31f7-a4f2-4e98-98b3-fd28d3d97540","created":"2017-11-17","modified":"2017-11-17"}],"identifier":"5dc1cfcf-8028-476c-a020-f58ec6dd621c","interra":{"id":"gold-prices-in-london-195","source":"dkandemo"}},"ref":"gold-prices-in-london-195"},{"doc":{"title":"London Deprivation Index","keyword":[{"created":"2017-11-17T21:51:13.565Z","title":"demographics","modified":"2017-11-17T21:51:13.565Z","identifier":"demographics","interra":{"id":"demographics"}},{"created":"2017-11-17T21:51:13.589Z","title":"economy","modified":"2017-11-17T21:51:13.589Z","identifier":"economy","interra":{"id":"economy"}},{"created":"2017-11-17T21:51:13.530Z","title":"spatial data","modified":"2017-11-17T21:51:13.530Z","identifier":"spatial-data","interra":{"id":"spatial-data"}},{"created":"2017-11-17T21:51:13.531Z","title":"United Kingdom","modified":"2017-11-17T21:51:13.531Z","identifier":"united-kingdom","interra":{"id":"united-kingdom"}}],"publisher":{"@type":"org:Organization","name":"State Economic Council","description":"The State Economic Council is responsible for increasing economic development of the state by collecting statistics and performing analysis on the labor force, workforce and employer demographics, generational trends, etc.","image":"[interraUrl]/media/money-saving.png","interra":{"id":"state-economic-council","source":"dkandemo"},"identifier":"d48ea7d8-ef73-4d59-894a-327822b803db","created":"2017-11-17","modified":"2017-11-17"},"description":"

Deprivation is measured across seven different areas or domains - income, employment, health, education, living environment, crime and barriers to services using a wide range of indicators, and the methods used show how each area compares with other areas across England using a combination of all these indicators.

\n

As stated by The Guardian, \"the data is based on a close analysis of the UK government's Indices of Multiple Deprivation - which measures relative poverty across England – by Alasdair Rae at the University of Sheffield.\" (Source)

\n

Source: http://data.london.gov.uk/dataset/indices-of-deprivation-2015

\n

Related Data Story: London Income Analysis

\n","theme":[{"created":"2017-11-17T21:51:13.592Z","title":"Finance and Budgeting","modified":"2017-11-17T21:51:13.592Z","identifier":"finance-and-budgeting","icon":"budget","interra":{"id":"finance-and-budgeting"}}],"modified":"2017-11-17","distribution":[{"@type":"dcat:Distribution","downloadURL":"[interraUrl]/media/media/IMD-MAPS.zip","mediaType":"application/zip","format":"zip","title":"English Indices of Deprivation 2010","interra":{"id":"english-indices-of-depriv","source":"dkandemo"},"identifier":"554f79c0-6911-4af7-8879-7f0a63fae186","created":"2017-11-17","modified":"2017-11-17"}],"identifier":"fb3525f2-d32a-451e-8869-906ed41f7695","interra":{"id":"london-deprivation-index","source":"dkandemo"}},"ref":"london-deprivation-index"},{"doc":{"title":"State Workforce by Generation (2011-2015)","keyword":[{"created":"2017-11-17T21:51:13.565Z","title":"demographics","modified":"2017-11-17T21:51:13.565Z","identifier":"demographics","interra":{"id":"demographics"}},{"created":"2017-11-17T21:51:13.558Z","title":"socioeconomic","modified":"2017-11-17T21:51:13.558Z","identifier":"socioeconomic","interra":{"id":"socioeconomic"}},{"created":"2017-11-17T21:51:13.559Z","title":"workforce","modified":"2017-11-17T21:51:13.559Z","identifier":"workforce","interra":{"id":"workforce"}}],"publisher":{"@type":"org:Organization","name":"State Economic Council","description":"The State Economic Council is responsible for increasing economic development of the state by collecting statistics and performing analysis on the labor force, workforce and employer demographics, generational trends, etc.","image":"[interraUrl]/media/money-saving.png","interra":{"id":"state-economic-council","source":"dkandemo"},"identifier":"d48ea7d8-ef73-4d59-894a-327822b803db","created":"2017-11-17","modified":"2017-11-17"},"description":"

Information about the state workforce, broken down into four generational cohorts.

\n

Note: This dataset has been given a vague name because it is anonymized demo data, not actual state data.

\n","modified":"2017-11-17","distribution":[{"@type":"dcat:Distribution","downloadURL":"[interraUrl]/media/media/GenChart_0_0.csv","mediaType":"text/csv","format":"csv","description":"

Population of state employees broken down into Gen X, Gen Y, Baby Boomers and Over 65+.

\n","title":"Workforce By Generation (2011-2015)","interra":{"id":"workforce-by-generation-2","source":"dkandemo"},"identifier":"51e860de-401f-40ca-921a-1e6b498b8505","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"[interraUrl]/media/retirements_0.csv","mediaType":"text/csv","format":"csv","description":"

Total number of employees who retired from the state workforce, 2011-2015.

\n","title":"Retirements (2011 - 2015)","interra":{"id":"retirements-2011-2015","source":"dkandemo"},"identifier":"7b04f63a-9cc9-4566-a04b-c8c30fb2def4","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"[interraUrl]/media/2015EligibleVsActual.csv","mediaType":"text/csv","format":"csv","description":"

This data, ranging from fiscal year 2011 to fiscal year 2015, depicts the percentage of the workforce that is eligible to retire compared to the percentage of the workforce who actually retired.

\n","title":"Retirements: Eligible vs. Actual","interra":{"id":"retirements-eligible-vs-a","source":"dkandemo"},"identifier":"813a7529-49d7-40be-ad97-dbd3abec1967","created":"2017-11-17","modified":"2017-11-17"}],"identifier":"95f8eac4-fd1f-4b35-8472-5c87e9425dfa","interra":{"id":"state-workforce-by-genera","source":"dkandemo"}},"ref":"state-workforce-by-genera"},{"doc":{"title":"US National Foreclosure Statistics January 2012","keyword":[{"created":"2017-11-17T21:51:13.589Z","title":"economy","modified":"2017-11-17T21:51:13.589Z","identifier":"economy","interra":{"id":"economy"}},{"created":"2017-11-17T21:51:13.598Z","title":"politics","modified":"2017-11-17T21:51:13.598Z","identifier":"politics","interra":{"id":"politics"}},{"created":"2017-11-17T21:51:13.598Z","title":"transparency","modified":"2017-11-17T21:51:13.598Z","identifier":"transparency","interra":{"id":"transparency"}}],"publisher":{"@type":"org:Organization","name":"DKAN Demo Examples","description":"These are examples from the DKAN demo site.","image":"[interraUrl]/media/dkan-logo.svg","interra":{"id":"demogetdkancom","source":"dkandemo"},"identifier":"3a326e8b-0aa0-497c-9f2b-c7d0bd083fc6","created":"2017-11-17","modified":"2017-11-17"},"description":"

County data: http://www.npr.org/templates/story/story.php?storyId=111494514

\n

State data: http://statehealthfacts.org/comparetable.jsp?ind=649&cat=1

\n","modified":"2017-11-17","distribution":[{"@type":"dcat:Distribution","downloadURL":"[interraUrl]/media/us_foreclosures_jan_2012_by_state.csv","mediaType":"text/csv","format":"csv","description":"

US National Foreclosure Statistics - By State - January 2012

\n","title":"1-2012-Foreclosures-by-State","interra":{"id":"1-2012-foreclosures-by-st","source":"dkandemo"},"identifier":"eb8f7a37-8e9f-4799-ba75-8e1abafb18c6","schema":{"fields":[{"name":"lon","type":"number"},{"name":"lat","type":"number"},{"name":"Unit_Type","type":"string"},{"name":"Dist_Name","type":"string"},{"name":"Prov_Name","type":"string"},{"name":"Dari_Dist","type":"string"},{"name":"Dari_Prov","type":"string"},{"name":"Dist_ID","type":"integer"},{"name":"Prov_ID","type":"integer"}]},"created":"2017-11-17","modified":"2017-11-17"}],"identifier":"74c06c81-9fe0-439c-aba9-cd5c980a6df4","interra":{"id":"us-national-foreclosure-s","source":"dkandemo"}},"ref":"us-national-foreclosure-s"},{"doc":{"title":"U.S. Tobacco Usage Statistics","keyword":[{"created":"2017-11-17T21:51:13.565Z","title":"demographics","modified":"2017-11-17T21:51:13.565Z","identifier":"demographics","interra":{"id":"demographics"}},{"created":"2017-11-17T21:51:13.573Z","title":"health","modified":"2017-11-17T21:51:13.573Z","identifier":"health","interra":{"id":"health"}}],"publisher":{"@type":"org:Organization","name":"Advisory Council for Infectious Disease","description":"Advisory Council for Infectious Disease is a working group that performs research and prepares reports to inform treatment and prevention programs nationally.","image":"[interraUrl]/media/clipboard.png","interra":{"id":"advisory-council-for-infe","source":"dkandemo"},"identifier":"77df7dc5-7645-49de-bb0e-63e9c71a02d0","created":"2017-11-17","modified":"2017-11-17"},"description":"

Statistics on U.S. smoking rates and tobacco taxation rates for all fifty states.

\n

Source: Centers for Disease Control and Prevention, 2015
http://www.cdc.gov/tobacco/data_statistics/state_data/

\n

Related Data Story: State-Level Policies Reduce Smoking Rates Nationwide

\n","theme":[{"created":"2017-11-17T21:51:13.574Z","title":"Health Care","modified":"2017-11-17T21:51:13.574Z","identifier":"health-care","icon":"healthcare","interra":{"id":"health-care"}}],"modified":"2017-11-17","distribution":[{"@type":"dcat:Distribution","downloadURL":"[interraUrl]/media/TobaccoTaxes2016_2_1.csv","mediaType":"text/csv","format":"csv","description":"

Source: The Campaign for Tobacco-Free Kids, April 2016: https://www.tobaccofreekids.org/research/factsheets/pdf/0097.pdf

\n","title":"Tobacco Taxation by State as of April 2016","interra":{"id":"tobacco-taxation-by-state","source":"dkandemo"},"identifier":"3b60d94a-21f0-4a4f-a99c-e234c8ec00b5","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"[interraUrl]/media/CDCSmokingRates.csv","mediaType":"text/csv","format":"csv","description":"

Source: Centers for Disease Control and Prevention, 2015

\n","title":"U.S. Adult Smoking Rate","interra":{"id":"us-adult-smoking-rate","source":"dkandemo"},"identifier":"5eb31ded-2bb6-460f-bc39-f09f158219e7","created":"2017-11-17","modified":"2017-11-17"}],"identifier":"1f2042ad-c513-4fcf-a933-cae6c6fd35e6","interra":{"id":"us-tobacco-usage-statisti","source":"dkandemo"}},"ref":"us-tobacco-usage-statisti"},{"doc":{"title":"Varicella (Chickenpox) Incidence and Mortality, Before and After the Vaccine","keyword":[{"created":"2017-11-17T21:51:13.573Z","title":"health","modified":"2017-11-17T21:51:13.573Z","identifier":"health","interra":{"id":"health"}}],"publisher":{"@type":"org:Organization","name":"Advisory Council for Infectious Disease","description":"Advisory Council for Infectious Disease is a working group that performs research and prepares reports to inform treatment and prevention programs nationally.","image":"[interraUrl]/media/clipboard.png","interra":{"id":"advisory-council-for-infe","source":"dkandemo"},"identifier":"77df7dc5-7645-49de-bb0e-63e9c71a02d0","created":"2017-11-17","modified":"2017-11-17"},"description":"

Centers for Disease Control and Prevention data regarding varicella (chickenpox) virus incidence and mortality rates.

\n

Source: https://data.cdc.gov/NNDSS/NNDSS-Table-II-Varicella-to-West-Nile-virus-d...

\n

Related Data Story: An End to Chickenpox: The Varicella Vaccine's Success Story

\n","theme":[{"created":"2017-11-17T21:51:13.574Z","title":"Health Care","modified":"2017-11-17T21:51:13.574Z","identifier":"health-care","icon":"healthcare","interra":{"id":"health-care"}}],"modified":"2017-11-17","distribution":[{"@type":"dcat:Distribution","downloadURL":"[interraUrl]/media/varicelladeaths1970_1994.csv","mediaType":"text/csv","format":"csv","description":"

Source: Centers for Disease Control and Prevention in Atlanta, Georgia. “Varicella Mortality: Trends before Vaccine Licensure in the United States, 1970–1994” published August 2000 in the Journal of Infectious Diseases.

\n","title":"Varicella Mortality by Age Group, 1970-1994","interra":{"id":"varicella-mortality-by-ag","source":"dkandemo"},"identifier":"4c008779-109f-4048-a0bf-3f97c73c0bc7","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"[interraUrl]/media/varicelladeaths1970_1994.csv","mediaType":"text/csv","format":"csv","description":"

Source: Centers for Disease Control and Prevention in Atlanta, Georgia. “Varicella Mortality: Trends before Vaccine Licensure in the United States, 1970–1994” published August 2000 in the Journal of Infectious Diseases.

\n","title":"Varicella Mortality by Age Group, 1970-1994","interra":{"id":"varicella-mortality-by-ag","source":"dkandemo"},"identifier":"4c008779-109f-4048-a0bf-3f97c73c0bc7","created":"2017-11-17","modified":"2017-11-17"},{"@type":"dcat:Distribution","downloadURL":"[interraUrl]/media/varicellaincidencerates_0.csv","mediaType":"text/csv","format":"csv","description":"

Source: \"Impact of Vaccination on the Epidemiology of Varicella: 1995–2009\" published in the journal Pediatrics in August 2011.

\n","title":"Varicella Incidence Rates After Vaccine Introduced in U.S., 1995-2009","interra":{"id":"varicella-incidence-rates","source":"dkandemo"},"identifier":"f6d3e11d-c960-4a25-8b4e-e8098fed2401","created":"2017-11-17","modified":"2017-11-17"}],"identifier":"e1f2ebcd-ee23-454f-87b5-df0306658418","interra":{"id":"varicella-chickenpox-inci","source":"dkandemo"}},"ref":"varicella-chickenpox-inci"},{"doc":{"title":"Wisconsin Polling Places","keyword":[{"created":"2017-11-17T21:51:13.597Z","title":"election","modified":"2017-11-17T21:51:13.597Z","identifier":"election","interra":{"id":"election"}}],"publisher":{"@type":"org:Organization","name":"Committee on International Affairs","description":"The Committee on International Affairs is a working group to identify opportunities to learn from and collaborate with government and organizations across the globe.","image":"[interraUrl]/media/map.png","interra":{"id":"committee-on-internationa","source":"dkandemo"},"identifier":"3b611ac7-17a1-48ee-a4e7-4fd08d9af3f7","created":"2017-11-17","modified":"2017-11-17"},"description":"

Polling places in the state of Wisconsin.

\n","modified":"2017-11-17","distribution":[{"@type":"dcat:Distribution","downloadURL":"[interraUrl]/media/Polling_Places_Madison_0.csv","mediaType":"text/csv","format":"csv","description":"

This is a list and map of polling places in Madison, WI.

\n

Original data here:
https://data.cityofmadison.com/Polling-Places/Polling-Places/rtyh-6ucr

\n","title":"Madison Polling Places","interra":{"id":"madison-polling-places","source":"dkandemo"},"identifier":"6f9d3daf-d415-4f70-ba4d-a9e4437d0c2f","created":"2017-11-17","modified":"2017-11-17"}],"identifier":"934400f2-a5dc-4abf-bf16-3f17335888d3","interra":{"id":"wisconsin-polling-places","source":"dkandemo"}},"ref":"wisconsin-polling-places"}] \ No newline at end of file diff --git a/api/sitemap.json b/api/sitemap.json new file mode 100644 index 0000000..5993183 --- /dev/null +++ b/api/sitemap.json @@ -0,0 +1 @@ +[{"title":"Home","loc":"/","children":[{"title":"About","loc":"/about"},{"title":"Search","loc":"/search"},{"title":"API","loc":"/api"},{"title":"Groups","loc":"/groups","children":[{"loc":"/organization/committee-on-internationa","title":"Committee on International Affairs","children":[{"loc":"/dataset/afghanistan-election-dist","title":"Afghanistan Election Districts","children":[{"loc":"/distribution/district-names","title":"District Names"}]},{"loc":"/dataset/wisconsin-polling-places","title":"Wisconsin Polling Places","children":[{"loc":"/distribution/madison-polling-places","title":"Madison Polling Places"}]}]},{"loc":"/organization/demogetdkancom","title":"demo.getdkan.com","children":[{"loc":"/dataset/crime-data-for-the-ten-mo","title":"Crime Data for the Ten Most Populous Cities in the U.S.","children":[{"loc":"/distribution/violent-crime-data-for-th","title":"Violent Crime Data for the Ten Most Populous Cities in the U.S."},{"loc":"/distribution/property-crime-statistics","title":"Property Crime Statistics by City"},{"loc":"/distribution/property-crime-rates-for-","title":"Property Crime Rates for 10 Most Populous US Cities (2015)"},{"loc":"/distribution/violent-crime-statistics-","title":"Violent Crime Statistics by City "}]},{"loc":"/dataset/florida-bike-lanes","title":"Florida Bike Lanes ","children":[{"loc":"/distribution/florida-bike-lanes","title":"Florida Bike Lanes"}]},{"loc":"/dataset/gold-prices-in-london-195","title":"Gold Prices in London 1950-2008 (Monthly)","children":[{"loc":"/distribution/table-of-gold-prices","title":"Table of Gold Prices"}]},{"loc":"/dataset/us-national-foreclosure-s","title":"US National Foreclosure Statistics January 2012","children":[{"loc":"/distribution/1-2012-foreclosures-by-st","title":"1-2012-Foreclosures-by-State"}]}]},{"loc":"/organization/state-economic-council","title":"State Economic Council, Committee on International Affairs","children":[{"loc":"/dataset/london-deprivation-index","title":"London Deprivation Index","children":[{"loc":"/distribution/english-indices-of-depriv","title":"English Indices of Deprivation 2010"}]}]},{"loc":"/organization/state-economic-council","title":"State Economic Council","children":[{"loc":"/dataset/state-workforce-by-genera","title":"State Workforce by Generation (2011-2015)","children":[{"loc":"/distribution/workforce-by-generation-2","title":"Workforce By Generation (2011-2015)"},{"loc":"/distribution/retirements-2011-2015","title":"Retirements (2011 - 2015)"},{"loc":"/distribution/retirements-eligible-vs-a","title":"Retirements: Eligible vs. Actual"}]}]},{"loc":"/organization/advisory-council-for-infe","title":"Advisory Council for Infectious Disease","children":[{"loc":"/dataset/us-tobacco-usage-statisti","title":"U.S. Tobacco Usage Statistics","children":[{"loc":"/distribution/tobacco-taxation-by-state","title":"Tobacco Taxation by State as of April 2016"},{"loc":"/distribution/us-adult-smoking-rate","title":"U.S. Adult Smoking Rate"}]},{"loc":"/dataset/varicella-chickenpox-inci","title":"Varicella (Chickenpox) Incidence and Mortality, Before and After the Vaccine","children":[{"loc":"/distribution/varicella-mortality-by-ag","title":"Varicella Mortality by Age Group, 1970-1994"},{"loc":"/distribution/varicella-mortality-by-ag","title":"Varicella Mortality by Age Group, 1970-1994"},{"loc":"/distribution/varicella-incidence-rates","title":"Varicella Incidence Rates After Vaccine Introduced in U.S., 1995-2009"}]}]}]}]}] diff --git a/api/swagger.json b/api/swagger.json new file mode 100644 index 0000000..a45d501 --- /dev/null +++ b/api/swagger.json @@ -0,0 +1 @@ +{"swagger":"2.0","info":{"description":"Interra Open Data Catalog APIs. These are all read endpoints since Interra Generate runs without a server. Full CRUD APIs are available with Interra Admin.","version":"0.0.1","title":"DKAN Demo Data Catalog API"},"paths":{"/data.json":{"get":{"summary":"Project Open Data inspired endpoint","operationId":"dataJson","description":"A list of all of the datasets as fully rendered documents. If using the pod-full schema this will be Project Open Data compliant.","produces":["application/json"],"responses":{"200":{"description":"This is a file so will either be 200 or 404","schema":{"type":"array","items":{"$ref":"#/definitions/dataset"}}}}}},"/schema.json":{"get":{"summary":"Schema for the catalog","operationId":"schema","description":"A list of all of the schemas for the catalog.","produces":["application/json"],"responses":{"200":{"description":"This is a file so will either be 200 or 404","schema":{"type":"object","properties":{"collections":{"type":"array","items":{"type":"string","title":"Collections","description":"A list of strings of the collections in the catalog."}},"schema":{"type":"object","title":"Schema","description":"Schemas for all of the catalog collections"},"map":{"type":"object","description":"A mapping of expected keys for collections and the actual value. For example every collection should have an identifier. Map allows implementing a different key for identifier or other required keys.","title":"Map"},"uiSchema":{"type":"object","title":"UISchema","description":"A UISchema for the forms for each collection. See Mozilla's react-json-schema-form for details."}}}}}}},"/routes.json":{"get":{"summary":"A list of routes for the catalog.","description":"This list is used by the front end to determine what routes are rendered as well as the build process for rendering each HTML page.","operationId":"routes","produces":["application/json"],"responses":{"200":{"description":"This is a file so will either be 200 or 404","schema":{"type":"array","items":{"type":"string"}}}}}},"/latest.json":{"get":{"summary":"A list of datasets in descending date order.","description":"This list is used by the front end to determine what routes are rendered as well as the build process for rendering each HTML page.","operationId":"latest","produces":["application/json"],"responses":{"200":{"description":"This is a file so will either be 200 or 404","schema":{"type":"array","items":{"type":"object","properties":{"identifier":{"type":"string"},"modified":{"type":"string"}}}}}}}},"/collections/organization.json":{"get":{"summary":"All results for organization collection","operationId":"organizationCollection","produces":["application/json"],"responses":{"200":{"description":"This is a file so will either be 200 or 404","schema":{"type":"array","items":{"$ref":"#/definitions/organization"}}}}}},"/collections/organization/{document}.json":{"get":{"summary":"All results for organization collection","operationId":"organizationCollectionDoc","produces":["application/json"],"responses":{"200":{"description":"This is a file so will either be 200 or 404","schema":{"type":"array","items":{"$ref":"#/definitions/organization"}}}},"description":"An individual document in the organization","parameters":[{"in":"path","name":"document","type":"string","required":true,"description":"The identifier for the document."}]}},"/collections/distribution.json":{"get":{"summary":"All results for distribution collection","operationId":"distributionCollection","produces":["application/json"],"responses":{"200":{"description":"This is a file so will either be 200 or 404","schema":{"type":"array","items":{"$ref":"#/definitions/distribution"}}}}}},"/collections/distribution/{document}.json":{"get":{"summary":"All results for distribution collection","operationId":"distributionCollectionDoc","produces":["application/json"],"responses":{"200":{"description":"This is a file so will either be 200 or 404","schema":{"type":"array","items":{"$ref":"#/definitions/distribution"}}}},"description":"An individual document in the distribution","parameters":[{"in":"path","name":"document","type":"string","required":true,"description":"The identifier for the document."}]}},"/collections/keyword.json":{"get":{"summary":"All results for keyword collection","operationId":"keywordCollection","produces":["application/json"],"responses":{"200":{"description":"This is a file so will either be 200 or 404","schema":{"type":"array","items":{"$ref":"#/definitions/keyword"}}}}}},"/collections/keyword/{document}.json":{"get":{"summary":"All results for keyword collection","operationId":"keywordCollectionDoc","produces":["application/json"],"responses":{"200":{"description":"This is a file so will either be 200 or 404","schema":{"type":"array","items":{"$ref":"#/definitions/keyword"}}}},"description":"An individual document in the keyword","parameters":[{"in":"path","name":"document","type":"string","required":true,"description":"The identifier for the document."}]}},"/collections/license.json":{"get":{"summary":"All results for license collection","operationId":"licenseCollection","produces":["application/json"],"responses":{"200":{"description":"This is a file so will either be 200 or 404","schema":{"type":"array","items":{"$ref":"#/definitions/license"}}}}}},"/collections/license/{document}.json":{"get":{"summary":"All results for license collection","operationId":"licenseCollectionDoc","produces":["application/json"],"responses":{"200":{"description":"This is a file so will either be 200 or 404","schema":{"type":"array","items":{"$ref":"#/definitions/license"}}}},"description":"An individual document in the license","parameters":[{"in":"path","name":"document","type":"string","required":true,"description":"The identifier for the document."}]}},"/collections/theme.json":{"get":{"summary":"All results for theme collection","operationId":"themeCollection","produces":["application/json"],"responses":{"200":{"description":"This is a file so will either be 200 or 404","schema":{"type":"array","items":{"$ref":"#/definitions/theme"}}}}}},"/collections/theme/{document}.json":{"get":{"summary":"All results for theme collection","operationId":"themeCollectionDoc","produces":["application/json"],"responses":{"200":{"description":"This is a file so will either be 200 or 404","schema":{"type":"array","items":{"$ref":"#/definitions/theme"}}}},"description":"An individual document in the theme","parameters":[{"in":"path","name":"document","type":"string","required":true,"description":"The identifier for the document."}]}},"/collections/dataset.json":{"get":{"summary":"All results for dataset collection","operationId":"datasetCollection","produces":["application/json"],"responses":{"200":{"description":"This is a file so will either be 200 or 404","schema":{"type":"array","items":{"$ref":"#/definitions/dataset"}}}}}},"/collections/dataset/{document}.json":{"get":{"summary":"All results for dataset collection","operationId":"datasetCollectionDoc","produces":["application/json"],"responses":{"200":{"description":"This is a file so will either be 200 or 404","schema":{"type":"array","items":{"$ref":"#/definitions/dataset"}}}},"description":"An individual document in the dataset","parameters":[{"in":"path","name":"document","type":"string","required":true,"description":"The identifier for the document."}]}}},"definitions":{"organization":{"title":"Organization","description":"A Dataset Publisher Organization.","type":"object","required":["name"],"properties":{"@type":{"title":"Metadata Context","description":"IRI for the JSON-LD data type. This should be org:Organization for each publisher","type":"string","default":"org:Organization"},"name":{"title":"Publisher Name","description":"A full formatted name, eg Firstname Lastname","type":"string","minLength":1},"description":{"title":"Description","type":"string","description":"Description of the organization"},"identifier":{"type":"string","title":"Identifier"},"image":{"title":"Image","description":"Image or logo for the organization","type":"string","format":"uri"},"subOrganizationOf":{"title":"Parent Organization","type":"string"}}},"distribution":{"title":"Project Open Data Distribution","type":"object","required":["title"],"properties":{"@type":{"title":"Metadata Context","description":"IRI for the JSON-LD data type. This should be dcat:Distribution for each Distribution","default":"dcat:Distribution","type":"string"},"title":{"title":"Title","description":"Human-readable name of the distribution","type":"string","minLength":1},"identifier":{"title":"Identifier","description":"Distribution identifier","type":"string"},"description":{"title":"Description","description":"Human-readable description of the distribution","type":"string","minLength":1},"fileLocation":{"title":" ","type":"string"},"format":{"title":"Format","description":"A human-readable description of the file format of a distribution","type":"string"},"mediaType":{"title":"Media Type","description":"The machine-readable file format (IANA Media Type or MIME Type) of the distribution’s downloadURL","pattern":"^[-\\w]+/[-\\w]+(\\.[-\\w]+)*([+][-\\w]+)?$","type":"string"},"mediaSize":{"title":"Media Size","description":"The size of the meida file.","type":"integer"},"downloadURL":{"title":"Download URL","description":"URL providing direct access to a downloadable file of a dataset","type":"string","format":"uri"},"accessURL":{"title":"Access URL","description":"URL providing indirect access to a dataset","type":"string","format":"uri"},"conformsTo":{"title":"Data Standard","description":"URL providing indirect access to a dataset","type":"string","format":"uri"},"describedBy":{"title":"Data Dictionary","description":"URL to the data dictionary for the distribution found at the downloadURL","type":"string","format":"uri"},"describedByType":{"title":"Data Dictionary Type","description":"The machine-readable file format (IANA Media Type or MIME Type) of the distribution’s describedBy URL","pattern":"^[-\\w]+/[-\\w]+(\\.[-\\w]+)*([+][-\\w]+)?$","type":"string"},"isssued":{"title":"Release Date","description":"Date of formal issuance.","type":"string","pattern":"^([\\+-]?\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))([T\\s]((([01]\\d|2[0-3])((:?)[0-5]\\d)?|24\\:?00)([\\.,]\\d+(?!:))?)?(\\17[0-5]\\d([\\.,]\\d+)?)?([zZ]|([\\+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?)?$"}}},"keyword":{"title":"Tags","description":"Tags (or keywords) help users discover your dataset; please include terms that would be used by technical and non-technical users.","type":"object","required":["title","identifier"],"properties":{"title":{"title":"Title","type":"string"},"identifier":{"type":"string","title":"Identifier"},"created":{"type":"string","title":"Created","format":"date-time"},"modified":{"type":"string","title":"Modified","format":"date-time"},"icon":{"type":"string","title":"icon"}}},"license":{"title":"License","description":"A license for datasets","type":"object","required":["title","identifier"],"properties":{"title":{"title":"Title","type":"string"},"identifier":{"type":"string","title":"Identifier"},"created":{"type":"string","title":"Created","format":"date-time"},"modified":{"type":"string","title":"Modified","format":"date-time"},"link":{"type":"string","description":"A link to the license definition","title":"definition","format":"uri"}}},"theme":{"title":"Category","description":"Main thematic category of the dataset.","type":"object","required":["title","identifier","created","modified"],"properties":{"title":{"title":"Title","type":"string"},"identifier":{"type":"string","title":"Identifier"},"created":{"type":"string","title":"Created","format":"date-time"},"modified":{"type":"string","title":"Modified","format":"date-time"},"icon":{"type":"string","title":"icon"}}},"dataset":{"title":"Project Open Data Dataset","description":"The metadata format for all federal open data. Validates a single JSON object entry (as opposed to entire Data.json catalog).","type":"object","required":["title","description","identifier","accessLevel"],"properties":{"@type":{"title":"Metadata Context","type":"string","description":"IRI for the JSON-LD data type. This should be dcat:Dataset for each Dataset","default":"dcat:Dataset"},"title":{"title":"Title","description":"Human-readable name of the asset. Should be in plain English and include sufficient detail to facilitate search and discovery.","type":"string","minLength":1},"identifier":{"title":"Unique Identifier","description":"A unique identifier for the dataset or API as maintained within an Agency catalog or database.","type":"string","minLength":1},"description":{"title":"Description","description":"Human-readable description (e.g., an abstract) with sufficient detail to enable a user to quickly understand whether the asset is of interest.","type":"string","minLength":1},"accessLevel":{"description":"The degree to which this dataset could be made publicly-available, regardless of whether it has been made available. Choices: public (Data asset is or could be made publicly available to all without restrictions), restricted public (Data asset is available under certain use restrictions), or non-public (Data asset is not available to members of the public)","title":"Public Access Level","type":"string","enum":["public","restricted public","non-public"]},"rights":{"title":"Rights","description":"This may include information regarding access or restrictions based on privacy, security, or other policies. This should also provide an explanation for the selected \"accessLevel\" including instructions for how to access a restricted file, if applicable, or explanation for why a \"non-public\" or \"restricted public\" data assetis not \"public,\" if applicable. Text, 255 characters.","type":"string","maxLength":255},"accrualPeriodicity":{"title":"Frequency","description":"Frequency with which dataset is published.","type":"string"},"bureauCode":{"title":"Bureau Code","description":"Federal agencies, combined agency and bureau code from OMB Circular A-11, Appendix C in the format of 015:010.","type":"array","items":{"type":"string","pattern":"[0-9]{3}:[0-9]{2}"},"minItems":1,"uniqueItems":true},"describedBy":{"title":"Data Dictionary","description":"URL to the data dictionary for the dataset or API. Note that documentation other than a data dictionary can be referenced using Related Documents as shown in the expanded fields.","type":"string","format":"uri"},"describedByType":{"title":"Data Dictionary Type","description":"The machine-readable file format (IANA Media Type or MIME Type) of the distribution’s describedBy URL","pattern":"^[-\\w]+/[-\\w]+(\\.[-\\w]+)*([+][-\\w]+)?$","type":"string"},"conformsTo":{"title":"Data Standard","description":"URI used to identify a standardized specification the dataset conforms to","type":"string","format":"uri"},"dataQuality":{"title":"Data Quality","description":"Whether the dataset meets the agency’s Information Quality Guidelines (true/false).","type":"boolean"},"contactPoint":{"title":"Contact","description":"Contact person for dataset.","type":"object","items":{"type":"object","properties":{"@type":{"type":"string","title":"Metadata Context","description":"IRI for the JSON-LD data type. This should be vcard:Contact for contactPoint","default":"vcard:Contact"},"fn":{"title":"Contact Name","description":"A full formatted name, eg Firstname Lastname","type":"string","minLength":1},"hasEmail":{"title":"Email","description":"Email address for the contact","pattern":"^mailto:[\\w\\_\\~\\!\\$\\&\\'\\(\\)\\*\\+\\,\\;\\=\\:.-]+@[\\w.-]+\\.[\\w.-]+?$","type":"string"}}}},"distribution":{"title":"Distribution","description":"A container for the array of Distribution objects","type":"array","items":{"minItems":1,"uniqueItems":true,"title":"Project Open Data Distribution","type":"object","required":["title"],"properties":{"@type":{"title":"Metadata Context","description":"IRI for the JSON-LD data type. This should be dcat:Distribution for each Distribution","default":"dcat:Distribution","type":"string"},"title":{"title":"Title","description":"Human-readable name of the distribution","type":"string","minLength":1},"identifier":{"title":"Identifier","description":"Distribution identifier","type":"string"},"description":{"title":"Description","description":"Human-readable description of the distribution","type":"string","minLength":1},"fileLocation":{"title":" ","type":"string"},"format":{"title":"Format","description":"A human-readable description of the file format of a distribution","type":"string"},"mediaType":{"title":"Media Type","description":"The machine-readable file format (IANA Media Type or MIME Type) of the distribution’s downloadURL","pattern":"^[-\\w]+/[-\\w]+(\\.[-\\w]+)*([+][-\\w]+)?$","type":"string"},"mediaSize":{"title":"Media Size","description":"The size of the meida file.","type":"integer"},"downloadURL":{"title":"Download URL","description":"URL providing direct access to a downloadable file of a dataset","type":"string","format":"uri"},"accessURL":{"title":"Access URL","description":"URL providing indirect access to a dataset","type":"string","format":"uri"},"conformsTo":{"title":"Data Standard","description":"URL providing indirect access to a dataset","type":"string","format":"uri"},"describedBy":{"title":"Data Dictionary","description":"URL to the data dictionary for the distribution found at the downloadURL","type":"string","format":"uri"},"describedByType":{"title":"Data Dictionary Type","description":"The machine-readable file format (IANA Media Type or MIME Type) of the distribution’s describedBy URL","pattern":"^[-\\w]+/[-\\w]+(\\.[-\\w]+)*([+][-\\w]+)?$","type":"string"},"isssued":{"title":"Release Date","description":"Date of formal issuance.","type":"string","pattern":"^([\\+-]?\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))([T\\s]((([01]\\d|2[0-3])((:?)[0-5]\\d)?|24\\:?00)([\\.,]\\d+(?!:))?)?(\\17[0-5]\\d([\\.,]\\d+)?)?([zZ]|([\\+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?)?$"}}}},"issued":{"title":"Release Date","description":"Date of formal issuance.","type":"string","pattern":"^([\\+-]?\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))([T\\s]((([01]\\d|2[0-3])((:?)[0-5]\\d)?|24\\:?00)([\\.,]\\d+(?!:))?)?(\\17[0-5]\\d([\\.,]\\d+)?)?([zZ]|([\\+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?)?$"},"keyword":{"title":"Tags","description":"Tags (or keywords) help users discover your dataset; please include terms that would be used by technical and non-technical users.","type":"array","items":{"$schema":"http://json-schema.org/draft-04/schema","title":"Tags","description":"Tags (or keywords) help users discover your dataset; please include terms that would be used by technical and non-technical users.","type":"object","required":["title","identifier"],"properties":{"title":{"title":"Title","type":"string"},"identifier":{"type":"string","title":"Identifier"},"created":{"type":"string","title":"Created","format":"date-time"},"modified":{"type":"string","title":"Modified","format":"date-time"},"icon":{"type":"string","title":"icon"}}}},"landingPage":{"title":"Homepage URL","description":"Alternative landing page used to redirect user to a contextual, Agency-hosted “homepage” for the Dataset or API when selecting this resource from the Data.gov user interface.","type":"string","format":"uri"},"language":{"title":"Language","description":"The language of the dataset.","type":"array","default":["en"],"items":{"type":"string","pattern":"^(((([A-Za-z]{2,3}(-([A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-([A-Za-z]{4}))?(-([A-Za-z]{2}|[0-9]{3}))?(-([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-([0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(x(-[A-Za-z0-9]{1,8})+))?)|(x(-[A-Za-z0-9]{1,8})+)|((en-GB-oed|i-ami|i-bnn|i-default|i-enochian|i-hak|i-klingon|i-lux|i-mingo|i-navajo|i-pwn|i-tao|i-tay|i-tsu|sgn-BE-FR|sgn-BE-NL|sgn-CH-DE)|(art-lojban|cel-gaulish|no-bok|no-nyn|zh-guoyu|zh-hakka|zh-min|zh-min-nan|zh-xiang)))$"}},"license":{"title":"License","description":"The license dataset or API is published with. See Open Licenses for more information.","type":"string","format":"uri"},"modified":{"title":"Last Update","description":"Most recent date on which the dataset was changed, updated or modified.","type":"string","pattern":"^([\\+-]?\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))([T\\s]((([01]\\d|2[0-3])((:?)[0-5]\\d)?|24\\:?00)([\\.,]\\d+(?!:))?)?(\\17[0-5]\\d([\\.,]\\d+)?)?([zZ]|([\\+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?)?$"},"primaryITInvestmentUII":{"title":"Primary IT Investment UII","description":"For linking a dataset with an IT Unique Investment Identifier (UII)","type":"string","pattern":"[0-9]{3}-[0-9]{9}"},"programCode":{"title":"Program Code","description":"Federal agencies, list the primary program related to this data asset, from the Federal Program Inventory. Use the format of 015:001","type":"array","items":{"type":"string","pattern":"[0-9]{3}:[0-9]{3}"},"minItems":1,"uniqueItems":true},"publisher":{"type":"object","properties":{"$schema":"http://json-schema.org/draft-04/schema#","id":"https://project-open-data.cio.gov/v1.1/schema/organization.json#","title":"Organization","description":"A Dataset Publisher Organization.","type":"object","required":["name"],"properties":{"@type":{"title":"Metadata Context","description":"IRI for the JSON-LD data type. This should be org:Organization for each publisher","type":"string","default":"org:Organization"},"name":{"title":"Publisher Name","description":"A full formatted name, eg Firstname Lastname","type":"string","minLength":1},"description":{"title":"Description","type":"string","description":"Description of the organization"},"identifier":{"type":"string","title":"Identifier"},"image":{"title":"Image","description":"Image or logo for the organization","type":"string","format":"uri"},"subOrganizationOf":{"title":"Parent Organization","type":"string"}}}},"references":{"title":"Related Documents","description":"Related documents such as technical information about a dataset, developer documentation, etc.","type":"array","items":{"type":"string","format":"uri"}},"spatial":{"title":"Spatial","description":"The range of spatial applicability of a dataset. Could include a spatial region like a bounding box or a named place.","type":"string","minLength":1},"systemOfRecords":{"title":"System of Records","description":"If the systems is designated as a system of records under the Privacy Act of 1974, provide the URL to the System of Records Notice related to this dataset.","minLength":1,"type":"string"},"temporal":{"title":"Temporal","description":"The range of temporal applicability of a dataset (i.e., a start and end date of applicability for the data).","type":"string","pattern":"^([\\+-]?\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))([T\\s]((([01]\\d|2[0-3])((:?)[0-5]\\d)?|24\\:?00)([\\.,]\\d+(?!:))?)?(\\17[0-5]\\d([\\.,]\\d+)?)?([zZ]|([\\+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?)?(\\/)([\\+-]?\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))([T\\s]((([01]\\d|2[0-3])((:?)[0-5]\\d)?|24\\:?00)([\\.,]\\d+(?!:))?)?(\\17[0-5]\\d([\\.,]\\d+)?)?([zZ]|([\\+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?)?$"},"isPartOf":{"title":"Collection","description":"The collection of which the dataset is a subset","type":"string","minLength":1},"theme":{"title":"Category","description":"Main thematic category of the dataset.","type":"array","items":{"minLength":1,"minItems":1,"$schema":"http://json-schema.org/draft-04/schema#","title":"Category","description":"Main thematic category of the dataset.","type":"object","required":["title","identifier","created","modified"],"properties":{"title":{"title":"Title","type":"string"},"identifier":{"type":"string","title":"Identifier"},"created":{"type":"string","title":"Created","format":"date-time"},"modified":{"type":"string","title":"Modified","format":"date-time"},"icon":{"type":"string","title":"icon"}}},"uniqueItems":true}}}},"host":"","basePath":"/api/v1/","schemes":["https","http"]} diff --git a/api/theme.json b/api/theme.json new file mode 100644 index 0000000..f0905b0 --- /dev/null +++ b/api/theme.json @@ -0,0 +1 @@ +[{"created":"2017-11-17T21:51:13.509Z","title":"City Planning","modified":"2017-11-17T21:51:13.509Z","identifier":"city-planning","icon":"building-12","interra":{"id":"city-planning"}},{"created":"2017-11-17T21:51:13.592Z","title":"Finance and Budgeting","modified":"2017-11-17T21:51:13.592Z","identifier":"finance-and-budgeting","icon":"budget","interra":{"id":"finance-and-budgeting"}},{"created":"2017-11-17T21:51:13.574Z","title":"Health Care","modified":"2017-11-17T21:51:13.574Z","identifier":"health-care","icon":"healthcare","interra":{"id":"health-care"}},{"created":"2017-11-17T21:51:13.545Z","title":"Public Safety","modified":"2017-11-17T21:51:13.545Z","identifier":"public-safety","icon":"safety","interra":{"id":"public-safety"}},{"created":"2017-11-17T21:51:13.508Z","title":"Transportation","modified":"2017-11-17T21:51:13.508Z","identifier":"transportation","icon":"transport","interra":{"id":"transportation"}}] \ No newline at end of file diff --git a/api/theme/city-planning.json b/api/theme/city-planning.json new file mode 100644 index 0000000..73e1a16 --- /dev/null +++ b/api/theme/city-planning.json @@ -0,0 +1 @@ +{"created":"2017-11-17T21:51:13.509Z","title":"City Planning","modified":"2017-11-17T21:51:13.509Z","identifier":"city-planning","icon":"building-12","interra":{"id":"city-planning"}} diff --git a/api/theme/finance-and-budgeting.json b/api/theme/finance-and-budgeting.json new file mode 100644 index 0000000..40bb54b --- /dev/null +++ b/api/theme/finance-and-budgeting.json @@ -0,0 +1 @@ +{"created":"2017-11-17T21:51:13.592Z","title":"Finance and Budgeting","modified":"2017-11-17T21:51:13.592Z","identifier":"finance-and-budgeting","icon":"budget","interra":{"id":"finance-and-budgeting"}} diff --git a/api/theme/health-care.json b/api/theme/health-care.json new file mode 100644 index 0000000..16ddad6 --- /dev/null +++ b/api/theme/health-care.json @@ -0,0 +1 @@ +{"created":"2017-11-17T21:51:13.574Z","title":"Health Care","modified":"2017-11-17T21:51:13.574Z","identifier":"health-care","icon":"healthcare","interra":{"id":"health-care"}} diff --git a/api/theme/public-safety.json b/api/theme/public-safety.json new file mode 100644 index 0000000..6714e56 --- /dev/null +++ b/api/theme/public-safety.json @@ -0,0 +1 @@ +{"created":"2017-11-17T21:51:13.545Z","title":"Public Safety","modified":"2017-11-17T21:51:13.545Z","identifier":"public-safety","icon":"safety","interra":{"id":"public-safety"}} diff --git a/api/theme/transportation.json b/api/theme/transportation.json new file mode 100644 index 0000000..d0413b6 --- /dev/null +++ b/api/theme/transportation.json @@ -0,0 +1 @@ +{"created":"2017-11-17T21:51:13.508Z","title":"Transportation","modified":"2017-11-17T21:51:13.508Z","identifier":"transportation","icon":"transport","interra":{"id":"transportation"}} diff --git a/package.json b/package.json new file mode 100644 index 0000000..ae324c9 --- /dev/null +++ b/package.json @@ -0,0 +1,52 @@ +{ + "name": "interra-catalog-adming", + "version": "0.1.0", + "homepage": "https://interra.github.io/catalog-admin", + "private": true, + "dependencies": { + "@fortawesome/fontawesome-svg-core": "^1.2.15", + "@fortawesome/free-solid-svg-icons": "^5.7.2", + "@fortawesome/react-fontawesome": "^0.1.4", + "bootstrap": "^4.3.0", + "data.js": "^0.11.5", + "dom-confetti": "^0.1.0", + "filesize": "^4.1.2", + "i": "^0.3.6", + "lodash": "^4.17.11", + "npm": "^6.8.0", + "papaparse": "^4.6.3", + "react": "^16.8.1", + "react-dom": "^16.8.1", + "react-dom-confetti": "^0.1.0", + "react-jsonschema-form": "^1.2.1", + "react-loader": "^2.4.5", + "react-router": "^4.3.1", + "react-router-dom": "^4.3.1", + "react-scripts": "2.1.4", + "react-table": "^6.9.2", + "stream": "0.0.2", + "styled-components": "^4.1.3", + "tableschema": "^1.9.1", + "uuid": "^3.3.2" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test", + "eject": "react-scripts eject", + "predeploy": "npm run build", + "deploy": "gh-pages -d build" + }, + "eslintConfig": { + "extends": "react-app" + }, + "browserslist": [ + ">0.2%", + "not dead", + "not ie <= 11", + "not op_mini all" + ], + "devDependencies": { + "gh-pages": "^2.0.1" + } +} diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a11777cc471a4344702741ab1c8a588998b1311a GIT binary patch literal 3870 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 baj7?x%VD!5Cxk2YbYLNVeiXvvpMCWYo=by@ literal 0 HcmV?d00001 diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..35f0f88 --- /dev/null +++ b/public/index.html @@ -0,0 +1,41 @@ + + + + + + + + + + + Data Import Demo + + + +
+ + + diff --git a/public/manifest.json b/public/manifest.json new file mode 100644 index 0000000..1f2f141 --- /dev/null +++ b/public/manifest.json @@ -0,0 +1,15 @@ +{ + "short_name": "React App", + "name": "Create React App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/src/Add.js b/src/Add.js new file mode 100644 index 0000000..441eb97 --- /dev/null +++ b/src/Add.js @@ -0,0 +1,62 @@ +import React, { Component } from 'react'; +import { Redirect } from 'react-router' +import FileUpload from './components/FileUpload'; +import Sidebar from './components/Sidebar'; + +import { FileConsumer } from './context/FileContext'; + +class Add extends Component { + + render() { + + return ( +
+
+ +
+

Welcome

+

This is the Add page.

+ + {({ file, fileUpload, type, loadDefault, cancelUpload, step }) => ( +
+ {type === "wrong" ? ( +
Hey there. We only accept CSVs.
+ ) : ( + <> + )} + {file ? ( + <> + { step === "preview" ? ( + <> + + + ) : + ( +
+

You have selected:

+
{file.name}
+ +
+ )} + + ) : ( + + <> + +

or

+

+ + )} +
+ )} +
+
+
+
+ ); + } +} + +export default Add; diff --git a/src/App.js b/src/App.js new file mode 100644 index 0000000..6d8c97e --- /dev/null +++ b/src/App.js @@ -0,0 +1,71 @@ +import React, { Component } from 'react'; +import { BrowserRouter as Router, Route } from 'react-router-dom'; + +import { library } from '@fortawesome/fontawesome-svg-core' +import { faIgloo } from '@fortawesome/free-solid-svg-icons' + + +import Header from './components/Header'; + +import Home from './Home' +import Add from './Add' +import Preview from './Preview' +import Schema from './Schema' +import Detail from './Detail' +import Publish from './Publish' +import Datasets from './Datasets' +import EditDataset from './EditDataset' + +import Groups from './Groups' + +import { FileProvider } from './context/FileContext'; +import { DatasetProvider } from './context/DatasetContext'; +import { GroupProvider } from './context/GroupContext'; + +library.add(faIgloo); + +class App extends Component { + render() { + const home = + const preview = + const schema = + const detail = + const publish = + const datasets = + const groups = + + const add = + return ( +
+
+ + + + + +
+ (home)} /> + (datasets)} /> + ()}/> + + (groups)} /> + + (add)} /> + + (preview)} /> + (schema)} /> + (detail)} /> + (publish)} /> + + + + + + +
+
+ ); + } +} + +export default App; diff --git a/src/Datasets.js b/src/Datasets.js new file mode 100644 index 0000000..0ad0afb --- /dev/null +++ b/src/Datasets.js @@ -0,0 +1,64 @@ +import React, { Component } from 'react'; +import { DatasetConsumer } from './context/DatasetContext'; +import Sidebar from './components/Sidebar'; +import Loader from 'react-loader'; +import ReactTable from 'react-table'; +import { Link } from 'react-router-dom'; + +class Datasets extends Component { + + render() { + const columns = [{ + Header: 'Title', + accessor: 'title' + }, + { + Header: 'Modified', + accessor: 'modified' + }, + { + Header: 'Description', + accessor: 'description' + }, + { + Header: 'Edit', + accessor: 'interra.id', + Cell: props => ( + edit + ) + } + ] + + return ( +
+
+ +
+

Datasets

+ + {({ datasets }) => ( + <> + {datasets ? ( +
+ +
+ ) : ( + + )} + + )} +
+
+
+
+ ); + } +} + +export default Datasets; diff --git a/src/Detail.js b/src/Detail.js new file mode 100644 index 0000000..3209ad5 --- /dev/null +++ b/src/Detail.js @@ -0,0 +1,52 @@ +import React, { Component } from 'react'; +import { FileConsumer } from './context/FileContext'; +import { Redirect } from 'react-router' +import dataset from './schemas/simple/dataset.json'; +import uiSchema from './schemas/simple/UISchema.json'; +import Form from "react-jsonschema-form"; +import Sidebar from './components/Sidebar'; +import Pager from './components/Pager'; + +const log = (type) => console.log.bind(console, type); + +class Publish extends Component { + + render() { + + return ( +
+
+ +
+ +

Detail

+

Time to add metadata.

+ + {({ file, updateMetadata, metadata }) => ( +
+ {file ? ( +
+
+
+
+
+ ) : ( + + )} +
+ )} +
+ +
+
+
+ ); + } +} + +export default Publish; diff --git a/src/EditDataset.js b/src/EditDataset.js new file mode 100644 index 0000000..4a6f375 --- /dev/null +++ b/src/EditDataset.js @@ -0,0 +1,48 @@ +import React, { Component } from 'react'; +import { Redirect } from 'react-router' +import dataset from './schemas/simple/dataset.json'; +import uiSchema from './schemas/simple/UISchema.json'; +import Form from "react-jsonschema-form"; +import Sidebar from './components/Sidebar'; +import Pager from './components/Pager'; + +const log = (type) => console.log.bind(console, type); + +class EditDataset extends Component { + + render() { + const metadata = { + title: "madison polling", + description: "lorem ipsum go eagles" + } + + return ( +
+
+ +
+ +

Detail

+

Time to add metadata.

+ +
+
+
+
+
+
+ +
+ +
+
+
+ ); + } +} + +export default EditDataset; diff --git a/src/Groups.js b/src/Groups.js new file mode 100644 index 0000000..5948e37 --- /dev/null +++ b/src/Groups.js @@ -0,0 +1,59 @@ +import React, { Component } from 'react'; +import { GroupConsumer } from './context/GroupContext'; +import { DatasetConsumer } from './context/DatasetContext'; +import Sidebar from './components/Sidebar'; +import Loader from 'react-loader'; +import ReactTable from 'react-table'; + +class Groups extends Component { + + render() { + const columns = [ + { + Header: 'Title', + accessor: 'name' + }, + { + Header: 'Modified', + accessor: 'modified' + }, + { + Header: 'Description', + accessor: 'description' + }, + { + Header: 'Edit', + accessor: 'edit' + } + ]; + return ( +
+
+ +
+

Groups

+ + {({ datasets }) => ( + <> + {datasets ? ( +
+ +
+ ) : ( + + )} + + )} +
+
+
+
+ ); + } +} + +export default Groups; diff --git a/src/Home.js b/src/Home.js new file mode 100644 index 0000000..3615562 --- /dev/null +++ b/src/Home.js @@ -0,0 +1,55 @@ +import React, { Component } from 'react'; +import Sidebar from './components/Sidebar'; +import mock from './assets/images/analytics-mock.png'; +import {Link} from 'react-router-dom'; + +class Home extends Component { + + render() { + + return ( +
+
+ +
+

Dashboard

+
+
+
+

Datasets

+
+
+

225

+ + edit datasets +
+
+
+
+

Page visits

+
+
+

413,023

+ +
+
+
+
+

Comments

+
+
+

415

+ +
+
+
+ + +
+
+
+ ); + } +} + +export default Home; diff --git a/src/Preview.js b/src/Preview.js new file mode 100644 index 0000000..e36f30f --- /dev/null +++ b/src/Preview.js @@ -0,0 +1,57 @@ +import React, { Component } from 'react'; +import { FileConsumer } from './context/FileContext'; +import { Redirect } from 'react-router' +import Loader from 'react-loader'; +import 'react-table/react-table.css'; +import ReactTable from 'react-table'; +import filesize from 'filesize'; +import Sidebar from './components/Sidebar'; +import Pager from './components/Pager'; + +class Preview extends Component { + + + render() { + return ( +
+
+ +
+ +

Preview

+

This is the preview page.

+ + {({ file, data, step, metadata, updateMetadata }) => ( +
+ {step !== "preview" && ( + + )} + {file && data ? ( +
+ +

+ Name: {file.name}
+ Size: {filesize(file.size)} +

+

+

+ +
+ ) : ( + + )} +
+ )} +
+ + +
+
+
); + } +} + +export default Preview; diff --git a/src/Publish.js b/src/Publish.js new file mode 100644 index 0000000..08f8db5 --- /dev/null +++ b/src/Publish.js @@ -0,0 +1,78 @@ +import React, { Component } from 'react'; +import { FileConsumer } from './context/FileContext'; +import { Redirect } from 'react-router' +import Confetti from 'react-dom-confetti'; +import Sidebar from './components/Sidebar'; +import Pager from './components/Pager'; +import Loader from 'react-loader'; + +const slowClick = (setLoading) => () => { + setLoading(true); + setTimeout(() => setLoading(false), 1000); +}; +const config = { + angle: 90, + spread: 100, + startVelocity: 45, + elementCount: 50, + dragFriction: 0.1, + duration: 3000, + delay: 0, + width: "10px", + height: "10px", + colors: ["#a864fd", "#29cdff", "#78ff44", "#ff718d", "#fdff6a"] +}; +class Publish extends Component { + + state = { + isLoading: false + } + + setLoading(value) { + this.setState({ isLoading: value }); + } + + + render() { + return ( +
+
+ +
+ +

Publish

+

This is the publish page.

+ + {({ file, metadata }) => ( +
+ {file ? ( + <> +

Ready to publish:

{metadata.title}

{file.name}

+ + + ) : ( + + )} +
+ )} +
+ +
+
+
); + } +} + +export default Publish; diff --git a/src/Schema.js b/src/Schema.js new file mode 100644 index 0000000..5882716 --- /dev/null +++ b/src/Schema.js @@ -0,0 +1,57 @@ +import React, { Component } from 'react'; +import { FileConsumer } from './context/FileContext'; +import { Redirect } from 'react-router' +import Loader from 'react-loader'; +import 'react-table/react-table.css'; +import SchemaTable from './components/SchemaTable'; +import Sidebar from './components/Sidebar'; +import Pager from './components/Pager'; + +class Schema extends Component { + + + render() { + return ( +
+
+ +
+

Edit Schema

+

Edit the schema for your package..

+ + {({ file, data, errors, step, metadata, updateMetadata, tableSchema, updateTableSchemaType, updateTableSchemaFormat, updateTableSchemaDesc, updateDataFromCell }) => ( +
+ {step !== "schema" && ( + + )} + {file && data && metadata ? ( +
+ +

+

+ +
+ ) : ( + + )} +
+ )} +
+ +
+
+
+ ); + } +} + +export default Schema; diff --git a/src/api b/src/api new file mode 120000 index 0000000..8edbb42 --- /dev/null +++ b/src/api @@ -0,0 +1 @@ +../api \ No newline at end of file diff --git a/src/assets/css/custom.css b/src/assets/css/custom.css new file mode 100644 index 0000000..033f7ee --- /dev/null +++ b/src/assets/css/custom.css @@ -0,0 +1,111 @@ +header.navigation .navigation-wrapper { + padding: 15px; + max-width: 100%; +} +input#title { + border: none; + font-size: 2em; + font-weight: bold; + padding-left: 0px; +} +main { + padding: 20px 15px; +} +.branding img { + max-height: 60px; + padding: 0.8em 0; +} +#file-name { + float:left; + padding: 0 10px 0 0; + font-weight: bold; + font-size: 1.5em; +} +#file-desc { + display: block; + height: 110px; +} +#file-close { + float: left; + color: #dc3545; + background-color: transparent; + background-image: none; + border-color: #dc3545; + border: 1px solid red; + padding: 5px; +} +.pagination { + margin: 30px 0; +} +#publish { + margin: 0 0 40px 0; + width: 25%; + font-size: 1.5em; + background-color: #3790c7; +} +footer { + background-color: #e9ecef; + padding-bottom: 20px; +} +.loading-button__confetti { + position: absolute !important; + top: 50%; + left: 15%; +} +*{margin:0;box-sizing:border-box;} +.App { + display: flex; + flex-direction: column; + min-height: 100vh; +} +main { + flex: 1; +} +#data-table .rt-resizable-header { + display: none; +} +.schema.edit-button { + float: right; +} +.schema.edit-button:hover { + color: #FFF; +} +.schema.select { + margin-bottom: 0 +} +#schema-help { + text-align: right; + font-weight: bold; +} +#schema-help .svg-inline--fa.fa-w-16 { + color: #3790c7; + width: .7em; +} +.schema-help-row:first-child { + height: 40px; +} +.schema-help-row { + height: 46px; +} +.edit-schema-input { + position: absolute; + top: 4px; +} +.edit-schema-cont input { + padding-right: 20px; +} +.edit-schema-cont svg { + position: absolute; + right: 2px; + top: 12px; +} +.edit-schema-cont { + position: relative; + height: 40px; +} +#data-table .rt-td { + padding: 0; +} +#error-container { + margin-top: 20px; +} diff --git a/src/assets/css/fileupload.css b/src/assets/css/fileupload.css new file mode 100644 index 0000000..c37eda0 --- /dev/null +++ b/src/assets/css/fileupload.css @@ -0,0 +1,112 @@ +.file-upload { + background-color: #ffffff; + margin : 20px; + display: block; + position: relative; +} + +.file-upload-btn { + width: 100%; + margin: 0; + color: #fff; + background: #333; + border: none; + padding: 10px; + border-radius: 4px; + border-bottom: 4px solid #666; + transition: all .2s ease; + outline: none; + text-transform: uppercase; + font-weight: 700; +} + +.file-upload-btn:hover { + background: #444; + color: #ffffff; + transition: all .2s ease; + cursor: pointer; +} + +.file-upload-btn:active { + border: 0; + transition: all .2s ease; +} + +.file-upload-content { + display: none; + text-align: center; +} + +.file-upload-input { + position: absolute; + margin: 0; + padding: 0; + width: 100%; + height: 100%; + outline: none; + opacity: 0; + cursor: pointer; +} + +.file-upload-wrap { + margin-top: 20px; + border: 4px dashed #666; + position: relative; +} + +.file-dropping, +.file-upload-wrap:hover { + background-color: #CCC; + border: 4px dashed #ffffff; +} + +.file-title-wrap { + padding: 0 15px 15px 15px; + color: #222; +} + +.drag-text { + text-align: center; +} + +.drag-text h3 { + font-weight: 100; + text-transform: uppercase; + color: #222; + padding: 60px 0; + font-size: 2em; +} + +.file-upload-file { + max-height: 200px; + max-width: 200px; + margin: auto; + padding: 20px; +} + +.remove-file { + width: 200px; + margin: 0; + color: #fff; + background: #555; + border: none; + padding: 10px; + border-radius: 4px; + border-bottom: 4px solid #555; + transition: all .2s ease; + outline: none; + text-transform: uppercase; + font-weight: 700; +} + +.remove-file:hover { + background: #444; + color: #ffffff; + transition: all .2s ease; + cursor: pointer; +} + +.remove-file:active { + border: 0; + transition: all .2s ease; +} diff --git a/src/assets/fonts/ionicons.eot b/src/assets/fonts/ionicons.eot new file mode 100644 index 0000000000000000000000000000000000000000..92a3f20a39267ae7f45144f412a995a663730360 GIT binary patch literal 120724 zcmdqKdz@TFnLm8$+;4sQ^u4F2r>`^JbHDX;cWyJ&2?^vzn1m2QHVK^zA>4-mf#uqe ztRjLU0wN-gh=_m~kVOQ97Eyt9F|sbA>(3ooKQ7C#E&->q- z={i-XPMtbcPgOnls@(ch#{K$L#xaiP=pWC?f|Eeb+l*4HC)|6^Zp3)v{yQPjG1AOC z65HGg?gH+7?ksMH6JLZ!CU+ut2DcM=mvHCdKE-Xo{T}WjuHT6VanIp% ze_Ri;>Ej-*#tGcS@yD+}@w^+fKXB~T7myo2>Ewao#q+oQ0}5@#eRaoq+a}NB&rjlo zdB}Tr$KH!moR2N#I4`wZJagMclkdNen%Jv#+^c7v``5evCzC@zgYR+dp2^*3Y}?77 z^OY~-*)I@EyOALr5~omC5clo7&%5}t#X6eFu_rjrxcb}+c5J)#iLO^sKfWhDciy(k zCWS@pOL&fZE_MF4^Uk=(`-}5A_RVtv>A#u0;G&B^``kbNoMYd58_j>o=^Oet(vdjf zbnl}7;tY384&GO|74LIy{C=J1SRJ=&W5`fFe)ae3Tz_*6oto&C#y|d_DTkkCd$^dB zMFnZlIj#br(?5}2$=>E9WUpqsaDPH0{x7bD+dp?+P~q9Bfb_(!Wjne0Tio0K?Y04J zt00@|ZvIQ*?kUda+&+Lub==pSm}3-I5c~*8b9KbkKTgkK)hI*p2L*b+ znP2AwYAS+&cLnF$^t{#x%{0X+H}D+d3c?gZ9ifKrHq(?}J0`e!N6K)G=XJ!5z}1kR zLP&8A47h26IqvU6n`%h>C(?-78l>+>Tt`T895==BPW$VP=e5Q&ikqRrQ8{Nwn%{Gt z)scs1PF}51p7JP6&54`OD5hu4`zq2DD(F9jW_}%c6q@&qn8wx_U&PMyW?Va_?00Za z;n;i*c@$o2ggWB6p@w@36*mz492nLc`SgrJ)qU=y=~*+Rklxd{uedSVOMN?1rdgI^ z%CCJuz_ZzYQW@MI6>5$9>YRKk$06XEGZ*N-jzID8$U~Z=^i~8Uk7|1j_w`1Yn{MVI z=B69Zt8>aC-+6DU(Z|XkKXclGcets>GbEkw*XNY2%z-oV9hhH(=g4>F(FVk|M!<6? zuY1n@G}4rRH|8>xqcnvI!c-%!HPTa!c?OK=l%?l&=bLPHtm%8ma{}I@{Mly}prLa=JRT!T)h!j5L4g~QjNS?Bd>zE{sCbMc@H5_Ol7E@l;+%+s~sIX z`6$EvJM!sS-3g4P8tE$HDTLabn9|KK_t`Y^n}MF!=aj27?h!k1I`;V#o>Rc{*?!S| zwULkX?0ZzE)(CeX#yvOT#!h)qJ}0I!^+uRR+`LaAU1{7;A#R3hBmIR&TtiHAfC4?M zBUBJ5pJ)u_(fu?+igVXv4QUD>U(ND79#NQWOC9NHgxZ|B*!&JXqcGJ7jeA;~PCpS- zx)FHi`xWQjNptU`9ByadpE@R8!~LAVy^g{Nvw8O*O`*~VQ-~?l8X<+4LhVDs6!IxF zo^wBH+&A;*#7>`@_jQ!}pipbnMYOv?zngW>#y2*~P}!+QNFk7vop=5P@BBO7dHe8tzn6Zm|ypY`vdjK@ucyJ*>0Y19`fw+?DxEiu`O9wTJL%Ly(_(Ud0(Hf-O|~zDVB)c*_vqG-1>HWWBl>>uiMtNJ(ExqrNrLEt;yZV=TgI|`%*8Y zUQf?UU!AFBUdgs+SGLF7AMc2Ftn2t)ZZLN^zcOFT-`yGSe4z97F0SkRuDiP)>w2l% z>R#79)&1L^OwYQWTYFyU`E{?^yQ%l~-s!$v--f<(`>yM|qwnFqSNh)Um;2lMH}+rN z|MI|327Wi#J9zt0cB@JqwL8L5t3JTf)%YB5?oxA=TXE)AD%Ej?B? z%Qu%_nzw$wIRC)>-zYn@ys>!c;)@sGy!e?V=8`*)TXfuIOZ%6uU;6m6caMMW_+Osz%8H+?cw=RJ{hTR*k-tfy) zW2cUtdflndZ5-bC%xQzC-Ei7(H?7-r&!%@b_iuiB^BY^*x74;guw{BHx3#o&{ni_{ zPHlZ+>+@TGvGtA9xzo+l+fN@ned+0!pMJ;bhpNk~TdNOMXSTI(+r909ZQtMa=63(~ z1>1LRpW6P?_P2NR?^v_rt{wFqzuw91Ozm8`bN9~cciy@4>7BnjBY4K9Gp;=2=`((_ zi`(_&uGh~@oH=~vxo6&a=1+EuyA!+5-F@rsr+2@6mVMUoXPtl6oo5|7yZ7u3XYV=t z*0Uc!`xj@=oYQ{Jl5@^J=azFGIOnxL@|ykE+<(n8wXxa_wWn*-*RH?z-fQ2!Zuq)Q z*Ij(w%lo)}!F`o|)qU6RyKmnQ_x)x+w|{v5#{G})KlC?C{$}cLe*O{hBejpb{L%17 zOV{^b|NO@`f9&lWN;mAe;l3LVe!TPJmw)`ekH7Ts-`(iHv2^2x8z*nP+b4hwlC5z3+Tk|MCrA{`GzGebKMsNmLiLW0zumI-F@h84{!xQl*o`2%k-_pO8`qtiWJ@cgXv$s6^@Uw5!xK~2ao^Y%@<-XEP3JJi}s7hzxc{a z=e{)kckliEqL=xX`(Ix3^2j*1yHl4}m%7M~wBv8zT$_VV+vM6aYTQy0PeQhW8F7iT&8~A{N`;~fqa%!?(uQ#7pS%pC> z%yEHSaimm84~IiRFE67Nf}krbq38mCy%yB2XNn*znx;sCaF?dt)qLM(em2QP0XKk+ z+CEZ3!%@|6xQ&%@4KnR4&GKkxYyP-49Eb&mwYdMPotm~&Yw>G?KlAwgo}UeB{+46f zTP%kPp==0Eb(-A#UWy~QQF}`TwAB}+ukyK(arPCreX_t)``8vVf9Cbs<~QFjvnpFb z?ZxPZgISVt#GtNW0KbjaBBh9)0mx+A;0zP>LAqBC8!~F>zP3 z?Jc9BxuOp+9!~P~<(8x1nLQfX&e$DkYlKFH$roBx{4rMfV|X9a z)<7g1$`-Q@V4ViL&u8aC2R=tr5#Si-X*}8J(a`+squSnt?d)6#l&P1@g(<4aS*`biDYNbz~H(>Jm8BCE+5Lp+I#^`kNUi^ z)_6}W+7j@4OkKC47n+JC8CI;dt3BQl4r-dm(-KQ$vfYVPIAWT%C-F_yFm%7ir^~7$ z>#FRvOt0yY6 z$4_rRl5%il1#PNu0a#$Ta%Pl`06Vo|WZGD;hlPUKyi!ogSzXuJReFbx-+enrTX&9D z^xx`wNk121`hv9=U~-bw)2u6r-p$sKo~<=f>|vuU9ZHX~0(+b)o7v}7?DeK*zRuRB z80XaJ)LpHlQuS2IS)Py$8ml_Q7+L6hUcWq!yqxhgh1R2G3Ua=B@BjxPml=s z(!Q(XeoXL}o$GQ{otaS8d2PA2S|Z?YvuCDQ#c!o(cF(=^t22|T%5GM>>`27!a<4Nt zGg6SEZCr{?fyPBaJKDKkny*-dEpgncr&gCrt4n`~$G^Ftt7}0Q>kC*f(eszAK&PR1{Zn~$xxD&#2q^$nMc=}@>(1|OpkFN47D zHEr9Rxs0wp1BMOWF!&i<1NC}!s=}&x_zpc}s%fXpV9~9owObseTb5!xg4<=FsYXnL9^V^#B9QF z24*{yCsdmoc8kd@0hjFiV%3yThkyOu{n zeaE*ZnJ5bKJoDA%yW)%qzGX6QdDRX@mY*S*)%lFic2~N?=CU1f(d7B?xWqQ^ST@kZ zK)L0WG4xyz^)92oe#G76XGu!o%f#PwvByoy=I0 z2|T-?7pyoFT2MW|22~4e$|>Pz;1!~beX<+R@f1bbDkL2kLn}PRt^w`jxCA(Ni{<+n zzBf_|Ct0Ax_QhoVM|#quE=?qjXv)~}n9i;XrmdM*JkWBj$Yjh+lzGl!iico~HGs<$ z8xVuYPq{-`exzj>r(PG`QtagZ6o zi&fba>WFY-+!F41ZY2k=hX9e#SsE27gd_P(urLe)>_|a9Jg_pP3!+j$iy2^Qpef`y z$b=DArjT!h3Cx&KYpylKM};a_(vKRpZQORN;qw_Q47I~Fm}ZzAs`=F9u9z*p^Is8$Dn1>VqLpboCK~KJb z-hqzHu7P~H1Q5|0aFzg*laLZ<6%3CXCRnk}ut5>a-<**>|!s^wy2q9Tsy_)Ak zyvna~GX(Ypr|kW!R>^Wm5LT{qO08PWR6fk}t5@L`a}n)v=QGL0n9m)ql;Vgdr!q~UZh=+~qt~0`MN+*K)zES78ukn;}-1OYKJDj>P@+1~Fg=6{xx<%4a zLq@_^t^_MAO0u|bA6;{zxPL!5P+6oLx`MggKPsAHhe$;bnc}|dbR7k+yAH4F+I8-C z2La;=M;0ek*AU=Jz;0NZbP0#p`I*7N%*<~)ikVh19X2g%erE8vpAKa+L#2+yfEI33 z5*^Ei03(7E$F5*kV9ZQ#09f}JrgABwM7(Sql9yY(GvkzObGorBJf2iJ=`oj-AE{Wc zq&)h}%eu#-znHqs(3wYLn@vx$obq_O%3rfEIbNiPY*_cC^qIGH9iJqcKaGA&;k#a} z0PyS0`O+lqxdskx-aj!hfBwY$liFjk_SlevJHNJT`SM-MSsK~%C)Oi7)_&NT8?PaI z`7Y`j@i-hyVGaaA7kj}2E_FQF8f-;#F@d|qqznZ?p|SR`mcVt)rX$58IpsO&d?6nS zvIOtZey>@UHYEdTum5-91c826@cb3R6#qFv_#B_&pAv+p_<=jO)0p%Mi%76M2oy$YLU!N z7Pc(-r|IJi-?c0v$ZzYmt+SIf3q)nJP#Qn{iqBZr_|62-^dP>da0bWu!0Abiz;iQL z+!UCdN>!a7-obhY|5#yF=+q#)b%1>)WK4()?W@#Zm3`HINk*cobb{;qo)kYG0M3EyT zb2#+0RE{JVFwGbrfHF(co_$u6ctQWNsK!)rT47%0Ti;S`P3T=5JQ+k(WZOeB9?7BY zpj5)TV5OJ!NU|)75Y;#FqR4N6y#Du!WhsBJiF{kHXA6;DcCsaaZ?HhNd2x%Ux6K`+ z3g&XfnaO#yd^lo>*-Ss59|Mwe8P>9+oN#1n!rt=q`FmQu3)&a9wJ%zf$t*r2w6a)S zS={8eAOZCz5@84qm1|qAL4VNSo6IgA|EJQ*QfcKf%daTmWU@DjMFe>b@V^G|*TDgR z>tMqP*2dDL;41?QWJiDv=BOJ1D6sKtR8gdvY0Y@iQ0ve@yyq8uVsPdsLD9#{hLG8&MF*CrG3Oi}Ax2;9I7((I=ZJ=O5II()NWKiwJsVNV z>}FCZ&eRmmBQQ;{*&a*OM0@6e7lVbdU|_ru7(S%QugDrM9-f!_EODi1_gmu9=N7at zzz-k7I%wdF7*_$UUBvM0NHn=f{IqNU=jkK3j!(FD_$SC&}+dFcnd^~rG z*ml;~mVE{|LamunW!BkO8k`7&e+C=Jr;44WzS7Xzkc`*~yRO_h20Alt~#+%JRwHC6>>!!Z4y^fFG>pH!e5(w_(prOkq-Fv0YQ)D~_KI^+pZ z0mwhHGA0&^5oLPgjt*W)_nk5_HFbNgqPCq-?wh#zBko$|9G!CyX_DH55n0J$HR764 za`{q@F3_r#%HeW}uEXVU1dElfjTOQEszWj|@fIy?hgXOFA#E_H%N-qxmWfBTkl)RV z#xsWW#>9dJ6ANBnih^pqrNfXqI%GXJNQH8laM)JkQRh`;M&oMOz7wSvOf=?d4Y)H8 zjRx0|l`-sjC@r$ZTwckSb9rcTp%TRGAc-~{DMu726KC63>y?dEDQ!hp$INsoWyrlf zVBbn@zLwQ3zP3`rka}M2O{IEMcLsu~Qc6|&`&9*rU|@Btg>t&m)uret7z}MjsZ=ju z40Un?XOd1Li*_yKPT)@FPUp@6-hjf35GDpQ6#0;}^db3k%l|oLD$1~eU+t*qeeS5+ z#={TJWqEr4sNbVU-{R>X=Q#5odM4nlDdKlK!ZPI3hLnuu3_$}jOrEAVtyfox3+@Vq zFuf8WZdmjV8NfRz>FRG`fuIE+3A1Z>Rk2dBXeJqs+XgRcQcMy>5QL!Bn$ENuVUPq- zM5ZP(SrF`aIGKsYQkJ6f;z&U9*tv~45OaIvmHdwAU@99uyCoALR3)-Ly%qM$1 zlAoa#S@!x;DaGLVD2he1sln)u{Au%og02RGilNw0IMKRt@ue3r$r(`SqqPq2$*#_1 z9)38JNt~K!jVCs+YW9rm-~KHwsZ>0knuGHcP((<*O%5qi0$iXADGUQzq`D?3g$h(J zQC^2!D#X8#mK+q><*nalK9A|QO^<)bY>DRLf%uT9Wo(sKV?gs_9>h|!0u8D2d5_}~5GT@s4%@y;0E z$}UP2lQE;kGHop=OZ`DTswkT5^M);d)JUDw7MyvO#kyPgmToxzyKtwq4?@}Dm_f)C zQf9TmYPC98pPH)Grlwum&4G5;!1Y8(bJOl>O@c%~$?8N}FtX-I5#I=I6raP-^CY{V z8*FE1Jl+{^KcWL;=^dV#I}QG7RWsz0DC>$}k=1Dwig)gZDD{LRN-a0-@1M;?@Ivq1 zp(+b8A#I5how-77X@Mqg1+W6g8d7~nKcJ|{v?@v;c^a&|CV<<4Evc&BH>>&{!uD(##>|(f^6;88iQn zZu{9Oy0M_`hdM7P@-A7`q#kHI1lcFas?h55216DC8)23<^FO-DY-Z~Hj2Y^0RSz^4 zhFa1!kC9|*SYwa2?D{^#Duj(~yrwAU$;uG8WmA;Wi-W+Aaad&M%y$F)3>YiI4Kk1b zrVkLktNeqd76u728Di9~-Lhpr?_3W$iYha_Bpm*3GY?M&9o5v#e;W^(Q($V{`Fe<} zLD#5}^bRqata%8z#<*8gHSo8lGpx3K$R2b?&S{&gqx4~(7ildwcsasZBy$CMG?PqE zGMTAHKwUry326m^wMgHS8yOC=%Q~TAyL`j4lB#00HZtoa~TK40sgP(3|C)SJu|+F8t806y}cse31YTPo|WHV!H%n z06Zc19K7J@3p5OzHgj0JF0M(|cKII^t?}WKa|yFnBngyY3F9T%oC%c7&TQ@1%Rhm4O8$y zQxr-ecjk$dJ*yk%xM_Tg)?||F;W#ql${3+zzvypr*P!TG*%jKhJ5%9e(sA5Rm(rr{ z?nT{q@cQ+pwa@c0n5F|Urq5l9GgBzgz39_>fyzC5fT&%(kb=BZMH^@~atuZQ0;d9* zh=PSqv+0?N&K}ZJGqnoOm3O|hlWmxJm&y8}g9nR}WE%$XBRE%fA9QpvU`Vbb!Q?#t zFfknR20JA8|kFP+xDvem-!>p1g_wys`P>ec&Bncr*Z zqFpGSw2X!PjClfvs)kd?ePKgT6!NWhG=2V%YU-A^ryJ@WIaur`6+5+ptAbxkAx?3N zIc~gRZUBV-|Az70AFhslrmM;m_Sr($qJaFm|@TeSyeN__z8^*>qILVp+_I=JDZ|&@C zji)^D0Q4l6ZQi^r=_FY)nI!3}jU^i2TZ8XKNDp5QjX_iaVgT=p?+{8*LIbP};SkJA zG0C8{hK8Q3)CvhH#V0z3bQL4Or`hOG#9kfiy_$^=1${^?WOybE13XLLxLvHT@ zlq?8dE)RPlV2u@>rN{vl+nEZ5QlVh0ZA+mL!*m5dV7CT4*ePLpl4uL;fl*sOYvy%W zs=Z(SvSk<+OPob{dji1ZM1`>q>g;OZ^)w`g<=lGkyk}sWlF? z&(-W=i3mj{RE`uOQUHX-JUDd)JWr&IY_RbFBc8#rCIf{iJuVG{kq3;i%piF{Eg%zH z3DG1Ey(lG6i$YVp90v0b_8-MjBm0)3kOg4dHdWcSO@YtPSx9VGl{Zf~bA>2*fudFz zybh`EtQAZ)q4nma6^g*ij2$?EmzXF?{5y(bsHj9@>?sL$ijqe-U6KuGFa?wS z#L#uPjMCL$Ww;vst1j~Vk|m-@LDE=@CY|8k%>3%`@ZsU1YoVj{NWytTXUNRM*h53- zLE1EArts3GLz7;%=kU-*2HMNm$M*9Qn#J>2Cn|5MQVWxqscNLqFnPEf7)*j6feA^F zu8nz`!hFb+42R|5%ml128gzG7C|QD}>)HYCBMYg!+r7-?`D;6Z_R!2Q!| z1LXofbr=_7UVv{gTZttlY~*kt#DyRLDZLm;Ep+~+B8d%&Na_yfUn;_;65)795B|Et zi4#vugu9)ac({pk>dxB6r<;-jY494F_3Ha*iIYArm7=zBQ^2m%r0atg$K`bKZMKa( zwPv27>$F2FLHwM)G|GdLkOu{;O;su`U7>YNJcpNf0*J0nOL~Ff>yd1xJTk@?%L|EP zB2GwQe`^>s8!-QGo2mV7bC#(-jrH|0%_o`>Rx@V)fJeIVJ~usGQ+P1YLSL6Cz{5)e zA}2a_Gro2RIE?hhT&aP@V9j^1Su;MNyREIe?ZP?Nn;lM$*!AYm?N@^~KyL?<=%69c zL{tXP3Cw&@YB)JGb9|08!{8WZdJ-L>WHPkqAh>AW8|ero5}{G%HGU4movF?IIB$nq zyIbqIHzJr@jQ8V)CG>!hCeSP6yn2NByyV(jigh9ZHd-4=C`e&DjJ3$NN*$@kowJJoc`QP#Jh(H2vPuti4u3?lNo7c?h!U8~ z9PlA9VK7WAeS=z)!hzk?T`1t^sn>b&MAH{h{SprfAOQ{cZtlfZ5=51k{4zhl3nz+~ zQQ__fV^*+DghUkC)%0yc>J%SBSo+|>@rW0gU z59=UGu+PbY#(`dhq4n;vL^?}+N*A#M%~ z2D}z;YPPAi1aw=qfQ{uAzljy(;55t*%nxu~>A!d+;nDeL4dGurc0>mb0!JPoFP}0N zQ8<+3^GaSRgTomqfz^Rz=H-dqacFRe3@DKF--YV7Ah4yTxs>rExB;gyR@1&I`GP*_ zn_6v5y?$k!7g<{M!z^QCilt%6h{GPrJVPz=zVYGE{Q02^_sK0o9-z(!d@6tsL>$;d z70D4*NxK1~ei2CdO<5w^EK5Jt;@W)zw8$G(lTb&4S8(YI2*MHiLee;qvqG^+XC_mV zlc`x!gY@KN^V>8wWQ!%7=5U#WKY&CWWb3jOF8zU@OW;~UaFigFHhbeH=8QGbFSMY! zh>0#uO;x7pGBq`)-6XSeWvp~3z+48WQCjg7vSkD);LBUKoZ;DVPPh_2J3JoVvdctz zJdAL*dA3&*GJNsaHpzH8&YRDla6#U&Yqs0X14D?9baQsX^ZWPBqt}ctyi?hE0vi8 z2M(}_!9jRZ-3(7E=SOg9_#vTXVuL2K9CQv3U2c==;i2YOP@5M6cKHHat6Xg&%<&F} z&yVDR$%nvC0hf%*BjET(;RPs^icmTY4M#xAfg=j6x_hOxYPh&+Rk1rQ_b8?D(()@XLK|a zUfi+yBRAiC{rr=blAjw9+*#WOG-*^p2$g}^=-9DwYHH+^{-iWm$>E&|dL6}`Z*%M_ zz$oB)4>Sz?v|?zYf-z`nq}Wx8(j!Q){pPwCZ{2#`me4k`N6&+utyd5>M7HeTvSmqk z`_~;Sb+hi2L;C|<3L^j)c(Rm|sI?H{p%)D#3(UxvKqeTL$^~YoRU>ejCnSjrem=T5 zBlwexdup}g7beex^#AjK8j$42?(CeWgy;2U7gekHh_h&&c^QY^0lH(Bv3SK2;0sz9 z9^}a1=$H1FrpFlD~AhgT_BnE2g1?5LfgPVAldE-hgy1v6K!kP z{vn$m7#J()eqMQd?b^0VQECNNZ|`P?Cl!jdweNrLxM1h33r3jOp`^bs;$<3qm68o|dBK7P%(k3Q3sZ>yLuNp2B*3?{gZpwky} zH*mLd*hJBhZG(x9B#}{mA&(f2Jqy_o-9ezjy@L(WEYii0-0dR9Q9k8}FQW|35Gdtj zkBA?TSB7_utP~&!L3xocM8LfcM=*#H1@k;RCXkp*GZ*j;1&3j%rv$U>QQP(ndBLCZ zO!0+ny$yaEs-g{9K`Rc8t_{a`3+b6d&D7WJu%5*R$gJ)UoxlQ-R@TxI#9|JFTNO6V zL?h}8@DWJ^5mC3tJd%27(P`chRfT4A1a3WuPg}iuleeH-l42GRS$e^{X|-Ba)oRqz ztCUgI`D5;@vgqyVv_&}q=lci~!g?-ds)2Zm66RN`P%}tyZqlTtzXy#2&HE8Yi@q6n zzgYNCAQu~=uCoB!=fJs4po4u7gqc*lkuv6p;;Kb2&rL$IJ@s zTZ}mn;Fo*wx~`({7CG-Z7F_W6Wa~U0v+p#lC>VvvB<`Bfh^fPza13S6u7`#U4Lvoy z6@bu5zJ}ZbQb5y?3~QJourNW3g1-kGE zJIo!&%P^BKE3gKTgIET;k+5pX2htHbPy*uv*-9zr;qL-9nB&6mzn4)I<*RZ~{;C@( zciqKX{9Sj6`ZLH-Z58>gvaDQzB7ZGP;!Sr2uFzxp6#ME9;*1^3fc{QdA+f=~WhM34@|MS`#pvd+#`+CoWMsIB6?N8YjoL0l*Z3-El$ zDs2%8<2j~mgGRaV%5&p?45<%+PZN@V47b_d5IA1^z}{zP%gpWZF};M1_yc-($p`jn zt{**V`@11U(Z!FqfAmsshbE?(-38xF)9(w}U-&e9N(@PViO8XBw1A$I9P~5fmrO!7$yJN@6yi++iP}E1` z>*{I}j{jZdi1g4Q!{4G5fl80!at@FH1ai>2;12gdJ(*ktIneqMn8K8aqG9Z9#E&g# zStKj-O2X%T;Y6y`(syko(6V@5+vT0P^^zuwi`Iz2yOJ?Uhn-bgmFm55iL$U0+Ei9^ z-j8;)di;`5tV)Ub;dF;TeY|gEr#jkqLYC)kHNdm`_3jQ|N)WJlKGw5B6q8C8r_mkV zrzCtP`?>ktvLn4}+9%L#pv*`HO-HIQjE2if3BmD1BD@M(PbJ_MgFnL6=(XFmtM_l+ zx_|2{irg7#5qhOaIuMZbo-KiJagpy0xl`ep(Z03P8C$(Tl;NTz3rb6Ce>OcI2cI|< z9KzdM_pkDM{Gn8KW5APXVS2dJX7es6r1+GkBn5A4p}kw-1FFqOTcT#hXzPn%RnnMw zFlHBFCM&>Vq^+lYAzUD$Ph|G&$v7Xo zYV7zWOO78~`2*DZf0l$>mM(1xyL`T5*9+2qxmkAi%VxLblV*buv+v`mvyagZQD)oA$r@N2LCK_jl)_Z#vl&@1oI=79N`=Crwe5A;Rr;%93s$u*t2ONI>sxk!MR%}X-UHQ zfPgX-jyU%2aef%H9Gns)L?prm;At3&f=alJCl{0r$BE!5`{zfX@`+^HN^O}4%n^}! z{f1y#Ef%DUpjT&dYXG(aap@_y1pR>)DII{x1)ewT*;t^{wvw^V&UKxgv6RQ|^aeFi z)%c(!1zEt;5mHP+flE&;6Kie71+K4(U@D=_Qk+eF^z>DiMNHP?Z?oiqMeVV+R8&=? zskT`Aq5;_m$}M5uQe&dw=krG7($%NW{HtbZvbsXG4aoTmiH9WjA50)j9mfsu zNKSdKuBP7Jyfj*H&xb6FvvVVQF8QHZ(>Gwu_>m($puuH>`eXjpBg_G+as*Ez7HlhR+kZ2kJnmN)!G z8t-_y3^$BDE{^ssKScA!(V)l?$0i29CBmw3HYh;K!19>ub_E|c$L|W6g-grjn8)_T zY~N?%*>XIn^5t^yYR3#x_XGnL8|C?#=Xs&>V9aNFeDHSjg>xM{w{`?YecOZ4_@{iH znP)x0pocB?_-3Yfwg~0FCp6|d_0Q}09YK5ST7r&vf04qjw6y)XsrA1Zzj5 zO@?R}?qSIVZz$MKwlM5jh3%*@fxyw`WuQ+gdt_2M!$Oc|-)Uu++)Ho``n~0qd~%c3 z!U8QV0p^Rb^Dy7x;|m;OBY<6v1`1!$PEY$hh0TaT51 zxb2moik&O#y1aeXfz_;^mfK}Hn8$L?VzESAn^Qgn`;ySig9;het57)IpT@5<6^*8% z_F137At;9g+rPBCqjTkUvHpc$O&qBG%c=69{CA(cYSJk?j)KwDYo9r5qB_;p-o4cC z6$ZrZE7|0)zEC@``qZmF`FAKi7xy)7#WYILf)yJrXvS^>oG&|HbHDNk)qjwxM1POq z(RQxFeFoH!5CNEBm(aNz*|4zSRO0YU?rt}zRxnAhQX8w)8FruynmmCf7ls?cA+F`E zNmsBKoj-a;PaP3~D#FBZpAgb?oQA-`k^JCpf;c7eR2<~e+f(tw zCoB+3#Psm$b3|jTHy*bANO{LzH)4@&J{B-c6_z(#6xH;Gz2svkCSu{RZkV1(Fw^P{ z8YUfBVQBD@(G)#|GbuzYT>PY9i#M#BHmmj|{C>mqdPg_X2ArM*_8J*p-)L_S&nrgC z=FeIcvBS~cQByd3l^Jb~^^VTG0Rm_lUfZYP`+iLoC2|^tgDGm(bPp(+ZEGq%tQnfA zD@ZADO@xvN%NcGMhC>mkR&khtrrX$) zVfwxCbTHyE4Lux=CE!!7#G+nPqmx1~5*P;~5Cf5oedcJ8Iba;Oqk$L=1ze55=mOta ziVX2yvNd=XVJD5GYPKB=TR3b)!h`@Ow4kY@@k7m;&-NOY4$~QEJM2Yt-e?y45V$gA zf!TTK=%V2;MSqTU+?j6hz-r7v*KdU!bMOZfAbGIikD&3LbRuKH+btBez`PHJLS93a z$EsCPFw7+_VW1sFtX5N^?(zBkgQDQIe1X8qv+23w{9r zAiA5U-UF$*(I^WSXmvXR5_Tw*%1{6(Fs>-wESraCzC~S{=1+X)s)?nxa$GSvteLWIr~AU;9?yxF^YhlVB~p4inTDDJJK3a= zB|?DWRXGYX3NM96=jS^3_Oxf7Y08=K=%{YA9Eq>JzD6`CW3G|SQihQXFb@< zce9Q*UId@R%y_XSayk@8UGtJsAREB8Vt7wU9?^j1K#mQjWitd1sz8US^t41|A(RyL zkdR^V5Nv!_G?Y&l`uj~NPaJudxp4bSp!VnV`Oj%L(Jq&t{WivK)b%}dAUtQ<(?~c7 zoF;w)^}6$#Mu21*tbL^DnF9Mgl|~)pAsYdPCZ`LU3xrF2d2B2>SXKr2BOBPX(#j$k6Fz|0AEs%hXh<S7f-Oy=d1ZfB3(hF> zC0WE5HoJQmrWv-1M3zedsl)Q}Ar?%);~)FUu@@%b-`Lk435seuu?*TIXC6q{Lw^nV z7C}$oA`#hv8Nn^*>_R3#BlnL0?}9!D$dAEGp*eEm4&cHvWGn2$aAJ1gwb$%-;KXM?F(>(z+fv{AY5OE57uN&yqZH%(vj-kcYI9FG6~TQ(Csj>hGX7x_lFrpn`w<+2aCUh15X6C0WLU z7A9QD*3mgMW@T<90u4}Jj+Dw^R=mJa@RlXWIz(_G%!e5Tx*N!0a#n_q?EvKY5*#Ys z47^1}K?l7Iibh`BT(Px@$v~<1Wbb#Q1|0qZp}1;~`8*aN$qz5tQs7m1ZG-#P_3>P* z9|lfh_r5E8&8)lw7be0pkUD>SilT#DJ>qEav{a6$k|EX$OnR#+SDjJE#yr#eJ zLM7FHu9^fK5{xCy(f zvN%Evf&-Ndw1_~g{SfmB6~p@p-OIy+GzSpmGjbUHhq}?t=yA`&z_cWe?Yl({m@tSv zNwFxFTFa*dRontOeh{aHu=8ObpAYwJ7S4N^&(C9aSsvdQ9Q7qJ?(ZY0Xj*G-92tO$ zKO>p*w`4QJS-hb>atrhGsG67g6;HAEc@{jSD0@13^WC~VcoHnGi!V&K1$?c{Z+c?@ zQEI`HO}MPQ@F^gCUbB~b0{yVdlk=R5^D3AZ4KK~I5`s)p%){gqff=j}2zl86gC!yf z)#gHIJXzZBsp-8sg=$sbcmeZjn{d32X0r=;+s1JQ|M;LNKKPHKI5j1{@C1K*Byv0d zgeZOHGnj-fo_D_oY5M4|9aHnsH8sW&hP)bZ!+P#iR0fMA{MRy2y~?4XU<9UI7&G}W zbdQ+5j#YD%FBOLzx0PHEPbN)p-88%)%8uJGWHzG2VDq5O5sDF}Y1-1AjQLsw0XxbV z+dXC&i_V54wF!Gw3y9!~(=RF~djz2;x#D!gIDG}uVt4Z7Q?;Q_v8vdH5h#?31&oXB z5k-$3WPG6r_gOyJCZvRcOsP~XWd=kMsbY3{W>A><<@a_p#=+@ZEA7ysQ&y;nG(C?r zkf-KLO&j0-5+ z?VN8!z-$Dd1T>c%D6>T@HIh+ig+cf1Fy8H%;BeF*l!KBTD6Y`U#^hw1(JAWfIKhz@ z&$NOJ9;e^cf-wCW2;k?yRw$`MHg9$>Nr-wZWX60kIcUZ1O*Q9nja})s!&$;K&ItH6 zEpoJi^hiKc-C@kEgciIx4_ZE*IxG=#`e`z8|}htYxB z$rF+}YAj$l{K{h@+L93HxC>BLV0zk8jz*!WK=W)&6lPvg$v@LB!kbgVF$lt$blw3r zhbl!|;M3RyAAo*aIcSJ{0NWtgLW9>lDyiPF`9S7*1;YnlMM0HDB>gbX5ye%5G>(Qi zbgc#-_52_0!T~ykSAVgw^9F|)xPBPfBYSXq+VrAoJG*bNc(F5Qb`MT}VkF^nw%!c8 zn{nK4!RL$4Ng)bNA~-M`&S)ifKSu!x9s-;gU7E+GoIf}*F}Um4BU3Wjp^5eDCyqHb z#euPn`X{l9htaiAnGR5N4!jWH#RVSGF_^+>2Zq1KCN(&dxM!CwwKOj(jWZDV#Zc(w9_T24>~bFtKyLx~_xsxeR`5t^f; zmq6`9v}3YN-dyEK9vczMVQ8w|SU_4q`Uj`)-hKMKU~6kIoeA~yga)PH_;_$Z=f>K` z_w3x}oZWx!W_$iE^X(;5jCoIe8@z()|M+XxL zUIxkypd^Qj1g*#yrw0ZWe~nIhm|tLY_QU+)WV+C02{0h{tytaeocoYSmivPLT6nCm z=JU>}4z0|I;xj+%FXA8vg&C=p*~S?UMk;tB8izH9wpB2{s%Pa;n0+=hyk=`(<+Kjix?1Dn z`W?ysAhxW_GgmL{3I&EvaE{S&V4T7{tb(p*2s8V^%X^{5g%)>!FH6`T)=Wc|85&lQ z2@uhyvz_m3()ELZ4UBTZppD6;B$T|@Co z1*J88HQv?KY*s~{UJzc@M|3?H)OE1)AaC#gihCBY=%90;0+4zNB+iCu|8f>*(gtZ; zSu+9_#Ae8H$6K#tY7NHJURbLJH$j#YsROoB;&yW4PYnfGjTq-xC5$h#69h zj58$gsc=)pMP= zJ||6iPWxQAf_Dfw@O0r=uMKP81oUcv`E1hddkXwR6+4r;04OqeIQYCeF0b_U+B?_) zd{9;2siRCqJ*29GYOPXje5dgqjyFT|j(U~VYW3!;jH^~^cn@z^0PY5Utbq>Bjy-%8 zFxusSJKA8e2wH+W6Ig8>+Py9wr)cJtIX7&lb2D?7^JtxO!*)71^c}2ybdbKI)5+qr z3(fVUEq1`JPR_<~XI0;+p^vQQ#+Rv;D!N&BBfKun(niu%2jD4#ohg7TD##SEwcm01 z%+a1|7=f^0V2Fg7j0iXEW4S!|S_!+8VLd=L_+nt0i9_~5`!#rQ+V&abSnbKh4#sj? zB$371pZQOLiGJ%94~$gPw!Iuc8&oIkX~zSb#jKeFv0N_33Q=9KVuLo5b2EQWR)INk za1U34pKFzSf_skpKKBwJ;F4_eWOYUs{**jeMACZ!CpUt_r-c+cWsABL2|Ih{8)6p_ zbdl7FkVP628!>eXXef+c1!Cz4qr<(yLG505KN48YqKoS3h$yEfu>K??6h?WdBI&QG zX(8PUo`vxtR90Fj4C8DsP-+ZNsU6$%hiQv`jk=z)-{)`|r=1%K`d~Fb+0-eDB1m?C{uVTK>o2SBFC{qZ>abW1Juh{JiI9!XDL(Jq?ok>>H!tMn&UdG zCPVRfC>h7z0%#yvEAT#9zZ*1~e2AL*n;ov|{P4(4;98%Xu2yT#?Zm`H1D*|h zuAtrcU-X(gbHoz4e3#1L2Xi0@q?E=rmv@9TC^Nu<;0lMkP&N$eqClB}E0p^rJmF2y zMyx>+@sJaaG&c8aOzEv^D@axf$4aWLddg>8c4wCj-)zhF{i%mtm*_qV`;-)kxw}yR z>(77pn2K?HH60_qbg8I0^JyOD({e5cKb7U6XPnhGa=u_yuJV8}|m4Nd>>4 zrJR1ca*rEXZsxt?z_*Qmb?;F`=;_)d1+j?;HAW;g;ZJ15i zc)TMN$-!0$E1P2OGL^1ST-MLvvpz$}vw3_x-Wt^Ao2&8velUNeHSAL?QB|Ln`q~oF z7>J}Ns3`5j$MssW+~PGuqUleWGEk~F+!_qEODVxy4BD`LsP=wR#|f#7W`pU(udyzD zkO&;kJm6ZNUB!t*4wa@821eM~O$3`T?f-E$;7o6!C?B?s9@S6HLW&t*sSXj|DvbnOj^(QdYSxtdE33`-9pDc#{S{Tm>K2)MJBd zrQLgt0Nh;x=5hWiwc7MF?F+_x7@t`@0~xT1WvJm=S9Pu3RlRT3-PN=8lxEXt7SS4M7HLLO zYZnrTK`aIZP-6)&2;@N^fdS*TV+=-K1b!HdS=w=8V?%6#K_<>NF%Bl!ILdQyuuV$u z_nlkS(=(Ej_wstVb?ffu+;hJ5|9zjr;x8|>)v$3eVtW>Y1hE%d2}owOx(4G$bI^bC z=35Iktlk#hPujcwt|eGGHXg(aSiksM9C5&KM0>^J@&ik6dmbW)nT-G_PG5pHWSn|a z{um^PAY$>2kR%BUu)F~lT!k;hM3oK4W-ylV-0)aXNwNC&52|yh91X;VeUk8%2bF;; zGzX!KrK|(>rFCh%^qi{>V)ybxP{1dWUBK(h@9I6TvzflfXM2;msb(?8E-b*9Tu4W) zj9}OZrOB;KZUQmGu!wsd{Ktfl+23;iMB`+Xh(u1t?**3HjSbkC+~qc?d?E<@KMY;5WNU4_?B%1y(-Oh$l-4o z5k+EZBVc7Mvt~H4Jl_Q0<2Q+WrYjIB@c0-&j9VmH5a$oE>5x!B2sreGlp+P~D11zh znBL#Vb-XsY4mri)F}=PBiK@u-5GT71-E0RH z&;pBe!v^I%2+s+7Re@_uu7?Oo;zC&x5#$$hw2enF{Jwa>MJ1EIw>S#+3#GP@Va00D#`B?3NJ@iem*s*|~P ze#EjtcSIw;KrF~QNm58f=l2B|>%N?th>yh?^6D$$D6(rH@-5qnk42lsDgWz8GyJ;O zktO1F_iyj-U3?Ms5PkumO(u6*QtqUfe!8tVd0=4hhNhmkIs=a;Ao5`J!%o{?utNdd zhdwEQWZz&1L2HDwqmc&BrJA*c`Am#dZQv`^27B#Dz_e0gOEq%kd=30cYTg+@68 zaqNlMLMxe$Cw)J=y1cx)99f9%@yC&UX`hs|G`*H97!avNh})onh%ng9|91zN)MW=;hjZ)r{gc~3^x|< z`PF2iXj#$G&3hIH<93sAyI130q+wdxg&WBzk-`jn)gpgOj9_qGCMGKpept2^5rp{c zNRzj{uM4wu>a1f0g?K_3z5GH#NQsZx-X8%b?id}Noa}u=OQXxnqsygO9+-0qYU@Mc zgT8Sj~^!T`Y=~d`3rLVJMELNTWeS+9FCfvN6CG znM^PJJ#lGwoWtYOi9|ILsjg99CLXV%(^UC8ub1j(-?*>$1Js-h*2YXM_N_oYa55IV z!8hvrW-NAnU^wtC**F}y9-Zks!+~@xmgXCYd1JjF(A>TZ;-S4m;@#DhRZ|-nPg-mt zE$F6bi$ZXc8mg^*fS1;=4me_95NQ%|fnY|_Z;%%8JX~7aqjoCKCxd5@2#Uxz{H#9U7iin0HWpT*cX`bR9kp>y8`lm1i1gWxA`rQAHZ5Ug zmcQNm_wZc(Qc2z*W(2qyyaNUj&_l;08z%z?-olt*CwZo14em)&4f;V7UhGX9eHreO zChJL{A$a*0jiKpEQ%myQ?*B^;!VBxY=hwa+`;&5cyo_X1Jw5x&-OsJ6>iYVHwY3k% zV!LGfc=?t#mW(!)CR;b;mYF2eL&Q0;P(dRa+tx?e z-B%+JzEHOM-x+JJa)ZUFwQXH_-1;KZdg@#hGZbcsL}YVoO%?pbg#UmnzS;lW?|br6X!{~cUOJ}(_EHZ1*HhK4F%6#l5} zSgKeUu2#JWAihvMRVm~Wqys@V@ukwma$|UOWSBsUkk{w6Ll$F=9~KHU5hziAex%+S zX;y1PY1o|&qqCi~Sb>_ufn+4ts8#dXus8G{Y%}IZboHAsz&-NDmo56XS$njHw|S^6AWjyxp7`xVDs+9}-+S3`JG=VP(eSnL^Dtgcr1Iq8cW zj5@M-@7CJ8MtzZ}Ba63gt-Ueg8+8zLMx9%?*8Vi&bD{@j@sC?;&&oyD^z~I$fBckt zDXzC~Yi+K7PsjJ~x7J?Xzt+LXPj0P+-CJ_sS8T0q)8(?Bs&Eb_8>XI?z=&O_I#hB+ zCB=4xCCCv?^yaG{%+(|LWeL1o&PVFG2Qv%b`OZS->{%^YtadB;WmLZ9e5JeE`*#b~ zh3wh0@(!U_eY)Y3dyNdPNys4JM@<{xp$%=gm53qrvi@Za-&p0gWx4b6ZIvoHePwQ+a1~w35zO{LcK%RxN5j_-@$|Tb%w7Jea~bwJ7@OoK5(}8_0B|St`m>% znF!6a)wX^T$mg@q$_Z_V;?Y&JKJt?IRJCtwEf$MNdSY({lx8HjIJPk#b zYHE|*_G+WoMS9@}dl&fQP4LHJkBH-+tGo8DI-ClgfXmHRYK=l)}N{@RC5-Lc8nQxB=?m!FvL z{zvcF-aAe`M6;xgo{Nkc=k%VD~UvK#+IT-@z9SO1GvtA#z zMI_kPCPxqt1D(RdcwW@D-$n~5DVx@+M0=n=bZ)oz?zL~f8eQ+|OREDL&iAj}p^q8( zs@7<40B@dHw|3GA8SD>2DBJS`{lz6FQn$_>ywWugVLjOi6NK>6KOC=iMeXN>S+9cD>ut95Y^R@2PJj0G-1GowXX9w`pM4D zNI>h-3^~xjnZik9&I}RPGfqt8cPkO`ZzdueB5Q0!ez|h{P9bAEZ?DJ>fO*LIA!kMc zv}YvqkwGqyhy>MKqLtF8lA#N5j*u?Gt#xG;vRhJAcDUc2>a%|T$9zC={|J`tgy%v@ z@12Q|@r~ZcbcVy<_UHW{_hFRyx<#p(+r6pq98BE!lY?$TYwjmB^Dmiu8_c?0+UhEI zq``ACT4ew`68o5)&l1Y($i7ADm$}bF@9j19PJyZGV9$NHAsOBQsL_UqmUU0FmRob&g%i_#}WzTV!mNXH( z9LPMQjqI-(6od|QPhN9tX+)TT>~wd_0h;L8UU~6yoDc)OskPMESbwIF%94#?#EfQB zzqf6@_kA)OXG2z=(C=8@3S~nP&>Yy0*0*o>hO^b^`uh4!3$x)o0@G`oCZBg+_U*{% zNIjnm*oD@}4I?coxa9)zK!#|FovVW#&9QOzSixMLaRU8;0+A={Vb2449@2r-9|59n7802izm0=03xPS6;tE39hhxQmBln@T0yVZtjJSwC(|E@CIU4krx6;#1gdtl#L(w= zX5|(z^l?7n(I5pxj_5Kcj(OhZd8g++o~Jy&h>X-2Qj)AgKEzurqXJ12wG(|3YTr)> zAgP_&Sho7oy$mV|2$Nq~mv1Ed(ql@bOMdmbUPI<~eV+|t4&)4`n4BUwGHsm~-)NR& zI-H|Nqw~JNHq->^~I?Ed-)o+m)jJvJI<ZK)v9Pq-uFTjQ`$5u2_8Fz|DPLdQm@n8ZZ1^Pz*v3 z;G=cSOf9l;V5^keeu7ull7%B#?bs!KZetkGK%YHo#gvSooh9~23&FM%5x>;tCGkp0 z=c6G86e*CNG5io6W&L^9=oXp=3vWM;8 zz}oAKr05f`?w2+CWy=@a!T(BEKz-c*weCiDU7WGvhFx3R*tmGH?_2h4z@wsgjwDBq zt9597gKVz!si624>H~Dj!{QpM6-SFJWeVHJV&}7CQk7vGmMVol=jS6AG1GRtJddkK zZ*pysD>}Tb2J-O`LseR@@mIodv~B|uO{S&<&J1?ij*MEd9IG?W|J3O>Qr9>`F}qoB zB3UeqR1;xb*p-xQN|lW_o~~~ESNqW$L#e8uI;Y-IOeC9ySS*}OMBbh#$+l`Lapqy0 zJcK-s))g-z?8vj7_1x;Y!*h?IIe8q|u#h-7vQTk7x}fkPkZPhWgj=SQE89y1Nf}tS z@BmWSY;EW4jJTC~{{GQ6csnV&o#8+BJjscjz)mMfm|KL@;yKb7IB1)K#Zu? zoX-q^Zb`t_%phy!(7(iMDcBjdlEeSq0BCTpCds&`kGlmF(OPv|-^^kCIE{TAvq&d` zJfgdVPC@Sy`IlcBF7(Ci6p`>DF0K^OlBz~f*MPq~ddOpUyeH3V9ZGwMvpAC-5n};2E!3 zdOe0gE4wda2k=;nwD&UxFC1GSP9hBBdhs)+Hxj%hhVPn;(|G1sgblAReoGM6NfQ6) zaQjp#pD&%BAC3mSiISZg+c!47GMclE!X5EYlpApUsFMkfC(TeGJzDVj3UILwd|RT( zWx0)~7CoqpV(?>FNhqRFD~5*dfu*cdQ64yuW2;|F8Rk&BTM7pLFx)Cd{y1h8=8Mf- zYDb{c`|S*+tb*!zDmOd?px+7nX{6K&|BF~;_reg>$d;D_z3*nE7K6+=?k08`zo+YY z1M5&daZxPIi@Kg}!XEe;X)Fm>9W9C^h^(m!+I58_v~_Dqo6FA^Ij?88pOB%?+~5>%3{ zDG1{rq}(u&VzNo?pog=V>WJ*maG*DzmJOU637dh5J*}(a;(HeeBw4?+WOy`CdnpF0 zf{~EADwiA?N#^#xtUhV{C$o(`G?u7h4Nk=-X3Q)}H3{Ra`Aj=(1hT0h=Srb$MABEW zD{Ib75PW5FLJT`>+x$<)WF0>V2Ov|)(b<4Oj!0jviipvtZ@;5{p0%*fhvT%6Fc{@h zNF=MsxBKRQIQx%J`c+`+>{OuO?|ty(>y-JAXa9kOBzlwb_r7?tDz6Os-Iq6mRD=?F zlQ@up2cJ63IJ~86p-e7G5)0%Oxk0d8F?fF~hDQFN(~~|+8z)tFwo6v$Za0=mFHx^8 z+FWQ>tFj2jtU%bTl3LaLNo|L4T_Wnd96vj|Vbv!R2|;5dvVvh9PJSaf?5=E(Wf`tc z#_!bcLXi@s-V^%6<3=eS0kIT9E4&?UMFo;I7-DLJ5aOn8YU!lAyZ2c&cXB~xt|$#Om%l+7ExDkl1G-u z&<7#Z&n7y4i^FWBLv(W+eVj=Oeg;BJx+#CbmJAzUhYEhd!x4f4xCj88pk@LfA#N+7 zlF%cTZ`tpN1JrRoOa+4wDSyzyWg3EHzSc;SI0nt1GCBd=py!H4$QuT6hap`&ow_b2 zb4lb5k%j75@eknVIqG>W8aNrU+Z3)P$Dp><$p{kah-3}#mQll>DLHkJM`WOgtjtJZ zTx^*7sU$9`mc+1RD2-yI*X#ztc?7@?W-JM^njC{mgy z6r*Z{0VK;CGpkGNj+X_<#S1m^O^b?q`H26*EImF+lc6HiR+%d5RFUB9{h%=5i2%HC~i|F2d)^vr<1zQB2pdMohL_(QR+0VQu z{Zo<|V`aU)=c5^0jD;JHmAXqXl(e}wfZbeG)7{iF$LCPKD z`d~&xvE^p%93+4=)nN7nA2u~-2qc6I)}x8(B5v3chLGXjpM!QXNVk9wo;r~g19OVw z#G<8q%%8N>@zSnz2y>T}CVxyikdQ%>1iO!Zg|x)eB?H(3n5L$gp>TXOp}dh8#Kdb) z8vbgES~?tNctd`IMPa)j0KUk?FKnI!PZuBHcajCnhw2(HZQ=<;C_;beyO>{3=^qa7VKd*YTSRy)_6(Y8&{EK1b8Jn zGp`-PJljaUEgLB+WDs7)un>6$R)h7XDR_5=fGgEZ!mAsYI+_PZ|GFG@& zTG$q;Jf_)7mQ#IXmfR^a*tnv8ep(>6;ki5W;6oWgHgYjnp^;hzNi)PnMx;zF4l$!{EzG`^@w_BNF&&2QoBI*AN`nnii#r^@u5?jSItPrPM7w@; zN~>>zXAHm-!giby?oGxSCJx$};k1JOw-K#EGR>@?CW>#vS0s}RTC4a~ydg16DFl1d zM@beCsxS;n!x{pO6hS&>fn^dzCKfue5-1}!oI;Mr+8R^|AOJXIjD#JhKsAAi1<7G1 zvI#g>!$j(5Mr8p25}}+_VTKK^jg-HTvSB#5O_+?zxLb~Djmv40_1H<1mmO}paD_rC@}{%;3avB&yw7t5&F^> zjgc*nzBVY>%6qW9DXB5136aG4z-j^h(tW%F@i1qpYKAguV#)xw45*UuBYUh8_D180 zq*IKbd=a2+3O>UKlBI`=#*8fi!NQ3hW^HfN@AqNifzpwuLqSRyC|1tv3)or1-|$1^ z6h3OPk6_p7V!wbxxHWcNQ?=?oHvSlYPs`#lEptDQf8qi%X2H#Rps{K-3>Lb`A7wSO zCMF1ZAqz-HM`cG&Bb!LSnpX`=4Lkz_nyTK{VYlAD38DsjgQaKeun+ zxqUBx%Uk}(70>={Ht#z}|G@ug#0LEn)o;v2)e?WH9j9%}{Z9Bb&I(e6oN=7rzG(+V z+SKDd-;SGpvh|rfpe%OYmFCz=GB_^?p2mXk{vS^~BPNPaL@O&I8@QGkse+u8qKSHhG9|GNEww*0@tJs`5br%DOSLvzh<{$zz8}ZU z%Dkseqk2EQU+jazo@Hp`q+Y;qwgMuTTrBR2nwRVsjLd9CtfcTXY$>w7q~2T1t(B)b zW8IM2=?!F3-nvp5Bb-SYc|_F=#Z1ktkq8E%VWt&{kLP}^n7b!YpB)ii@kKI)1cPUg zkbj=y5s~1#J|%^If8A@ogX4{4@K-8mVdFxh+;J>pCrb1QD7{NLU28m-<uX#})3J+MM-hxg>k`Vs0=SPj00lwm#C*%pglr(! z^)>o0YrMXS)@sh${_*{5&S2&5-gNr(n@+2kM(&5U@6m_+fSsq`q}$-;nh<-h2OW3& zOmAC@PAi>NPs#)LU)Wtz8tOb>|4z3e5HFmac-`wJUN?~IyS%%g#KK>OgJ@%}&}~?3 z3-I9!%VT59V+*a-9n(8jTZeByygoYg)X=Cb8aq$>PMq+a-Z{T-pW81keV3e5RO`jj zQBlbFZT;@i;Hgbd1sb*C!{^s~$WGq7=hU9V-RY0~$dM|M2)z& zu+Hj_P{m|Y(gU*YOii-mp2N~y8A19M}kQsbI?ulbW-d1%K>x;b^*yKb9mre}8i+gv@DtH*0Q;=|e5 z`YeCh;rNbP`;U_t0)NxrO8!0uA=tU3*IR-Chd{$MbS5IH`h&dlt{rIuPdhvvtRXRj__)4hA= z^z`v;@4K<0RVG!EYG;Q=7H=9^jLlolRkcEfA-q!FBfw~ z%JEbJpmgWsOY2J`rCghWMVX3Sg#4Q_`WfKs9;pm|hfqnO=|a_8a04-d;97~d;%H&+ zuf$QBWweU@aV>t0oSmiX}ondw0h$>{#SU@q4XoFd6uJY=E&4i5s)TcLj3n z^}JA)t7WQV)MlGa6?5@xoyvG6n|PT|t&|eQB*}qB3;s+M_Y#+&(!7&8kM$rI;xfeM zv14HO-ejH&ezK{hCOeI6+u`Z)zgsDX(xm9$jE&4l(*e&fT5XgTVv)hK!6?z8JGahH z9XGSnp-@xpn3_+t0>SaNdA#>u#wyE?FAq(Gi;l1G)`_IC?+^E> za`%4atB1q2{YUm3x~4E42+Swc{%ex{R?CNCY1^6KUs$$|9I=*`@-xBU2ro#}_buH3 zeuBu!j8tA%GkAJSGvFQf?T~IBjy#-R>YtFQ;1Z^?AFNA0C#xaUjmgd1b=nSnfSJ+e z;=K6nK#KFZ<@Xg;`tHNE<+*EP&hCH1+PB$sQGdG}IB{N`I<@lAw~lw>kKObZV_jB0 zerm;)EXr3B1A%iIfNi&Fp^;RSjyTMR{l7u zz;3FjHxwB;&FsT*WXxF+f0v4BDb!FT%yJMCa-H_*um%CcK?lvA$9P2(@-eUrHo zCWs_@y*WBj_U5ln?JfYgqu@_H9QXzX`YO&<412NgZ8suE;zYHKbKzve2IfRK=sq9y zK)ju>N`RqEcnRc*VghlfDQWmDAEdyy572TQUlbKs>sB$*NRwYR)ktOMhnI$yKhY)M zJuvZXp|aOb`zPYwQZVb4f^0;7daBTgHK=Qpe!bgsALzWdc;4Z8%&nl%!K2uKZlviN zu|hHB<(FQrHx}_vkQ`km5rh-9Si3r~G4*}9n7G?`1^Hd%Ni)$9ETl?*hPfF74n!4$A%v9$nJGiq z8WLmyA=nsdiEJVp2-&!a|AF0V@LsRWNpg?#0|=NY)V`gW~1F&C6cZ5OaymO>`0! z*>9VxT;#P)GPDS4D$N0aup~~d0#46cz>s79`)XCwsy=Tsi9J6gUU8{kF{1k$$h)vP zw_9Oloh5QW(NT<4w|D!FE8$rP#v1)VL@94)9z^c{+aslm)w5oEarkb>xqEmKgPplN z`i;?L(|c|)nV3k%DFs3ja||^kO&v)k7h=JzxWc2s;->}&1TiSN2Q-u050IK0o0G#! zT-06~o{a2s*Y-ucqi8o6{L|UeP%c9>j+IW015PLh6Qyu$Nd0g2GkitX>eHGu^kE-F zRBMUUf0D^8iXsr;mXM052}ZyW>jpk*Ql<9I9W!L+(ds0qW%V1DFY@ac&V6C?S1@Ja zZ!kV<*b&?KtgL<}Xve3ii)eU%J>tWZX*{iRj`i8FU!B9UZv9roXWXdN96=O}%-h7_ zv_`-?W8;KnUGznM3v=5!3c}Tf|fQAHeg78vzl)3pxED^41Va{_ucpI`_#rvEfg?E3zM~x zqR)GMJeP}~uK#8@Si5ehIW*MV&hH&`u6glu4|t&~0x~^B5)>iNu`Tyg3qbA`Jz?nR z{x^NBKE>sbS5v~w!k}*XEej0H5GZgpOQ&Ne4(}dm?hc8eGU~*R%}gJu^$#G$ z^SlZ2Ks8u`wX>lE5lpUyaygFyJ5nEQozq(b`UrPiGe9csAK+MAWuRDh3VHm z>mRx|?iG;q^qcGT1F;D^S`d;579v?by>Wdmkp8*GU5$!S&g8uLfa8d19+4MEO=vlp zdPTy?+Y@&v|1WaTp~!A09>pE)kb1kAtkMqe79SsGluM-&u{3J!0SYDoPK<%eKnE}a z5QV5nS^^!I2e$$Wx-M8CaPvM5H;@Im^Vx17`A6H~1{yh#xX9k>k=G0m27RbOIaw_% zRyVd|3?6Wi23mIR&jo`Rr!w}oL)e}g?JP>N@TUP;5pp}1&S@v0Lr z+BF!N_sF8!_<8lr&KeGk@KrOCq89RHNpDTuM(81w=8!L)PTdpo`pI-diyM5u5aTj5#A>W0ecs?H=@`V!b+qPBfqgC|+vXc**c@^_hL>yr`dR`)G zXR>;{XeMo8fMmE!B!e8~@Q^~y-Cs!;#9UokTRD7ad16QR9InntSyqTF@%n;$_nuVV z8+~^3`uD&5T|Q@|(Ih?~1LVPo5AC^i-^$XkUe8&-*{qafjnj|XRyp4|y*E%PQFz0f zC=O3`it+CBJ%x;Ah0P>6+zircj1Q3vjY4WU@UXI>{7o)U_joZ^SetX}iqf#rAv+^QnwMHq6cr=l357sfB!F zHoSjzwn3G~Q15F8_UDIZ)d4CtHfG&zv%N3wXXD%)$M4500w3hQ>(F$agHfvU2$UA1 zlPKK%)%BHq8*AnIMfXFk?^_`h(NiyX2P=ad9c%Qz7a3k+F{{*(_J9k6Ni(`yoi;QG z9j|Y88t~SE8A`=gyCW;Fynbb*`^Ei>#p2@X;(bR+BXCA1=-73n-9FM*8*6W$u|M@G zd*GJ$nQ=TSZ1D*{;^7G)2Naz36u-}Nz z?3{^`PTKPNtmJIEPMnI*I}6HaJ{N_3lbnb=M*t7|JpZjBP)L|*ykS46+bB|_dBTsM zGeu;tczP-C}J0AMjaLTo~r*1L%Z^y_GXp!N)9Qc z#>$B}DgYj7|A;Rp*9))dL-n}(b6hnt{_{xvbDnFZSHQ!}>s}Fd0ck_51ZWQD7M38X zNO|cRNsP${?}szbG3;JAAr6&`L)gqOFrAF-%Yy zLOE^v*NH1{nrNg%AmeKiei={ZVosP8O?Ebs^nOJ9UWq zaMh@j%%>9SM)MKd7mQJu8RmKSIgD}vT$KU;Ezu%bfrEa53cnXqo^y>q$Yx79_lq^p zJ`fL;vzc%VTUMiCJF(b&IaOf)8*Doj1_%}_l64USkWs7A-e@LOsAA^1557cd1FG1C zPbc%?Ob`g8nD%V*omd|!Y#H&TrLdDSDu5;pI~0z_a={Q~?Z9(k2Q)uGstrF_?L<15 z3qtr6*N4N|AtY~2`!8y{&_T~CF+{Fy$bF6f$0Mb+ZD3wL4%M#z^LO~!{s4K;wjuG} z|G!=OvP-Y;BbUD|m&bI`Q@Us=qJ4M<2|2fCa@vw-CUus9S;;-PDGQfwJ+HG1yh4kW zN1t^w5(=$!uPeEuG;%@$##}9vDJJrhuv7$!OrK^Bus5o^DT&hbV(U&Redp_3P(@WI zvRkgYcU;xC-|gO4`20nU*N{AW!so@vplL#?Y@(2WDVM;2{%nQNE$%V_d0QF4KH$rx zhAX%ZtPV?RGm{x>jAyedm>4UCU+{#_`m)){+8B71)t^@Cal^Q-_nJbx2>gVaK=;Ru zwlbr|MRnuxsi|^4kaHwkW;j@_P7gb|V6Hqh-U+6=Lygxg=I2iN5;McYGo;=FCGptBjGsvr1O*t*0HtPP$L}JzCs<%rA{npJbg=T^|p$WKBQkVczpHPM#VYFK>hpZ^l^@y33V&kH_H6kt zlW|@cT@l}O0gdYZ-jCl<0owQzO6D5lXRA$tZ7u3F+{Qe+M!p@r`qUbS>uaxLqt<7} zYmV~pZT&^p!OJakbl%BgIP0ITGWtbw#r}1=oZFQrNXA?1tiHg7u6Q1=z6vfX5J63S z`txgRF?~Vmj9q!1c-E2YNRMA}ox$^DL2$Xx!|DA8;)++aYq66h?}l7Pw|A>AJB_$> zrPJE%`+#xqxlUm@?uCn zbh#Qzg!$l$>i*T-fdg}Y*O;Gg{9UF}&VKc)g6q_)dZVYk+kFswCL-_`rmW6R6O zI{TJdt)-^gla%A1WJBlJJsjLx`smbD_57)3xa2?RkL|9GY}>_bQ7?Q?eOY}F3vdfO zm4_%CH%k&$B4Ddn58UiXQP@NaNtyp-x|3Zrk*?$$e-jueK^M$ZZh$C$Dj;-YYq4&; z&?HTP*;X^H*7QuXIXkhwKH+3`q|?Lmqc@Gt52rJWu~_R|<1rse8^X883yX_|`0aQT z0?uO-6XWA5eZ$z;4ZY``^l%}arV2z1HYjt?qpI{Tvnh!|H{NnY`~6WYci}=Vrq%(` zexln|XJR?tz<|!iz#HbUUyf-lnzx~qwIRt5f;j<)FYf>-RZAdj8P`fI_`$^miybxo zm5*$qF`@tqN5`KoH_N?$XqKDn_a5u64>i7L{rB?w?z?=BZ|5D7@|C(ePPUVEiI`eGdUR;;*C%H`Klsj$etUUq zY7I+EdxEH_@CzBp(R?Ya?EnDCgtRU7I(j1KYCY+=^Sb{0KMXM`Y!4C6x^ zNzrzQgKBvCbMoZ^Ld&lnNU8;50FDOpA5I(A-~4SVZ&i+rt3?5_ZHbwx)9jQz_8osk}14g;X9AN=xlJ3 z0B5&Av?uv~a_bv=co&!GnD}8}BKGmw@oB+SYBqT=!6>+R$1_2b{=v-huAS8N~5`G?d)a2`yUNMKGw#CR}dnZI8B>s9p-l5Zs1 zjIe%SVcepa0CtTOc@?^J!^i> z*SbtQE6R*Wp6bzeSKj@mO7BMxmCyaC`cOqJJXU$E();^=Ryn)7^3MqGkuf{Xm^;Dy z5PgjkANp>!_YV(MU-8{a?;juHkba+S(q|E=ur|`CtMGSD$RKJ14WwnnbELlZwbaF@ zpMLu9zAA10YCd$=UBUJ9C*f0HHMn_H0?o02QUMQCr zrgx?H&F&Z($=zBSovn|Ta=FrYeRi~TD*?PX2d-!iB(5mNkM^;)3<>lFJ-FZ%|5ws7wMPO*7_1;#NZ3W+aRmUzqrMBa}=_&YCO< z;Bn58_l_C{5kFb?(>XKdH6jFLIx4OF1w#cgUW}b!nFKp&SEFO0VXGFQeoGiIMA)~~ z=eoVW_d@EuK$wz-KN<>vi}i+W@@5XjoW$&bBMTD~Sfg`kf0J^YmQ!-LKlWljc~(N? zn|CDlNq}H~B{8jL+DHSUPk8a05`+tiQaRONSs<&nnRZfU+!sg=?4r-38(cugiHn4$ zF$W}!fs@JbYCCNiU3`#a_^zYZ-1AE-m2~Bvl?o213wK?8;N8Pl-~ITBJ$pt+`R5&4 z+uosgNCZW_^&STtkmw`9#Psb7x(pYdb+_LiLx6hMZ9gs~5{1Ms>gBbEcZ9zg?)TD< zMZkL3P4QBE@b|%1t;V3`-tIg^S8FqCI#jgeW8?OfXP;fUeQlGUbq*1l%z$UEWi`&i zGlHzACDC@DL5O6IM@J#>4uDeXGe@tg^foJ39d+3S%ii16eP7a|Sv4AuM`0NOO$`aW zQj3i4SnqSx!3aT;x6{5s^*Nbimr3Hu{*2Z$8GUjPZTb}we_gz&HO*%=YnhGZdYIwP z=s&J4bLMZL9ZzgoSl!v%cU3ZbHT(!1RbLtrIFEpPR8Fp^SyyV;iCwR)=5p2C-NOsR z%Fe~UBKuenKDcXa^f%d)tA2E}Fg#q4cYKLoNFUM`ngaDDGGBb>a7I`U1lU|`rPb?# z&KuWXPBIXa(D65}-(xwiS(ozSU-B7aQ)2*tgKD3wjv8j~>E2{d`b*wX7rxhJP2*-H z4r~OvF#`P%dN%m)PE6cCKK>+>5=ldN{|AwQYEaHO?7qZmwM5U>o*?vVyg*oe#jF5X zYjrASD}_N(#$h_k8nCC9+P!n<&U)_F+K`TXo2wM6;ZSMp9l2M%+w#ZMI|++BS1d+P z)NkgvTJF}QmteRvJLdOCYS!q`(A#qlaNKd9_nmnOm%A|CER{-sP}A-CAg%eHmd}V| z9gO{foqZsu>3+^BpMDo>digzf+qR|KKUL2v^xC!icqneJXVlj(>YuE~Go|QXXUFh^ zqyhB>!VeDbaIC|La5Q+$%!A|U^!S4_*94>C-bVy4)_;aq@C+7DQT2E-T)Ukz0qL~# z9SJD5(k;0!JuJ`i`}N$3UsA15Zn*c{SZr@jjXax8LO7;&#q#mEI@bF)>`ITlrdICe zK5)w)1NaRm^xb8Q_uH%WLibJ>p|@JrzeD>THm~}v2BkC-cqNu zUs7ZBfB9ABXkRAq^Q1+_k!M84EwWNyb&|D+9!Issg#l;`@PeAl4-e;|KVJ|U#QLF| z?(AJubMrT^M-tArQT4X|CY#lzrE0NMSz1cN_N9-6o_N$n#<$EDdVhGpe`J(!Cz`IA z#Uh=c4r|2LN8a#g4=+cRzfJ9Fx_5D6c6Q=zvZ2f6F3~`_ro_{_9Ib!F?_Ijc_S4<- zW|6g4ISac=KQ3A1EOE`Jt=eKuZRX;=Cj^eI9*F097X%`BqkR1%S^UYj_1L_qs?a)p zjlP&J6kls4*b?IZW83j+M}gvwH-2iiR-3J< zjdNEmJTWuvRlDkqwdq=ITDn%xm38K2iWVVwrCSaJK>po{m?ge+c6D`jV*|By z$`G_?i)`Gx_Mq(zsMMHsr*HjQmZ-!G?jT~e1Bv* zcJppZIb3siVc|oE2p2eheD`#7`7mOaY#1ejfjr;#wjsX_o(>;d+HIHG^<2MEu*ShS z{ivqxVt*5~y9DwIkzbOi1mgAu_x9Se`TWnEsy$VH>Z$TSpAE$emE*I4O1}Gv8}kSA z@6S};TYln+^3ToYR`TWG?9npRc)P4;X>Xm_MTEBzA2)ceL2qr%kN!OQ^?ggxuSM0i z-rFwmZ8V04RB~HCZkPAm@%Goq2k*zKI`CD46w$0*>wh}P)+H(}^4B|A%2*8}+87^9 z<_p-l^2rYv;NhBj#rTN+58i-{;)ajfIvGPD(Ky5RFxO zhU7;xW?H@ff!dqh(CE?KF)O-wDCsNy&D!JrAnErFA4rC#iI?hr@yhEBz0~!hW`(Fp zKx;2`*`hCbXfbNVcE?}p23;~mO^1>Ph7p6UEgt4ZWlKDxj2Q7^H8d;JTw#DD7TI&~ zzGVH}C(cb&i!XSJ)d|Czjj(YpK%0v-2$wcM3cJCXSQM_es?ZRM1+Q}pI zd6P(SLaU1C1B1HD;u+E52v;~nwCpnQg;*$Y!rsM%BYqJ`@#Rht>Yem`A`jsG=-~zV zgK_0z13uU7PHuTcq%w+jh`f!%%KQbo-Tu4a8C^QayAWEcg+Yu56mX9(WD(v$lVJL~oJn3(xatyI}}av3Q1D z$|lSoXA-IDBxSGrFODPx|L=9HcQ;?duZaB!=s1{0Kdp6ngm00<{z`pPJ*jCMbaF7$ zw%(%llfU_yH}m)S<9FQg_#K~Fi=9_b>MgzAo$tQ$&UZiasvU*>5BF)E$aMXvePKhF z509lSt)aGkJZxz3@e?n2?s~3WzcdsKEn}{)t+{l{)k`#0(A0e3ff1X6)#S z-DI0i@|(=b=9XS^nNA`iz&5?arEvq>E_T0{vQf8NWaVtX$jE!|OXNv;mClm_orP{! zq1%?&Fyrk`9GEq^28hu-dH?+Xim$~G0&zxr+PZAN(vRfPVJuQp3GGvPqn|D%Z(0C zSJJoMfAXaNY>tqHc5Z01eIhayeZ|40@oM=S_qKaK;-Fe!Dv-GKgXh-+XLDbSI_=#& zqP+9|c$9WA8ZT=ZiO!^nD|DSYXo ziXl%pk~b*Pr}MBG?Q?b-Nde>uLR|dLpVQ-KG?m)XoZm5e-Pq`>y#8cp>acP(mJ7`l zQm-7qu@PH6-&Bc%qy4eE$yhZ!wosOIk&=I|DeU6KuV6;v-aS$^&92Ju)6erP^ZFSm z4|0|V1+}3)-|ehRb((e6-ILr%?vcg6J#^=xLwBn1hh|^%nps&KmG6f*Px>o{z2Lm3 zMx@nMyfFy`lg!9OMiUn;E<34_L9=wZal)WG1J$0uY4X4!*O_tbXTYa{Q({8E8J$6}BbYHu& zaUA^}KoEw#B?&B#7-*NI6~K+L)Nw?EN3cX!Aa?>g917WkyH7!(9b3|2X=OsxK*>tr zqP#lT_Q*p3cymQ<`a(@V1xXA$ABmBV*fK|(Q^~;fwREMLDx8cP@nVP&+CY~_ z`Kw8S_(cgG;!}0IUC~dvo6kIt4RyV%JZ#w9?8^C6gF9DTI&2bOc{8#Z$YbnlVtp0cs{W9C5HfQx)XJZ>)A8B=I$)`om2(RIn@J36UQeYN ze*E6+3EuGX7MXqI%v`5ZvKy_5@maT0DulI3sWwo7TY?E_yQ5p8mGw@iEwR?kK1Ee; zA&kWLsZWy*(EECTzW!j0ydRFyI9$jlh+&OHrxz<`O+3S4f+`&9I{yAsk;tk=dRMDr zcy|Sg@jTVBJ`{;Ob#TcE6hDf4*|k%Oym%2=WdjP{_U!YldTtSVm)65Y3jgvzgu}wU z3GGNpfM7O*n+2+&kt4iU@w2pR5I~pJ3!tH$m6RsrM}n*f)FCTWMj{b(ppg0r|K472 zuYYbX9iuYTTPSW8P410&@5*-bcaW5rgbbuWwEw&1H?Op=V#bDWD6- zt652wbpE5nI=4pa5l8v+<#NHdgAgbk6CDU;v)k66(IHs9@5nhD=lkva2lSe^^R^|s z)luqedK4NH6Hx>aspAb>5b?L=$e<+WA3Dzx!7xzSOtwSTIgD)S)JUgE=cK7Xs~b0; z%!>D|)kNkJTD899-!U;9YAhT&w9p6*Pwen7rKaoFP<|;mJ{t)6=f;Ce`5~)5-TTS2 z;bdt<-Gu4kmPfN^?U7RQ?%4S?x9>O`vUuWDVj)8-E7L(X)Zxg9W*I(BBbo(`kRM~bm{%N{fRu=)6l+W)@9<7V%N zgYMbhjk5mYuFSsk;l$&b*TXAZ8d;He3Xhv}U)-q@#V=l0H;+x<&zIH2QOA!;_Gg#1 z!`C$tEqmbx|6G!;CSP1@8qh$jOj zB0W_)7cVqAQ;E)lStoTIpG`P^1X^g}(hKfh0Ol@}-TI2Rn zLT5bCwgnM`5Mc2<(MJ|^Qn%CXytD|clqBn5mXkh`iFH{QQIVGfW{HQcJ^Ki$RNkUS zr~t6lC3cjG;<41A8-^1>sw-aB3x48fZ%$GR{>a+;S<9EW;lUsIViT9Tc7pWbTw<%a z))cL+z#%95tqo}%w~CIth8E^Y3Y(bgY(D&Obz?)Y+I$Gv;(ra@t16U4tT&ykno45) zeUGZ9pME<1RR5T*>i}z?<0#IqKCHU(vCbje?!|TVy*isuJ;fE&@%Oxk>%Hh07ap%~ zp^obtat#AbTb>uo9Z5VK1X0o3z#{3w^_`_J8OCW!;u&WU?T*Bb*l%I|Ww`cN`M#eb zXujTe_S;)+D(mY=QY;rojdoI-M?lJEZh5KmZolH zATVr)puA*)P&*2x5s^!rUOH8Xhb8(gcFOUl$r?ghB2w;~{||F-9_Gkd-3#k2NmV6P zsZ^3mRZ?p!?dnb4YPDKDyJqz)_Kb|j<9*z=#|yT>ZA0wA1|x71mKYcuE&;Q+fsl_p zkT86g1ScPmPRM1+%`#8mI_7yG>G+cS<>n?ZEXgIwjr{%2TUFiaS&V)2$NgqnRi#qZ z`<{0{?>WD74s7mZ1l$NBWR4$ui~#%`NpEH%f;*ABep!kcV^%qvu@br(l4VUv#WGeb zu13X>L|Yf|^pcngN0UNaj+&vM61xlj2{H1dKm@@X;>oBfM34$p-_ zQ4Z_2tZoUzJr^7T3NX)Au;I~kSX{zj9`E}xba>mr&f^N-!@dur?OsmP(MF87Eb4fp zh52;tHnEcoP(ka>^U}@dH6CD{>#YaJs7W4`d%cmrmxV)iI7W|eYCSB#X3EkdXg$#c zt^($Q@Jtqitu#z2gJ=VI$kt=Yn2zZ>U58mB8bwwlfL}yZkrqoP(ut%N4TWR{m`4Mq zm61s5Kmg`La4&|35dc9$WJ>s-B46l;kr|T7^Zh{7l`yOjsr}+vtDH}J?Wd*^X$#>I zWH?Nx=q7MnAgLkrIfS2x;T6B6-UF}sNL)hLOEnrZ)kFvzNc6p^kxXS0X)OYOlYTim z6V%|(o`M6z5kJ}(dsf6hLX0GICHOTUK9KNXJz&gwxZ1Rz?+_X@30xK7#2^*EMt<=D3O^%cFV$KN%6grMnNwI?np?G1@m8LCgVuNOKZlxF$vT zDwxOnDNvjg6^$?(zIFLnz;6aEMCJ)FBa{s5F$KXKV9zTc#um(Jr9epWe{;{RawHjw z%0@C8(JU>YB%*2(76?*0I2K@gZjsCo9<=}ljwGWS75k5{;!0K0Fc^Z}$XM$);*;+`

@FHUiu&=5w(f-3S1h*&)&h2 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 + + + + +Created by FontForge 20120731 at Thu Dec 4 09:51:48 2014 + By Adam Bradley +Created by Adam Bradley with FontForge 2.0 (http://fontforge.sf.net) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fonts/ionicons.ttf b/src/assets/fonts/ionicons.ttf new file mode 100644 index 0000000000000000000000000000000000000000..c4e4632486d863337c1c73478ddb3c20726c55a0 GIT binary patch literal 188508 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

8E#xmG!w{$tO5=<$!EHPzZXo}IBc1_sqA&q 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 literal 0 HcmV?d00001 diff --git a/src/assets/fonts/ionicons.woff b/src/assets/fonts/ionicons.woff new file mode 100644 index 0000000000000000000000000000000000000000..5f3a14e0a5ca6d20cc4fac708979e807b0d51bc3 GIT binary patch literal 67904 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

  • F(S(gioucm()OHA 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 E0LEz`i~s-t literal 0 HcmV?d00001 diff --git a/src/assets/images/analytics-mock.png b/src/assets/images/analytics-mock.png new file mode 100644 index 0000000000000000000000000000000000000000..c50da3146b2795d25ff80919286c855dbbd15ce2 GIT binary patch literal 43067 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 literal 0 HcmV?d00001 diff --git a/src/assets/images/datopian-logo.png b/src/assets/images/datopian-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b298acff760d0db02bc2bac9d0601e51798ec375 GIT binary patch literal 104573 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 z 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 + + + + + + + + + + + + diff --git a/src/components/FileUpload/index.js b/src/components/FileUpload/index.js new file mode 100644 index 0000000..6b987a3 --- /dev/null +++ b/src/components/FileUpload/index.js @@ -0,0 +1,29 @@ +import React from 'react'; +import { FileConsumer } from '../../context/FileContext'; + +export default class FileUpload extends React.Component { + + render() { + const { upload } = this.props; + return ( + + {({ file, stepChange, step }) => ( +
    +
    + +
    +

    Drag and drop a file or select add File

    +
    +
    +
    + your file +
    + +
    +
    +
    + )} +
    + ); + } +} diff --git a/src/components/Footer/index.js b/src/components/Footer/index.js new file mode 100644 index 0000000..7d53bca --- /dev/null +++ b/src/components/Footer/index.js @@ -0,0 +1,40 @@ +import React from 'react'; + +export default class Footer extends React.Component { + + render() { + return ( +
    + ); + } +} diff --git a/src/components/Header/SiteName.js b/src/components/Header/SiteName.js new file mode 100644 index 0000000..8cc0c46 --- /dev/null +++ b/src/components/Header/SiteName.js @@ -0,0 +1,27 @@ +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; + +class SiteName extends React.Component { + + render() { + + return ( +
    + {this.props.site} +
    {this.props.slogan}
    +
    + ); + } +} + +SiteName.defaultProps = { + site: "Open Data Catalog", + slogan: "Place your tag line here.", + link: "/home" +}; + +SiteName.propTypes = { + item: PropTypes.any, +}; + +export default SiteName; diff --git a/src/components/Header/Wrapper.js b/src/components/Header/Wrapper.js new file mode 100644 index 0000000..80eedcb --- /dev/null +++ b/src/components/Header/Wrapper.js @@ -0,0 +1,10 @@ +import styled from "styled-components"; + +const Wrapper = styled.header` + .logo { + max-height: 25px; + } + border-bottom: 1px solid #ccc; +`; + +export default Wrapper; diff --git a/src/components/Header/index.js b/src/components/Header/index.js new file mode 100644 index 0000000..3edad38 --- /dev/null +++ b/src/components/Header/index.js @@ -0,0 +1,23 @@ +import React from 'react'; +import logo from '../../assets/images/logo.svg'; +import Wrapper from './Wrapper'; + +class Header extends React.Component { + + render() { + return ( + + + + ); + } +} + +export default Header; diff --git a/src/components/Pager/index.js b/src/components/Pager/index.js new file mode 100644 index 0000000..0b23933 --- /dev/null +++ b/src/components/Pager/index.js @@ -0,0 +1,75 @@ +import React from 'react'; +import { NavLink as Link } from 'react-router-dom'; +import { FileConsumer } from '../../context/FileContext'; + +export default class Pager extends React.Component { + + step(file, step, stepChange) { + let pager = (
    ); + if (step === "home" && file === false) { + pager = (
    ); + } + else if (step === "home") { + pager = ( + <> +
  • Next
  • + + ); + } + else if (step === "preview") { + pager = ( + <> +
  • Previous
  • +
  • Next
  • + + ); + } + else if (step === "schema") { + pager = ( + <> +
  • Previous
  • +
  • Next
  • + + ); + } + else if (step === "detail") { + pager = ( + <> +
  • Previous
  • +
  • Next
  • + + ); + } + else if (step === "publish") { + pager = ( + <> +
  • Previous
  • + + ); + } + return pager; + } + + + render() { + return ( + + ); + } +} diff --git a/src/components/SchemaTable/formats.json b/src/components/SchemaTable/formats.json new file mode 100644 index 0000000..3dd26ea --- /dev/null +++ b/src/components/SchemaTable/formats.json @@ -0,0 +1,17 @@ +{ + string: ['default', 'email', 'uri', 'binary', 'uuid'], + number: ['default'], + integer: ['default'], + boolean: ['default'], + object: ['default'], + array: ['default'], + date: ['default', 'custom', 'any'], + time: ['default', 'custom', 'any'], + datetime: ['default', 'custom', 'any'], + year: ['default'], + yearmonth: ['default'], + duration: ['default'], + geopoint: ['default', 'array', 'object'], + geojson: ['default', 'topojson'], + any: ['default'], +} diff --git a/src/components/SchemaTable/index.js b/src/components/SchemaTable/index.js new file mode 100644 index 0000000..2d54116 --- /dev/null +++ b/src/components/SchemaTable/index.js @@ -0,0 +1,181 @@ +import React from 'react'; +import 'react-table/react-table.css'; +import ReactTable from 'react-table'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' +import { faEdit } from '@fortawesome/free-solid-svg-icons' +import { faQuestionCircle } from '@fortawesome/free-solid-svg-icons' +import Loader from 'react-loader'; + +const fieldTypes = { + string: ['default', 'email', 'uri', 'binary', 'uuid'], + number: ['default'], + integer: ['default'], + boolean: ['default'], + object: ['default'], + array: ['default'], + date: ['default', 'custom', 'any'], + time: ['default', 'custom', 'any'], + datetime: ['default', 'custom', 'any'], + year: ['default'], + yearmonth: ['default'], + duration: ['default'], + geopoint: ['default', 'array', 'object'], + geojson: ['default', 'topojson'], + any: ['default'], +}; + +const options = Object.keys(fieldTypes).map((r) => r ); + +const formats = (type) => { + return fieldTypes[type]; +} + + +const Errors = (props) => { + const errors = props.errors; + let report = (

    Tidy Data!

    Your data has no validation errors.

    ); + if (errors.length > 0) { + const errorNotices = errors.map((error) => { + return
  • {error.message} in Row {error.row} in column {error.field}.
  • ; + }); + report = (

    Validation Warning

      {errorNotices}
    ); + }; + return ( + report + ) +} +export default class SchemaTable extends React.Component { + + colorCheck(n) { + if (n === 1) { + return {n} + } + return {n} + } + + typeSelect(value, index, column, tableSchema, updateTableSchemaType) { + let selectOptions = options.map((option) => { + const key = `${value}-${option}-${index}`; + return + }); + return + } + + formatSelect(value, index, column, tableSchema, updateTableSchemaFormat) { + let selectOptions = formats(value.type).map((option) => { + const key = `${value}-${option}-${index}`; + return + }); + return + } + + schemaCell(props, tableSchema, updateTableSchemaType, updateTableSchemaFormat, updateTableSchemaDesc) { + const column = props.column.Header; + if (props.index === 0) { + return ( +
    + +
    + ) + } else if (props.index === 1) { + return ( +
    + {this.typeSelect(props.value, props.index, column, tableSchema, updateTableSchemaType)} +
    + ) + } else if (props.index === 2) { + return ( +
    + {this.formatSelect(props.value, props.index, column, tableSchema, updateTableSchemaFormat)} +
    + ) + } + else { + return( +
    + {props.value}; +
    + ) + } + } + + findError(rowNumber, field, errors) { + return errors.some((error) => { + return error.row === rowNumber && error.field === field; + }); + } + + renderEditable(cellInfo, updateDataFromCell, data, errors) { + let color = "white"; + if (this.findError(cellInfo.index, cellInfo.column.Header, errors)) { + color = "red"; + } + + return ( +
    { + updateDataFromCell(e, cellInfo); + }} + dangerouslySetInnerHTML={{ + __html: data[cellInfo.index][cellInfo.column.id] + }} + /> + ); + } + render() { + const { data, defaultPageSize, columns, tableSchema, updateTableSchemaType, updateTableSchemaFormat, updateTableSchemaDesc, updateDataFromCell, errors } = this.props; + const desc = Object.values(tableSchema).reduce((r, v) => { const desc = 'desc' in v ? v.desc : ""; r[v.name] = desc; return r; }, {}); + const type = Object.values(tableSchema).reduce((r, v) => { r[v.name] = v.type; return r; }, {}); + const format = Object.values(tableSchema).reduce((r, v) => { const format = {}; format.type= v.type; format.format = v.format; r[v.name] = format; return r; }, {}); + const schemaData = [desc, type, format]; + const scols = JSON.parse(JSON.stringify(columns)); + const schemaCols = scols.map((c) => { + c.Cell = (props) => this.schemaCell(props, tableSchema, updateTableSchemaType, updateTableSchemaFormat, updateTableSchemaDesc); + return c; + }); + const dcols = JSON.parse(JSON.stringify(columns)); + const dataCols = dcols.map((c) => { + c.Cell = (props) => this.renderEditable(props, updateDataFromCell, data, errors); + return c; + }); + return ( +
    +
    +
    +
    Name
    +
    Description
    +
    Type
    +
    Format
    +
    +
    +
    + {tableSchema ? ( + + ) : ( + + )} + + +
    + +
    +
    +
    +
    + ); + } +} diff --git a/src/components/Sidebar/Wrapper.js b/src/components/Sidebar/Wrapper.js new file mode 100644 index 0000000..3194005 --- /dev/null +++ b/src/components/Sidebar/Wrapper.js @@ -0,0 +1,9 @@ +import styled from "styled-components"; + +const Wrapper = styled.aside` + margin-bottom: -400px; + padding-bottom: 400px; + max-width: 150px; +`; + +export default Wrapper; diff --git a/src/components/Sidebar/index.js b/src/components/Sidebar/index.js new file mode 100644 index 0000000..157162b --- /dev/null +++ b/src/components/Sidebar/index.js @@ -0,0 +1,46 @@ +import React from 'react'; +import Wrapper from './Wrapper'; +import { Link } from 'react-router-dom'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' +import { faTachometerAlt } from '@fortawesome/free-solid-svg-icons' +import { faLockOpen } from '@fortawesome/free-solid-svg-icons' +import { faPeopleCarry } from '@fortawesome/free-solid-svg-icons' +import { faPlusCircle } from '@fortawesome/free-solid-svg-icons' +import { faAnchor } from '@fortawesome/free-solid-svg-icons' + + +class Sidebar extends React.Component { + + render() { + return ( + + + + ); + } +} + +export default Sidebar; diff --git a/src/context/DatasetContext.js b/src/context/DatasetContext.js new file mode 100644 index 0000000..46bdb5c --- /dev/null +++ b/src/context/DatasetContext.js @@ -0,0 +1,28 @@ +import React from 'react' +import datasets from '../api/dataset'; + +const DatasetContext = React.createContext() + +class DatasetProvider extends React.Component { + state = { + datasets: datasets + } + + + render() { + console.log(this.state.datasets); + return ( + + {this.props.children} + + ) + } +} + +const DatasetConsumer = DatasetContext.Consumer; + +export { DatasetProvider, DatasetConsumer } diff --git a/src/context/FileContext.js b/src/context/FileContext.js new file mode 100644 index 0000000..e181b5b --- /dev/null +++ b/src/context/FileContext.js @@ -0,0 +1,241 @@ +import React from 'react' +import Papa from 'papaparse'; +import {castInteger, castNumber, castBoolean} from './cast'; +import {validateDataset} from './validate'; +const {Table} = require('tableschema') +//import DataJS from 'data.js'; + +const FileContext = React.createContext() +const initialState = { + file: false, + data: null, + type: null, + metadata: {}, + step: "home", + errors: [], + tableSchema: {} +} +class FileProvider extends React.Component { + state = initialState; + + constructor() { + super(); + this.fileUpload = this.fileUpload.bind(this); + this.stepChange = this.stepChange.bind(this); + this.updateMetadata = this.updateMetadata.bind(this); + this.loadDefault = this.loadDefault.bind(this); + this.cancelUpload = this.cancelUpload.bind(this); + this.updateTableSchemaType = this.updateTableSchemaType.bind(this); + this.updateTableSchemaFormat = this.updateTableSchemaFormat.bind(this); + this.updateTableSchemaDesc = this.updateTableSchemaDesc.bind(this); + this.updateDataFromCell = this.updateDataFromCell.bind(this); + + } + + updateDataFromCell(e, cellInfo) { + const value = e.target.innerHTML; + const data = Object.assign(this.state.data, {}); + data.data[cellInfo.index][cellInfo.column.id] = value; + this.validate(data); + this.setState({data}); + } + + updateTableSchemaType(e) { + const column = e.target.dataset.tag; + const value = e.target.value; + const tableSchema = this.state.tableSchema.map((r) => { + if (r.name === column) { + r.type = value; + r.format = "default"; + } + return r; + }); + this.validate(this.state.data); + this.setState({tableSchema}); + } + + updateTableSchemaFormat(e) { + const column = e.target.dataset.tag; + const value = e.target.value; + const tableSchema = this.state.tableSchema.map((r) => { + if (r.name === column) { + r.format = value; + } + return r; + }); + this.validate(this.state.data); + this.setState({tableSchema}); + } + + updateTableSchemaDesc(e) { + const column = e.target.dataset.tag; + const value = e.target.value; + const tableSchema = this.state.tableSchema.map((r) => { + if (r.name === column) { + r.desc = value; + } + return r; + }); + this.validate(this.state.data); + this.setState({tableSchema}); + } + + fileData(file) { + return Papa.parse(file, { + complete: (data) => { + data.cols = data.meta.fields.map((key) => { + key = key ? key : ' '; + return { + Header: key, + accessor: key, + } + }); + this.tableSchemaData(file, data); + this.setState({data}); + }, + header: true + }); + } + + validate(data) { + const tableSchema = this.state.tableSchema; + const errors = validateDataset(data, tableSchema); + this.setState({errors}); + } + + cast(item, type) { + switch(type) { + case "integer": + item = castInteger(type, item); + break; + case "number": + item = castNumber(type, item); + break; + case "bolean": + item = castBoolean(type, item); + break; + default: + break; + } + return item; + } + + castData(unCastData, tableSchema) { + const data = unCastData.data.map((row) => { + Object.values(tableSchema).forEach((col) => { + const type = col.type; + const item = row[col.name]; + const cast = this.cast(item, type); + row[col.name] = cast; + }); + return row; + }); + this.setState(data); + } + + async tableSchemaData(file, data) { + // TODO: We are loading the file twice. + const table = await Table.load(file, {delimiter: ','}); + await table.infer() + const tableSchema = table.schema.descriptor.fields; + this.setState({tableSchema}); + this.validate(data); + } + + cancelUpload() { + this.setState(initialState); + } + + updateMetadata(e) { + // This means we are using the json schema form. + if ('edit' in e) { + const metadata = e.formData; + this.setState({metadata}); + } + else { + const metadata = this.state.metadata; + metadata.title = e.target.value + this.setState({metadata}); + } + } + + loadDefault(e) { + const remoteFile = "https://s3.amazonaws.com/dkan-default-content-files/files/Polling_Places_Madison_0.csv"; + Papa.parse(remoteFile, { + download: true, + complete: (data) => { + // It grabs an extra empty row for some reason. + data.data.splice(-1,1); + data.cols = data.meta.fields.map((key) => { + key = key ? key : ' '; + return { + Header: key, + accessor: key, + } + }); + const file = { + name: "Polling_Places_Madison.csv", + size: 17653 + } + this.tableSchemaData(remoteFile, data); + // Start with the file name if we don't have a title yet. + const metadata = 'title' in this.state.metadata ? this.state.metadata : {title: file.name}; + this.setState({data, metadata, file, step: "preview"}); + }, + header: true + }); + } + + async fileUpload(e) { + const file = e.target.files[0]; + if (file.type === 'text/csv') { + this.fileData(file); + // Start with the file name if we don't have a title yet. + const metadata = 'title' in this.state.metadata ? this.state.metadata : {title: file.name}; + this.setState({ file, metadata, type: null, step: "preview" }); + } else { + this.setState({ type: "wrong"}); + } + } + + stepChange(e) { + const step = e.target.attributes.getNamedItem('data').value; + this.setState({step: step}); + } + + render() { + + return ( + + {this.props.children} + + ) + } +} + +const FileConsumer = FileContext.Consumer + +export { FileProvider, FileConsumer } diff --git a/src/context/GroupContext.js b/src/context/GroupContext.js new file mode 100644 index 0000000..aced5fb --- /dev/null +++ b/src/context/GroupContext.js @@ -0,0 +1,31 @@ +import React from 'react' +import datasets from '../api/organization'; + +const GroupContext = React.createContext() + +class GroupProvider extends React.Component { + state = { + datasets: datasets + } + + + render() { + const datasets = this.state.datasets.map((d) => { + d.edit = "edit"; + return d; + }); + return ( + + {this.props.children} + + ) + } +} + +const GroupConsumer = GroupContext.Consumer; + +export { GroupProvider, GroupConsumer } diff --git a/src/context/cast/any.js b/src/context/cast/any.js new file mode 100644 index 0000000..a1ecd1b --- /dev/null +++ b/src/context/cast/any.js @@ -0,0 +1,10 @@ +// Module API + +function castAny(format, value) { + return value +} + + +module.exports = { + castAny, +} diff --git a/src/context/cast/array.js b/src/context/cast/array.js new file mode 100644 index 0000000..68005bc --- /dev/null +++ b/src/context/cast/array.js @@ -0,0 +1,28 @@ +const isArray = require('lodash/isArray') +const isString = require('lodash/isString') +const {ERROR} = require('./config') + + +// Module API + +function castArray(format, value) { + if (!isArray(value)) { + if (!isString(value)) { + return ERROR + } + try { + value = JSON.parse(value) + } catch (error) { + return ERROR + } + if (!isArray(value)) { + return ERROR + } + } + return value +} + + +module.exports = { + castArray +} diff --git a/src/context/cast/boolean.js b/src/context/cast/boolean.js new file mode 100644 index 0000000..f6fe018 --- /dev/null +++ b/src/context/cast/boolean.js @@ -0,0 +1,34 @@ +const isString = require('lodash/isString') +const isBoolean = require('lodash/isBoolean') +const {ERROR} = require('./config') + + +// Module API + +function castBoolean(format, value, options={}) { + if (!isBoolean(value)) { + if (!isString(value)) { + return ERROR + } + value = value.trim() + if ((options.trueValues || _TRUE_VALUES).includes(value)) { + value = true + } else if ((options.falseValues || _FALSE_VALUES).includes(value)) { + value = false + } else { + return ERROR + } + } + return value +} + + +module.exports = { + castBoolean, +} + + +// Internal + +const _TRUE_VALUES = ['true', 'True', 'TRUE', '1'] +const _FALSE_VALUES = ['false', 'False', 'FALSE', '0'] diff --git a/src/context/cast/config.js b/src/context/cast/config.js new file mode 100644 index 0000000..a9a76c2 --- /dev/null +++ b/src/context/cast/config.js @@ -0,0 +1,26 @@ +// Module API + +const ERROR = 'tableschema.error' +const INFER_THRESHOLD = 10 +const INFER_CONFIDENCE = 0.75 +const DEFAULT_FORMAT = 'csv' +const DEFAULT_ENCODING = 'utf-8' +const DEFAULT_FIELD_TYPE = 'string' +const DEFAULT_FIELD_FORMAT = 'default' +const DEFAULT_MISSING_VALUES = [''] +const IS_BROWSER = (typeof window !== 'undefined') + + +// System + +module.exports = { + ERROR, + INFER_THRESHOLD, + INFER_CONFIDENCE, + DEFAULT_FORMAT, + DEFAULT_ENCODING, + DEFAULT_FIELD_TYPE, + DEFAULT_FIELD_FORMAT, + DEFAULT_MISSING_VALUES, + IS_BROWSER, +} diff --git a/src/context/cast/date.js b/src/context/cast/date.js new file mode 100644 index 0000000..694440a --- /dev/null +++ b/src/context/cast/date.js @@ -0,0 +1,48 @@ +const moment = require('moment') +const isDate = require('lodash/isDate') +const isString = require('lodash/isString') +const {timeParse} = require('d3-time-format') +const {ERROR} = require('./config') + + +// Module API + +function castDate(format, value) { + if (!isDate(value)) { + if (!isString(value)) { + return ERROR + } + try { + if (format === 'default') { + value = moment(timeParse(_DEFAULT_PATTERN)(value)) + } else if (format === 'any') { + value = moment(value) + } else { + if (format.startsWith('fmt:')) { + console.warn( + `Format "fmt:" is deprecated. + Please use "" without "fmt:" prefix.`) + format = format.replace('fmt:', '') + } + value = moment(timeParse(format)(value)) + } + if (!value.isValid()) { + return ERROR + } + value = value.toDate() + } catch (error) { + return ERROR + } + } + return value +} + + +module.exports = { + castDate +} + + +// Internal + +const _DEFAULT_PATTERN = '%Y-%m-%d' diff --git a/src/context/cast/datetime.js b/src/context/cast/datetime.js new file mode 100644 index 0000000..c6c9540 --- /dev/null +++ b/src/context/cast/datetime.js @@ -0,0 +1,48 @@ +const moment = require('moment') +const isDate = require('lodash/isDate') +const isString = require('lodash/isString') +const {timeParse} = require('d3-time-format') +const {ERROR} = require('./config') + + +// Module API + +function castDatetime(format, value) { + if (!isDate(value)) { + if (!isString(value)) { + return ERROR + } + try { + if (format === 'default') { + value = moment(timeParse(_DEFAULT_PATTERN)(value)) + } else if (format === 'any') { + value = moment(value) + } else { + if (format.startsWith('fmt:')) { + console.warn( + `Format "fmt:" is deprecated. + Please use "" without "fmt:" prefix.`) + format = format.replace('fmt:', '') + } + value = moment(timeParse(format)(value)) + } + if (!value.isValid()) { + return ERROR + } + value = value.toDate() + } catch (error) { + return ERROR + } + } + return value +} + + +module.exports = { + castDatetime, +} + + +// Internal + +const _DEFAULT_PATTERN = '%Y-%m-%dT%H:%M:%SZ' diff --git a/src/context/cast/duration.js b/src/context/cast/duration.js new file mode 100644 index 0000000..f8dc218 --- /dev/null +++ b/src/context/cast/duration.js @@ -0,0 +1,31 @@ +const moment = require('moment') +const isString = require('lodash/isString') +const {ERROR} = require('./config') + + +// Module API + +function castDuration(format, value) { + if (!moment.isDuration(value)) { + if (!isString(value)) { + return ERROR + } + try { + if (!value.startsWith('P')) { + return ERROR + } + value = moment.duration(value) + if (!value.as('milliseconds')) { + return ERROR + } + } catch (error) { + return ERROR + } + } + return value +} + + +module.exports = { + castDuration, +} diff --git a/src/context/cast/geojson.js b/src/context/cast/geojson.js new file mode 100644 index 0000000..ee94dc3 --- /dev/null +++ b/src/context/cast/geojson.js @@ -0,0 +1,51 @@ +const tv4 = require('tv4') +const isObject = require('lodash/isObject') +const isString = require('lodash/isString') +const isPlainObject = require('lodash/isPlainObject') +const geojsonProfile = require('./geojson.json') +const topojsonProfile = require('./topojson.json') +const {ERROR} = require('./config') + + +// Module API + +function castGeojson(format, value) { + if (!isObject(value)) { + if (!isString(value)) { + return ERROR + } + try { + value = JSON.parse(value) + } catch (error) { + return ERROR + } + if (!isPlainObject(value)) { + return ERROR + } + } + if (format === 'default') { + try { + const valid = tv4.validate(value, geojsonProfile) + if (!valid) { + return ERROR + } + } catch (error) { + return ERROR + } + } else if (format === 'topojson') { + try { + const valid = tv4.validate(value, topojsonProfile) + if (!valid) { + return ERROR + } + } catch (error) { + return ERROR + } + } + return value +} + + +module.exports = { + castGeojson, +} diff --git a/src/context/cast/geojson.json b/src/context/cast/geojson.json new file mode 100644 index 0000000..5863570 --- /dev/null +++ b/src/context/cast/geojson.json @@ -0,0 +1,208 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "https://raw.githubusercontent.com/fge/sample-json-schemas/master/geojson/geojson.json#", + "title": "Geo JSON object", + "description": "Schema for a Geo JSON object", + "type": "object", + "required": [ "type" ], + "properties": { + "crs": { "$ref": "#/definitions/crs" }, + "bbox": { "$ref": "#/definitions/bbox" } + }, + "oneOf": [ + { "$ref": "#/definitions/geometry" }, + { "$ref": "#/definitions/geometryCollection" }, + { "$ref": "#/definitions/feature" }, + { "$ref": "#/definitions/featureCollection" } + ], + "definitions": { + "geometryCollection": { + "title": "GeometryCollection", + "description": "A collection of geometry objects", + "required": [ "geometries" ], + "properties": { + "type": { "enum": [ "GeometryCollection" ] }, + "geometries": { + "type": "array", + "items": { "$ref": "#/definitions/geometry" } + } + } + }, + "feature": { + "title": "Feature", + "description": "A Geo JSON feature object", + "required": [ "geometry", "properties" ], + "properties": { + "type": { "enum": [ "Feature" ] }, + "geometry": { + "oneOf": [ + { "type": "null" }, + { "$ref": "#/definitions/geometry" } + ] + }, + "properties": { "type": [ "object", "null" ] }, + "id": { "FIXME": "may be there, type not known (string? number?)" } + } + }, + "featureCollection": { + "title": "FeatureCollection", + "description": "A Geo JSON feature collection", + "required": [ "features" ], + "properties": { + "type": { "enum": [ "FeatureCollection" ] }, + "features": { + "type": "array", + "items": { "$ref": "#/definitions/feature" } + } + } + }, + "geometry": { + "title": "geometry", + "description": "One geometry as defined by GeoJSON", + "type": "object", + "required": [ "type", "coordinates" ], + "oneOf": [ + { + "title": "Point", + "properties": { + "type": { "enum": [ "Point" ] }, + "coordinates": { "$ref": "#/definitions/geometry/definitions/position" } + } + }, + { + "title": "MultiPoint", + "properties": { + "type": { "enum": [ "MultiPoint" ] }, + "coordinates": { "$ref": "#/definitions/geometry/definitions/positionArray" } + } + }, + { + "title": "LineString", + "properties": { + "type": { "enum": [ "LineString" ] }, + "coordinates": { "$ref": "#/definitions/geometry/definitions/lineString" } + } + }, + { + "title": "MultiLineString", + "properties": { + "type": { "enum": [ "MultiLineString" ] }, + "coordinates": { + "type": "array", + "items": { "$ref": "#/definitions/geometry/definitions/lineString" } + } + } + }, + { + "title": "Polygon", + "properties": { + "type": { "enum": [ "Polygon" ] }, + "coordinates": { "$ref": "#/definitions/geometry/definitions/polygon" } + } + }, + { + "title": "MultiPolygon", + "properties": { + "type": { "enum": [ "MultiPolygon" ] }, + "coordinates": { + "type": "array", + "items": { "$ref": "#/definitions/geometry/definitions/polygon" } + } + } + } + ], + "definitions": { + "position": { + "description": "A single position", + "type": "array", + "minItems": 2, + "items": [ { "type": "number" }, { "type": "number" } ], + "additionalItems": false + }, + "positionArray": { + "description": "An array of positions", + "type": "array", + "items": { "$ref": "#/definitions/geometry/definitions/position" } + }, + "lineString": { + "description": "An array of two or more positions", + "allOf": [ + { "$ref": "#/definitions/geometry/definitions/positionArray" }, + { "minItems": 2 } + ] + }, + "linearRing": { + "description": "An array of four positions where the first equals the last", + "allOf": [ + { "$ref": "#/definitions/geometry/definitions/positionArray" }, + { "minItems": 4 } + ] + }, + "polygon": { + "description": "An array of linear rings", + "type": "array", + "items": { "$ref": "#/definitions/geometry/definitions/linearRing" } + } + } + }, + "crs": { + "title": "crs", + "description": "a Coordinate Reference System object", + "type": [ "object", "null" ], + "required": [ "type", "properties" ], + "properties": { + "type": { "type": "string" }, + "properties": { "type": "object" } + }, + "additionalProperties": false, + "oneOf": [ + { "$ref": "#/definitions/crs/definitions/namedCrs" }, + { "$ref": "#/definitions/crs/definitions/linkedCrs" } + ], + "definitions": { + "namedCrs": { + "properties": { + "type": { "enum": [ "name" ] }, + "properties": { + "required": [ "name" ], + "additionalProperties": false, + "properties": { + "name": { + "type": "string", + "FIXME": "semantic validation necessary" + } + } + } + } + }, + "linkedObject": { + "type": "object", + "required": [ "href" ], + "properties": { + "href": { + "type": "string", + "format": "uri", + "FIXME": "spec says \"dereferenceable\", cannot enforce that" + }, + "type": { + "type": "string", + "description": "Suggested values: proj4, ogjwkt, esriwkt" + } + } + }, + "linkedCrs": { + "properties": { + "type": { "enum": [ "link" ] }, + "properties": { "$ref": "#/definitions/crs/definitions/linkedObject" } + } + } + } + }, + "bbox": { + "description": "A bounding box as defined by GeoJSON", + "FIXME": "unenforceable constraint: even number of elements in array", + "type": "array", + "items": { "type": "number" } + } + } +} diff --git a/src/context/cast/index.js b/src/context/cast/index.js new file mode 100644 index 0000000..9036f2a --- /dev/null +++ b/src/context/cast/index.js @@ -0,0 +1,34 @@ +const {castAny} = require('./any') +const {castArray} = require('./array') +const {castBoolean} = require('./boolean') +const {castDate} = require('./date') +const {castDatetime} = require('./datetime') +const {castDuration} = require('./duration') +const {castGeojson} = require('./geojson') +const {castInteger} = require('./integer') +const {castNumber} = require('./number') +const {castObject} = require('./object') +const {castString} = require('./string') +const {castTime} = require('./time') +const {castYear} = require('./year') +const {castYearmonth} = require('./yearmonth') + + +// Module API + +module.exports = { + castAny, + castArray, + castBoolean, + castDate, + castDatetime, + castDuration, + castGeojson, + castInteger, + castNumber, + castObject, + castString, + castTime, + castYear, + castYearmonth, +} diff --git a/src/context/cast/integer.js b/src/context/cast/integer.js new file mode 100644 index 0000000..99777ce --- /dev/null +++ b/src/context/cast/integer.js @@ -0,0 +1,29 @@ +const isNaN = require('lodash/isNaN') +const isString = require('lodash/isString') +const isInteger = require('lodash/isInteger') +const {ERROR} = require('./config') + + +// Module API + +function castInteger(format, value, options={}) { + if (!isInteger(value)) { + if (!isString(value)) return ERROR + if (options.bareNumber === false) { + value = value.replace(new RegExp('((^\\D*)|(\\D*$))', 'g'), '') + } + try { + const result = parseInt(value, 10) + if (isNaN(result) || result.toString() !== value) return ERROR + value = result + } catch (error) { + return ERROR + } + } + return value +} + + +module.exports = { + castInteger, +} diff --git a/src/context/cast/number.js b/src/context/cast/number.js new file mode 100644 index 0000000..339dea3 --- /dev/null +++ b/src/context/cast/number.js @@ -0,0 +1,43 @@ +const isNaN = require('lodash/isNaN') +const isString = require('lodash/isString') +const isNumber = require('lodash/isNumber') +const toNumber = require('lodash/toNumber') +const {ERROR} = require('./config') + + +// Module API + +function castNumber(format, value, options={}) { + const decimalChar = options.decimalChar || _DEFAULT_DECIMAL_CHAR + const groupChar = options.groupChar || _DEFAULT_GROUP_CHAR + if (!isNumber(value)) { + if (!isString(value)) return ERROR + if (!value.length) return ERROR + value = value.replace(new RegExp('\\s', 'g'), '') + value = value.replace(new RegExp(`[${decimalChar}]`, 'g'), '.') + value = value.replace(new RegExp(`[${groupChar}]`, 'g'), '') + if (options.bareNumber === false) { + value = value.replace(new RegExp('((^\\D*)|(\\D*$))', 'g'), '') + } + try { + value = toNumber(value) + } catch (error) { + return ERROR + } + } + if (isNaN(value)) { + return ERROR + } + return value +} + + +module.exports = { + castNumber, +} + + +// Internal + +const _DEFAULT_DECIMAL_CHAR = '.' +const _DEFAULT_GROUP_CHAR = '' diff --git a/src/context/cast/object.js b/src/context/cast/object.js new file mode 100644 index 0000000..c3afe2b --- /dev/null +++ b/src/context/cast/object.js @@ -0,0 +1,28 @@ +const isString = require('lodash/isString') +const isPlainObject = require('lodash/isPlainObject') +const {ERROR} = require('./config') + + +// Module API + +function castObject(format, value) { + if (!isPlainObject(value)) { + if (!isString(value)) { + return ERROR + } + try { + value = JSON.parse(value) + } catch (error) { + return ERROR + } + if (!isPlainObject(value)) { + return ERROR + } + } + return value +} + + +module.exports = { + castObject, +} diff --git a/src/context/cast/string.js b/src/context/cast/string.js new file mode 100644 index 0000000..9b17e10 --- /dev/null +++ b/src/context/cast/string.js @@ -0,0 +1,38 @@ +const isBase64 = require('validator/lib/isBase64') +const isEmail = require('validator/lib/isEmail') +const isUUID = require('validator/lib/isUUID') +const isURL = require('validator/lib/isURL') +const isString = require('lodash/isString') +const {ERROR} = require('./config') + + +// Module API + +function castString(format, value) { + if (!isString(value)) { + return ERROR + } + if (format === 'uri') { + if (!isURL(value, {require_protocol: true})) { + return ERROR + } + } else if (format === 'email') { + if (!isEmail(value)) { + return ERROR + } + } else if (format === 'uuid') { + if (!isUUID(value)) { + return ERROR + } + } else if (format === 'binary') { + if (!value.endsWith('==') || !isBase64(value)) { + return ERROR + } + } + return value +} + + +module.exports = { + castString, +} diff --git a/src/context/cast/table-schema.json b/src/context/cast/table-schema.json new file mode 100644 index 0000000..a264d4f --- /dev/null +++ b/src/context/cast/table-schema.json @@ -0,0 +1,1560 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Table Schema", + "description": "A Table Schema for this resource, compliant with the [Table Schema](/tableschema/) specification.", + "type": "object", + "required": [ + "fields" + ], + "properties": { + "fields": { + "type": "array", + "minItems": 1, + "items": { + "title": "Table Schema Field", + "type": "object", + "anyOf": [ + { + "type": "object", + "title": "String Field", + "description": "The field contains strings, that is, sequences of characters.", + "required": [ + "name" + ], + "properties": { + "name": { + "title": "Name", + "description": "A name for this field.", + "type": "string" + }, + "title": { + "title": "Title", + "description": "A human-readable title.", + "type": "string", + "examples": [ + "{\n \"title\": \"My Package Title\"\n}\n" + ] + }, + "description": { + "title": "Description", + "description": "A text description. Markdown is encouraged.", + "type": "string", + "examples": [ + "{\n \"description\": \"# My Package description\\nAll about my package.\"\n}\n" + ] + }, + "type": { + "description": "The type keyword, which `MUST` be a value of `string`.", + "enum": [ + "string" + ] + }, + "format": { + "description": "The format keyword options for `string` are `default`, `email`, `uri`, `binary`, and `uuid`.", + "context": "The following `format` options are supported:\n * **default**: any valid string.\n * **email**: A valid email address.\n * **uri**: A valid URI.\n * **binary**: A base64 encoded string representing binary data.\n * **uuid**: A string that is a uuid.", + "enum": [ + "default", + "email", + "uri", + "binary", + "uuid" + ], + "default": "default" + }, + "constraints": { + "title": "Constraints", + "description": "The following constraints are supported for `string` fields.", + "type": "object", + "properties": { + "required": { + "type": "boolean", + "description": "Indicates whether a property must have a value for each instance.", + "context": "An empty string is considered to be a missing value." + }, + "unique": { + "type": "boolean", + "description": "When `true`, each value for the property `MUST` be unique." + }, + "pattern": { + "type": "string", + "description": "A regular expression pattern to test each value of the property against, where a truthy response indicates validity.", + "context": "Regular expressions `SHOULD` conform to the [XML Schema regular expression syntax](http://www.w3.org/TR/xmlschema-2/#regexs)." + }, + "enum": { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "minLength": { + "type": "integer", + "description": "An integer that specifies the minimum length of a value." + }, + "maxLength": { + "type": "integer", + "description": "An integer that specifies the maximum length of a value." + } + } + }, + "rdfType": { + "type": "string", + "description": "The RDF type for this field." + } + }, + "examples": [ + "{\n \"name\": \"name\",\n \"type\": \"string\"\n}\n", + "{\n \"name\": \"name\",\n \"type\": \"string\",\n \"format\": \"email\"\n}\n", + "{\n \"name\": \"name\",\n \"type\": \"string\",\n \"constraints\": {\n \"minLength\": 3,\n \"maxLength\": 35\n }\n}\n" + ] + }, + { + "type": "object", + "title": "Number Field", + "description": "The field contains numbers of any kind including decimals.", + "context": "The lexical formatting follows that of decimal in [XMLSchema](https://www.w3.org/TR/xmlschema-2/#decimal): a non-empty finite-length sequence of decimal digits separated by a period as a decimal indicator. An optional leading sign is allowed. If the sign is omitted, '+' is assumed. Leading and trailing zeroes are optional. If the fractional part is zero, the period and following zero(es) can be omitted. For example: '-1.23', '12678967.543233', '+100000.00', '210'.\n\nThe following special string values are permitted (case does not need to be respected):\n - NaN: not a number\n - INF: positive infinity\n - -INF: negative infinity\n\nA number `MAY` also have a trailing:\n - exponent: this `MUST` consist of an E followed by an optional + or - sign followed by one or more decimal digits (0-9)\n - percentage: the percentage sign: `%`. In conversion percentages should be divided by 100.\n\nIf both exponent and percentages are present the percentage `MUST` follow the exponent e.g. '53E10%' (equals 5.3).", + "required": [ + "name" + ], + "properties": { + "name": { + "title": "Name", + "description": "A name for this field.", + "type": "string" + }, + "title": { + "title": "Title", + "description": "A human-readable title.", + "type": "string", + "examples": [ + "{\n \"title\": \"My Package Title\"\n}\n" + ] + }, + "description": { + "title": "Description", + "description": "A text description. Markdown is encouraged.", + "type": "string", + "examples": [ + "{\n \"description\": \"# My Package description\\nAll about my package.\"\n}\n" + ] + }, + "type": { + "description": "The type keyword, which `MUST` be a value of `number`.", + "enum": [ + "number" + ] + }, + "format": { + "description": "There are no format keyword options for `number`: only `default` is allowed.", + "enum": [ + "default" + ], + "default": "default" + }, + "bareNumber": { + "type": "boolean", + "title": "bareNumber", + "description": "a boolean field with a default of `true`. If `true` the physical contents of this field must follow the formatting constraints already set out. If `false` the contents of this field may contain leading and/or trailing non-numeric characters (which implementors MUST therefore strip). The purpose of `bareNumber` is to allow publishers to publish numeric data that contains trailing characters such as percentages e.g. `95%` or leading characters such as currencies e.g. `€95` or `EUR 95`. Note that it is entirely up to implementors what, if anything, they do with stripped text.", + "default": true + }, + "decimalChar": { + "type": "string", + "description": "A string whose value is used to represent a decimal point within the number. The default value is `.`." + }, + "groupChar": { + "type": "string", + "description": "A string whose value is used to group digits within the number. The default value is `null`. A common value is `,` e.g. '100,000'." + }, + "constraints": { + "title": "Constraints", + "description": "The following constraints are supported for `number` fields.", + "type": "object", + "properties": { + "required": { + "type": "boolean", + "description": "Indicates whether a property must have a value for each instance.", + "context": "An empty string is considered to be a missing value." + }, + "unique": { + "type": "boolean", + "description": "When `true`, each value for the property `MUST` be unique." + }, + "pattern": { + "type": "string", + "description": "A regular expression pattern to test each value of the property against, where a truthy response indicates validity.", + "context": "Regular expressions `SHOULD` conform to the [XML Schema regular expression syntax](http://www.w3.org/TR/xmlschema-2/#regexs)." + }, + "enum": { + "oneOf": [ + { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { + "type": "string" + } + }, + { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { + "type": "number" + } + } + ] + }, + "minimum": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "maximum": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + } + } + }, + "rdfType": { + "type": "string", + "description": "The RDF type for this field." + } + }, + "examples": [ + "{\n \"name\": \"field-name\",\n \"type\": \"number\"\n}\n", + "{\n \"name\": \"field-name\",\n \"type\": \"number\",\n \"constraints\": {\n \"enum\": [ \"1.00\", \"1.50\", \"2.00\" ]\n }\n}\n" + ] + }, + { + "type": "object", + "title": "Integer Field", + "description": "The field contains integers - that is whole numbers.", + "context": "Integer values are indicated in the standard way for any valid integer.", + "required": [ + "name", + "type" + ], + "properties": { + "name": { + "title": "Name", + "description": "A name for this field.", + "type": "string" + }, + "title": { + "title": "Title", + "description": "A human-readable title.", + "type": "string", + "examples": [ + "{\n \"title\": \"My Package Title\"\n}\n" + ] + }, + "description": { + "title": "Description", + "description": "A text description. Markdown is encouraged.", + "type": "string", + "examples": [ + "{\n \"description\": \"# My Package description\\nAll about my package.\"\n}\n" + ] + }, + "type": { + "description": "The type keyword, which `MUST` be a value of `integer`.", + "enum": [ + "integer" + ] + }, + "format": { + "description": "There are no format keyword options for `integer`: only `default` is allowed.", + "enum": [ + "default" + ], + "default": "default" + }, + "bareNumber": { + "type": "boolean", + "title": "bareNumber", + "description": "a boolean field with a default of `true`. If `true` the physical contents of this field must follow the formatting constraints already set out. If `false` the contents of this field may contain leading and/or trailing non-numeric characters (which implementors MUST therefore strip). The purpose of `bareNumber` is to allow publishers to publish numeric data that contains trailing characters such as percentages e.g. `95%` or leading characters such as currencies e.g. `€95` or `EUR 95`. Note that it is entirely up to implementors what, if anything, they do with stripped text.", + "default": true + }, + "constraints": { + "title": "Constraints", + "description": "The following constraints are supported for `integer` fields.", + "type": "object", + "properties": { + "required": { + "type": "boolean", + "description": "Indicates whether a property must have a value for each instance.", + "context": "An empty string is considered to be a missing value." + }, + "unique": { + "type": "boolean", + "description": "When `true`, each value for the property `MUST` be unique." + }, + "pattern": { + "type": "string", + "description": "A regular expression pattern to test each value of the property against, where a truthy response indicates validity.", + "context": "Regular expressions `SHOULD` conform to the [XML Schema regular expression syntax](http://www.w3.org/TR/xmlschema-2/#regexs)." + }, + "enum": { + "oneOf": [ + { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { + "type": "string" + } + }, + { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { + "type": "integer" + } + } + ] + }, + "minimum": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "integer" + } + ] + }, + "maximum": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "integer" + } + ] + } + } + }, + "rdfType": { + "type": "string", + "description": "The RDF type for this field." + } + }, + "examples": [ + "{\n \"name\": \"age\",\n \"type\": \"integer\",\n \"constraints\": {\n \"unique\": true,\n \"minimum\": 100,\n \"maximum\": 9999\n }\n}\n" + ] + }, + { + "type": "object", + "title": "Date Field", + "description": "The field contains temporal date values.", + "required": [ + "name", + "type" + ], + "properties": { + "name": { + "title": "Name", + "description": "A name for this field.", + "type": "string" + }, + "title": { + "title": "Title", + "description": "A human-readable title.", + "type": "string", + "examples": [ + "{\n \"title\": \"My Package Title\"\n}\n" + ] + }, + "description": { + "title": "Description", + "description": "A text description. Markdown is encouraged.", + "type": "string", + "examples": [ + "{\n \"description\": \"# My Package description\\nAll about my package.\"\n}\n" + ] + }, + "type": { + "description": "The type keyword, which `MUST` be a value of `date`.", + "enum": [ + "date" + ] + }, + "format": { + "description": "The format keyword options for `date` are `default`, `any`, and `{PATTERN}`.", + "context": "The following `format` options are supported:\n * **default**: An ISO8601 format string of YYYY-MM-DD.\n * **any**: Any parsable representation of a date. The implementing library can attempt to parse the datetime via a range of strategies.\n * **{PATTERN}**: The value can be parsed according to `{PATTERN}`, which `MUST` follow the date formatting syntax of C / Python [strftime](http://strftime.org/).", + "default": "default" + }, + "constraints": { + "title": "Constraints", + "description": "The following constraints are supported for `date` fields.", + "type": "object", + "properties": { + "required": { + "type": "boolean", + "description": "Indicates whether a property must have a value for each instance.", + "context": "An empty string is considered to be a missing value." + }, + "unique": { + "type": "boolean", + "description": "When `true`, each value for the property `MUST` be unique." + }, + "enum": { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "minimum": { + "type": "string" + }, + "maximum": { + "type": "string" + } + } + }, + "rdfType": { + "type": "string", + "description": "The RDF type for this field." + } + }, + "examples": [ + "{\n \"name\": \"date_of_birth\",\n \"type\": \"date\"\n}\n", + "{\n \"name\": \"date_of_birth\",\n \"type\": \"date\",\n \"constraints\": {\n \"minimum\": \"01-01-1900\"\n }\n}\n", + "{\n \"name\": \"date_of_birth\",\n \"type\": \"date\",\n \"format\": \"MM-DD-YYYY\"\n}\n" + ] + }, + { + "type": "object", + "title": "Time Field", + "description": "The field contains temporal time values.", + "required": [ + "name", + "type" + ], + "properties": { + "name": { + "title": "Name", + "description": "A name for this field.", + "type": "string" + }, + "title": { + "title": "Title", + "description": "A human-readable title.", + "type": "string", + "examples": [ + "{\n \"title\": \"My Package Title\"\n}\n" + ] + }, + "description": { + "title": "Description", + "description": "A text description. Markdown is encouraged.", + "type": "string", + "examples": [ + "{\n \"description\": \"# My Package description\\nAll about my package.\"\n}\n" + ] + }, + "type": { + "description": "The type keyword, which `MUST` be a value of `time`.", + "enum": [ + "time" + ] + }, + "format": { + "description": "The format keyword options for `time` are `default`, `any`, and `{PATTERN}`.", + "context": "The following `format` options are supported:\n * **default**: An ISO8601 format string for time.\n * **any**: Any parsable representation of a date. The implementing library can attempt to parse the datetime via a range of strategies.\n * **{PATTERN}**: The value can be parsed according to `{PATTERN}`, which `MUST` follow the date formatting syntax of C / Python [strftime](http://strftime.org/).", + "default": "default" + }, + "constraints": { + "title": "Constraints", + "description": "The following constraints are supported for `time` fields.", + "type": "object", + "properties": { + "required": { + "type": "boolean", + "description": "Indicates whether a property must have a value for each instance.", + "context": "An empty string is considered to be a missing value." + }, + "unique": { + "type": "boolean", + "description": "When `true`, each value for the property `MUST` be unique." + }, + "enum": { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "minimum": { + "type": "string" + }, + "maximum": { + "type": "string" + } + } + }, + "rdfType": { + "type": "string", + "description": "The RDF type for this field." + } + }, + "examples": [ + "{\n \"name\": \"appointment_start\",\n \"type\": \"time\"\n}\n", + "{\n \"name\": \"appointment_start\",\n \"type\": \"time\",\n \"format\": \"any\"\n}\n" + ] + }, + { + "type": "object", + "title": "Date Time Field", + "description": "The field contains temporal datetime values.", + "required": [ + "name", + "type" + ], + "properties": { + "name": { + "title": "Name", + "description": "A name for this field.", + "type": "string" + }, + "title": { + "title": "Title", + "description": "A human-readable title.", + "type": "string", + "examples": [ + "{\n \"title\": \"My Package Title\"\n}\n" + ] + }, + "description": { + "title": "Description", + "description": "A text description. Markdown is encouraged.", + "type": "string", + "examples": [ + "{\n \"description\": \"# My Package description\\nAll about my package.\"\n}\n" + ] + }, + "type": { + "description": "The type keyword, which `MUST` be a value of `datetime`.", + "enum": [ + "datetime" + ] + }, + "format": { + "description": "The format keyword options for `datetime` are `default`, `any`, and `{PATTERN}`.", + "context": "The following `format` options are supported:\n * **default**: An ISO8601 format string for datetime.\n * **any**: Any parsable representation of a date. The implementing library can attempt to parse the datetime via a range of strategies.\n * **{PATTERN}**: The value can be parsed according to `{PATTERN}`, which `MUST` follow the date formatting syntax of C / Python [strftime](http://strftime.org/).", + "default": "default" + }, + "constraints": { + "title": "Constraints", + "description": "The following constraints are supported for `datetime` fields.", + "type": "object", + "properties": { + "required": { + "type": "boolean", + "description": "Indicates whether a property must have a value for each instance.", + "context": "An empty string is considered to be a missing value." + }, + "unique": { + "type": "boolean", + "description": "When `true`, each value for the property `MUST` be unique." + }, + "enum": { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "minimum": { + "type": "string" + }, + "maximum": { + "type": "string" + } + } + }, + "rdfType": { + "type": "string", + "description": "The RDF type for this field." + } + }, + "examples": [ + "{\n \"name\": \"timestamp\",\n \"type\": \"datetime\"\n}\n", + "{\n \"name\": \"timestamp\",\n \"type\": \"datetime\",\n \"format\": \"default\"\n}\n" + ] + }, + { + "type": "object", + "title": "Year Field", + "description": "A calendar year, being an integer with 4 digits. Equivalent to [gYear in XML Schema](https://www.w3.org/TR/xmlschema-2/#gYear)", + "required": [ + "name", + "type" + ], + "properties": { + "name": { + "title": "Name", + "description": "A name for this field.", + "type": "string" + }, + "title": { + "title": "Title", + "description": "A human-readable title.", + "type": "string", + "examples": [ + "{\n \"title\": \"My Package Title\"\n}\n" + ] + }, + "description": { + "title": "Description", + "description": "A text description. Markdown is encouraged.", + "type": "string", + "examples": [ + "{\n \"description\": \"# My Package description\\nAll about my package.\"\n}\n" + ] + }, + "type": { + "description": "The type keyword, which `MUST` be a value of `year`.", + "enum": [ + "year" + ] + }, + "format": { + "description": "There are no format keyword options for `year`: only `default` is allowed.", + "enum": [ + "default" + ], + "default": "default" + }, + "constraints": { + "title": "Constraints", + "description": "The following constraints are supported for `year` fields.", + "type": "object", + "properties": { + "required": { + "type": "boolean", + "description": "Indicates whether a property must have a value for each instance.", + "context": "An empty string is considered to be a missing value." + }, + "unique": { + "type": "boolean", + "description": "When `true`, each value for the property `MUST` be unique." + }, + "enum": { + "oneOf": [ + { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { + "type": "string" + } + }, + { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { + "type": "integer" + } + } + ] + }, + "minimum": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "integer" + } + ] + }, + "maximum": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "integer" + } + ] + } + } + }, + "rdfType": { + "type": "string", + "description": "The RDF type for this field." + } + }, + "examples": [ + "{\n \"name\": \"year\",\n \"type\": \"year\"\n}\n", + "{\n \"name\": \"year\",\n \"type\": \"year\",\n \"constraints\": {\n \"minimum\": 1970,\n \"maximum\": 2003\n }\n}\n" + ] + }, + { + "type": "object", + "title": "Year Month Field", + "description": "A calendar year month, being an integer with 1 or 2 digits. Equivalent to [gYearMonth in XML Schema](https://www.w3.org/TR/xmlschema-2/#gYearMonth)", + "required": [ + "name", + "type" + ], + "properties": { + "name": { + "title": "Name", + "description": "A name for this field.", + "type": "string" + }, + "title": { + "title": "Title", + "description": "A human-readable title.", + "type": "string", + "examples": [ + "{\n \"title\": \"My Package Title\"\n}\n" + ] + }, + "description": { + "title": "Description", + "description": "A text description. Markdown is encouraged.", + "type": "string", + "examples": [ + "{\n \"description\": \"# My Package description\\nAll about my package.\"\n}\n" + ] + }, + "type": { + "description": "The type keyword, which `MUST` be a value of `yearmonth`.", + "enum": [ + "yearmonth" + ] + }, + "format": { + "description": "There are no format keyword options for `yearmonth`: only `default` is allowed.", + "enum": [ + "default" + ], + "default": "default" + }, + "constraints": { + "title": "Constraints", + "description": "The following constraints are supported for `yearmonth` fields.", + "type": "object", + "properties": { + "required": { + "type": "boolean", + "description": "Indicates whether a property must have a value for each instance.", + "context": "An empty string is considered to be a missing value." + }, + "unique": { + "type": "boolean", + "description": "When `true`, each value for the property `MUST` be unique." + }, + "pattern": { + "type": "string", + "description": "A regular expression pattern to test each value of the property against, where a truthy response indicates validity.", + "context": "Regular expressions `SHOULD` conform to the [XML Schema regular expression syntax](http://www.w3.org/TR/xmlschema-2/#regexs)." + }, + "enum": { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "minimum": { + "type": "string" + }, + "maximum": { + "type": "string" + } + } + }, + "rdfType": { + "type": "string", + "description": "The RDF type for this field." + } + }, + "examples": [ + "{\n \"name\": \"month\",\n \"type\": \"yearmonth\"\n}\n", + "{\n \"name\": \"month\",\n \"type\": \"yearmonth\",\n \"constraints\": {\n \"minimum\": 1,\n \"maximum\": 6\n }\n}\n" + ] + }, + { + "type": "object", + "title": "Boolean Field", + "description": "The field contains boolean (true/false) data.", + "required": [ + "name", + "type" + ], + "properties": { + "name": { + "title": "Name", + "description": "A name for this field.", + "type": "string" + }, + "title": { + "title": "Title", + "description": "A human-readable title.", + "type": "string", + "examples": [ + "{\n \"title\": \"My Package Title\"\n}\n" + ] + }, + "description": { + "title": "Description", + "description": "A text description. Markdown is encouraged.", + "type": "string", + "examples": [ + "{\n \"description\": \"# My Package description\\nAll about my package.\"\n}\n" + ] + }, + "type": { + "description": "The type keyword, which `MUST` be a value of `boolean`.", + "enum": [ + "boolean" + ] + }, + "trueValues": { + "type": "array", + "minItems": 1, + "items": { + "type": "string" + }, + "default": [ + "true", + "True", + "TRUE", + "1" + ] + }, + "falseValues": { + "type": "array", + "minItems": 1, + "items": { + "type": "string" + }, + "default": [ + "false", + "False", + "FALSE", + "0" + ] + }, + "constraints": { + "title": "Constraints", + "description": "The following constraints are supported for `boolean` fields.", + "type": "object", + "properties": { + "required": { + "type": "boolean", + "description": "Indicates whether a property must have a value for each instance.", + "context": "An empty string is considered to be a missing value." + }, + "enum": { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { + "type": "boolean" + } + } + } + }, + "rdfType": { + "type": "string", + "description": "The RDF type for this field." + } + }, + "examples": [ + "{\n \"name\": \"registered\",\n \"type\": \"boolean\"\n}\n" + ] + }, + { + "type": "object", + "title": "Object Field", + "description": "The field contains data which can be parsed as a valid JSON object.", + "required": [ + "name", + "type" + ], + "properties": { + "name": { + "title": "Name", + "description": "A name for this field.", + "type": "string" + }, + "title": { + "title": "Title", + "description": "A human-readable title.", + "type": "string", + "examples": [ + "{\n \"title\": \"My Package Title\"\n}\n" + ] + }, + "description": { + "title": "Description", + "description": "A text description. Markdown is encouraged.", + "type": "string", + "examples": [ + "{\n \"description\": \"# My Package description\\nAll about my package.\"\n}\n" + ] + }, + "type": { + "description": "The type keyword, which `MUST` be a value of `object`.", + "enum": [ + "object" + ] + }, + "format": { + "description": "There are no format keyword options for `object`: only `default` is allowed.", + "enum": [ + "default" + ], + "default": "default" + }, + "constraints": { + "title": "Constraints", + "description": "The following constraints apply for `object` fields.", + "type": "object", + "properties": { + "required": { + "type": "boolean", + "description": "Indicates whether a property must have a value for each instance.", + "context": "An empty string is considered to be a missing value." + }, + "unique": { + "type": "boolean", + "description": "When `true`, each value for the property `MUST` be unique." + }, + "enum": { + "oneOf": [ + { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { + "type": "string" + } + }, + { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { + "type": "object" + } + } + ] + }, + "minLength": { + "type": "integer", + "description": "An integer that specifies the minimum length of a value." + }, + "maxLength": { + "type": "integer", + "description": "An integer that specifies the maximum length of a value." + } + } + }, + "rdfType": { + "type": "string", + "description": "The RDF type for this field." + } + }, + "examples": [ + "{\n \"name\": \"extra\"\n \"type\": \"object\"\n}\n" + ] + }, + { + "type": "object", + "title": "GeoPoint Field", + "description": "The field contains data describing a geographic point.", + "required": [ + "name", + "type" + ], + "properties": { + "name": { + "title": "Name", + "description": "A name for this field.", + "type": "string" + }, + "title": { + "title": "Title", + "description": "A human-readable title.", + "type": "string", + "examples": [ + "{\n \"title\": \"My Package Title\"\n}\n" + ] + }, + "description": { + "title": "Description", + "description": "A text description. Markdown is encouraged.", + "type": "string", + "examples": [ + "{\n \"description\": \"# My Package description\\nAll about my package.\"\n}\n" + ] + }, + "type": { + "description": "The type keyword, which `MUST` be a value of `geopoint`.", + "enum": [ + "geopoint" + ] + }, + "format": { + "description": "The format keyword options for `geopoint` are `default`,`array`, and `object`.", + "context": "The following `format` options are supported:\n * **default**: A string of the pattern 'lon, lat', where `lon` is the longitude and `lat` is the latitude.\n * **array**: An array of exactly two items, where each item is either a number, or a string parsable as a number, and the first item is `lon` and the second item is `lat`.\n * **object**: A JSON object with exactly two keys, `lat` and `lon`", + "notes": [ + "Implementations `MUST` strip all white space in the default format of `lon, lat`." + ], + "enum": [ + "default", + "array", + "object" + ], + "default": "default" + }, + "constraints": { + "title": "Constraints", + "description": "The following constraints are supported for `geopoint` fields.", + "type": "object", + "properties": { + "required": { + "type": "boolean", + "description": "Indicates whether a property must have a value for each instance.", + "context": "An empty string is considered to be a missing value." + }, + "unique": { + "type": "boolean", + "description": "When `true`, each value for the property `MUST` be unique." + }, + "enum": { + "oneOf": [ + { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { + "type": "string" + } + }, + { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { + "type": "array" + } + }, + { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { + "type": "object" + } + } + ] + } + } + }, + "rdfType": { + "type": "string", + "description": "The RDF type for this field." + } + }, + "examples": [ + "{\n \"name\": \"post_office\",\n \"type\": \"geopoint\"\n}\n", + "{\n \"name\": \"post_office\",\n \"type\": \"geopoint\",\n \"format\": \"array\"\n}\n" + ] + }, + { + "type": "object", + "title": "GeoJSON Field", + "description": "The field contains a JSON object according to GeoJSON or TopoJSON", + "required": [ + "name", + "type" + ], + "properties": { + "name": { + "title": "Name", + "description": "A name for this field.", + "type": "string" + }, + "title": { + "title": "Title", + "description": "A human-readable title.", + "type": "string", + "examples": [ + "{\n \"title\": \"My Package Title\"\n}\n" + ] + }, + "description": { + "title": "Description", + "description": "A text description. Markdown is encouraged.", + "type": "string", + "examples": [ + "{\n \"description\": \"# My Package description\\nAll about my package.\"\n}\n" + ] + }, + "type": { + "description": "The type keyword, which `MUST` be a value of `geojson`.", + "enum": [ + "geojson" + ] + }, + "format": { + "description": "The format keyword options for `geojson` are `default` and `topojson`.", + "context": "The following `format` options are supported:\n * **default**: A geojson object as per the [GeoJSON spec](http://geojson.org/).\n * **topojson**: A topojson object as per the [TopoJSON spec](https://github.com/topojson/topojson-specification/blob/master/README.md)", + "enum": [ + "default", + "topojson" + ], + "default": "default" + }, + "constraints": { + "title": "Constraints", + "description": "The following constraints are supported for `geojson` fields.", + "type": "object", + "properties": { + "required": { + "type": "boolean", + "description": "Indicates whether a property must have a value for each instance.", + "context": "An empty string is considered to be a missing value." + }, + "unique": { + "type": "boolean", + "description": "When `true`, each value for the property `MUST` be unique." + }, + "enum": { + "oneOf": [ + { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { + "type": "string" + } + }, + { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { + "type": "object" + } + } + ] + }, + "minLength": { + "type": "integer", + "description": "An integer that specifies the minimum length of a value." + }, + "maxLength": { + "type": "integer", + "description": "An integer that specifies the maximum length of a value." + } + } + }, + "rdfType": { + "type": "string", + "description": "The RDF type for this field." + } + }, + "examples": [ + "{\n \"name\": \"city_limits\",\n \"type\": \"geojson\"\n}\n", + "{\n \"name\": \"city_limits\",\n \"type\": \"geojson\",\n \"format\": \"topojson\"\n}\n" + ] + }, + { + "type": "object", + "title": "Array Field", + "description": "The field contains data which can be parsed as a valid JSON array.", + "required": [ + "name", + "type" + ], + "properties": { + "name": { + "title": "Name", + "description": "A name for this field.", + "type": "string" + }, + "title": { + "title": "Title", + "description": "A human-readable title.", + "type": "string", + "examples": [ + "{\n \"title\": \"My Package Title\"\n}\n" + ] + }, + "description": { + "title": "Description", + "description": "A text description. Markdown is encouraged.", + "type": "string", + "examples": [ + "{\n \"description\": \"# My Package description\\nAll about my package.\"\n}\n" + ] + }, + "type": { + "description": "The type keyword, which `MUST` be a value of `array`.", + "enum": [ + "array" + ] + }, + "format": { + "description": "There are no format keyword options for `array`: only `default` is allowed.", + "enum": [ + "default" + ], + "default": "default" + }, + "constraints": { + "title": "Constraints", + "description": "The following constraints apply for `array` fields.", + "type": "object", + "properties": { + "required": { + "type": "boolean", + "description": "Indicates whether a property must have a value for each instance.", + "context": "An empty string is considered to be a missing value." + }, + "unique": { + "type": "boolean", + "description": "When `true`, each value for the property `MUST` be unique." + }, + "enum": { + "oneOf": [ + { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { + "type": "string" + } + }, + { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { + "type": "array" + } + } + ] + }, + "minLength": { + "type": "integer", + "description": "An integer that specifies the minimum length of a value." + }, + "maxLength": { + "type": "integer", + "description": "An integer that specifies the maximum length of a value." + } + } + }, + "rdfType": { + "type": "string", + "description": "The RDF type for this field." + } + }, + "examples": [ + "{\n \"name\": \"options\"\n \"type\": \"array\"\n}\n" + ] + }, + { + "type": "object", + "title": "Duration Field", + "description": "The field contains a duration of time.", + "context": "The lexical representation for duration is the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601#Durations) extended format `PnYnMnDTnHnMnS`, where `nY` represents the number of years, `nM` the number of months, `nD` the number of days, 'T' is the date/time separator, `nH` the number of hours, `nM` the number of minutes and `nS` the number of seconds. The number of seconds can include decimal digits to arbitrary precision. Date and time elements including their designator may be omitted if their value is zero, and lower order elements may also be omitted for reduced precision. Here we follow the definition of [XML Schema duration datatype](http://www.w3.org/TR/xmlschema-2/#duration) directly and that definition is implicitly inlined here.", + "required": [ + "name", + "type" + ], + "properties": { + "name": { + "title": "Name", + "description": "A name for this field.", + "type": "string" + }, + "title": { + "title": "Title", + "description": "A human-readable title.", + "type": "string", + "examples": [ + "{\n \"title\": \"My Package Title\"\n}\n" + ] + }, + "description": { + "title": "Description", + "description": "A text description. Markdown is encouraged.", + "type": "string", + "examples": [ + "{\n \"description\": \"# My Package description\\nAll about my package.\"\n}\n" + ] + }, + "type": { + "description": "The type keyword, which `MUST` be a value of `duration`.", + "enum": [ + "duration" + ] + }, + "format": { + "description": "There are no format keyword options for `duration`: only `default` is allowed.", + "enum": [ + "default" + ], + "default": "default" + }, + "constraints": { + "title": "Constraints", + "description": "The following constraints are supported for `duration` fields.", + "type": "object", + "properties": { + "required": { + "type": "boolean", + "description": "Indicates whether a property must have a value for each instance.", + "context": "An empty string is considered to be a missing value." + }, + "unique": { + "type": "boolean", + "description": "When `true`, each value for the property `MUST` be unique." + }, + "enum": { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "minimum": { + "type": "string" + }, + "maximum": { + "type": "string" + } + } + }, + "rdfType": { + "type": "string", + "description": "The RDF type for this field." + } + }, + "examples": [ + "{\n \"name\": \"period\"\n \"type\": \"duration\"\n}\n" + ] + }, + { + "type": "object", + "title": "Any Field", + "description": "Any value is accepted, including values that are not captured by the type/format/constraint requirements of the specification.", + "required": [ + "name", + "type" + ], + "properties": { + "name": { + "title": "Name", + "description": "A name for this field.", + "type": "string" + }, + "title": { + "title": "Title", + "description": "A human-readable title.", + "type": "string", + "examples": [ + "{\n \"title\": \"My Package Title\"\n}\n" + ] + }, + "description": { + "title": "Description", + "description": "A text description. Markdown is encouraged.", + "type": "string", + "examples": [ + "{\n \"description\": \"# My Package description\\nAll about my package.\"\n}\n" + ] + }, + "type": { + "description": "The type keyword, which `MUST` be a value of `any`.", + "enum": [ + "any" + ] + }, + "constraints": { + "title": "Constraints", + "description": "The following constraints apply to `any` fields.", + "type": "object", + "properties": { + "required": { + "type": "boolean", + "description": "Indicates whether a property must have a value for each instance.", + "context": "An empty string is considered to be a missing value." + }, + "unique": { + "type": "boolean", + "description": "When `true`, each value for the property `MUST` be unique." + }, + "enum": { + "type": "array", + "minItems": 1, + "uniqueItems": true + } + } + }, + "rdfType": { + "type": "string", + "description": "The RDF type for this field." + } + }, + "examples": [ + "{\n \"name\": \"notes\",\n \"type\": \"any\"\n" + ] + } + ] + }, + "description": "An `array` of Table Schema Field objects.", + "examples": [ + "{\n \"fields\": [\n {\n \"name\": \"my-field-name\"\n }\n ]\n}\n", + "{\n \"fields\": [\n {\n \"name\": \"my-field-name\",\n \"type\": \"number\"\n },\n {\n \"name\": \"my-field-name-2\",\n \"type\": \"string\",\n \"format\": \"email\"\n }\n ]\n}\n" + ] + }, + "primaryKey": { + "oneOf": [ + { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ], + "description": "A primary key is a field name or an array of field names, whose values `MUST` uniquely identify each row in the table.", + "context": "Field name in the `primaryKey` `MUST` be unique, and `MUST` match a field name in the associated table. It is acceptable to have an array with a single value, indicating that the value of a single field is the primary key.", + "examples": [ + "{\n \"primaryKey\": [\n \"name\"\n ]\n}\n", + "{\n \"primaryKey\": [\n \"first_name\",\n \"last_name\"\n ]\n}\n" + ] + }, + "foreignKeys": { + "type": "array", + "minItems": 1, + "items": { + "title": "Table Schema Foreign Key", + "description": "Table Schema Foreign Key", + "type": "object", + "required": [ + "fields", + "reference" + ], + "oneOf": [ + { + "properties": { + "fields": { + "type": "array", + "items": { + "type": "string", + "minItems": 1, + "uniqueItems": true, + "description": "Fields that make up the primary key." + } + }, + "reference": { + "type": "object", + "required": [ + "resource", + "fields" + ], + "properties": { + "resource": { + "type": "string", + "default": "" + }, + "fields": { + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1, + "uniqueItems": true + } + } + } + } + }, + { + "properties": { + "fields": { + "type": "string", + "description": "Fields that make up the primary key." + }, + "reference": { + "type": "object", + "required": [ + "resource", + "fields" + ], + "properties": { + "resource": { + "type": "string", + "default": "" + }, + "fields": { + "type": "string" + } + } + } + } + } + ] + }, + "examples": [ + "{\n \"foreignKeys\": [\n {\n \"fields\": \"state\",\n \"reference\": {\n \"resource\": \"the-resource\",\n \"fields\": \"state_id\"\n }\n }\n ]\n}\n", + "{\n \"foreignKeys\": [\n {\n \"fields\": \"state\",\n \"reference\": {\n \"resource\": \"\",\n \"fields\": \"id\"\n }\n }\n ]\n}\n" + ] + }, + "missingValues": { + "type": "array", + "items": { + "type": "string" + }, + "default": [ + "" + ], + "description": "Values that when encountered in the source, should be considered as `null`, 'not present', or 'blank' values.", + "context": "Many datasets arrive with missing data values, either because a value was not collected or it never existed.\nMissing values may be indicated simply by the value being empty in other cases a special value may have been used e.g. `-`, `NaN`, `0`, `-9999` etc.\nThe `missingValues` property provides a way to indicate that these values should be interpreted as equivalent to null.\n\n`missingValues` are strings rather than being the data type of the particular field. This allows for comparison prior to casting and for fields to have missing value which are not of their type, for example a `number` field to have missing values indicated by `-`.\n\nThe default value of `missingValue` for a non-string type field is the empty string `''`. For string type fields there is no default for `missingValue` (for string fields the empty string `''` is a valid value and need not indicate null).", + "examples": [ + "{\n \"missingValues\": [\n \"-\",\n \"NaN\",\n \"\"\n ]\n}\n", + "{\n \"missingValues\": []\n}\n" + ] + } + }, + "examples": [ + "{\n \"schema\": {\n \"fields\": [\n {\n \"name\": \"first_name\",\n \"type\": \"string\"\n \"constraints\": {\n \"required\": true\n }\n },\n {\n \"name\": \"age\",\n \"type\": \"integer\"\n },\n ],\n \"primaryKey\": [\n \"name\"\n ]\n }\n}\n" + ] +} \ No newline at end of file diff --git a/src/context/cast/time.js b/src/context/cast/time.js new file mode 100644 index 0000000..923b1d1 --- /dev/null +++ b/src/context/cast/time.js @@ -0,0 +1,48 @@ +const moment = require('moment') +const isDate = require('lodash/isDate') +const isString = require('lodash/isString') +const {timeParse} = require('d3-time-format') +const {ERROR} = require('./config') + + +// Module API + +function castTime(format, value) { + if (!isDate(value)) { + if (!isString(value)) { + return ERROR + } + try { + if (format === 'default') { + value = moment(timeParse(_DEFAULT_PATTERN)(value)) + } else if (format === 'any') { + value = moment(value) + } else { + if (format.startsWith('fmt:')) { + console.warn( + `Format "fmt:" is deprecated. + Please use "" without "fmt:" prefix.`) + format = format.replace('fmt:', '') + } + value = moment(timeParse(format)(value)) + } + if (!value.isValid()) { + return ERROR + } + value = value.toDate() + } catch (error) { + return ERROR + } + } + return value +} + + +module.exports = { + castTime, +} + + +// Internal + +const _DEFAULT_PATTERN = '%H:%M:%S' diff --git a/src/context/cast/topojson.json b/src/context/cast/topojson.json new file mode 100644 index 0000000..9a76c93 --- /dev/null +++ b/src/context/cast/topojson.json @@ -0,0 +1,199 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "https://raw.githubusercontent.com/nhuebel/TopoJSON_schema/master/topojson.json#", + "title": "TopoJSON object", + "description": "Schema for a TopoJSON object", + "type": "object", + "required": [ "type" ], + "properties": { + "bbox": { + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "https://raw.githubusercontent.com/nhuebel/TopoJSON_schema/master/bbox.json", + "title": "TopoJSON bounding box", + "description": "A bounding box as defined by TopoJSON", + "type": "array", + "items": { "$ref": "#/definitions/dimension" }, + "minItems": 2, + "maxItems": 2, + "definitions": { + "dimension": { + "type": "array", + "description": "This array should have an entry per dimension in the geometries", + "items": {"type": "number"} + } + }, + "TODO": "check number of dimensions (2*n), n being the number of dimensions represented in the contained geometries), with the lowest values for all axes followed by the highest values " + } + }, + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "https://raw.githubusercontent.com/nhuebel/TopoJSON_schema/master/topology.json", + "title": "Topology", + "description": "A Topology object as defined by TopoJSON", + "type": "object", + "required": [ "objects", "arcs" ], + "properties": { + "type": { "enum": [ "Topology"] }, + "objects": { + "type": "object", + "additionalProperties": {"$ref": "https://raw.githubusercontent.com/nhuebel/TopoJSON_schema/master/geometry.json"} + }, + "arcs": {"$ref": "#/definitions/arcs"}, + "transform": {"$ref": "#/definitions/transform"}, + "bbox": { "$ref": "https://raw.githubusercontent.com/nhuebel/TopoJSON_schema/master/bbox.json" } + }, + "definitions": { + "transform": { + "type": "object", + "required": [ "scale", "translate" ], + "properties": { + "scale": { + "type": "array", + "items": { "type": "number"}, + "minItems": 2 + }, + "translate": { + "type": "array", + "items": { "type": "number"}, + "minItems": 2 + } + } + }, + "arcs": { + "type": "array", + "items": { + "type": "array", + "items": { + "oneOf": [ + { "$ref": "#/definitions/position"}, + { "type": "null" } + ] + }, + "minItems": 2 + } + }, + "position": { + "type": "array", + "items": { "type": "number"}, + "minItems": 2 + } + } + }, + { + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "https://raw.githubusercontent.com/nhuebel/TopoJSON_schema/master/geometry.json", + "title": "Geometry objects", + "description": "A Geometry object as defined by TopoJSON", + "type": "object", + "required": [ "type" ], + "properties": { + "id": { "type": [ "string", "integer" ]}, + "properties": { "type": "object" } + }, + "oneOf": [ + { + "title": "Point", + "description": "A Point Geometry object as defined by TopoJSON", + "required": [ "type","coordinates" ], + "properties": { + "type": { "enum": [ "Point" ] }, + "coordinates": { "$ref": "#/definitions/position" } + } + }, + { + "title": "MultiPoint", + "description": "A MultiPoint Geometry object as defined by TopoJSON", + "required": [ "type","coordinates" ], + "properties": { + "type": { "enum": [ "MultiPoint" ] }, + "coordinates": { + "type": "array", + "items": { "$ref": "#/definitions/position" } + } + } + }, + { + "title": "LineString", + "description": "A LineString Geometry object as defined by TopoJSON", + "required": [ "type","arcs" ], + "properties": { + "type": { "enum": [ "LineString" ] }, + "arcs": { + "type": "array", + "items": { "type": "integer" } + } + } + }, + { + "title": "MultiLineString", + "description": "A MultiLineString Geometry object as defined by TopoJSON", + "required": [ "type","arcs" ], + "properties": { + "type": { "enum": [ "MultiLineString" ] }, + "arcs": { + "type": "array", + "items": { + "type": "array", + "items": {"type": "integer"} + } + } + } + }, + { + "title": "Polygon", + "description": "A Polygon Geometry object as defined by TopoJSON", + "required": [ "type","arcs" ], + "properties": { + "type": { "enum": [ "Polygon" ] }, + "arcs": { + "TODO": "Check if arcs refer to valid LinearRings", + "type": "array", + "items": { + "type": "array", + "items": {"type": "integer"} + } + } + } + }, + { + "title": "MultiPolygon", + "description": "A MultiPolygon Geometry object as defined by TopoJSON", + "required": [ "type","arcs" ], + "properties": { + "type": { "enum": [ "MultiPolygon" ] }, + "arcs": { + "type": "array", + "items": { + "type": "array", + "items": { + "type": "array", + "items": {"type": "integer"} + } + } + } + } + }, + { + "title": "GeometryCollection", + "description": "A MultiPolygon Geometry object as defined by TopoJSON", + "required": [ "type","geometries" ], + "properties": { + "type": { "enum": [ "GeometryCollection" ] }, + "geometries": { + "type": "array", + "items": { "$ref": "https://raw.githubusercontent.com/nhuebel/TopoJSON_schema/master/geometry.json" } + } + } + } + ], + "definitions": { + "position": { + "type": "array", + "items": { "type": "number"}, + "minItems": 2 + } + } + } + ] +} diff --git a/src/context/cast/year.js b/src/context/cast/year.js new file mode 100644 index 0000000..c726abb --- /dev/null +++ b/src/context/cast/year.js @@ -0,0 +1,36 @@ +const isNaN = require('lodash/isNaN') +const isString = require('lodash/isString') +const isInteger = require('lodash/isInteger') +const {ERROR} = require('./config') + + +// Module API + +function castYear(format, value) { + if (!isInteger(value)) { + if (!isString(value)) { + return ERROR + } + if (value.length !== 4) { + return ERROR + } + try { + const result = parseInt(value, 10) + if (isNaN(result) || result.toString() !== value) { + return ERROR + } + value = result + } catch (error) { + return ERROR + } + } + if (value < 0 || value > 9999) { + return ERROR + } + return value +} + + +module.exports = { + castYear, +} diff --git a/src/context/cast/yearmonth.js b/src/context/cast/yearmonth.js new file mode 100644 index 0000000..0e06830 --- /dev/null +++ b/src/context/cast/yearmonth.js @@ -0,0 +1,40 @@ +const isArray = require('lodash/isArray') +const isString = require('lodash/isString') +const {ERROR} = require('./config') + + +// Module API + +function castYearmonth(format, value) { + if (isArray(value)) { + if (value.length !== 2) { + return ERROR + } + } else if (isString(value)) { + try { + const items = value.split('-') + if (items.length !== 2) { + return ERROR + } + const year = parseInt(items[0], 10) + const month = parseInt(items[1], 10) + if (!year || !month) { + return ERROR + } + if (month < 1 || month > 12) { + return ERROR + } + value = [year, month] + } catch (error) { + return ERROR + } + } else { + return ERROR + } + return value +} + + +module.exports = { + castYearmonth, +} diff --git a/src/context/validate.js b/src/context/validate.js new file mode 100644 index 0000000..1fa3163 --- /dev/null +++ b/src/context/validate.js @@ -0,0 +1,63 @@ +import {castInteger, castNumber, castString} from './cast'; +import {isString, isInteger, isNumber, isBoolean} from 'lodash'; +function validateDataset(data, schema) { + let rowNumber = 0; + const errors = data.data.reduce((errors, row) => { + Object.values(schema).forEach((i) => { + if (!validateItem(row[i.name], i.type)) { + const error = { + row: rowNumber, + field: i.name, + message: `${row[i.name]} is not a valid ${i.type}` + }; + errors.push(error); + return errors; + } + }); + rowNumber++; + return errors; + }, []); + return errors; +} + +function validateItem(item, type) { + switch(type) { + case "string": + if (!isString(item)) { + if (!isString(castString("", item))) { + return false; + } + } + break; + case "integer": + if (!isInteger(item)) { + item = castInteger("", item); + if (!isInteger(castInteger("", item))) { + return false; + } + } + break; + case "number": + if (!isNumber(item)) { + if (!isNumber(castNumber("", item))) { + return false; + } + } + break; + case "boolean": + if (!isBoolean(item)) { + if (!(_TRUE_VALUES.includes(item) || _FALSE_VALUES.includes(item))) { + return false; + } + } + break; + default: + break; + } + return true; +} + +const _TRUE_VALUES = ['true', 'True', 'TRUE', '1'] +const _FALSE_VALUES = ['false', 'False', 'FALSE', '0'] + +export { validateDataset, validateItem } diff --git a/src/index.js b/src/index.js new file mode 100644 index 0000000..86cbac5 --- /dev/null +++ b/src/index.js @@ -0,0 +1,8 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; +import 'bootstrap/dist/css/bootstrap.css'; +import './assets/css/fileupload.css'; +import './assets/css/custom.css'; +import App from './App'; + +ReactDOM.render(, document.getElementById('root')); diff --git a/src/schemas/simple/UISchema.json b/src/schemas/simple/UISchema.json new file mode 100644 index 0000000..2a0c631 --- /dev/null +++ b/src/schemas/simple/UISchema.json @@ -0,0 +1,7 @@ +{ + "dataset": { + "description": { + "ui:widget": "textarea" + } + } +} diff --git a/src/schemas/simple/dataset.json b/src/schemas/simple/dataset.json new file mode 100644 index 0000000..9cc7364 --- /dev/null +++ b/src/schemas/simple/dataset.json @@ -0,0 +1,33 @@ +{ + "title": "Dataset", + "description": "A simple dataset.", + "type": "object", + "required": [ + "title" + ], + "properties": { + "title": { + "type": "string", + "title": "Title" + }, + "license": { + "type": "string", + "title": "License", + "description": "A license for the dataset.", + "enum": ["License 1", "License 2"] + }, + "description": { + "type": "string", + "title": "Description" + }, + "created": { + "type": "string", + "title": "Created", + "format": "date-time" + }, + "author": { + "type": "string", + "title": "Author" + } + } +}