From f802bcc9ff6abcbc31cef0a2ce5dd368b9fe7212 Mon Sep 17 00:00:00 2001 From: roll Date: Wed, 6 Dec 2023 14:52:08 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20site=20from=20@=20frictionless?= =?UTF-8?q?data/frictionlessdata.io@adc444e8a1ecc60474b171d4d2e7ed68fcf2b2?= =?UTF-8?q?20=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 404.html | 4 +- adoption/index.html | 4 +- .../js/{100.b75e047c.js => 100.99a681e3.js} | 2 +- .../js/{101.7e1d6df4.js => 101.bd3f81c8.js} | 2 +- .../js/{102.77cef817.js => 102.6a17127a.js} | 2 +- .../js/{103.2f624d63.js => 103.3bcdbc40.js} | 2 +- .../js/{104.ac4a2b95.js => 104.5b006edc.js} | 2 +- .../js/{105.80399967.js => 105.47d55397.js} | 2 +- .../js/{107.614f6bd7.js => 107.59014df2.js} | 2 +- .../js/{108.8c0974df.js => 108.910b9905.js} | 2 +- assets/js/{11.6cc6237a.js => 11.19b213f3.js} | 2 +- .../js/{112.ed3f7786.js => 112.c2ceb052.js} | 2 +- .../js/{114.7a312779.js => 114.8f9f4c29.js} | 2 +- .../js/{115.6bee2741.js => 115.24c7eaf7.js} | 2 +- .../js/{116.85bdea59.js => 116.03f644d6.js} | 2 +- .../js/{117.85164eb1.js => 117.773a0db9.js} | 2 +- .../js/{119.2c4ebfcb.js => 119.f8ffd7c6.js} | 2 +- assets/js/{12.0fa0c229.js => 12.d9fb47fc.js} | 2 +- .../js/{120.9ab4a56a.js => 120.b82fb5fb.js} | 2 +- .../js/{121.1bb95626.js => 121.c7c0fbf6.js} | 2 +- .../js/{122.a52b442f.js => 122.a79b9d94.js} | 2 +- .../js/{123.3cc6b810.js => 123.dfc3095f.js} | 2 +- .../js/{124.4132dc2c.js => 124.6ad45b64.js} | 2 +- .../js/{125.ac9d6293.js => 125.f54a71c6.js} | 2 +- .../js/{126.88c9378d.js => 126.3ce8c3cc.js} | 2 +- .../js/{127.5ff67dd0.js => 127.eb88b5b3.js} | 2 +- .../js/{128.5f662b25.js => 128.7f2ef645.js} | 2 +- .../js/{129.23d46734.js => 129.f8e42f7d.js} | 2 +- assets/js/{13.d6483d82.js => 13.326928dc.js} | 2 +- .../js/{131.1373b305.js => 131.5da513f6.js} | 2 +- .../js/{132.eb692f68.js => 132.96c23259.js} | 2 +- .../js/{134.f2523058.js => 134.124cc5c6.js} | 2 +- .../js/{135.89ac1b60.js => 135.ba6e6e56.js} | 2 +- .../js/{137.aa63e6f2.js => 137.9854a8e5.js} | 2 +- .../js/{138.90a2498b.js => 138.40f3a2e2.js} | 2 +- .../js/{139.5863c0da.js => 139.0039bad6.js} | 2 +- .../js/{140.5e6ae68a.js => 140.08503e80.js} | 2 +- .../js/{141.c3c7f0da.js => 141.4f0a46cd.js} | 2 +- .../js/{142.117144dd.js => 142.0d7bc7fa.js} | 2 +- .../js/{144.4c70106f.js => 144.ec36c430.js} | 2 +- .../js/{145.2bef085b.js => 145.cabc5960.js} | 2 +- .../js/{146.6e7c9a8b.js => 146.35d328f6.js} | 2 +- .../js/{147.e57196d8.js => 147.8f111805.js} | 2 +- .../js/{148.b72ccf39.js => 148.f186d227.js} | 2 +- .../js/{149.9c67d050.js => 149.4bf2a3a2.js} | 2 +- assets/js/{15.021d8fa7.js => 15.cae14ca7.js} | 2 +- .../js/{150.d8afa583.js => 150.fdc13174.js} | 2 +- .../js/{151.99fc6a01.js => 151.0bba1436.js} | 2 +- .../js/{152.63871bcb.js => 152.d196a591.js} | 2 +- .../js/{155.50f8aa63.js => 155.f236890f.js} | 2 +- .../js/{156.5c3dc938.js => 156.8334f792.js} | 2 +- .../js/{157.1eeaf168.js => 157.ea1df658.js} | 2 +- assets/js/{16.ed5807b6.js => 16.b332d969.js} | 2 +- .../js/{160.2fcf45e2.js => 160.2b0d632a.js} | 2 +- .../js/{161.0c948627.js => 161.37b24ce2.js} | 2 +- .../js/{163.1b796da3.js => 163.7d659e7a.js} | 2 +- .../js/{164.08735e57.js => 164.98393809.js} | 2 +- .../js/{165.56161c6a.js => 165.b4fade48.js} | 2 +- .../js/{166.47347e73.js => 166.97b54b92.js} | 2 +- .../js/{167.e71c3cb9.js => 167.88542d46.js} | 2 +- .../js/{168.3656c9c1.js => 168.25ec96e6.js} | 2 +- .../js/{169.4cd6dd92.js => 169.75839ea7.js} | 2 +- .../js/{170.01e405fc.js => 170.e11e2e40.js} | 2 +- .../js/{171.462451b4.js => 171.4e18d9c3.js} | 2 +- .../js/{172.5070cd58.js => 172.58b01e7b.js} | 2 +- .../js/{173.b0954f8d.js => 173.f03ca13d.js} | 2 +- .../js/{174.8372bc5f.js => 174.f9d7ef54.js} | 2 +- .../js/{175.b7a38070.js => 175.7478e44c.js} | 2 +- .../js/{176.74021178.js => 176.40f5264f.js} | 2 +- .../js/{177.584bad6b.js => 177.6c30d8b5.js} | 2 +- assets/js/178.06d66cf4.js | 1 + .../js/{178.149c7a47.js => 179.317db339.js} | 2 +- .../js/{179.58fc53fb.js => 180.6275d8bc.js} | 2 +- .../js/{180.4a6640af.js => 181.64d8c28d.js} | 2 +- .../js/{181.a8a2deb5.js => 182.9e260667.js} | 2 +- .../js/{182.53220a84.js => 183.216c87f7.js} | 2 +- .../js/{183.35379f02.js => 184.3d950b5b.js} | 2 +- .../js/{184.0b3ac47e.js => 185.bf2ed6d3.js} | 2 +- .../js/{185.e28478e7.js => 186.49582628.js} | 2 +- .../js/{186.bae39aa4.js => 187.876491a8.js} | 2 +- .../js/{187.17a2397b.js => 188.b96e3c32.js} | 2 +- .../js/{188.0e434990.js => 189.ae3316ec.js} | 2 +- .../js/{189.2443dbd6.js => 190.0a697834.js} | 2 +- .../js/{190.ae5ee300.js => 191.ae2db3ca.js} | 2 +- .../js/{191.4341f1a2.js => 192.51e1bb8f.js} | 2 +- assets/js/{22.2c8e874b.js => 22.7697693e.js} | 2 +- assets/js/{23.47d7df39.js => 23.28c08a9a.js} | 2 +- assets/js/{24.17740005.js => 24.1b88c4e5.js} | 2 +- assets/js/{25.d1e61993.js => 25.42ace4bf.js} | 2 +- assets/js/{26.3dcb2eba.js => 26.5c9dfc62.js} | 2 +- assets/js/{30.740c3ce6.js => 30.37372b0a.js} | 2 +- assets/js/{31.1461b66d.js => 31.5a70e269.js} | 2 +- assets/js/{33.a90e9bbd.js => 33.72bf6e52.js} | 2 +- assets/js/{34.8afd3c77.js => 34.006c3ade.js} | 2 +- assets/js/{35.8381e3cb.js => 35.6c3d0480.js} | 2 +- assets/js/{36.856e68b8.js => 36.5d3ea21d.js} | 2 +- assets/js/{37.ff51a0e2.js => 37.551091a2.js} | 2 +- assets/js/{38.63354dfa.js => 38.860bf20a.js} | 2 +- assets/js/{39.964c15b2.js => 39.efc74ba0.js} | 2 +- assets/js/{4.86253916.js => 4.3084b2d4.js} | 2 +- assets/js/{42.273afb6e.js => 42.572fec34.js} | 2 +- assets/js/{44.7e6af297.js => 44.0c1dd86a.js} | 2 +- assets/js/{46.b7a06152.js => 46.a257413f.js} | 2 +- assets/js/{47.7ce0d603.js => 47.5792fa84.js} | 2 +- assets/js/{5.7bd12aaf.js => 5.79072a51.js} | 2 +- assets/js/{50.eefa11ae.js => 50.db9ab2c9.js} | 2 +- assets/js/{51.532796be.js => 51.d50035b5.js} | 2 +- assets/js/{53.f8912803.js => 53.aa8b57f9.js} | 2 +- assets/js/{54.a568b9e8.js => 54.9e9cbb98.js} | 2 +- assets/js/{57.d74ae544.js => 57.5b565d5f.js} | 2 +- assets/js/{58.2b3bd3bf.js => 58.f378dc93.js} | 2 +- assets/js/{59.3359464c.js => 59.138b6560.js} | 2 +- assets/js/{6.c19d05ab.js => 6.48d33a0f.js} | 2 +- assets/js/{60.48fa03a6.js => 60.385842bd.js} | 2 +- assets/js/{66.2d6a906a.js => 66.a6ffa49d.js} | 2 +- assets/js/{69.dab71250.js => 69.4de21da2.js} | 2 +- assets/js/{70.4383c25b.js => 70.70153266.js} | 2 +- assets/js/{71.89c94dae.js => 71.db803e4f.js} | 2 +- assets/js/{74.25602132.js => 74.a47e7fc6.js} | 2 +- assets/js/{75.591b6129.js => 75.ec5d7d14.js} | 2 +- assets/js/{76.8fa5c677.js => 76.47091d50.js} | 2 +- assets/js/{78.41fd88c5.js => 78.12b4bf52.js} | 2 +- assets/js/{8.85a9c2f0.js => 8.50b18240.js} | 2 +- assets/js/{82.23aed897.js => 82.aff56659.js} | 2 +- assets/js/{83.c4c2156e.js => 83.5d806a8b.js} | 2 +- assets/js/{84.298b8538.js => 84.96c39a06.js} | 2 +- assets/js/{85.b4892b6b.js => 85.600e7d98.js} | 2 +- assets/js/{86.8b13068a.js => 86.85f30f11.js} | 2 +- assets/js/{87.69707213.js => 87.00a63b75.js} | 2 +- assets/js/{88.151550eb.js => 88.993fe8bc.js} | 2 +- assets/js/{89.757a6bde.js => 89.2288f7b1.js} | 2 +- assets/js/{91.34e2a6c6.js => 91.e285338b.js} | 2 +- assets/js/{92.04d2ff06.js => 92.a76b0d7b.js} | 2 +- assets/js/{93.f0fa6979.js => 93.4ac6f621.js} | 2 +- assets/js/{94.0f020cbe.js => 94.74b3aa1a.js} | 2 +- assets/js/{95.b903e22a.js => 95.bac46e8c.js} | 2 +- assets/js/{96.69003c07.js => 96.d7f61ad1.js} | 2 +- assets/js/{97.38257cb2.js => 97.fb87ebae.js} | 2 +- assets/js/{98.0f35312c.js => 98.5b94f72f.js} | 2 +- assets/js/{99.a7a7483c.js => 99.9e674d82.js} | 2 +- assets/js/app.081cde37.js | 8 -- assets/js/app.1a1be129.js | 8 ++ blog/2016/04/20/publish-faq/index.html | 4 +- blog/2016/04/30/publish-geo/index.html | 4 +- .../index.html | 4 +- blog/2016/07/21/publish-any/index.html | 4 +- blog/2016/07/21/publish-tabular/index.html | 4 +- blog/2016/08/29/publish-online/index.html | 4 +- .../using-data-packages-in-python/index.html | 4 +- blog/2016/08/30/publish/index.html | 4 +- blog/2016/11/15/dataship/index.html | 4 +- .../11/15/open-power-system-data/index.html | 4 +- blog/2016/11/15/tesera/index.html | 4 +- blog/2017/03/28/john-snow-labs/index.html | 4 +- .../31/data-package-views-proposal/index.html | 4 +- blog/2017/04/11/dataworld/index.html | 4 +- blog/2017/05/23/cmso/index.html | 4 +- blog/2017/05/24/the-data-retriever/index.html | 4 +- .../index.html | 4 +- .../2017/08/09/collections-as-data/index.html | 4 +- blog/2017/08/09/tutorial-template/index.html | 4 +- .../15/causa-natura-pescando-datos/index.html | 4 +- .../index.html | 4 +- .../08/15/university-of-cambridge/index.html | 4 +- blog/2017/09/28/zegami/index.html | 4 +- blog/2017/10/24/elife/index.html | 4 +- blog/2017/10/24/georges-labreche/index.html | 4 +- blog/2017/10/26/matt-thompson/index.html | 4 +- .../10/27/open-knowledge-greece/index.html | 4 +- blog/2017/11/01/daniel-fireman/index.html | 4 +- blog/2017/12/04/openml/index.html | 4 +- blog/2017/12/12/ukds/index.html | 4 +- .../12/15/university-of-pittsburgh/index.html | 4 +- blog/2017/12/19/dm4t/index.html | 4 +- .../index.html | 4 +- .../02/14/using-data-packages-in-r/index.html | 4 +- .../16/using-data-packages-in-go/index.html | 4 +- .../03/07/well-packaged-datasets/index.html | 4 +- .../index.html | 4 +- .../index.html | 4 +- blog/2018/03/27/applying-licenses/index.html | 4 +- .../index.html | 4 +- .../joining-tabular-data-in-python/index.html | 4 +- .../04/06/joining-data-in-python/index.html | 4 +- .../28/using-data-packages-in-java/index.html | 4 +- .../using-data-packages-in-clojure/index.html | 4 +- blog/2018/07/09/csv/index.html | 4 +- blog/2018/07/09/developer-guide/index.html | 4 +- blog/2018/07/09/validating-data/index.html | 4 +- blog/2018/07/16/oleg-lavrovsky/index.html | 4 +- blog/2018/07/16/ori-hoch/index.html | 4 +- .../2018/07/16/point-location-data/index.html | 4 +- .../publish-data-as-data-packages/index.html | 4 +- .../07/16/validated-tabular-data/index.html | 4 +- .../index.html | 4 +- blog/2018/07/20/nimblelearn/index.html | 4 +- blog/2019/03/01/datacurator/index.html | 4 +- .../05/20/used-and-useful-data/index.html | 4 +- blog/2019/07/02/stephan-max/index.html | 4 +- blog/2019/07/03/nes/index.html | 4 +- blog/2019/07/09/open-referral/index.html | 4 +- blog/2019/07/22/nimblelearn-dpc/index.html | 4 +- .../welcome-frictionless-fellows/index.html | 4 +- blog/2019/09/12/andre-heughebaert/index.html | 4 +- .../index.html | 4 +- .../01/22/frictionless-darwincore/index.html | 4 +- blog/2020/01/22/open-referral-tool/index.html | 4 +- blog/2020/01/23/nes-tool/index.html | 4 +- .../index.html | 4 +- .../frictionless-data-pilot-study/index.html | 4 +- .../index.html | 4 +- .../index.html | 4 +- .../04/23/table-schema-catalog/index.html | 4 +- .../index.html | 4 +- .../30/frictionless-data-workshop/index.html | 4 +- .../05/01/announcing-new-website/index.html | 4 +- .../frictionless-data-may-hangout/index.html | 4 +- .../index.html | 4 +- .../06/05/june-virtual-hangout/index.html | 4 +- .../26/csvconf-frictionless-recap/index.html | 4 +- .../2020/07/10/tool-fund-intermine/index.html | 4 +- .../16/tool-fund-polar-institute/index.html | 4 +- .../2020/07/21/data-matrices-pilot/index.html | 4 +- .../03/tool-fund-cambridge-neuro/index.html | 4 +- blog/2020/08/17/frictionless-wheat/index.html | 4 +- .../08/27/august-virtual-hangout/index.html | 4 +- .../09/01/hello-fellows-cohort2/index.html | 4 +- blog/2020/09/16/goodtables-bcodmo/index.html | 4 +- blog/2020/09/17/tool-fund-metrics/index.html | 4 +- .../10/08/frictionless-framework/index.html | 4 +- .../index.html | 4 +- .../10/28/october-virtual-hangout/index.html | 4 +- blog/2020/11/18/dryad-pilot/index.html | 4 +- .../11/19/november-virtual-hangout/index.html | 4 +- blog/2020/11/26/fellows-packaging/index.html | 4 +- .../12/17/december-virtual-hangout/index.html | 4 +- .../2021/01/13/partnering-with-odi/index.html | 4 +- .../01/18/schema-collaboration/index.html | 4 +- blog/2021/01/26/sara-petti/index.html | 4 +- blog/2021/01/30/fellows-validation/index.html | 4 +- .../02/03/january-virtual-hangout/index.html | 4 +- .../02/04/tableschema-to-template/index.html | 4 +- blog/2021/02/26/halfway-odi/index.html | 4 +- .../03/01/february-virtual-hangout/index.html | 4 +- .../05/frictionless-data-for-wheat/index.html | 4 +- .../2021/03/10/fellows-reproducing/index.html | 4 +- .../03/29/february-virtual-hangout/index.html | 4 +- .../13/data-package-for-intermine/index.html | 4 +- .../new-data-documentation-portal/index.html | 4 +- .../05/03/april-virtual-hangout/index.html | 4 +- .../2021/06/01/may-virtual-hangout/index.html | 4 +- .../16/new-changes-to-the-website/index.html | 4 +- blog/2021/06/22/livemark/index.html | 4 +- .../06/25/june-virtual-hangout/index.html | 4 +- .../index.html | 4 +- blog/2021/07/02/farewell-fellows/index.html | 4 +- blog/2021/07/12/open-data-blend/index.html | 4 +- .../07/21/frictionless-repository/index.html | 4 +- blog/2021/08/02/apply-fellows/index.html | 4 +- .../08/06/recap-community-calls/index.html | 4 +- blog/2021/08/09/dryad-pilot/index.html | 4 +- blog/2021/08/16/august-12-call/index.html | 4 +- .../08/31/august-26-community-call/index.html | 4 +- blog/2021/09/30/hackathon-preview/index.html | 4 +- .../10/06/september-community-call/index.html | 4 +- blog/2021/10/13/hackathon-wrap/index.html | 4 +- .../11/03/october-community-call/index.html | 4 +- .../11/23/november-community-call/index.html | 4 +- .../2021/12/07/_3rd-cohort-fellows/index.html | 4 +- .../12/17/december-community-call/index.html | 4 +- .../index.html | 4 +- .../2022/01/18/frictionless-planet/index.html | 4 +- .../02/02/january-community-call/index.html | 4 +- blog/2022/02/07/libraries-hacked/index.html | 4 +- .../10/nasa-earth-mission-science/index.html | 4 +- .../03/03/community-call-february/index.html | 4 +- .../2022/03/05/fellows-datapackage/index.html | 4 +- blog/2022/03/09/save-our-planet/index.html | 4 +- .../04/13/march-community-call/index.html | 4 +- .../05/05/april-community-call/index.html | 4 +- .../index.html | 4 +- blog/2022/05/24/tu-delft-training/index.html | 4 +- blog/2022/06/01/deploy-solutions/index.html | 4 +- .../2022/07/04/june-community-call/index.html | 4 +- .../index.html | 4 +- blog/2022/07/14/flatterer/index.html | 4 +- .../20/lilly-message-to-community/index.html | 4 +- .../community-call-july-flatterer/index.html | 4 +- .../frictionless-framework-release/index.html | 4 +- .../index.html | 4 +- blog/2022/09/15/deploy-solutions/index.html | 4 +- blog/2022/09/20/mysociety-workflow/index.html | 4 +- blog/2022/11/02/october-call/index.html | 4 +- blog/2022/12/07/community-call/index.html | 4 +- .../01/06/datapackage-as-a-service/index.html | 4 +- .../01/31/frictionless-at-fosdem/index.html | 4 +- blog/2023/02/06/community-call/index.html | 4 +- .../03/01/february-community-call/index.html | 4 +- .../04/06/march-community-call/index.html | 4 +- .../05/08/april-community-call/index.html | 4 +- blog/2023/05/12/csv-conf/index.html | 4 +- .../06/05/community-call-fastetl/index.html | 4 +- blog/2023/07/05/community-call/index.html | 4 +- blog/2023/10/02/community-call/index.html | 4 +- blog/2023/11/06/community-call/index.html | 27 ++-- .../15/frictionless-specs-update/index.html | 4 +- blog/2023/12/05/community-call/index.html | 121 ++++++++++++++++++ blog/index.html | 24 ++-- blog/page/10/index.html | 21 +-- blog/page/11/index.html | 19 +-- blog/page/12/index.html | 36 +++--- blog/page/13/index.html | 30 ++--- blog/page/14/index.html | 19 ++- blog/page/15/index.html | 31 ++--- blog/page/16/index.html | 42 +++--- blog/page/17/index.html | 11 +- blog/page/2/index.html | 18 ++- blog/page/3/index.html | 16 +-- blog/page/4/index.html | 20 ++- blog/page/5/index.html | 20 +-- blog/page/6/index.html | 20 ++- blog/page/7/index.html | 20 +-- blog/page/8/index.html | 18 +-- blog/page/9/index.html | 20 ++- design/index.html | 4 +- development/architecture/index.html | 4 +- development/process/index.html | 4 +- development/roadmap/index.html | 4 +- feed.atom | 18 +-- feed.json | 16 +-- hackathon/README(pt-br).html | 4 +- hackathon/index.html | 4 +- index.html | 4 +- introduction/index.html | 4 +- people/index.html | 4 +- projects/index.html | 4 +- rss.xml | 20 +-- tag/Clojure/index.html | 4 +- tag/Command-line/index.html | 4 +- tag/Data CLI/index.html | 4 +- tag/Data Package Creator/index.html | 4 +- tag/Data Package/index.html | 4 +- tag/Go/index.html | 4 +- tag/Goodtables CLI/index.html | 4 +- tag/Goodtables/index.html | 4 +- tag/Java/index.html | 4 +- tag/JavaScript/index.html | 4 +- tag/Python/index.html | 4 +- tag/R/index.html | 4 +- tag/case-studies/index.html | 4 +- tag/case-studies/page/2/index.html | 20 +-- tag/case-studies/page/3/index.html | 16 ++- tag/community-hangout/index.html | 20 +-- tag/community-hangout/page/2/index.html | 18 +-- tag/community-hangout/page/3/index.html | 18 +-- tag/community-hangout/page/4/index.html | 18 +-- tag/community-hangout/page/5/index.html | 115 +++++++++++++++++ tag/csv/index.html | 4 +- tag/datapackage/index.html | 4 +- tag/events/index.html | 18 +-- tag/events/page/2/index.html | 16 +-- tag/events/page/3/index.html | 18 +-- tag/events/page/4/index.html | 16 +-- tag/events/page/5/index.html | 11 +- tag/fellows/index.html | 4 +- tag/fellows/page/2/index.html | 4 +- tag/field-guide/index.html | 18 +-- tag/goodtables.io/index.html | 18 +-- tag/grantee-profiles/index.html | 4 +- tag/index.html | 6 +- tag/licenses/index.html | 4 +- tag/news/index.html | 4 +- tag/news/page/2/index.html | 4 +- tag/pilot/index.html | 4 +- tag/pilot/page/2/index.html | 4 +- tag/specifications/index.html | 4 +- tag/specs/index.html | 4 +- tag/table-schema/index.html | 4 +- tag/tabular-data/index.html | 4 +- tag/team/index.html | 4 +- tag/tool-fund/index.html | 12 +- tag/tool-fund/page/2/index.html | 12 +- tag/try.goodtables.io/index.html | 4 +- tag/validator/index.html | 4 +- tag/views/index.html | 4 +- universe/index.html | 4 +- work-with-us/code-of-conduct/index.html | 4 +- work-with-us/contribute/index.html | 4 +- work-with-us/events/index.html | 4 +- work-with-us/get-help/index.html | 4 +- 390 files changed, 1170 insertions(+), 922 deletions(-) rename assets/js/{100.b75e047c.js => 100.99a681e3.js} (98%) rename assets/js/{101.7e1d6df4.js => 101.bd3f81c8.js} (98%) rename assets/js/{102.77cef817.js => 102.6a17127a.js} (98%) rename assets/js/{103.2f624d63.js => 103.3bcdbc40.js} (98%) rename assets/js/{104.ac4a2b95.js => 104.5b006edc.js} (98%) rename assets/js/{105.80399967.js => 105.47d55397.js} (99%) rename assets/js/{107.614f6bd7.js => 107.59014df2.js} (99%) rename assets/js/{108.8c0974df.js => 108.910b9905.js} (99%) rename assets/js/{11.6cc6237a.js => 11.19b213f3.js} (99%) rename assets/js/{112.ed3f7786.js => 112.c2ceb052.js} (96%) rename assets/js/{114.7a312779.js => 114.8f9f4c29.js} (99%) rename assets/js/{115.6bee2741.js => 115.24c7eaf7.js} (98%) rename assets/js/{116.85bdea59.js => 116.03f644d6.js} (98%) rename assets/js/{117.85164eb1.js => 117.773a0db9.js} (99%) rename assets/js/{119.2c4ebfcb.js => 119.f8ffd7c6.js} (99%) rename assets/js/{12.0fa0c229.js => 12.d9fb47fc.js} (96%) rename assets/js/{120.9ab4a56a.js => 120.b82fb5fb.js} (98%) rename assets/js/{121.1bb95626.js => 121.c7c0fbf6.js} (97%) rename assets/js/{122.a52b442f.js => 122.a79b9d94.js} (98%) rename assets/js/{123.3cc6b810.js => 123.dfc3095f.js} (98%) rename assets/js/{124.4132dc2c.js => 124.6ad45b64.js} (99%) rename assets/js/{125.ac9d6293.js => 125.f54a71c6.js} (99%) rename assets/js/{126.88c9378d.js => 126.3ce8c3cc.js} (98%) rename assets/js/{127.5ff67dd0.js => 127.eb88b5b3.js} (98%) rename assets/js/{128.5f662b25.js => 128.7f2ef645.js} (99%) rename assets/js/{129.23d46734.js => 129.f8e42f7d.js} (99%) rename assets/js/{13.d6483d82.js => 13.326928dc.js} (99%) rename assets/js/{131.1373b305.js => 131.5da513f6.js} (98%) rename assets/js/{132.eb692f68.js => 132.96c23259.js} (97%) rename assets/js/{134.f2523058.js => 134.124cc5c6.js} (98%) rename assets/js/{135.89ac1b60.js => 135.ba6e6e56.js} (98%) rename assets/js/{137.aa63e6f2.js => 137.9854a8e5.js} (98%) rename assets/js/{138.90a2498b.js => 138.40f3a2e2.js} (99%) rename assets/js/{139.5863c0da.js => 139.0039bad6.js} (99%) rename assets/js/{140.5e6ae68a.js => 140.08503e80.js} (98%) rename assets/js/{141.c3c7f0da.js => 141.4f0a46cd.js} (98%) rename assets/js/{142.117144dd.js => 142.0d7bc7fa.js} (98%) rename assets/js/{144.4c70106f.js => 144.ec36c430.js} (98%) rename assets/js/{145.2bef085b.js => 145.cabc5960.js} (99%) rename assets/js/{146.6e7c9a8b.js => 146.35d328f6.js} (98%) rename assets/js/{147.e57196d8.js => 147.8f111805.js} (98%) rename assets/js/{148.b72ccf39.js => 148.f186d227.js} (99%) rename assets/js/{149.9c67d050.js => 149.4bf2a3a2.js} (98%) rename assets/js/{15.021d8fa7.js => 15.cae14ca7.js} (99%) rename assets/js/{150.d8afa583.js => 150.fdc13174.js} (98%) rename assets/js/{151.99fc6a01.js => 151.0bba1436.js} (98%) rename assets/js/{152.63871bcb.js => 152.d196a591.js} (99%) rename assets/js/{155.50f8aa63.js => 155.f236890f.js} (99%) rename assets/js/{156.5c3dc938.js => 156.8334f792.js} (98%) rename assets/js/{157.1eeaf168.js => 157.ea1df658.js} (98%) rename assets/js/{16.ed5807b6.js => 16.b332d969.js} (98%) rename assets/js/{160.2fcf45e2.js => 160.2b0d632a.js} (98%) rename assets/js/{161.0c948627.js => 161.37b24ce2.js} (98%) rename assets/js/{163.1b796da3.js => 163.7d659e7a.js} (98%) rename assets/js/{164.08735e57.js => 164.98393809.js} (98%) rename assets/js/{165.56161c6a.js => 165.b4fade48.js} (99%) rename assets/js/{166.47347e73.js => 166.97b54b92.js} (98%) rename assets/js/{167.e71c3cb9.js => 167.88542d46.js} (99%) rename assets/js/{168.3656c9c1.js => 168.25ec96e6.js} (98%) rename assets/js/{169.4cd6dd92.js => 169.75839ea7.js} (99%) rename assets/js/{170.01e405fc.js => 170.e11e2e40.js} (98%) rename assets/js/{171.462451b4.js => 171.4e18d9c3.js} (99%) rename assets/js/{172.5070cd58.js => 172.58b01e7b.js} (98%) rename assets/js/{173.b0954f8d.js => 173.f03ca13d.js} (98%) rename assets/js/{174.8372bc5f.js => 174.f9d7ef54.js} (98%) rename assets/js/{175.b7a38070.js => 175.7478e44c.js} (98%) rename assets/js/{176.74021178.js => 176.40f5264f.js} (98%) rename assets/js/{177.584bad6b.js => 177.6c30d8b5.js} (98%) create mode 100644 assets/js/178.06d66cf4.js rename assets/js/{178.149c7a47.js => 179.317db339.js} (99%) rename assets/js/{179.58fc53fb.js => 180.6275d8bc.js} (99%) rename assets/js/{180.4a6640af.js => 181.64d8c28d.js} (88%) rename assets/js/{181.a8a2deb5.js => 182.9e260667.js} (99%) rename assets/js/{182.53220a84.js => 183.216c87f7.js} (98%) rename assets/js/{183.35379f02.js => 184.3d950b5b.js} (98%) rename assets/js/{184.0b3ac47e.js => 185.bf2ed6d3.js} (99%) rename assets/js/{185.e28478e7.js => 186.49582628.js} (99%) rename assets/js/{186.bae39aa4.js => 187.876491a8.js} (99%) rename assets/js/{187.17a2397b.js => 188.b96e3c32.js} (99%) rename assets/js/{188.0e434990.js => 189.ae3316ec.js} (98%) rename assets/js/{189.2443dbd6.js => 190.0a697834.js} (96%) rename assets/js/{190.ae5ee300.js => 191.ae2db3ca.js} (97%) rename assets/js/{191.4341f1a2.js => 192.51e1bb8f.js} (99%) rename assets/js/{22.2c8e874b.js => 22.7697693e.js} (99%) rename assets/js/{23.47d7df39.js => 23.28c08a9a.js} (92%) rename assets/js/{24.17740005.js => 24.1b88c4e5.js} (86%) rename assets/js/{25.d1e61993.js => 25.42ace4bf.js} (99%) rename assets/js/{26.3dcb2eba.js => 26.5c9dfc62.js} (87%) rename assets/js/{30.740c3ce6.js => 30.37372b0a.js} (86%) rename assets/js/{31.1461b66d.js => 31.5a70e269.js} (98%) rename assets/js/{33.a90e9bbd.js => 33.72bf6e52.js} (99%) rename assets/js/{34.8afd3c77.js => 34.006c3ade.js} (96%) rename assets/js/{35.8381e3cb.js => 35.6c3d0480.js} (99%) rename assets/js/{36.856e68b8.js => 36.5d3ea21d.js} (98%) rename assets/js/{37.ff51a0e2.js => 37.551091a2.js} (95%) rename assets/js/{38.63354dfa.js => 38.860bf20a.js} (97%) rename assets/js/{39.964c15b2.js => 39.efc74ba0.js} (99%) rename assets/js/{4.86253916.js => 4.3084b2d4.js} (94%) rename assets/js/{42.273afb6e.js => 42.572fec34.js} (97%) rename assets/js/{44.7e6af297.js => 44.0c1dd86a.js} (97%) rename assets/js/{46.b7a06152.js => 46.a257413f.js} (98%) rename assets/js/{47.7ce0d603.js => 47.5792fa84.js} (98%) rename assets/js/{5.7bd12aaf.js => 5.79072a51.js} (99%) rename assets/js/{50.eefa11ae.js => 50.db9ab2c9.js} (99%) rename assets/js/{51.532796be.js => 51.d50035b5.js} (98%) rename assets/js/{53.f8912803.js => 53.aa8b57f9.js} (94%) rename assets/js/{54.a568b9e8.js => 54.9e9cbb98.js} (99%) rename assets/js/{57.d74ae544.js => 57.5b565d5f.js} (99%) rename assets/js/{58.2b3bd3bf.js => 58.f378dc93.js} (99%) rename assets/js/{59.3359464c.js => 59.138b6560.js} (98%) rename assets/js/{6.c19d05ab.js => 6.48d33a0f.js} (95%) rename assets/js/{60.48fa03a6.js => 60.385842bd.js} (99%) rename assets/js/{66.2d6a906a.js => 66.a6ffa49d.js} (92%) rename assets/js/{69.dab71250.js => 69.4de21da2.js} (98%) rename assets/js/{70.4383c25b.js => 70.70153266.js} (98%) rename assets/js/{71.89c94dae.js => 71.db803e4f.js} (98%) rename assets/js/{74.25602132.js => 74.a47e7fc6.js} (99%) rename assets/js/{75.591b6129.js => 75.ec5d7d14.js} (99%) rename assets/js/{76.8fa5c677.js => 76.47091d50.js} (99%) rename assets/js/{78.41fd88c5.js => 78.12b4bf52.js} (99%) rename assets/js/{8.85a9c2f0.js => 8.50b18240.js} (94%) rename assets/js/{82.23aed897.js => 82.aff56659.js} (99%) rename assets/js/{83.c4c2156e.js => 83.5d806a8b.js} (99%) rename assets/js/{84.298b8538.js => 84.96c39a06.js} (99%) rename assets/js/{85.b4892b6b.js => 85.600e7d98.js} (98%) rename assets/js/{86.8b13068a.js => 86.85f30f11.js} (99%) rename assets/js/{87.69707213.js => 87.00a63b75.js} (99%) rename assets/js/{88.151550eb.js => 88.993fe8bc.js} (98%) rename assets/js/{89.757a6bde.js => 89.2288f7b1.js} (99%) rename assets/js/{91.34e2a6c6.js => 91.e285338b.js} (98%) rename assets/js/{92.04d2ff06.js => 92.a76b0d7b.js} (98%) rename assets/js/{93.f0fa6979.js => 93.4ac6f621.js} (99%) rename assets/js/{94.0f020cbe.js => 94.74b3aa1a.js} (96%) rename assets/js/{95.b903e22a.js => 95.bac46e8c.js} (96%) rename assets/js/{96.69003c07.js => 96.d7f61ad1.js} (99%) rename assets/js/{97.38257cb2.js => 97.fb87ebae.js} (98%) rename assets/js/{98.0f35312c.js => 98.5b94f72f.js} (98%) rename assets/js/{99.a7a7483c.js => 99.9e674d82.js} (96%) delete mode 100644 assets/js/app.081cde37.js create mode 100644 assets/js/app.1a1be129.js create mode 100644 blog/2023/12/05/community-call/index.html create mode 100644 tag/community-hangout/page/5/index.html diff --git a/404.html b/404.html index 7005ae1d8..b06e9874c 100644 --- a/404.html +++ b/404.html @@ -20,11 +20,11 @@ - +
- + diff --git a/adoption/index.html b/adoption/index.html index 461633f11..048f4b218 100644 --- a/adoption/index.html +++ b/adoption/index.html @@ -30,7 +30,7 @@ - + @@ -103,6 +103,6 @@ (opens new window)

# Frictionless Adoption

Projects and collaborations that use Frictionless.

The Frictionless Data project provides software and standards to work with data. On this page we share projects and collaborations that use Frictionless, including collaborations with the Frictionless Team and also community projects that use our toolkit.

TIP

If you use Frictionless in your work and want to share it with community, please write to the Frictionless Team using any available contact provided on this site and we will add your project to this page.

# Pilot Collaborations

We work closely with data researchers and institutions to help them integrate Frictionless into their workflow. Click on individual Pilots to learn more.

BCO-DMO

A Pilot with the Biological and Chemical Oceanography Data Management Office (BCO-DMO).

PUDL

A pilot with the Public Utility Data Liberation project, PUDL, aims to make US energy data easier to use.

Dryad

A pilot to add Frictionless Data Validation within Dryad, a curated resource that makes research data discoverable, freely reusable, and citable.

Data Readiness Group

A pilot with Dr. Philippe Rocca-Serra at Oxford's Data Readiness Group to remove the friction in reported scientific experimental results by applying the Data Package specifications.

Data Management for TEDDINET

A pilot to use Frictionless Data approaches to address data legacy issues facing the TEDDINET project, a research network addressing the challenges of transforming energy demand in our buildings.

Western Pennsylvania Regional Data Center

A pilot to showcase an implementation that expounds on quality and description of datasets in CKAN-based open data portals with the Western Pennsylvania Regional Data Center - a part of The University of Pittsburgh Center for Urban and Social Research.

UK Data Service

A pilot to use Frictionless Data software to assess and report on data quality and make a case for generating visualizations with ensuing data and metadata with UK data.

eLife

A pilot to explore the use of goodtables library to validate all scientific research datasets hosted by eLife and make a case for open data reuse in the field of Life and BioMedical sciences.

University of Cambridge - Retinal Mosaics

A pilot to trial Frictionless software for packaging and reading data to support computational techniques to investigate development of the nervous system.

Pacific Northwest National Laboratory - Active Data Biology

A pilot to explore the use of Frictionless Data's specifications and software to generate schemas for tabular data and validate metadata stored as part of a biological application on GitHub.

Causa Natura - Pescando Datos

A pilot to explore the use of data validation software in the Causa Natura project to improve quality of data to support fisher communities and advocacy groups.

# Tool Fund Grantee Projects

As part of the Reproducible Research project, we awarded several projects with small grants to build new tooling for open research based on the Frictionless codebase. Click on individual Tool Fund profiles to learn more.

Schema Collaboration

Data managers and researchers collaborate to write packages and tabular schemas (by Carles Pina Estany).

Frictionless Data Package for InterMine

Add data package support to InterMine, an open-source biological data warehouse (by Nikhil Vats).

Frictionless Data for Wheat

Added Frictionless support to the Designing Future Wheat project data portal which houses large-scale wheat datasets (by Simon Tyrrell and Xingdong Bian).

Metrics in Context

Developing an open standard to describe metadata of scholarly metrics by using Frictionless specifications (by Asura Enkhbayar).

Analysis of spontaneous activity patterns in developing neural circuits using Frictionless Data tools

Evaluate the use of Frictionless Data as a common format for the analysis of neuronal spontaneous activity recordings in comparison to HDF5 (by Stephen Eglen and Alexander Shtyrov).

Neuroscience Experiments System Tool Fund

Adapt the existing export component of RIDC NeuroMat's Neuroscience Experiments System to conform to the Frictionless Data specifications (by João Alexandre Peschanski, Cassiano dos Santos and Carlos Eduardo Ribas).

Frictionless DarwinCore

A tool to convert DarwinCore Archives into Frictionless Data Packages (by André Heughebaert).

Frictionless Google Sheets Tool (WIP)

Prototype a Data Package import/export add-on to Google Sheets (by Stephan Max).

Frictionless Open Referral

Implement datapackage bundling of Open Referral CSV files, which contain human health and social services data (by Shelby Switzer and Greg Bloom).

Software Libraries Grantees

In 2017, 6 grantees were awared funds to translate the Frictionless Python libraries into other software languages. The awardees and languages were: Matt Thompson - Clojure; Ori Hoch - PHP; Daniel Fireman - Go; Georges Labrèche - Java; Oleg Lavrovsky - Julie; and Open Knowledge Greece - R. You can read more about them each on the people page.

# Community Projects

The Frictionless Data project develops open source standards and software that can be re-used by anyone. Here is a list of projects that our community has created on top of Frictionless. If you would like your project to be featured here, let us know!

Libraries Hacked

Libraries hacked is a project started in 2014 to promote the use of open data in libraries.

Open Data Blend

Open Data Blend is a set of open data services that aim to make large and complex UK open data easier to analyse.

Data Curator

Data Curator is a simple desktop data editor to help describe, validate and share usable open data.

HubMAP

HuBMAP is creating an open, global atlas of the human body at the cellular level.

Etalab

Etalab, a department of the French interministerial digital service, launched schema.data.gouv.fr

Nimble Learn - datapackage-m

A set of functions written in Power Query M for working with Tabular Data Packages in Power BI Desktop and Power Query for Excel.

Nimble Learn - Datapackage-connector

Power BI Custom Connector that loads one or more tables from Tabular Data Packages into Power BI.

Zegami

Zegami is using Frictionless Data specifications for data management and syntactic analysis on their visual data analysis platform.

Center for Data Science and Public Policy, Workforce Data Initiative

Supporting state and local workforce boards in managing and publishing data.

Cell Migration Standardization Organization

Using Frictionless Data specs to package cell migration data and load it into Pandas for data analysis and creation of visualizations.

Collections as Data Facets - Carnegie Museum of Art Collection Data

Use of Frictionless Data specifications in the release of Carnegie Museum of Arts’ Collection Data for public access & creative use.

OpenML

OpenML is an online platform and service for machine learning, whose goal is to make ML and data analysis simple.

The Data Retriever

Data Retriever uses Frictionless Data specifications to generate and package metadata for publicly available data.

Tesera

Tesera uses Frictionless Data specifications to package data in readiness for use in different systems and components.

data.world

data.world uses Frictionless Data specifications to generate schema and metadata related to an uploaded dataset and containerize all three in a Tabular Data Package.

John Snow Labs

John Snow Labs uses Frictionless Data specifications to avail data to users for analysis.

Open Power System Data

Open Power System Data uses Frictionless Data specifications to avail energy data for analysis and modeling.

Dataship

Dataship used Frictionless Data specifications as the basis for its easy to execute, edit and share notebooks for data analysis.

European Commission

The European Commission launched a CSV schema validator using the tabular data package specification, as part of the ISA² Interoperability Testbed.

Validata

OpenDataFrance created Validata, a platform for local public administration in France to validate CSV files on the web, using the tabular data package specification.

# Find Frictionless Datasets

Where can I find Frictionless Datasets?

# Grant-funded work

# Frictionless Data for Reproducible Research

From September 2018 til December 2021, the Frictionless Data team focused on enhanced dissemination and training activities, and further iterations on our software and specifications via a range of collaborations with research partners. We aimed to use Frictionless tooling to resolve research data workflow issues, create a new wave of open science advocates, and teach about FAIR data management. This pivotal work was funded by the Alfred P. Sloan Foundation and overseen by the Frictionless team at the Open Knowledge Foundation. You can read more details about this grant here (opens new window).

# Pilot Collaborations

Pilots are intensive, hands-on collaborations with researcher teams to resolve their research data management workflow issues with Frictionless Data software and specs. You can read about the Pilot projects on our blog.

# Tool Fund

The Tool Fund is a $5000 grant to develop an open tool for reproducible science or research built using the Frictionless Data codebase. Learn more by reading Tool Fund Blogs or by visiting the Tool Fund site (opens new window).

# Fellows Programme

The Fellows Programme (opens new window) trains early career researchers to become champions of the Frictionless Data tools and approaches in their field. Read more about the Programme, including Fellows biographies and the programme syllabus, on the Fellows website (opens new window)

# Data Institutions - Website Update

In 2021, we partnered with the Open Data Institute (ODI) to improve our existing documentation and add new features on Frictionless Data to create a better user experience for all. Working with a series of feedback sessions from our community members, we created our new documentation portal (opens new window) for the Frictionless Framework and several new tutorials. Read more about this grant here (opens new window).

# Frictionless Field Guide

In 2017, OKF received funding from the Open Data Institute to create a Frictionless Data Field Guide. This guide provided step-by-step instructions for improving data publishing workflows. The field guide introduced new ways of working informed by the Frictionless Data suite of software that data publishers can use independently, or adapt into existing personal and organisational workflows. You can read more details about this work here (opens new window).

# Data Package Integrations

In 2016, Google funded OKF to work on tool integration for Data Packages as part of our broader work on Frictionless Data to support the open data community. You can read more about this work here (opens new window).

# Data Packages Development

In 2016, OKF received funding from The Alfred P. Sloan Foundation to work on a broad range of activities to enable better research and more effective civic tech through Frictionless Data. The funding targeted standards work, tooling, and infrastructure around “data packages” as well as piloting and outreach activities to support researchers and civic technologists in addressing real problems encountered when working with data. You can read more about this work here (opens new window).


- + diff --git a/assets/js/100.b75e047c.js b/assets/js/100.99a681e3.js similarity index 98% rename from assets/js/100.b75e047c.js rename to assets/js/100.99a681e3.js index f6d43d19d..6b4fe3743 100644 --- a/assets/js/100.b75e047c.js +++ b/assets/js/100.99a681e3.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[100],{631:function(e,t,n){"use strict";n.r(t);var o=n(29),a=Object(o.a)({},(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[n("p",[n("a",{attrs:{href:"https://csvconf.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("csv,conf,v5"),n("OutboundLink")],1),e._v(", which occurred virtually in May 2020, featured several talks about using Frictionless Data, and was also organized by two members of the Frictionless Data team, Lilly Winfree and Jo Barratt. csv,conf is a community conference that brings diverse groups together to discuss data topics, and features stories about data sharing and data analysis from science, journalism, government, and open source. Over the years we have had over a hundred different talks from a huge range of speakers, most of which you can still watch back on our "),n("a",{attrs:{href:"http://youtube.com/csvconf",target:"_blank",rel:"noopener noreferrer"}},[e._v("YouTube Channel"),n("OutboundLink")],1),e._v(".")]),e._v(" "),n("p",[e._v("COVID-19 threw a wrench in our plans for csv,conf,v5, and we ended up converting the conference to a virtual event. We were looking forward to our first conference in Washington DC, but unfortunately, like many other in-person events, this was not going to be possible in 2020. However, there were many positive outcomes of moving to a virtual conference. For instance, the number of attendees quadrupled (over 1000 people registered!) and people were able to attend from all over the world.")]),e._v(" "),n("p",[e._v("During the conference, there were several talks showcasing Frictionless Data. Two of the Frictionless Data Fellows, Monica Granados and Lily Zhao, presented a talk (“"),n("a",{attrs:{href:"https://youtu.be/tZmu5DGPRmA",target:"_blank",rel:"noopener noreferrer"}},[e._v("How Frictionless Data Can Help You Grease Your Data"),n("OutboundLink")],1),e._v("”) that had over 100 people watching live, which is many more than would have been at their talk in person. Other related projects gave talks that incorporated Frictionless Data, such as Christina Gosnell and Pablo Virgo from Catalyst Cooperative discussing “"),n("a",{attrs:{href:"https://youtu.be/ktLTC7SENHk",target:"_blank",rel:"noopener noreferrer"}},[e._v("Getting climate advocates the data they need."),n("OutboundLink")],1),e._v("” I also recommend watching “"),n("a",{attrs:{href:"https://youtu.be/3Ban-orpVtc",target:"_blank",rel:"noopener noreferrer"}},[e._v("Data and Code for Reproducible Research"),n("OutboundLink")],1),e._v("” by Lisa Federer and Maryam Zaringhalam, and “"),n("a",{attrs:{href:"https://youtu.be/XV_jxbB1cBY",target:"_blank",rel:"noopener noreferrer"}},[e._v("Low-Income Data Diaries - How “Low-Tech” Data Experiences Can Inspire Accessible Data Skills and Tool Design"),n("OutboundLink")],1),e._v("” by David Selassie Opoku. You can see the full list of talks, with links to slides and videos, on the csv,conf website: "),n("a",{attrs:{href:"https://csvconf.com/speakers/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://csvconf.com/speakers/"),n("OutboundLink")],1),e._v(".")]),e._v(" "),n("p",[e._v("If you are planning on organizing a virtual event, you can read more about how csv,conf,v5 was planned here: "),n("a",{attrs:{href:"https://csvconf.com/going-online",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://csvconf.com/going-online"),n("OutboundLink")],1),e._v(".")]),e._v(" "),n("p",[e._v("We hope to see some of you next year for csv,conf,v6!")])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[100],{634:function(e,t,n){"use strict";n.r(t);var o=n(29),a=Object(o.a)({},(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[n("p",[n("a",{attrs:{href:"https://csvconf.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("csv,conf,v5"),n("OutboundLink")],1),e._v(", which occurred virtually in May 2020, featured several talks about using Frictionless Data, and was also organized by two members of the Frictionless Data team, Lilly Winfree and Jo Barratt. csv,conf is a community conference that brings diverse groups together to discuss data topics, and features stories about data sharing and data analysis from science, journalism, government, and open source. Over the years we have had over a hundred different talks from a huge range of speakers, most of which you can still watch back on our "),n("a",{attrs:{href:"http://youtube.com/csvconf",target:"_blank",rel:"noopener noreferrer"}},[e._v("YouTube Channel"),n("OutboundLink")],1),e._v(".")]),e._v(" "),n("p",[e._v("COVID-19 threw a wrench in our plans for csv,conf,v5, and we ended up converting the conference to a virtual event. We were looking forward to our first conference in Washington DC, but unfortunately, like many other in-person events, this was not going to be possible in 2020. However, there were many positive outcomes of moving to a virtual conference. For instance, the number of attendees quadrupled (over 1000 people registered!) and people were able to attend from all over the world.")]),e._v(" "),n("p",[e._v("During the conference, there were several talks showcasing Frictionless Data. Two of the Frictionless Data Fellows, Monica Granados and Lily Zhao, presented a talk (“"),n("a",{attrs:{href:"https://youtu.be/tZmu5DGPRmA",target:"_blank",rel:"noopener noreferrer"}},[e._v("How Frictionless Data Can Help You Grease Your Data"),n("OutboundLink")],1),e._v("”) that had over 100 people watching live, which is many more than would have been at their talk in person. Other related projects gave talks that incorporated Frictionless Data, such as Christina Gosnell and Pablo Virgo from Catalyst Cooperative discussing “"),n("a",{attrs:{href:"https://youtu.be/ktLTC7SENHk",target:"_blank",rel:"noopener noreferrer"}},[e._v("Getting climate advocates the data they need."),n("OutboundLink")],1),e._v("” I also recommend watching “"),n("a",{attrs:{href:"https://youtu.be/3Ban-orpVtc",target:"_blank",rel:"noopener noreferrer"}},[e._v("Data and Code for Reproducible Research"),n("OutboundLink")],1),e._v("” by Lisa Federer and Maryam Zaringhalam, and “"),n("a",{attrs:{href:"https://youtu.be/XV_jxbB1cBY",target:"_blank",rel:"noopener noreferrer"}},[e._v("Low-Income Data Diaries - How “Low-Tech” Data Experiences Can Inspire Accessible Data Skills and Tool Design"),n("OutboundLink")],1),e._v("” by David Selassie Opoku. You can see the full list of talks, with links to slides and videos, on the csv,conf website: "),n("a",{attrs:{href:"https://csvconf.com/speakers/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://csvconf.com/speakers/"),n("OutboundLink")],1),e._v(".")]),e._v(" "),n("p",[e._v("If you are planning on organizing a virtual event, you can read more about how csv,conf,v5 was planned here: "),n("a",{attrs:{href:"https://csvconf.com/going-online",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://csvconf.com/going-online"),n("OutboundLink")],1),e._v(".")]),e._v(" "),n("p",[e._v("We hope to see some of you next year for csv,conf,v6!")])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/101.7e1d6df4.js b/assets/js/101.bd3f81c8.js similarity index 98% rename from assets/js/101.7e1d6df4.js rename to assets/js/101.bd3f81c8.js index e2ae18b4b..9f756d3d3 100644 --- a/assets/js/101.7e1d6df4.js +++ b/assets/js/101.bd3f81c8.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[101],{633:function(e,t,a){"use strict";a.r(t);var n=a(29),o=Object(n.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[a("em",[e._v("This grantee profile features Nikhil Vats for our series of Frictionless Data Tool Fund posts, written to shine a light on Frictionless Data’s Tool Fund grantees, their work and to let our technical community know how they can get involved.")])]),e._v(" "),a("h2",{attrs:{id:"meet-nikhil-vats"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#meet-nikhil-vats"}},[e._v("#")]),e._v(" Meet Nikhil Vats")]),e._v(" "),a("p",[e._v("I am an undergraduate student pursuing BE Computer Science and MSc Economics from BITS Pilani, India. My open-source journey started as a Google Summer of Code student with "),a("a",{attrs:{href:"https://www.open-bio.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Open Bioinformatics Foundation"),a("OutboundLink")],1),e._v(" in 2019 and currently, I am a mentor at "),a("a",{attrs:{href:"http://intermine.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("InterMine"),a("OutboundLink")],1),e._v(" for Outreachy. I’ve been working part-time as a full-stack web developer for the last two years. The latest project that I worked on was "),a("a",{attrs:{href:"https://daancorona.tech/",target:"_blank",rel:"noopener noreferrer"}},[e._v("DaanCorona"),a("OutboundLink")],1),e._v(" (daan is a Hindi word which means donation) - a non-profit initiative to help small businesses affected by Coronavirus in India. Through the Frictionless Data Tool Fund, I would like to give back to the open-source community by adding data package specifications to InterMine’s im-tables. Also, I love animals, music and cinema!")]),e._v(" "),a("h2",{attrs:{id:"how-did-you-first-hear-about-frictionless-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-did-you-first-hear-about-frictionless-data"}},[e._v("#")]),e._v(" How did you first hear about Frictionless Data?")]),e._v(" "),a("p",[e._v("I first heard about Frictionless Data from my mentor Yo Yehudi. She had sent an email to the InterMine community explaining the Frictionless Data initiative. The introductory video of Frictionless Data by Rufus Pollock inspired me deeply. I researched about Frictionless Data Specifications, Data Packages, and other tools and was amazed by how useful they can be while working with data. I wanted to contribute to Frictionless Data because I loved its design philosophy and the plethora of potential tools that can go a long way in changing how we produce, consume, and reuse data in research.")]),e._v(" "),a("h2",{attrs:{id:"what-specific-issues-are-you-looking-to-address-with-the-tool-fund"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-specific-issues-are-you-looking-to-address-with-the-tool-fund"}},[e._v("#")]),e._v(" What specific issues are you looking to address with the Tool Fund?")]),e._v(" "),a("p",[e._v("InterMine is an open-source biological data warehouse. Over thirty different InterMine instances exist and can be viewed using InterMine’s web interface "),a("a",{attrs:{href:"https://github.com/intermine/im-tables-3",target:"_blank",rel:"noopener noreferrer"}},[e._v("im-tables"),a("OutboundLink")],1),e._v(", a Javascript-based query results table data displayer. The export functionality of the im-tables supports common formats like CSV, TSV, and JSON. Whilst this is standardized across different instances of InterMine, exported data doesn’t conform to any specific standards, resulting in friction in data especially while integrating with other tools. Adding data package specifications and integrating with frictionless data specifications will ensure seamless integration, reusability, and sharing of data among individuals and apps, and will affect a broad number of InterMines based in research institutes around the world. In the long run, I would also like to develop and add a specification for InterMine’s data to the Frictionless Data registry.")]),e._v(" "),a("h2",{attrs:{id:"how-can-the-open-data-open-source-or-open-science-communities-engage-with-the-work-you-are-doing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-can-the-open-data-open-source-or-open-science-communities-engage-with-the-work-you-are-doing"}},[e._v("#")]),e._v(" How can the open data, open source, or open science communities engage with the work you are doing?")]),e._v(" "),a("p",[e._v("I will be working on the "),a("a",{attrs:{href:"https://github.com/intermine/im-tables-3",target:"_blank",rel:"noopener noreferrer"}},[e._v("im-tables"),a("OutboundLink")],1),e._v(" and "),a("a",{attrs:{href:"https://github.com/intermine/intermine",target:"_blank",rel:"noopener noreferrer"}},[e._v("intermine"),a("OutboundLink")],1),e._v(" GitHub repository, writing blogs every month to share my progress. I also plan to write documentation, tutorials, and contributing guidelines to help new contributors get started easily. I want to encourage and welcome anyone who wants to contribute or get started with open-source to work on this project. I’ll be happy to help you get familiar with InterMine and this project. You can get in touch "),a("a",{attrs:{href:"http://chat.intermine.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(" or "),a("a",{attrs:{href:"https://discord.com/invite/2UgfM2k",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(". Lastly, I welcome everyone to try out and use the features added during this project to make data frictionless, usable, and open!")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[101],{631:function(e,t,a){"use strict";a.r(t);var n=a(29),o=Object(n.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[a("em",[e._v("This grantee profile features Nikhil Vats for our series of Frictionless Data Tool Fund posts, written to shine a light on Frictionless Data’s Tool Fund grantees, their work and to let our technical community know how they can get involved.")])]),e._v(" "),a("h2",{attrs:{id:"meet-nikhil-vats"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#meet-nikhil-vats"}},[e._v("#")]),e._v(" Meet Nikhil Vats")]),e._v(" "),a("p",[e._v("I am an undergraduate student pursuing BE Computer Science and MSc Economics from BITS Pilani, India. My open-source journey started as a Google Summer of Code student with "),a("a",{attrs:{href:"https://www.open-bio.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Open Bioinformatics Foundation"),a("OutboundLink")],1),e._v(" in 2019 and currently, I am a mentor at "),a("a",{attrs:{href:"http://intermine.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("InterMine"),a("OutboundLink")],1),e._v(" for Outreachy. I’ve been working part-time as a full-stack web developer for the last two years. The latest project that I worked on was "),a("a",{attrs:{href:"https://daancorona.tech/",target:"_blank",rel:"noopener noreferrer"}},[e._v("DaanCorona"),a("OutboundLink")],1),e._v(" (daan is a Hindi word which means donation) - a non-profit initiative to help small businesses affected by Coronavirus in India. Through the Frictionless Data Tool Fund, I would like to give back to the open-source community by adding data package specifications to InterMine’s im-tables. Also, I love animals, music and cinema!")]),e._v(" "),a("h2",{attrs:{id:"how-did-you-first-hear-about-frictionless-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-did-you-first-hear-about-frictionless-data"}},[e._v("#")]),e._v(" How did you first hear about Frictionless Data?")]),e._v(" "),a("p",[e._v("I first heard about Frictionless Data from my mentor Yo Yehudi. She had sent an email to the InterMine community explaining the Frictionless Data initiative. The introductory video of Frictionless Data by Rufus Pollock inspired me deeply. I researched about Frictionless Data Specifications, Data Packages, and other tools and was amazed by how useful they can be while working with data. I wanted to contribute to Frictionless Data because I loved its design philosophy and the plethora of potential tools that can go a long way in changing how we produce, consume, and reuse data in research.")]),e._v(" "),a("h2",{attrs:{id:"what-specific-issues-are-you-looking-to-address-with-the-tool-fund"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-specific-issues-are-you-looking-to-address-with-the-tool-fund"}},[e._v("#")]),e._v(" What specific issues are you looking to address with the Tool Fund?")]),e._v(" "),a("p",[e._v("InterMine is an open-source biological data warehouse. Over thirty different InterMine instances exist and can be viewed using InterMine’s web interface "),a("a",{attrs:{href:"https://github.com/intermine/im-tables-3",target:"_blank",rel:"noopener noreferrer"}},[e._v("im-tables"),a("OutboundLink")],1),e._v(", a Javascript-based query results table data displayer. The export functionality of the im-tables supports common formats like CSV, TSV, and JSON. Whilst this is standardized across different instances of InterMine, exported data doesn’t conform to any specific standards, resulting in friction in data especially while integrating with other tools. Adding data package specifications and integrating with frictionless data specifications will ensure seamless integration, reusability, and sharing of data among individuals and apps, and will affect a broad number of InterMines based in research institutes around the world. In the long run, I would also like to develop and add a specification for InterMine’s data to the Frictionless Data registry.")]),e._v(" "),a("h2",{attrs:{id:"how-can-the-open-data-open-source-or-open-science-communities-engage-with-the-work-you-are-doing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-can-the-open-data-open-source-or-open-science-communities-engage-with-the-work-you-are-doing"}},[e._v("#")]),e._v(" How can the open data, open source, or open science communities engage with the work you are doing?")]),e._v(" "),a("p",[e._v("I will be working on the "),a("a",{attrs:{href:"https://github.com/intermine/im-tables-3",target:"_blank",rel:"noopener noreferrer"}},[e._v("im-tables"),a("OutboundLink")],1),e._v(" and "),a("a",{attrs:{href:"https://github.com/intermine/intermine",target:"_blank",rel:"noopener noreferrer"}},[e._v("intermine"),a("OutboundLink")],1),e._v(" GitHub repository, writing blogs every month to share my progress. I also plan to write documentation, tutorials, and contributing guidelines to help new contributors get started easily. I want to encourage and welcome anyone who wants to contribute or get started with open-source to work on this project. I’ll be happy to help you get familiar with InterMine and this project. You can get in touch "),a("a",{attrs:{href:"http://chat.intermine.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(" or "),a("a",{attrs:{href:"https://discord.com/invite/2UgfM2k",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(". Lastly, I welcome everyone to try out and use the features added during this project to make data frictionless, usable, and open!")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/102.77cef817.js b/assets/js/102.6a17127a.js similarity index 98% rename from assets/js/102.77cef817.js rename to assets/js/102.6a17127a.js index ac2bf9840..c49ce7634 100644 --- a/assets/js/102.77cef817.js +++ b/assets/js/102.6a17127a.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[102],{635:function(e,t,a){"use strict";a.r(t);var o=a(29),r=Object(o.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[a("em",[e._v("This grantee profile features Carles Pina Estany for our series of Frictionless Data Tool Fund posts, written to shine a light on Frictionless Data’s Tool Fund grantees, their work and to let our technical community know how they can get involved.")])]),e._v(" "),a("h2",{attrs:{id:"meet-carles-pina-estany"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#meet-carles-pina-estany"}},[e._v("#")]),e._v(" Meet Carles Pina Estany")]),e._v(" "),a("p",[e._v("I’m Carles and I’m currently working part-time for the "),a("a",{attrs:{href:"https://swisspolar.ch/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Swiss Polar Institute"),a("OutboundLink")],1),e._v(" as a software engineer. I’m not a scientist but I like working with scientists, for science institutions, in research, education and with free/open source software. You can read more about me on my website: "),a("a",{attrs:{href:"https://carles.pina.cat/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://carles.pina.cat/"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("One of the tasks in the institute is to publish data and encourage researchers to provide detailed metadata. Often this metadata is written by researchers together with a data manager and without a tool in place to do this, it can become tricky to keep track of versions and progress. Frictionless Data schemas provide a model on which the metadata can be written to ensure it is machine-readable and standardised but completing the metadata in JSON files is not very user-friendly. My Tool Fund project, "),a("code",[e._v("schema-collaboration")]),e._v(", will help data managers and researchers collaborate easily to document data following the already-existing Frictionless Data schemas datapackage and tableschema.")]),e._v(" "),a("h2",{attrs:{id:"how-did-you-first-hear-about-frictionless-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-did-you-first-hear-about-frictionless-data"}},[e._v("#")]),e._v(" How did you first hear about Frictionless Data?")]),e._v(" "),a("p",[e._v("We have had Frictionless Data on our radar for about a year. "),a("a",{attrs:{href:"https://fosdem.org/2020/schedule/event/open_research_frictionless_data/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Lilly Winfree’s talk at FOSDEM 2020"),a("OutboundLink")],1),e._v(" gave us a good insight into how it could be used and we realised that it was a good fit. Recently we have been improving the way that we describe data for a collaborating organisation: Frictionless Data was a natural way to go and we started using it to describe all datasets. "),a("a",{attrs:{href:"https://create.frictionlessdata.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("create.frictionlessdata.io"),a("OutboundLink")],1),e._v(" was a good start for creating a first draft of the tableschema and datapackage but we missed a tool to collaborate with the researchers when describing a data set.")]),e._v(" "),a("h2",{attrs:{id:"what-specific-issues-are-you-looking-to-address-with-the-tool-fund"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-specific-issues-are-you-looking-to-address-with-the-tool-fund"}},[e._v("#")]),e._v(" What specific issues are you looking to address with the Tool Fund?")]),e._v(" "),a("p",[e._v("Collaboration between data managers and researchers needs to be as easy as possible for both sides. Currently there is no tool to collaboratively document tabular data and data packages easily. Using this tool the researcher will be able to enter the information in a controlled manner and the data manager will be able to give feedback on what’s missing or what needs to be changed through a common platform.")]),e._v(" "),a("p",[e._v("Hopefully this will lead to more productive use of time for both sides and having the data described with machine-readable Frictionless Data schemas will make it easier to validate, reuse and have consistent documentation. The tool will be based on "),a("a",{attrs:{href:"https://github.com/frictionlessdata/datapackage-ui",target:"_blank",rel:"noopener noreferrer"}},[e._v("datapackage-ui"),a("OutboundLink")],1),e._v(" for the frontend, allowing all those involved to collaborate on the metadata through a user-friendly UI. Django will be used for the backend and Docker will be used for installation and deployments.")]),e._v(" "),a("h2",{attrs:{id:"how-can-the-open-data-open-source-or-open-science-communities-engage-with-the-work-you-are-doing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-can-the-open-data-open-source-or-open-science-communities-engage-with-the-work-you-are-doing"}},[e._v("#")]),e._v(" How can the open data, open source, or open science communities engage with the work you are doing?")]),e._v(" "),a("p",[e._v("This project will be based on "),a("a",{attrs:{href:"https://github.com/frictionlessdata/datapackage-ui",target:"_blank",rel:"noopener noreferrer"}},[e._v("datapackage-ui"),a("OutboundLink")],1),e._v(" so using this tool and opening and fixing issues would be useful contributions to the project.")]),e._v(" "),a("p",[e._v("Feel free to submit issues, ideas and PR on the Github repository "),a("a",{attrs:{href:"https://github.com/frictionlessdata/schema-collaboration",target:"_blank",rel:"noopener noreferrer"}},[e._v("schema-collaboration"),a("OutboundLink")],1),e._v(" or "),a("a",{attrs:{href:"https://discord.com/invite/j9DNFNw",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),a("OutboundLink")],1),e._v(" and test the project on the staging deployment when available.")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[102],{632:function(e,t,a){"use strict";a.r(t);var o=a(29),r=Object(o.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[a("em",[e._v("This grantee profile features Carles Pina Estany for our series of Frictionless Data Tool Fund posts, written to shine a light on Frictionless Data’s Tool Fund grantees, their work and to let our technical community know how they can get involved.")])]),e._v(" "),a("h2",{attrs:{id:"meet-carles-pina-estany"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#meet-carles-pina-estany"}},[e._v("#")]),e._v(" Meet Carles Pina Estany")]),e._v(" "),a("p",[e._v("I’m Carles and I’m currently working part-time for the "),a("a",{attrs:{href:"https://swisspolar.ch/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Swiss Polar Institute"),a("OutboundLink")],1),e._v(" as a software engineer. I’m not a scientist but I like working with scientists, for science institutions, in research, education and with free/open source software. You can read more about me on my website: "),a("a",{attrs:{href:"https://carles.pina.cat/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://carles.pina.cat/"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("One of the tasks in the institute is to publish data and encourage researchers to provide detailed metadata. Often this metadata is written by researchers together with a data manager and without a tool in place to do this, it can become tricky to keep track of versions and progress. Frictionless Data schemas provide a model on which the metadata can be written to ensure it is machine-readable and standardised but completing the metadata in JSON files is not very user-friendly. My Tool Fund project, "),a("code",[e._v("schema-collaboration")]),e._v(", will help data managers and researchers collaborate easily to document data following the already-existing Frictionless Data schemas datapackage and tableschema.")]),e._v(" "),a("h2",{attrs:{id:"how-did-you-first-hear-about-frictionless-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-did-you-first-hear-about-frictionless-data"}},[e._v("#")]),e._v(" How did you first hear about Frictionless Data?")]),e._v(" "),a("p",[e._v("We have had Frictionless Data on our radar for about a year. "),a("a",{attrs:{href:"https://fosdem.org/2020/schedule/event/open_research_frictionless_data/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Lilly Winfree’s talk at FOSDEM 2020"),a("OutboundLink")],1),e._v(" gave us a good insight into how it could be used and we realised that it was a good fit. Recently we have been improving the way that we describe data for a collaborating organisation: Frictionless Data was a natural way to go and we started using it to describe all datasets. "),a("a",{attrs:{href:"https://create.frictionlessdata.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("create.frictionlessdata.io"),a("OutboundLink")],1),e._v(" was a good start for creating a first draft of the tableschema and datapackage but we missed a tool to collaborate with the researchers when describing a data set.")]),e._v(" "),a("h2",{attrs:{id:"what-specific-issues-are-you-looking-to-address-with-the-tool-fund"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-specific-issues-are-you-looking-to-address-with-the-tool-fund"}},[e._v("#")]),e._v(" What specific issues are you looking to address with the Tool Fund?")]),e._v(" "),a("p",[e._v("Collaboration between data managers and researchers needs to be as easy as possible for both sides. Currently there is no tool to collaboratively document tabular data and data packages easily. Using this tool the researcher will be able to enter the information in a controlled manner and the data manager will be able to give feedback on what’s missing or what needs to be changed through a common platform.")]),e._v(" "),a("p",[e._v("Hopefully this will lead to more productive use of time for both sides and having the data described with machine-readable Frictionless Data schemas will make it easier to validate, reuse and have consistent documentation. The tool will be based on "),a("a",{attrs:{href:"https://github.com/frictionlessdata/datapackage-ui",target:"_blank",rel:"noopener noreferrer"}},[e._v("datapackage-ui"),a("OutboundLink")],1),e._v(" for the frontend, allowing all those involved to collaborate on the metadata through a user-friendly UI. Django will be used for the backend and Docker will be used for installation and deployments.")]),e._v(" "),a("h2",{attrs:{id:"how-can-the-open-data-open-source-or-open-science-communities-engage-with-the-work-you-are-doing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-can-the-open-data-open-source-or-open-science-communities-engage-with-the-work-you-are-doing"}},[e._v("#")]),e._v(" How can the open data, open source, or open science communities engage with the work you are doing?")]),e._v(" "),a("p",[e._v("This project will be based on "),a("a",{attrs:{href:"https://github.com/frictionlessdata/datapackage-ui",target:"_blank",rel:"noopener noreferrer"}},[e._v("datapackage-ui"),a("OutboundLink")],1),e._v(" so using this tool and opening and fixing issues would be useful contributions to the project.")]),e._v(" "),a("p",[e._v("Feel free to submit issues, ideas and PR on the Github repository "),a("a",{attrs:{href:"https://github.com/frictionlessdata/schema-collaboration",target:"_blank",rel:"noopener noreferrer"}},[e._v("schema-collaboration"),a("OutboundLink")],1),e._v(" or "),a("a",{attrs:{href:"https://discord.com/invite/j9DNFNw",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),a("OutboundLink")],1),e._v(" and test the project on the staging deployment when available.")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/103.2f624d63.js b/assets/js/103.3bcdbc40.js similarity index 98% rename from assets/js/103.2f624d63.js rename to assets/js/103.3bcdbc40.js index e612be477..56fb5db1b 100644 --- a/assets/js/103.2f624d63.js +++ b/assets/js/103.3bcdbc40.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[103],{636:function(e,t,a){"use strict";a.r(t);var r=a(29),o=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[a("em",[e._v("As part of the Frictionless Data for Reproducible Research project, funded by the Sloan Foundation, we have started a Pilot collaboration with the Data Readiness Group at the Department of Engineering Science of the University of Oxford; the group will be represented by Dr. Philippe Rocca-Serra, an Associate Member of Faculty. This Pilot will focus on removing the friction in reported scientific experimental results by applying the Data Package specifications.")])]),e._v(" "),a("p",[e._v("Publishing of scientific experimental results is frequently done in ad-hoc ways that are seldom consistent. For example, results are often deposited as idiosyncratic sets of Excel files or tabular files that contain very little structure or description, making them difficult to use, understand and integrate. Interpreting such tables requires human expertise, which is both costly and slow, and leads to low reuse. Ambiguous tables of results can lead researchers to rerun analysis or computation over the raw data before they understand the published tables. This current approach is broken, does not fit users’ data mining workflows, and limits meta-analysis. A better procedure for organizing and structuring information would reduce unnecessary use of computational resources, which is where the Frictionless Data project comes into play. This Pilot collaboration aims to help researchers publish their results in a more structured, reusable way.")]),e._v(" "),a("p",[e._v("In this Pilot, we will use (and possibly extend) Frictionless "),a("a",{attrs:{href:"https://specs.frictionlessdata.io/tabular-data-package/",target:"_blank",rel:"noopener noreferrer"}},[e._v("tabular data packages"),a("OutboundLink")],1),e._v(" to devise both generic and specialized templates. These templates can be used to unambiguously report experimental results. Our short term goal from this work is to develop a set of Frictionless Data Packages for targeted use cases where impact is high. We will first focus first on creating templates for statistical comparison results, such as differential analysis, enrichment analysis, high-throughput screens, and univariate comparisons, in genomics research by using the "),a("a",{attrs:{href:"http://stato-ontology.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("STATO ontology"),a("OutboundLink")],1),e._v(" within tabular data packages.")]),e._v(" "),a("p",[e._v("Our longer term goals are that these templates will be incorporated into publishing systems to allow for more clear reporting of results, more knowledge extraction, and more reproducible science. For instance, we anticipate that this work will allow for increased consistency of table structure in publications, as well as increased data reuse owing to predictable syntax and layout. We also hope this work will ease creation of linked data graphs from table of results due to clarified semantics.")]),e._v(" "),a("p",[e._v("An additional goal is to create code that is compatible with R’s "),a("a",{attrs:{href:"https://ggplot2.tidyverse.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("ggplot2 library"),a("OutboundLink")],1),e._v(", which would allow for easy generation of data analysis plots. To this end, we plan on working with R developers in the future to create a package that will generate Frictionless Data compliant data packages.")]),e._v(" "),a("p",[e._v("This work has recently begun, and will continue throughout the year. We have already met with some challenges, such as working on ways to transform, or normalize, data and ways to incorporate RDF linked data (you can read our related "),a("a",{attrs:{href:"https://github.com/frictionlessdata/forum/issues/18",target:"_blank",rel:"noopener noreferrer"}},[e._v("conversations in GitHub"),a("OutboundLink")],1),e._v("). We are also working on how to define a ‘generic’ table layout definition, which is broad enough to be reused in as wide a range of situation as possible.")]),e._v(" "),a("p",[e._v("If you are interested in staying up to date on this work, we encourage you to check out these GitHub repositories: "),a("a",{attrs:{href:"https://gitlab.com/datascriptor/datascriptor-fldatapackages",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://gitlab.com/datascriptor/datascriptor-fldatapackages"),a("OutboundLink")],1),e._v(" and "),a("a",{attrs:{href:"https://github.com/ISA-tools/frictionless-collab",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/ISA-tools/frictionless-collab"),a("OutboundLink")],1),e._v(". Additionally, we will (virtually) be at the eLife Sprint in September to work on closely related work, which you can read about here: "),a("a",{attrs:{href:"https://sprint.elifesciences.org/data-paper-skeleton-tools-for-life-sciences/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://sprint.elifesciences.org/data-paper-skeleton-tools-for-life-sciences/"),a("OutboundLink")],1),e._v(". Throughout this Pilot, we are planning on reaching out to the community to test these ideas and get feedback. Please contact us on GitHub or in "),a("a",{attrs:{href:"https://discord.gg/2UgfM2k",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),a("OutboundLink")],1),e._v(" if you are interested in contributing.")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[103],{635:function(e,t,a){"use strict";a.r(t);var r=a(29),o=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[a("em",[e._v("As part of the Frictionless Data for Reproducible Research project, funded by the Sloan Foundation, we have started a Pilot collaboration with the Data Readiness Group at the Department of Engineering Science of the University of Oxford; the group will be represented by Dr. Philippe Rocca-Serra, an Associate Member of Faculty. This Pilot will focus on removing the friction in reported scientific experimental results by applying the Data Package specifications.")])]),e._v(" "),a("p",[e._v("Publishing of scientific experimental results is frequently done in ad-hoc ways that are seldom consistent. For example, results are often deposited as idiosyncratic sets of Excel files or tabular files that contain very little structure or description, making them difficult to use, understand and integrate. Interpreting such tables requires human expertise, which is both costly and slow, and leads to low reuse. Ambiguous tables of results can lead researchers to rerun analysis or computation over the raw data before they understand the published tables. This current approach is broken, does not fit users’ data mining workflows, and limits meta-analysis. A better procedure for organizing and structuring information would reduce unnecessary use of computational resources, which is where the Frictionless Data project comes into play. This Pilot collaboration aims to help researchers publish their results in a more structured, reusable way.")]),e._v(" "),a("p",[e._v("In this Pilot, we will use (and possibly extend) Frictionless "),a("a",{attrs:{href:"https://specs.frictionlessdata.io/tabular-data-package/",target:"_blank",rel:"noopener noreferrer"}},[e._v("tabular data packages"),a("OutboundLink")],1),e._v(" to devise both generic and specialized templates. These templates can be used to unambiguously report experimental results. Our short term goal from this work is to develop a set of Frictionless Data Packages for targeted use cases where impact is high. We will first focus first on creating templates for statistical comparison results, such as differential analysis, enrichment analysis, high-throughput screens, and univariate comparisons, in genomics research by using the "),a("a",{attrs:{href:"http://stato-ontology.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("STATO ontology"),a("OutboundLink")],1),e._v(" within tabular data packages.")]),e._v(" "),a("p",[e._v("Our longer term goals are that these templates will be incorporated into publishing systems to allow for more clear reporting of results, more knowledge extraction, and more reproducible science. For instance, we anticipate that this work will allow for increased consistency of table structure in publications, as well as increased data reuse owing to predictable syntax and layout. We also hope this work will ease creation of linked data graphs from table of results due to clarified semantics.")]),e._v(" "),a("p",[e._v("An additional goal is to create code that is compatible with R’s "),a("a",{attrs:{href:"https://ggplot2.tidyverse.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("ggplot2 library"),a("OutboundLink")],1),e._v(", which would allow for easy generation of data analysis plots. To this end, we plan on working with R developers in the future to create a package that will generate Frictionless Data compliant data packages.")]),e._v(" "),a("p",[e._v("This work has recently begun, and will continue throughout the year. We have already met with some challenges, such as working on ways to transform, or normalize, data and ways to incorporate RDF linked data (you can read our related "),a("a",{attrs:{href:"https://github.com/frictionlessdata/forum/issues/18",target:"_blank",rel:"noopener noreferrer"}},[e._v("conversations in GitHub"),a("OutboundLink")],1),e._v("). We are also working on how to define a ‘generic’ table layout definition, which is broad enough to be reused in as wide a range of situation as possible.")]),e._v(" "),a("p",[e._v("If you are interested in staying up to date on this work, we encourage you to check out these GitHub repositories: "),a("a",{attrs:{href:"https://gitlab.com/datascriptor/datascriptor-fldatapackages",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://gitlab.com/datascriptor/datascriptor-fldatapackages"),a("OutboundLink")],1),e._v(" and "),a("a",{attrs:{href:"https://github.com/ISA-tools/frictionless-collab",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/ISA-tools/frictionless-collab"),a("OutboundLink")],1),e._v(". Additionally, we will (virtually) be at the eLife Sprint in September to work on closely related work, which you can read about here: "),a("a",{attrs:{href:"https://sprint.elifesciences.org/data-paper-skeleton-tools-for-life-sciences/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://sprint.elifesciences.org/data-paper-skeleton-tools-for-life-sciences/"),a("OutboundLink")],1),e._v(". Throughout this Pilot, we are planning on reaching out to the community to test these ideas and get feedback. Please contact us on GitHub or in "),a("a",{attrs:{href:"https://discord.gg/2UgfM2k",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),a("OutboundLink")],1),e._v(" if you are interested in contributing.")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/104.ac4a2b95.js b/assets/js/104.5b006edc.js similarity index 98% rename from assets/js/104.ac4a2b95.js rename to assets/js/104.5b006edc.js index a691f3b69..f7ffdb8e3 100644 --- a/assets/js/104.ac4a2b95.js +++ b/assets/js/104.5b006edc.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[104],{634:function(e,t,a){"use strict";a.r(t);var o=a(29),s=Object(o.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[a("em",[e._v("This grantee profile features Stephen Eglen for our series of Frictionless Data Tool Fund posts, written to shine a light on Frictionless Data’s Tool Fund grantees, their work and to let our technical community know how they can get involved.")])]),e._v(" "),a("h2",{attrs:{id:"meet-stephen-eglen"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#meet-stephen-eglen"}},[e._v("#")]),e._v(" Meet Stephen Eglen")]),e._v(" "),a("p",[e._v("I am a Reader in Computational Neuroscience at the University of Cambridge. A large part of my work involves analysing neuronal recordings taken from high-throughput recording devices, such as multi-electrode arrays. Despite these arrays having been in use for many years, there are still no standard formats for exchanging data, and so we spend lots of time simply reformatting data as we pass it around different groups, or use different analysis "),a("a",{attrs:{href:"https://doi.org/10.1186/2047-217X-3-3",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://doi.org/10.1186/2047-217X-3-3"),a("OutboundLink")],1),e._v(") used HDF5; the aim of our current project is to evaluate the use of Frictionless Data as a common format for the analysis of our spontaneous activity recordings, both past and present. The bulk of the work this summer will be done by a talented Natural Science undergraduate at Cambridge, Alexander Shtyrov.")]),e._v(" "),a("h2",{attrs:{id:"how-did-you-first-hear-about-frictionless-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-did-you-first-hear-about-frictionless-data"}},[e._v("#")]),e._v(" How did you first hear about Frictionless Data?")]),e._v(" "),a("p",[e._v("I had the good fortune to meet Dr Rufus Pollock in 2015 at a scientific meeting where I was presenting our work from 2014 and he was presenting an introduction to Frictionless Data. We then developed a case study (circa 2016) using a simpler data set (the spatial distribution of neurons in the retina). Skipping forward a few years, I saw the call for applications from Frictionless Data and decided it might be a good time to see how the project had developed. Rather than developing further tools, after discussions with the Frictionless Data team, we decided to make a case study for the application of these tools.")]),e._v(" "),a("h2",{attrs:{id:"what-specific-issues-are-you-looking-to-address-with-the-tool-fund"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-specific-issues-are-you-looking-to-address-with-the-tool-fund"}},[e._v("#")]),e._v(" What specific issues are you looking to address with the Tool Fund?")]),e._v(" "),a("p",[e._v("Our goals are:")]),e._v(" "),a("ol",[a("li",[e._v("Convert our existing datasets (Eglen et al 2014) into Frictionless Data containers.")]),e._v(" "),a("li",[e._v("Compare the relative merits of the containers vs HDF5 for storing “medium-sized” (megabytes, rather than gigabytes) data files. Aspects to consider will include portability, efficiency and ease of access.")]),e._v(" "),a("li",[e._v("Develop a case study for analysing spontaneous activity patterns with a generative approach to model the underlying neuronal networks. This code has been developed by colleagues at Cambridge in Matlab, but has yet to be tested on our spontaneous activity patterns.")]),e._v(" "),a("li",[e._v("Write up our findings for publication in a peer-reviewed journal.")])]),e._v(" "),a("h2",{attrs:{id:"how-can-the-open-data-open-source-or-open-science-communities-engage-with-the-work-you-are-doing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-can-the-open-data-open-source-or-open-science-communities-engage-with-the-work-you-are-doing"}},[e._v("#")]),e._v(" How can the open data, open source, or open science communities engage with the work you are doing?")]),e._v(" "),a("p",[e._v("We have a GitHub repository, but it is currently private (shared also with Frictionless Data) as it contains some recent datasets relating to human patients that are not yet ready to be shared. We hope to release it as soon as we can, where it will be linked to from my home page: "),a("a",{attrs:{href:"https://sje30.github.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://sje30.github.io"),a("OutboundLink")],1),e._v(". We aim to share all our findings from this project for the benefit of the community.")])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[104],{633:function(e,t,a){"use strict";a.r(t);var o=a(29),s=Object(o.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[a("em",[e._v("This grantee profile features Stephen Eglen for our series of Frictionless Data Tool Fund posts, written to shine a light on Frictionless Data’s Tool Fund grantees, their work and to let our technical community know how they can get involved.")])]),e._v(" "),a("h2",{attrs:{id:"meet-stephen-eglen"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#meet-stephen-eglen"}},[e._v("#")]),e._v(" Meet Stephen Eglen")]),e._v(" "),a("p",[e._v("I am a Reader in Computational Neuroscience at the University of Cambridge. A large part of my work involves analysing neuronal recordings taken from high-throughput recording devices, such as multi-electrode arrays. Despite these arrays having been in use for many years, there are still no standard formats for exchanging data, and so we spend lots of time simply reformatting data as we pass it around different groups, or use different analysis "),a("a",{attrs:{href:"https://doi.org/10.1186/2047-217X-3-3",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://doi.org/10.1186/2047-217X-3-3"),a("OutboundLink")],1),e._v(") used HDF5; the aim of our current project is to evaluate the use of Frictionless Data as a common format for the analysis of our spontaneous activity recordings, both past and present. The bulk of the work this summer will be done by a talented Natural Science undergraduate at Cambridge, Alexander Shtyrov.")]),e._v(" "),a("h2",{attrs:{id:"how-did-you-first-hear-about-frictionless-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-did-you-first-hear-about-frictionless-data"}},[e._v("#")]),e._v(" How did you first hear about Frictionless Data?")]),e._v(" "),a("p",[e._v("I had the good fortune to meet Dr Rufus Pollock in 2015 at a scientific meeting where I was presenting our work from 2014 and he was presenting an introduction to Frictionless Data. We then developed a case study (circa 2016) using a simpler data set (the spatial distribution of neurons in the retina). Skipping forward a few years, I saw the call for applications from Frictionless Data and decided it might be a good time to see how the project had developed. Rather than developing further tools, after discussions with the Frictionless Data team, we decided to make a case study for the application of these tools.")]),e._v(" "),a("h2",{attrs:{id:"what-specific-issues-are-you-looking-to-address-with-the-tool-fund"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-specific-issues-are-you-looking-to-address-with-the-tool-fund"}},[e._v("#")]),e._v(" What specific issues are you looking to address with the Tool Fund?")]),e._v(" "),a("p",[e._v("Our goals are:")]),e._v(" "),a("ol",[a("li",[e._v("Convert our existing datasets (Eglen et al 2014) into Frictionless Data containers.")]),e._v(" "),a("li",[e._v("Compare the relative merits of the containers vs HDF5 for storing “medium-sized” (megabytes, rather than gigabytes) data files. Aspects to consider will include portability, efficiency and ease of access.")]),e._v(" "),a("li",[e._v("Develop a case study for analysing spontaneous activity patterns with a generative approach to model the underlying neuronal networks. This code has been developed by colleagues at Cambridge in Matlab, but has yet to be tested on our spontaneous activity patterns.")]),e._v(" "),a("li",[e._v("Write up our findings for publication in a peer-reviewed journal.")])]),e._v(" "),a("h2",{attrs:{id:"how-can-the-open-data-open-source-or-open-science-communities-engage-with-the-work-you-are-doing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-can-the-open-data-open-source-or-open-science-communities-engage-with-the-work-you-are-doing"}},[e._v("#")]),e._v(" How can the open data, open source, or open science communities engage with the work you are doing?")]),e._v(" "),a("p",[e._v("We have a GitHub repository, but it is currently private (shared also with Frictionless Data) as it contains some recent datasets relating to human patients that are not yet ready to be shared. We hope to release it as soon as we can, where it will be linked to from my home page: "),a("a",{attrs:{href:"https://sje30.github.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://sje30.github.io"),a("OutboundLink")],1),e._v(". We aim to share all our findings from this project for the benefit of the community.")])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/105.80399967.js b/assets/js/105.47d55397.js similarity index 99% rename from assets/js/105.80399967.js rename to assets/js/105.47d55397.js index 9ea025c94..e72caad44 100644 --- a/assets/js/105.80399967.js +++ b/assets/js/105.47d55397.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[105],{637:function(e,t,a){"use strict";a.r(t);var o=a(29),r=Object(o.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[a("em",[e._v("This grantee profile features Simon Tyrrell, Xingdong Bian, and Robert Davey for our series of Frictionless Data Tool Fund posts, written to shine a light on Frictionless Data’s Tool Fund grantees, their work and to let our technical community know how they can get involved.")])]),e._v(" "),a("h2",{attrs:{id:"meet-the-grassroots-team"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#meet-the-grassroots-team"}},[e._v("#")]),e._v(" Meet the Grassroots team")]),e._v(" "),a("p",[e._v("Hi I’m Simon Tyrrell and I’m a research software engineer having spent most of my career in academia. My first degree was in Maths and I did my PhD in Cheminformatics, both done at the University of Sheffield. After some postdoctoral fellowships in Computational Chemistry, I now happily reside in the field of Bioinformatics here at the Earlham Institute (EI) writing software to a diet of tea and loud guitars, both listened to and played.")]),e._v(" "),a("p",[e._v("Xingdong Bian is a member of the "),a("a",{attrs:{href:"http://www.earlham.ac.uk/davey-group",target:"_blank",rel:"noopener noreferrer"}},[e._v("Data Infrastructure group"),a("OutboundLink")],1),e._v(", he joined the Earlham Institute in January 2010 and was involved in the development of EI’s Laboratory Information Management System (MISO) and the TGAC Browser. He has worked on solutions for data visualisation, managing servers, genomic databases and bioinformatics tools. Xingdong is now working mainly on the Grassroots project as a research software engineer. He has a BSc in Computer Science from the University of Sheffield and a MSc in Software Engineering from the University of York.")]),e._v(" "),a("p",[e._v("Robert Davey leads the Data Infrastructure group at the Earlham Institute and is the PI for the Grassroots project. He has a PhD in Computer Science from the University of East Anglia, undertaken at the Roberts lab in the "),a("a",{attrs:{href:"http://www.ncyc.co.uk",target:"_blank",rel:"noopener noreferrer"}},[e._v("National Collection of Yeast Cultures"),a("OutboundLink")],1),e._v(". Rob leads a number of large computing infrastructure development and deployment projects, is a certified "),a("a",{attrs:{href:"https://software-carpentry.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("Software Carpentry"),a("OutboundLink")],1),e._v(" Instructor and Trainer, an editorial board member for Nature Scientific Data, and a "),a("a",{attrs:{href:"https://www.software.ac.uk",target:"_blank",rel:"noopener noreferrer"}},[e._v("Software Sustainability Institute"),a("OutboundLink")],1),e._v(" Fellow.")]),e._v(" "),a("p",[e._v("Together Xingdong and I work in Robert Davey’s team at the Earlham Institute developing Grassroots. This is a set of middleware tools for sharing bioinformatics data and services so that users and developers can do scientific analyses as easily as possible.")]),e._v(" "),a("h2",{attrs:{id:"how-did-you-first-hear-about-frictionless-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-did-you-first-hear-about-frictionless-data"}},[e._v("#")]),e._v(" How did you first hear about Frictionless Data?")]),e._v(" "),a("p",[e._v("We have always been big believers in the FAIR data principles and when we saw a tweet about the Frictionless Data tool fund, the more that we read about it, the more it seemed to be exactly what we were after! Even without the fund, it is likely to have been something that we would have looked to implement anyway.")]),e._v(" "),a("h2",{attrs:{id:"what-specific-issues-are-you-looking-to-address-with-the-tool-fund"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-specific-issues-are-you-looking-to-address-with-the-tool-fund"}},[e._v("#")]),e._v(" What specific issues are you looking to address with the Tool Fund?")]),e._v(" "),a("p",[e._v("As part of the Designing Future Wheat (DFW) project, we currently have two different repositories: the "),a("a",{attrs:{href:"https://opendata.earlham.ac.uk/",target:"_blank",rel:"noopener noreferrer"}},[e._v("DFW data portal"),a("OutboundLink")],1),e._v(", using "),a("a",{attrs:{href:"https://irods.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("iRODS"),a("OutboundLink")],1),e._v(" with "),a("a",{attrs:{href:"https://github.com/billyfish/eirods-dav",target:"_blank",rel:"noopener noreferrer"}},[e._v("mod_eirods_dav"),a("OutboundLink")],1),e._v(", and a "),a("a",{attrs:{href:"https://ckan.grassroots.tools/",target:"_blank",rel:"noopener noreferrer"}},[e._v("digital repository"),a("OutboundLink")],1),e._v(" using "),a("a",{attrs:{href:"https://ckan.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("CKAN"),a("OutboundLink")],1),e._v(". Both of these contain a wide variety of heterogeneous data such as genetic sequences, field trial experiment results, images, spreadsheets, publications, etc., and we are trying to standardise how to expose these datasets and their associated metadata. This is where Frictionless Data comes in! The ability to have consistent methods of accessing this information should make it easier for other researchers and data scientists to access and do some great work with all of this data.")]),e._v(" "),a("h2",{attrs:{id:"how-can-the-open-data-open-source-or-open-science-communities-engage-with-the-work-you-are-doing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-can-the-open-data-open-source-or-open-science-communities-engage-with-the-work-you-are-doing"}},[e._v("#")]),e._v(" How can the open data, open source, or open science communities engage with the work you are doing?")]),e._v(" "),a("p",[e._v("We firmly believe in open source and open data and everything that we create is freely available. We plan to build a selection of Frictionless Data tools and make them available on our existing data portals so people can try them out and give any feedback. These will be rolled out incrementally so that progress is visible from early on. Our initial set of work will focus on extending the DFW data portal that uses one of our existing tools, eirods-dav ("),a("a",{attrs:{href:"https://github.com/billyfish/eirods-dav",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/billyfish/eirods-dav"),a("OutboundLink")],1),e._v(") which is a tool for exposing the data in an iRODS repository in a user-friendly way with rich APIs for developers and data scientists too. So if anyone has any feedback, ideas, suggestions, rants 😃, please raise an issue at the GitHub repo; the more, the merrier!")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[105],{636:function(e,t,a){"use strict";a.r(t);var o=a(29),r=Object(o.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[a("em",[e._v("This grantee profile features Simon Tyrrell, Xingdong Bian, and Robert Davey for our series of Frictionless Data Tool Fund posts, written to shine a light on Frictionless Data’s Tool Fund grantees, their work and to let our technical community know how they can get involved.")])]),e._v(" "),a("h2",{attrs:{id:"meet-the-grassroots-team"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#meet-the-grassroots-team"}},[e._v("#")]),e._v(" Meet the Grassroots team")]),e._v(" "),a("p",[e._v("Hi I’m Simon Tyrrell and I’m a research software engineer having spent most of my career in academia. My first degree was in Maths and I did my PhD in Cheminformatics, both done at the University of Sheffield. After some postdoctoral fellowships in Computational Chemistry, I now happily reside in the field of Bioinformatics here at the Earlham Institute (EI) writing software to a diet of tea and loud guitars, both listened to and played.")]),e._v(" "),a("p",[e._v("Xingdong Bian is a member of the "),a("a",{attrs:{href:"http://www.earlham.ac.uk/davey-group",target:"_blank",rel:"noopener noreferrer"}},[e._v("Data Infrastructure group"),a("OutboundLink")],1),e._v(", he joined the Earlham Institute in January 2010 and was involved in the development of EI’s Laboratory Information Management System (MISO) and the TGAC Browser. He has worked on solutions for data visualisation, managing servers, genomic databases and bioinformatics tools. Xingdong is now working mainly on the Grassroots project as a research software engineer. He has a BSc in Computer Science from the University of Sheffield and a MSc in Software Engineering from the University of York.")]),e._v(" "),a("p",[e._v("Robert Davey leads the Data Infrastructure group at the Earlham Institute and is the PI for the Grassroots project. He has a PhD in Computer Science from the University of East Anglia, undertaken at the Roberts lab in the "),a("a",{attrs:{href:"http://www.ncyc.co.uk",target:"_blank",rel:"noopener noreferrer"}},[e._v("National Collection of Yeast Cultures"),a("OutboundLink")],1),e._v(". Rob leads a number of large computing infrastructure development and deployment projects, is a certified "),a("a",{attrs:{href:"https://software-carpentry.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("Software Carpentry"),a("OutboundLink")],1),e._v(" Instructor and Trainer, an editorial board member for Nature Scientific Data, and a "),a("a",{attrs:{href:"https://www.software.ac.uk",target:"_blank",rel:"noopener noreferrer"}},[e._v("Software Sustainability Institute"),a("OutboundLink")],1),e._v(" Fellow.")]),e._v(" "),a("p",[e._v("Together Xingdong and I work in Robert Davey’s team at the Earlham Institute developing Grassroots. This is a set of middleware tools for sharing bioinformatics data and services so that users and developers can do scientific analyses as easily as possible.")]),e._v(" "),a("h2",{attrs:{id:"how-did-you-first-hear-about-frictionless-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-did-you-first-hear-about-frictionless-data"}},[e._v("#")]),e._v(" How did you first hear about Frictionless Data?")]),e._v(" "),a("p",[e._v("We have always been big believers in the FAIR data principles and when we saw a tweet about the Frictionless Data tool fund, the more that we read about it, the more it seemed to be exactly what we were after! Even without the fund, it is likely to have been something that we would have looked to implement anyway.")]),e._v(" "),a("h2",{attrs:{id:"what-specific-issues-are-you-looking-to-address-with-the-tool-fund"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-specific-issues-are-you-looking-to-address-with-the-tool-fund"}},[e._v("#")]),e._v(" What specific issues are you looking to address with the Tool Fund?")]),e._v(" "),a("p",[e._v("As part of the Designing Future Wheat (DFW) project, we currently have two different repositories: the "),a("a",{attrs:{href:"https://opendata.earlham.ac.uk/",target:"_blank",rel:"noopener noreferrer"}},[e._v("DFW data portal"),a("OutboundLink")],1),e._v(", using "),a("a",{attrs:{href:"https://irods.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("iRODS"),a("OutboundLink")],1),e._v(" with "),a("a",{attrs:{href:"https://github.com/billyfish/eirods-dav",target:"_blank",rel:"noopener noreferrer"}},[e._v("mod_eirods_dav"),a("OutboundLink")],1),e._v(", and a "),a("a",{attrs:{href:"https://ckan.grassroots.tools/",target:"_blank",rel:"noopener noreferrer"}},[e._v("digital repository"),a("OutboundLink")],1),e._v(" using "),a("a",{attrs:{href:"https://ckan.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("CKAN"),a("OutboundLink")],1),e._v(". Both of these contain a wide variety of heterogeneous data such as genetic sequences, field trial experiment results, images, spreadsheets, publications, etc., and we are trying to standardise how to expose these datasets and their associated metadata. This is where Frictionless Data comes in! The ability to have consistent methods of accessing this information should make it easier for other researchers and data scientists to access and do some great work with all of this data.")]),e._v(" "),a("h2",{attrs:{id:"how-can-the-open-data-open-source-or-open-science-communities-engage-with-the-work-you-are-doing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-can-the-open-data-open-source-or-open-science-communities-engage-with-the-work-you-are-doing"}},[e._v("#")]),e._v(" How can the open data, open source, or open science communities engage with the work you are doing?")]),e._v(" "),a("p",[e._v("We firmly believe in open source and open data and everything that we create is freely available. We plan to build a selection of Frictionless Data tools and make them available on our existing data portals so people can try them out and give any feedback. These will be rolled out incrementally so that progress is visible from early on. Our initial set of work will focus on extending the DFW data portal that uses one of our existing tools, eirods-dav ("),a("a",{attrs:{href:"https://github.com/billyfish/eirods-dav",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/billyfish/eirods-dav"),a("OutboundLink")],1),e._v(") which is a tool for exposing the data in an iRODS repository in a user-friendly way with rich APIs for developers and data scientists too. So if anyone has any feedback, ideas, suggestions, rants 😃, please raise an issue at the GitHub repo; the more, the merrier!")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/107.614f6bd7.js b/assets/js/107.59014df2.js similarity index 99% rename from assets/js/107.614f6bd7.js rename to assets/js/107.59014df2.js index d5a1417ce..68a658a91 100644 --- a/assets/js/107.614f6bd7.js +++ b/assets/js/107.59014df2.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[107],{639:function(e,t,a){"use strict";a.r(t);var r=a(29),n=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[e._v("We are very excited to introduce the newest Fellows for Cohort 2 of the Frictionless Data "),a("a",{attrs:{href:"https://fellows.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Reproducible Research Fellows Programme"),a("OutboundLink")],1),e._v("! Over the next nine months, these eight early career researchers will be learning about open science, data management, and how to use Frictionless Data tooling in their work to make their data more open and their research more reusable. As an introduction, each Fellow has written a short blog about themselves and their goals. Read below to meet the Fellows and click on their individual blogs to learn more about them!")]),e._v(" "),a("hr"),e._v(" "),a("img",{attrs:{src:"/img/blog/katerina-fellow.jpg",alt:"Katerina picture",width:"100px",align:"right"}}),e._v(" "),a("p",[a("strong",[e._v("Hi everyone, my name is Katerina Drakoulaki")]),e._v(", I am from Greece and Cyprus, and I’m currently doing my PhD at the National and Kapodistrian University of Athens. My PhD combines all my interests: linguistics, language disorders, music cognition, and working with children! Research reproducibility is important in order to reliably identify and provide intervention to children with difficulties. Read more about "),a("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/hello-katerina/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Katerina here."),a("OutboundLink")],1)]),e._v(" "),a("hr"),e._v(" "),a("img",{attrs:{src:"/img/blog/evelyn-fellow.jpg",alt:"Evelyn picture",width:"100px",align:"right"}}),e._v(" "),a("p",[a("strong",[e._v("Hello everybody! I’m Evelyn Night")]),e._v(", an MSc student at the "),a("a",{attrs:{href:"https://www.uonbi.ac.ke/",target:"_blank",rel:"noopener noreferrer"}},[e._v("University of Nairobi"),a("OutboundLink")],1),e._v(" and a research fellow at the "),a("a",{attrs:{href:"http://www.icipe.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("International Center of Insect Physiology and Ecology"),a("OutboundLink")],1),e._v(". Growing up in a tiny village in Kano plains of Western Kenya, I always had a passion for learning. Fast forward through the years I find my way into academia pursuing a master’s degree and characterizing insect pollinator communities using morphometric and molecular tools for my thesis. My goal is to improve agricultural research capacity in the country and to also enhance formation of policies that would ensure increase in agricultural productivity. Read more about "),a("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/hello-evelyn/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Evelyn here."),a("OutboundLink")],1)]),e._v(" "),a("hr"),e._v(" "),a("img",{attrs:{src:"/img/blog/dani-fellow.png",alt:"Dani picture",width:"100px",align:"right"}}),e._v(" "),a("p",[a("strong",[e._v("Hi everyone! I’m Dani")]),e._v(", a cognitive neuroscientist and open science enthusiast. I live and work in San Sebastian, a beautiful city by the sea in northern Spain. We have a responsibility to overcome the current incentive system in the Academy to provide more honest, accessible, and quality research. I look forward to learning more about Frictionless Data tools and incorporating them into my work so that my research is open to everyone. Read more about "),a("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/hello-dani/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Dani here."),a("OutboundLink")],1)]),e._v(" "),a("hr"),e._v(" "),a("img",{attrs:{src:"/img/blog/kate-fellow.png",alt:"Kate picture",width:"100px",align:"right"}}),e._v(" "),a("p",[a("strong",[e._v("Hello hi! I’m Kate Bowie")]),e._v(", a 28-year-old midwesterner studying the human microbiome, or the collection of bacteria that live in and on the human body. As I dive deeper into the field of microbiome science, I am becoming an advocate for putting resources and time into improving research reproducibility. I wanted to become a Frictionless Fellow so that I could learn tools to help microbiome science data workflows become more reproducible and engage in the open science community. Read more about "),a("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/hello-kate/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Kate here."),a("OutboundLink")],1)]),e._v(" "),a("hr"),e._v(" "),a("img",{attrs:{src:"/img/blog/sam-fellow.jpeg",alt:"Sam picture",width:"100px",align:"right"}}),e._v(" "),a("p",[a("strong",[e._v("Hello! My name is Sam Wilairat.")]),e._v(" I am currently earning a Master of Library and Information Science degree (MLIS) and have an interest in data librarianship. As a fellow, I’m hoping to learn frictionless data principles and tools to ultimately promote them at my institution via education and outreach to researchers. I believe Open Science is the future and the more people embrace it, the more equitable and innovative research will be! Read more about "),a("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/hello-sam/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Sam here."),a("OutboundLink")],1)]),e._v(" "),a("hr"),e._v(" "),a("img",{attrs:{src:"/img/blog/anne-fellow.png",alt:"Anne picture",width:"100px",align:"right"}}),e._v(" "),a("p",[a("strong",[e._v("Hey everyone, I’m Anne!")]),e._v(" I’m a graduate student based in Geneva, Switzerland that was born and bred in a few places across the United States (including New York, Chicago, Houston, and Washington DC!). Here in Switzerland, I study international institutions with the eye of an anthropologist or sociologist, through long-term ethnographic research. I’m excited to learn how to apply the Frictionless Data tools in my work throughout these nine months, and to experiment with new forms of conveying social science research in the process.")]),e._v(" "),a("hr"),e._v(" "),a("img",{attrs:{src:"/img/blog/ritwik-fellow.png",alt:"Ritwik picture",height:"100px",align:"right"}}),e._v(" "),a("p",[a("strong",[e._v("Hi Ritwik here!")]),e._v(" I am based near Delhi, India and am doing my masters in Sustainable buildings, Energy conservation and Climate Change from International Institute of Information Technology Hyderabad. It is very important that the research which is carried in this domain is reproducible and available to all so we can use it to spread awareness among people. Read more about "),a("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/hello-ritwik/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ritwik here."),a("OutboundLink")],1)]),e._v(" "),a("hr"),e._v(" "),a("img",{attrs:{src:"/img/blog/jacqueline-fellow.jpg",alt:"Jacqueline picture",width:"100px",align:"right"}}),e._v(" "),a("p",[a("strong",[e._v("Hi! My name is Jacqueline.")]),e._v(" I am a Master’s Candidate and Interdisciplinary Innovation Fellow in the Department of Computer and Information Science at the University of Pennsylvania. I applied to be a Reproducible Research Fellow to build space into my research process for actively exploring open science and reproducibility issues. As a scientist, I consider it an obligation to share my knowledge as widely and freely as possible and to ensure that my findings can be vetted through replication studies and other important checks. Read more about "),a("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/hello-jacqueline/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Jacqueline here."),a("OutboundLink")],1)])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[107],{637:function(e,t,a){"use strict";a.r(t);var r=a(29),n=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[e._v("We are very excited to introduce the newest Fellows for Cohort 2 of the Frictionless Data "),a("a",{attrs:{href:"https://fellows.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Reproducible Research Fellows Programme"),a("OutboundLink")],1),e._v("! Over the next nine months, these eight early career researchers will be learning about open science, data management, and how to use Frictionless Data tooling in their work to make their data more open and their research more reusable. As an introduction, each Fellow has written a short blog about themselves and their goals. Read below to meet the Fellows and click on their individual blogs to learn more about them!")]),e._v(" "),a("hr"),e._v(" "),a("img",{attrs:{src:"/img/blog/katerina-fellow.jpg",alt:"Katerina picture",width:"100px",align:"right"}}),e._v(" "),a("p",[a("strong",[e._v("Hi everyone, my name is Katerina Drakoulaki")]),e._v(", I am from Greece and Cyprus, and I’m currently doing my PhD at the National and Kapodistrian University of Athens. My PhD combines all my interests: linguistics, language disorders, music cognition, and working with children! Research reproducibility is important in order to reliably identify and provide intervention to children with difficulties. Read more about "),a("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/hello-katerina/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Katerina here."),a("OutboundLink")],1)]),e._v(" "),a("hr"),e._v(" "),a("img",{attrs:{src:"/img/blog/evelyn-fellow.jpg",alt:"Evelyn picture",width:"100px",align:"right"}}),e._v(" "),a("p",[a("strong",[e._v("Hello everybody! I’m Evelyn Night")]),e._v(", an MSc student at the "),a("a",{attrs:{href:"https://www.uonbi.ac.ke/",target:"_blank",rel:"noopener noreferrer"}},[e._v("University of Nairobi"),a("OutboundLink")],1),e._v(" and a research fellow at the "),a("a",{attrs:{href:"http://www.icipe.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("International Center of Insect Physiology and Ecology"),a("OutboundLink")],1),e._v(". Growing up in a tiny village in Kano plains of Western Kenya, I always had a passion for learning. Fast forward through the years I find my way into academia pursuing a master’s degree and characterizing insect pollinator communities using morphometric and molecular tools for my thesis. My goal is to improve agricultural research capacity in the country and to also enhance formation of policies that would ensure increase in agricultural productivity. Read more about "),a("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/hello-evelyn/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Evelyn here."),a("OutboundLink")],1)]),e._v(" "),a("hr"),e._v(" "),a("img",{attrs:{src:"/img/blog/dani-fellow.png",alt:"Dani picture",width:"100px",align:"right"}}),e._v(" "),a("p",[a("strong",[e._v("Hi everyone! I’m Dani")]),e._v(", a cognitive neuroscientist and open science enthusiast. I live and work in San Sebastian, a beautiful city by the sea in northern Spain. We have a responsibility to overcome the current incentive system in the Academy to provide more honest, accessible, and quality research. I look forward to learning more about Frictionless Data tools and incorporating them into my work so that my research is open to everyone. Read more about "),a("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/hello-dani/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Dani here."),a("OutboundLink")],1)]),e._v(" "),a("hr"),e._v(" "),a("img",{attrs:{src:"/img/blog/kate-fellow.png",alt:"Kate picture",width:"100px",align:"right"}}),e._v(" "),a("p",[a("strong",[e._v("Hello hi! I’m Kate Bowie")]),e._v(", a 28-year-old midwesterner studying the human microbiome, or the collection of bacteria that live in and on the human body. As I dive deeper into the field of microbiome science, I am becoming an advocate for putting resources and time into improving research reproducibility. I wanted to become a Frictionless Fellow so that I could learn tools to help microbiome science data workflows become more reproducible and engage in the open science community. Read more about "),a("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/hello-kate/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Kate here."),a("OutboundLink")],1)]),e._v(" "),a("hr"),e._v(" "),a("img",{attrs:{src:"/img/blog/sam-fellow.jpeg",alt:"Sam picture",width:"100px",align:"right"}}),e._v(" "),a("p",[a("strong",[e._v("Hello! My name is Sam Wilairat.")]),e._v(" I am currently earning a Master of Library and Information Science degree (MLIS) and have an interest in data librarianship. As a fellow, I’m hoping to learn frictionless data principles and tools to ultimately promote them at my institution via education and outreach to researchers. I believe Open Science is the future and the more people embrace it, the more equitable and innovative research will be! Read more about "),a("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/hello-sam/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Sam here."),a("OutboundLink")],1)]),e._v(" "),a("hr"),e._v(" "),a("img",{attrs:{src:"/img/blog/anne-fellow.png",alt:"Anne picture",width:"100px",align:"right"}}),e._v(" "),a("p",[a("strong",[e._v("Hey everyone, I’m Anne!")]),e._v(" I’m a graduate student based in Geneva, Switzerland that was born and bred in a few places across the United States (including New York, Chicago, Houston, and Washington DC!). Here in Switzerland, I study international institutions with the eye of an anthropologist or sociologist, through long-term ethnographic research. I’m excited to learn how to apply the Frictionless Data tools in my work throughout these nine months, and to experiment with new forms of conveying social science research in the process.")]),e._v(" "),a("hr"),e._v(" "),a("img",{attrs:{src:"/img/blog/ritwik-fellow.png",alt:"Ritwik picture",height:"100px",align:"right"}}),e._v(" "),a("p",[a("strong",[e._v("Hi Ritwik here!")]),e._v(" I am based near Delhi, India and am doing my masters in Sustainable buildings, Energy conservation and Climate Change from International Institute of Information Technology Hyderabad. It is very important that the research which is carried in this domain is reproducible and available to all so we can use it to spread awareness among people. Read more about "),a("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/hello-ritwik/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ritwik here."),a("OutboundLink")],1)]),e._v(" "),a("hr"),e._v(" "),a("img",{attrs:{src:"/img/blog/jacqueline-fellow.jpg",alt:"Jacqueline picture",width:"100px",align:"right"}}),e._v(" "),a("p",[a("strong",[e._v("Hi! My name is Jacqueline.")]),e._v(" I am a Master’s Candidate and Interdisciplinary Innovation Fellow in the Department of Computer and Information Science at the University of Pennsylvania. I applied to be a Reproducible Research Fellow to build space into my research process for actively exploring open science and reproducibility issues. As a scientist, I consider it an obligation to share my knowledge as widely and freely as possible and to ensure that my findings can be vetted through replication studies and other important checks. Read more about "),a("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/hello-jacqueline/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Jacqueline here."),a("OutboundLink")],1)])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/108.8c0974df.js b/assets/js/108.910b9905.js similarity index 99% rename from assets/js/108.8c0974df.js rename to assets/js/108.910b9905.js index 66d0d6140..1019b1330 100644 --- a/assets/js/108.8c0974df.js +++ b/assets/js/108.910b9905.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[108],{640:function(e,t,a){"use strict";a.r(t);var o=a(29),i=Object(o.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[a("em",[e._v("This grantee profile features Asura for our series of Frictionless Data Tool Fund posts, written to shine a light on Frictionless Data’s Tool Fund grantees, their work and to let our technical community know how they can get involved.")])]),e._v(" "),a("h2",{attrs:{id:"meet-asura"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#meet-asura"}},[e._v("#")]),e._v(" Meet Asura")]),e._v(" "),a("p",[e._v("Hallihallöchen meine Lieben!")]),e._v(" "),a("p",[e._v("I’m Asura and I’m a doctoral student at Simon Fraser University, Vancouver. I’m working in the muddy area between data science, communication, and philosophy in order to explore questions of power and systemic inequality within scholarly communication. This means that I work at the ScholCommLab as a data scientist, while exploring the philosophical issues in my doctoral project. Concretely, I am intending to develop an analytic framework for the study citations as infrastructure building on critical feminist theory and Science and Technology Studies (STS). However, I remain a coder and tinkerer at heart, which is how I ended up working with Frictionless Data on Metrics in Context.")]),e._v(" "),a("h2",{attrs:{id:"how-did-you-first-hear-about-frictionless-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-did-you-first-hear-about-frictionless-data"}},[e._v("#")]),e._v(" How did you first hear about Frictionless Data?")]),e._v(" "),a("p",[e._v("I first heard about Frictionless Data at the pre-csv,conf,v4 meetup hosted by Open Knowledge Foundation in 2019. I remember being quite impressed by the basic premise of Frictionless, although I hadn’t grasped the full picture of the technicalities yet. During the main conference I then learnt about more opportunities to get involved such as the Fellowship and the Tool Fund. I left csv,conf with great impressions and plans to work out an application but then life a.k.a my PhD happened… I had forgotten about Frictionless Data, until I recently found out that the Tool Fund is going into its second round. At the time I had started working with the Make Data Count team on data citations, then ideas and topics fell into place, and here I am now!")]),e._v(" "),a("h2",{attrs:{id:"what-specific-issues-are-you-looking-to-address-with-the-tool-fund"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-specific-issues-are-you-looking-to-address-with-the-tool-fund"}},[e._v("#")]),e._v(" What specific issues are you looking to address with the Tool Fund?")]),e._v(" "),a("p",[e._v("In this project, I want to address a common theme within the critique of modern technology in our data-driven world: the lack of context for data and, often related, biases in databases. Algorithmic and database biases have moved into the spotlight of critical thought on how technology exacerbates systemic inequalities. Following these insights, I want to address the need for different (rather than simply more) context and metadata for scholarly metrics in the face of racial, gender, and geographic biases which plague modern academia.")]),e._v(" "),a("p",[e._v("It isn’t controversial to say that scholarly metrics have become an integral part of scholarship and probably they are here to stay. Controversy usually comes into play once we discuss how and for which purposes metrics are used. This typically refers to the (mis)use of citation counts and citation-based indicators"),a("sup",[e._v("1")]),e._v(" for research assessment and governance, which also led to a considerable number of initiatives and movements calling for a responsible use of metrics"),a("sup",[e._v("2")]),e._v(". However, I would like to take a step back and redirect the attention to the origin of the data underlying citation counts.")]),e._v(" "),a("p",[e._v("These conversations about the inherent biases of citation databases are not entirely new and scholars across disciplines have been highlighting the consequential systemic issues. However, in this project I am not proposing a solution to overcome or abolish these biases per se, but rather I want to shine light on the opaque mechanism of capturing metrics which lead to the aforementioned inequalities. In other words, I propose to develop an open data standard"),a("sup",[e._v("3")]),e._v(" for scholarly metrics which documents the context in which the data was captured. This metadata describes the properties of the capturing apparatus of a scholarly event (e.g., a citation, news mention, or tweet of an article) such as the limitations of document coverage (what kind of articles are indexed?), the kind of events captured (tweets, retweets, or the both maybe?) or other technicalities (is Facebook considered as a whole or only a subset of public pages?).")]),e._v(" "),a("p",[e._v("While metrics in context don’t remove systemic inequality, they make the usually hidden and inaccessible biases visible and explicit. In doing so, they facilitate conversations about structural issues in academia and eventually contribute to the development of better infrastructures for the future.")]),e._v(" "),a("h2",{attrs:{id:"how-can-the-open-data-open-source-or-open-science-communities-engage-with-the-work-you-are-doing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-can-the-open-data-open-source-or-open-science-communities-engage-with-the-work-you-are-doing"}},[e._v("#")]),e._v(" How can the open data, open source, or open science communities engage with the work you are doing?")]),e._v(" "),a("p",[e._v("Metrics in Context will be fully conducted out in the open which means that all resources will be available on Github and I will do my best to transparently document progress and decisions.")]),e._v(" "),a("p",[e._v("The project is organized in three parts (roughly breaking down into conceptual questions, technical implementation, and scholarly application) and I invite all of you to leave your ideas, thoughts, and critiques via email or a Github issue.")]),e._v(" "),a("p",[e._v("You can see the full roadmap with a detailed breakdown of tasks here: "),a("a",{attrs:{href:"https://github.com/Bubblbu/metrics-in-context/issues/2",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/Bubblbu/metrics-in-context/issues/2"),a("OutboundLink")],1)]),e._v(" "),a("hr"),e._v(" "),a("p",[a("sup",[e._v(" 1. ")]),e._v(" There is extensive literature for the critique of indicators such as the h-index or Journal Impact Factor. See Haustein and Larivière (2015) for an overview."),a("br"),e._v(" "),a("sup",[e._v(" 2. ")]),e._v(" See DORA and the Leiden Manifesto for two prominent examples of responsible research metrics initiatives"),a("br"),e._v(" "),a("sup",[e._v(" 3. ")]),e._v(" I am expecting references to this xkcd comic on standards: "),a("a",{attrs:{href:"https://xkcd.com/927/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://xkcd.com/927/"),a("OutboundLink")],1)])])}),[],!1,null,null,null);t.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[108],{639:function(e,t,a){"use strict";a.r(t);var o=a(29),i=Object(o.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[a("em",[e._v("This grantee profile features Asura for our series of Frictionless Data Tool Fund posts, written to shine a light on Frictionless Data’s Tool Fund grantees, their work and to let our technical community know how they can get involved.")])]),e._v(" "),a("h2",{attrs:{id:"meet-asura"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#meet-asura"}},[e._v("#")]),e._v(" Meet Asura")]),e._v(" "),a("p",[e._v("Hallihallöchen meine Lieben!")]),e._v(" "),a("p",[e._v("I’m Asura and I’m a doctoral student at Simon Fraser University, Vancouver. I’m working in the muddy area between data science, communication, and philosophy in order to explore questions of power and systemic inequality within scholarly communication. This means that I work at the ScholCommLab as a data scientist, while exploring the philosophical issues in my doctoral project. Concretely, I am intending to develop an analytic framework for the study citations as infrastructure building on critical feminist theory and Science and Technology Studies (STS). However, I remain a coder and tinkerer at heart, which is how I ended up working with Frictionless Data on Metrics in Context.")]),e._v(" "),a("h2",{attrs:{id:"how-did-you-first-hear-about-frictionless-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-did-you-first-hear-about-frictionless-data"}},[e._v("#")]),e._v(" How did you first hear about Frictionless Data?")]),e._v(" "),a("p",[e._v("I first heard about Frictionless Data at the pre-csv,conf,v4 meetup hosted by Open Knowledge Foundation in 2019. I remember being quite impressed by the basic premise of Frictionless, although I hadn’t grasped the full picture of the technicalities yet. During the main conference I then learnt about more opportunities to get involved such as the Fellowship and the Tool Fund. I left csv,conf with great impressions and plans to work out an application but then life a.k.a my PhD happened… I had forgotten about Frictionless Data, until I recently found out that the Tool Fund is going into its second round. At the time I had started working with the Make Data Count team on data citations, then ideas and topics fell into place, and here I am now!")]),e._v(" "),a("h2",{attrs:{id:"what-specific-issues-are-you-looking-to-address-with-the-tool-fund"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-specific-issues-are-you-looking-to-address-with-the-tool-fund"}},[e._v("#")]),e._v(" What specific issues are you looking to address with the Tool Fund?")]),e._v(" "),a("p",[e._v("In this project, I want to address a common theme within the critique of modern technology in our data-driven world: the lack of context for data and, often related, biases in databases. Algorithmic and database biases have moved into the spotlight of critical thought on how technology exacerbates systemic inequalities. Following these insights, I want to address the need for different (rather than simply more) context and metadata for scholarly metrics in the face of racial, gender, and geographic biases which plague modern academia.")]),e._v(" "),a("p",[e._v("It isn’t controversial to say that scholarly metrics have become an integral part of scholarship and probably they are here to stay. Controversy usually comes into play once we discuss how and for which purposes metrics are used. This typically refers to the (mis)use of citation counts and citation-based indicators"),a("sup",[e._v("1")]),e._v(" for research assessment and governance, which also led to a considerable number of initiatives and movements calling for a responsible use of metrics"),a("sup",[e._v("2")]),e._v(". However, I would like to take a step back and redirect the attention to the origin of the data underlying citation counts.")]),e._v(" "),a("p",[e._v("These conversations about the inherent biases of citation databases are not entirely new and scholars across disciplines have been highlighting the consequential systemic issues. However, in this project I am not proposing a solution to overcome or abolish these biases per se, but rather I want to shine light on the opaque mechanism of capturing metrics which lead to the aforementioned inequalities. In other words, I propose to develop an open data standard"),a("sup",[e._v("3")]),e._v(" for scholarly metrics which documents the context in which the data was captured. This metadata describes the properties of the capturing apparatus of a scholarly event (e.g., a citation, news mention, or tweet of an article) such as the limitations of document coverage (what kind of articles are indexed?), the kind of events captured (tweets, retweets, or the both maybe?) or other technicalities (is Facebook considered as a whole or only a subset of public pages?).")]),e._v(" "),a("p",[e._v("While metrics in context don’t remove systemic inequality, they make the usually hidden and inaccessible biases visible and explicit. In doing so, they facilitate conversations about structural issues in academia and eventually contribute to the development of better infrastructures for the future.")]),e._v(" "),a("h2",{attrs:{id:"how-can-the-open-data-open-source-or-open-science-communities-engage-with-the-work-you-are-doing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-can-the-open-data-open-source-or-open-science-communities-engage-with-the-work-you-are-doing"}},[e._v("#")]),e._v(" How can the open data, open source, or open science communities engage with the work you are doing?")]),e._v(" "),a("p",[e._v("Metrics in Context will be fully conducted out in the open which means that all resources will be available on Github and I will do my best to transparently document progress and decisions.")]),e._v(" "),a("p",[e._v("The project is organized in three parts (roughly breaking down into conceptual questions, technical implementation, and scholarly application) and I invite all of you to leave your ideas, thoughts, and critiques via email or a Github issue.")]),e._v(" "),a("p",[e._v("You can see the full roadmap with a detailed breakdown of tasks here: "),a("a",{attrs:{href:"https://github.com/Bubblbu/metrics-in-context/issues/2",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/Bubblbu/metrics-in-context/issues/2"),a("OutboundLink")],1)]),e._v(" "),a("hr"),e._v(" "),a("p",[a("sup",[e._v(" 1. ")]),e._v(" There is extensive literature for the critique of indicators such as the h-index or Journal Impact Factor. See Haustein and Larivière (2015) for an overview."),a("br"),e._v(" "),a("sup",[e._v(" 2. ")]),e._v(" See DORA and the Leiden Manifesto for two prominent examples of responsible research metrics initiatives"),a("br"),e._v(" "),a("sup",[e._v(" 3. ")]),e._v(" I am expecting references to this xkcd comic on standards: "),a("a",{attrs:{href:"https://xkcd.com/927/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://xkcd.com/927/"),a("OutboundLink")],1)])])}),[],!1,null,null,null);t.default=i.exports}}]); \ No newline at end of file diff --git a/assets/js/11.6cc6237a.js b/assets/js/11.19b213f3.js similarity index 99% rename from assets/js/11.6cc6237a.js rename to assets/js/11.19b213f3.js index 832cd59ac..5b790442e 100644 --- a/assets/js/11.6cc6237a.js +++ b/assets/js/11.19b213f3.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[11],{517:function(e,t,a){e.exports=a.p+"assets/img/mysociety-img-1.a484b939.png"},518:function(e,t){e.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZcAAACkCAMAAABsIZOIAAAB5lBMVEUKDBAKDCkKDEIKDHgKDHwKDJ0KDKIKKFsKOsEKQnAKUsEKWMEKXdkKcroKdtkKgNkKm9EkDBAkkfA0DBA0WME0nfA+DBA+p/9UDBBUDHxUDKJUefBYUhBYkdlYvPBYvP9ZDBBZtfBZtf9udhBuy9luy/Buy/9yDBByuOhzWBBzndlznfBztdlzzPBzzP94DBB4WoF9DBB9DHx9DKJ9OsF9Xdl9kdl9kfB9kf+AkXyAvMGAy9mAy/CAy/+JgBCJncGJzMGJ3NmJ3PCJ3P+Rp6KRp8GRvMGRy9mRy/CRy/+XDBCXm9GXz/aeOhCeOnyeedmeefCekcGekdmekf+enXyencGep9mep/Cep/+ezMGe3Nme3PCe3P+gDBCgb5KttaKtzMGt3Nmt3PCt3P+zXRCzXXyzeXyzecGzkaKzp8Gzt9mzt/Czt/+0chC05ei05fbAKBDAWnDAg4HAg5LLmxDL89HL8+jL8/bOeXzOeaLOecHOkaLOkcHOkdnOp8HOp//Ot9nOt/DOt//YQhDYlHDYlIHYlJLbkaLbkcHbp8Hbt9nbt/Dbt//iuHji5bri89Hi8/bwWinwWkLwWlvwg1vwlHDwlIHwlJLwz53w5brw89Hw8+jw8/b/b0L/g1v/lHD/lIH/lJL/MzhgAAAN0ElEQVR42u2djV8UxxnHVz2PQ1BQgposjRSTFEzFw5i6tA0N0RqPQGobisQop95Si6UNqba5mMaYs4qBo5G8aSlY7j/t8zKzO7u3d9wBVXL3fD8fb+92Hxac3z7PMzvP3I5lCYIgCIIgCIIgCIIgCM+A5nz+y4NljttZ81PiNto6btAmdn7EsuLT+fkRac/NkmWuz7JnN0OXoKGwIfhKn3rhep/VDOrY+TzoFBvP572Wt29N52fJreb68EA+n7Wca7m8r4KTJ0dhsfgMwgZJfJrI5SfHXmNd4tepSaGF43/SIclGOdzEHTCAeKf8Za4PdyiDWVTXRsW8MwgbDWNZxz35rtYlNj7PiSLvpwoMT3YWnQnb3ItjngDoceR15C98BmGj2JNjx8dO3NZxjNo1eM2jLo5bqS6izCb5i+vMf553IWzFpzn7Q/M62aAucBTDlo1xjMKXqQta235+iegVCOuJY6r18/O/mbUg12CnGQOZ13fGxOH6+dyhvG/qAj/0iecv6gzCBvHzu7C1OmS5fD7yxoOyP3axSkq6loEgCIIgCIIgCIIgCILGjhpg614I7dj5t6Eab4dtf53x3jc8Kvz3knofVePicf4ymAZVFsm0eZQurf/+CW8fw8vuh8tLQ96uutBl4q5Vtlmfhi4R7Pz7ny1fl+Gb9H54oZZVmSgUVme0n5gSOWpUkkb2sb4/P6Lr+yrefJZ7MD7XBwUarItFGMSvn8O6Jw+N2qqyZs6/SfxjHKsHbKB+HwyH4nEcFXW1AcuBfrIMb3b8hUXa/S90mO6lmoxnyRUUY/s/L1mNT46BRoXCYvD6xWYfd6kiGXIHe+5EbhIq+6RLlAGW2niuDRyNc0kUj3vzbxI5XYTDH9f+gibwK6kcpwzIQ9BpQKDhZWDBc6La1AUdBP41oiBPjgX8hduJPQBah2fIBHTJJm4/r3WJMlBS4KUPboOFUNeyzdoAiZTVBqYu9N5xlQHrgk7TaviL3lo1rMtKcapRupwf8eKaW06XCAOli0MTZmDqTXzqYHCWmWp2ZVCtLjXdI5tYtJKrM9vvzUToQrVMf9IfNpA/PcnXZZbr+8UGWpes1QwGsbHXQ8c9XdhA1051HEt8MaJ14W7YV0M7P66X/AIJ/2sQo5ETS0AXjDmzFMjm+jDU+PX9gC5w6AG9FhnolJJDA0upp+YLmLp4Bvj7sBOgNq42UKlkeHnpHUMX7o/VqC4/ECJuVmr+/qVqqEdbbrrrxg3kfl8QBEEQBEEQBEEQfoDETw1UZNdcZlAAR5m5YlYWHBmo5ZpAEVhNMzGK71C8gkZrv/zcBz2hH2p6v62ELsq6m6tea+vSTZKsWU3e8SEWCWAwuqzVnlQq9fZ+fdG8kjqzt8Z04eI7v7anm0rpEoFn3V1R4V61tFf6Ly+f3pTU5XTg466fb11doKoMNf9tNwoFqJo10jQA3EBZM/nN/YKqOq94zRQovmtd4oOdVvuvLmbSltWVyVzpjPVmgFGrPZNBf2nBfdqArQO6xLi8j7UGqHtOvYdlTfyAMwC0laGiQ2OhPCkACz1YxamwiqZ0OaC8hnQBt0n1w/s3fE/aIkAdk0uZqjDT8O0xnBGQBL1g5ozpL6Hiu5qywn5wpTP+FjlCS9r3ly7QpelCp9Vyuc03KGppLlzSV6Wh3JzVVTqoyXgZIzjeT/UemhTgcPmGq2c6nHkxK3U6dghez3YY+zh2kUKky75++rUv7bf2bKWwliR3aHgEDoLOc1ftgn3JxaI4FiryBnQZtWJHe9BFMiFdUCfwEWVQWpdEjqbIqC+zOzTlxtNFN7zFNbdZXUwDU9s1Dpt/Ukl/2YeKaV320FtScQvp0vD9DDuLoYwSZD26YO5oWacurIzShZ5oY/qLlzig8OxNuYFJB2PHf3vQ18XokUX6C+my65cdhr+wMqHM8+x1+e7SthsrRvuDGrDP1OXejJmFzeJ7hC4XILmkOXaZcawd4liULrsfLhi64FbrAgpBRAvmF/rdkFJi454uln3tD5ZVXX7Z9Yv9sUOGLriNv9yx1fL+6kcrFLoWre33qRNAnzy3wU9e3g8W3yPiWFfm6pG0Rfl/FF8yVym2Yd4vqQt95/nLgzZFrrh+WEp+7lw21B8jXSDC0VMIlC7oPtX2xw6kzv7oNGZ6DGfQCUgdZvfqr5Fbm/LBfA0q6yevef/CvYUK71/qBL6vXJ8qgfvKtcQveb/f7E23rbv7fUEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEGoWcz1vaMILJyrltl13KANrcMLzwidH5H23CxZ8GnEs5uhS9BQ2BB8pU+9oB7lbdMD7vEJ+F7L27emcf3vZjzCi4vDI9av5fK+Cg6tBq7EsqtbLlSIJvEpLEQ8OfaaWpGdHyINLazXkIaGRjlcXIUAHiit/YWXJVAGtBq4Wr9dP4Za2GAYyzruyXe1LrHx+RH1MGkvVdCTu7PoTNjmXhzzBECPI68jf+EzCBvFnhw7Pnbito5j1K7Bax51cdxKdRFlNslfXGf+87wLYSs+zdnfoUU6ArrAUQxbNsYxCl+mLmht+/klolcgrCeOqdbnJ9vnqNOMgczrO2PicP187lDeN3WBH/rE8xd1BmGD+Pld2Fodslw+H3njQdkfu1glJV3LQBAEQRAEQRAEQRAEIUzRWoutj+vq/6/WpCYaHtHyoURUjYvH+ctgGqxdJCt3Or0QKKnRTYuVDy/Uqy4Td62yzfr0dPEWAkVd1CK6vLZrfTBRKKzOaD8xJXLUqCSN7GN9f35E1/cZ+7Pcg/G5PlwiGsb5Iwzi189h3ZOHRm1VWTPm3yhrGtN2svGp96hKqgx40dfdD8lR9OLTvHM4sLJ7bZJcQTFwZerGJ8cmCrQYcuByx2Yfd6kiGbrA7bkTuUmo7JMuUQZYauO5NnBUrW5MixfPBv3FprWPcTFqmEKgDHiBVnSQ1sc7P15eXv4Pfm4lRepAF3QQ+NeIgsBq7qa/sC58TUMNk2fIBHTJJm4/r3WJMlBSYEEAHAELoa5lB2oDbA2vzbwsNfxTBqyLXj1e+4veWvWiy0pxqlG6nB/x4ppbTpcIA6WLQxNmYOpNfOpg5HQ06+TIz/p4+sCdPmUQrUv99MgmFq3k6sz2ezMRulAt0w86tHb6nb4iXWa5vl9soHWB+AQGsbHXQ8e9T823/sjWcC5twIu9fzVEK7jXX36BhP81iNHIiSWgC8YcWu4eKvsYi/z6fkAXOPSAXosMdErJoYGl1FPzBfzORRYTkWt5swqUAffHhpeX3vF1Uf2xetBlS0DhLNyr7i6OWfV1/1I11IMuN921OoNEjt4U3e3U+/2+IAiCIAiCIAiCINQV7ZfbNuU8NCxXAhyRU1XSsuCgRPcWGx7CapoJjZNAhXFpCMYbl29iAz73QY/VksmMRp8g1pu50lni5F0D2HKDnSV1IYNQQw+WOlv81EBXGv5Cqn5WoAuPkLauOUBKg3g7PrxZXv9XUqnUYf1/PpR6e/8z0IVHtfi1Pd0EusB2tOSfPLgOXQyDinV5qwd1qXiMTY2QrjVQqiYheHMRSvzyl/aX+Vg1UFWGmv+2G4UCVM0aaRoAbqCsmfzmfkFVnVe8P5Er8VzP8nThliJdwG3QOeKnMpkB/JAJN3wXGTS93wb2eBw+xQdfzVztQb8Cl4sdPYIbOAH4izLogjO36LDWhfvSltr3Y7JGQzgOuvDFYehic8GBv6FowyMJeDIDDqLqCGbUR3mWgpqEgN9Axa/N6wg2fLMCXXa9kUr1ex/3pdBvwHs8T6oCqGNyKVMVZhq+PYYzApKgF8ycMf2FK/EYv5aXF8J/KDZJ04VObK1Y74B5cYeu8Ja00kX7y6k0iIstDT8X602zPZooA3zrOw6fTe3rutwGatDp0iGf1uBXQtUwNjymQH2nEb96ra2CE3BwlsI0zSDBwgT8sLoIzZoENn7qzN498Jo6bcSxsx10hhc7lC5KqwOHrfjLHdWJkiR3aHgEDoLOc1ftgn3JxaI4piu+AX8xdYEmx3bjNrWaLirvGVQuBBbtdLUHdYHDLenY0R48B20sK6AL7Iu/2abPwLqofXi8a6Cdfai0Lup77aoabvPsA23lNbylZimoUh8qBEVx73D56Kg00PLQx9gheouZ52x1ujR8P8POYiijBNmwLrHe0SJ/wVTUUq0uVstoy0A4v/A+OA5OFk5tRbooZViXxBcjQX/xe2Q8S0HpAt/jbnYN2fweWaS/KN84bfgLK7OeVNPw3aVtN1aM9gc1YJ+py70ZMwNSJb6kLhjHoCMFHSPSZcBqvxLS5UInRirYNF1EXUY9XfA9/FxYF2rx+Js/7TSzu78PdMFzXeiM0GV4acjXhbZKlzvw0JXZcH4ha56loHWJT/2uz9CjovxyoN/ac7bDyPsQxA70ryfvr360QqFr0dp+nzoB9MlzG/zk5X1ViY/QhULJAG5QCYxglPd/P9iJ4Sfj3Yx0Za4eSePmyqujZId5n3ThMKV0wRNgZCIDME9bgV+FH2kf9AKu9vBvH4jUxaHHragnDnizrfA5BqH+GFnzLAWtC7pPtf0xcKVfv9hBoevMXvSrM3spkMHmqVH+AtpEPCcq2hfRj668n7zW/YuevlXR/csWgu8r//+q9GYGSu2L0iV4X1n2zqTc/T7MEXK38P2+IAjCs+F/1QFBHfBcnIMAAAAASUVORK5CYII="},519:function(e,t,a){e.exports=a.p+"assets/img/mysociety-img-3.f1a972a0.png"},520:function(e,t,a){e.exports=a.p+"assets/img/mysociety-img-4.7862ba68.png"},521:function(e,t,a){e.exports=a.p+"assets/img/mysociety-img-5.8895357e.png"},522:function(e,t,a){e.exports=a.p+"assets/img/mysociety-img-6.8f8bc957.png"},703:function(e,t,a){"use strict";a.r(t);var o=a(29),n=Object(o.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("p",[o("em",[e._v("Originally published on: "),o("a",{attrs:{href:"https://www.mysociety.org/2022/09/13/publishing-and-analysing-data-our-workflow/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://www.mysociety.org/2022/09/13/publishing-and-analysing-data-our-workflow/"),o("OutboundLink")],1)])]),e._v(" "),o("p",[e._v("I recently blogged about the data "),o("a",{attrs:{href:"https://www.mysociety.org/2022/09/13/we-want-you-to-build-on-our-local-climate-data-tell-us-what-you-need/",target:"_blank",rel:"noopener noreferrer"}},[e._v("we’re publishing and making use of in mySociety’s climate programme"),o("OutboundLink")],1),e._v(" (and how we want to help people make use of it!). This blog post explores behind the scenes how we’re managing that data, using the GitHub ecosystem and Frictionless Data standards to validate and publish data.")]),e._v(" "),o("h2",{attrs:{id:"how-we-re-handling-common-data-analysis-and-data-publishing-tasks"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#how-we-re-handling-common-data-analysis-and-data-publishing-tasks"}},[e._v("#")]),e._v(" How we’re handling common data analysis and data publishing tasks.")]),e._v(" "),o("p",[e._v("Generally we do all our data analysis in Python and Jupyter notebooks. While we have some analysis using R, we have more Python developers and projects, so this makes it easier for analysis code to be shared and understood between analysis and production projects.")]),e._v(" "),o("p",[e._v("Following the same basic ideas as (and stealing some folder structure from) the "),o("a",{attrs:{href:"https://drivendata.github.io/cookiecutter-data-science/",target:"_blank",rel:"noopener noreferrer"}},[e._v("cookiecutter data science"),o("OutboundLink")],1),e._v(" approach that each small project should live in a separate repository, we have a "),o("a",{attrs:{href:"https://github.com/mysociety/python-data-auto-template",target:"_blank",rel:"noopener noreferrer"}},[e._v("standard repository template"),o("OutboundLink")],1),e._v(" for working with data processing and analysis.")]),e._v(" "),o("p",[e._v("The template defines a folder structure, and standard config files for development in Docker and VS Code. A shared data_common library builds a base Docker image (for faster access to new repos), and common tools and utilities that are shared between projects for dataset management. This includes helpers for managing dataset releases, and for working with our charting theme. The use of Docker means that the development environment and the GitHub Actions environment can be kept in sync – and so processes can easily be shifted to a scheduled task as a GitHub Action.")]),e._v(" "),o("p",[e._v("The advantage of this common library approach is that it is easy to update the set of common tools from each new project, but because each project is pegged to a commit of the common library, new projects get the benefit of advances, while old projects do not need to be updated all the time to keep working.")]),e._v(" "),o("p",[e._v("This process can run end-to-end in GitHub – where the repository is created in GitHub, Codespaces can be used for development, automated testing and building happens with GitHub Actions and the data is published through GitHub Pages. The use of GitHub Actions especially means testing and validation of the data can live on Github’s infrastructure, rather than requiring additional work for each small project on our servers.")]),e._v(" "),o("h2",{attrs:{id:"dataset-management"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#dataset-management"}},[e._v("#")]),e._v(" Dataset management")]),e._v(" "),o("p",[e._v("One of the goals of this data management process is to make it easy to take a dataset we’ve built for our purposes, and make it easily accessible for re-use by others.")]),e._v(" "),o("p",[e._v("The data_common library contains a dataset command line tool – which automates the creation of various config files, publishing, and validation of our data.")]),e._v(" "),o("p",[e._v("Rather than reinventing the wheel, we use the "),o("a",{attrs:{href:"https://specs.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("frictionless data standard"),o("OutboundLink")],1),e._v(" as a way of describing the data. A repo will hold one or more "),o("a",{attrs:{href:"https://specs.frictionlessdata.io/data-package/",target:"_blank",rel:"noopener noreferrer"}},[e._v("data packages"),o("OutboundLink")],1),e._v(", which are a collection of "),o("a",{attrs:{href:"https://specs.frictionlessdata.io/data-resource/",target:"_blank",rel:"noopener noreferrer"}},[e._v("data resources"),o("OutboundLink")],1),e._v(" (generally a CSV table). The dataset tool detects changes to the data resources, and updates the config files. Changes between config files can then be used for automated version changes.")]),e._v(" "),o("p",[o("img",{attrs:{src:a(517),alt:"mysociety-img-1"}})]),e._v(" "),o("h2",{attrs:{id:"data-integrity"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#data-integrity"}},[e._v("#")]),e._v(" Data integrity")]),e._v(" "),o("p",[e._v("Leaning on the frictionless standard for basic validation that the structure is right, we use "),o("a",{attrs:{href:"https://docs.pytest.org/en/7.1.x/",target:"_blank",rel:"noopener noreferrer"}},[e._v("pytest"),o("OutboundLink")],1),e._v(" to run additional tests on the data itself. This means we define a set of rules that the dataset should pass (eg ‘all cells in this column contain a value’), and if it doesn’t, the dataset will not validate and will fail to build.")]),e._v(" "),o("p",[e._v("This is especially important because we have datasets that are fed by automated processes, read external Google Sheets, or accept input from other organisations. The "),o("a",{attrs:{href:"https://mysociety.github.io/uk_local_authority_names_and_codes/",target:"_blank",rel:"noopener noreferrer"}},[e._v("local authority codes dataset"),o("OutboundLink")],1),e._v(" has "),o("a",{attrs:{href:"https://github.com/mysociety/uk_local_authority_names_and_codes/tree/main/tests",target:"_blank",rel:"noopener noreferrer"}},[e._v("a number of tests"),o("OutboundLink")],1),e._v(" to check authorities haven’t been unexpectedly deleted, that the start date and end dates make sense, and that only certain kinds of authorities can be designated as the county council or combined authority overlapping with a different authority. This means that when someone submits a change to the source dataset, we can have a certain amount of faith that the dataset is being improved because the automated testing is checking that nothing is obviously broken.")]),e._v(" "),o("p",[e._v("The automated versioning approach means the defined structure of a resource is also a form of automated testing. Generally following the "),o("a",{attrs:{href:"https://specs.frictionlessdata.io/patterns/#data-package-version",target:"_blank",rel:"noopener noreferrer"}},[e._v("semver rules for frictionless data"),o("OutboundLink")],1),e._v(" (exception that adding a new column after the last column is not a major change), the dataset tool will try and determine if a change from the previous version is a MAJOR (backward compatibility breaking), MINOR (new resource, row or column), or PATCH (correcting errors) change. Generally, we want to avoid major changes, and the automated action will throw an error if this happens. If a major change is required, this can be done manually. The fact that external users of the file can peg their usage to a particular major version means that changes can be made knowing nothing is immediately going to break (even if data may become more stale in the long run).")]),e._v(" "),o("p",[o("img",{attrs:{src:a(518),alt:"mysociety-img-2"}})]),e._v(" "),o("h2",{attrs:{id:"data-publishing-and-accessibility"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#data-publishing-and-accessibility"}},[e._v("#")]),e._v(" Data publishing and accessibility")]),e._v(" "),o("p",[e._v("The frictionless standard allows an optional description for each data column. We make this required, so that each column needs to have been given a human readable description for the dataset to validate successfully. Internally, this is useful as enforcing documentation (and making sure you really understand what units a column is in), and means that it is much easier for external users to understand what is going on.")]),e._v(" "),o("p",[e._v("Previously, we were uploading the CSVs to GitHub repositories and leaving it as that – but GitHub isn’t friendly to non-developers, and clicking a CSV file opens it up in the browser rather than downloading it.")]),e._v(" "),o("p",[e._v("To help make data more accessible, we now publish a small GitHub Pages site for each repo, which allows small static sites to be built from the contents of a repository (the "),o("a",{attrs:{href:"https://everypolitician.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("EveryPolitician project"),o("OutboundLink")],1),e._v(" also used this approach). This means we can have fuller documentation of the data, better analytics on access, sign-posting to surveys, and better sign-posted links to downloading multiple versions of the data.")]),e._v(" "),o("p",[o("img",{attrs:{src:a(519),alt:"mysociety-img-3"}})]),e._v(" "),o("p",[e._v("The automated deployment means we can also very easily create Excel files that packages together all resources in a package into the same file, and include the meta-data information about the dataset, as well as information about how they can tell us about how they’re using it.")]),e._v(" "),o("p",[e._v("Publishing in an Excel format acknowledges a practical reality that lots of people work in Excel. CSVs don’t always load nicely in Excel, and since Excel files can contain multiple sheets, we can add a cover page that makes it easier to use and understand our data by packaging all the explanations inside the file. We still produce both CSVs and XLSX files – and can now do so with very little work.")]),e._v(" "),o("p",[o("img",{attrs:{src:a(520),alt:"mysociety-img-4"}})]),e._v(" "),o("p",[e._v("For developers who are interested in making automated use of the data, we also provide "),o("a",{attrs:{href:"https://github.com/mysociety/mysoc-dataset",target:"_blank",rel:"noopener noreferrer"}},[e._v("a small package"),o("OutboundLink")],1),e._v(" that can be used in Python or as a CLI tool to fetch the data, and instructions on the download page on "),o("a",{attrs:{href:"https://mysociety.github.io/composite_uk_imd/downloads/uk_index_xlsx/latest",target:"_blank",rel:"noopener noreferrer"}},[e._v("how to use it"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[o("img",{attrs:{src:a(521),alt:"mysociety-img-5"}})]),e._v(" "),o("p",[e._v("At mySociety Towers, we’re fans of "),o("a",{attrs:{href:"https://datasette.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Datasette"),o("OutboundLink")],1),e._v(", a tool for exploring datasets. Simon Willison recently released "),o("a",{attrs:{href:"https://github.com/simonw/datasette-lite",target:"_blank",rel:"noopener noreferrer"}},[e._v("Datasette Lite"),o("OutboundLink")],1),e._v(", a version that runs entirely in the browser. That means that just by publishing our data as a SQLite file, we can add a link so that people can explore a dataset without leaving the browser. You can even create shareable links for queries: for example, "),o("a",{attrs:{href:"https://lite.datasette.io/?url=https://mysociety.github.io/uk_local_authority_names_and_codes/data/uk_la_past_current/latest/uk_la_past_current.sqlite#/uk_la_past_current/uk_local_authorities_current?_facet=region®ion=Scotland",target:"_blank",rel:"noopener noreferrer"}},[e._v("all current local authorities in Scotland"),o("OutboundLink")],1),e._v(", or "),o("a",{attrs:{href:"https://lite.datasette.io/?url=https://mysociety.github.io/composite_uk_imd/data/uk_index/latest/uk_index.sqlite#/uk_index/la_labels?_sort=label&_facet=label&label=1st+IMD+quintile",target:"_blank",rel:"noopener noreferrer"}},[e._v("local authorities in the most deprived quintile"),o("OutboundLink")],1),e._v(". This lets us do some very rapid prototyping of what a data service might look like, just by packaging up some of the data using our new approach.")]),e._v(" "),o("p",[o("img",{attrs:{src:a(522),alt:"mysociety-img-6"}})]),e._v(" "),o("h2",{attrs:{id:"data-analysis"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#data-analysis"}},[e._v("#")]),e._v(" Data analysis")]),e._v(" "),o("p",[e._v("Something in use in a few of our repos is the ability to automatically deploy analysis of the dataset when it is updated.")]),e._v(" "),o("p",[e._v("Analysis of the dataset can be designed in a Jupyter notebook (including tables and charts) – and this can be re-run and published on the same GitHub Pages deploy as the data itself. For instance, the "),o("a",{attrs:{href:"https://mysociety.github.io/uk_ruc/",target:"_blank",rel:"noopener noreferrer"}},[e._v("UK Composite Rural Urban Classification"),o("OutboundLink")],1),e._v(" produces "),o("a",{attrs:{href:"https://mysociety.github.io/uk_ruc/analysis/background_and_analysis.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("this analysis"),o("OutboundLink")],1),e._v(". For the moment, this is just replacing previous automatic README creation – but in principle makes it easy for us to create simple, self-updating public charts and analysis of whatever we like.")]),e._v(" "),o("p",[e._v("Bringing it all back together and keeping people to up to date with changes")]),e._v(" "),o("p",[e._v("The one downside of all these datasets living in different repositories is making them easy to discover. To help out with this, we add all data packages to our "),o("a",{attrs:{href:"https://data.mysociety.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("data.mysociety.org"),o("OutboundLink")],1),e._v(" catalogue (itself a Jekyll site that updates via GitHub Actions) and have started a lightweight "),o("a",{attrs:{href:"https://data.mysociety.org/newsletter",target:"_blank",rel:"noopener noreferrer"}},[e._v("data announcement email list"),o("OutboundLink")],1),e._v(". If you have got this far, and want to see more of our data in future – "),o("a",{attrs:{href:"https://data.mysociety.org/newsletter",target:"_blank",rel:"noopener noreferrer"}},[e._v("sign up"),o("OutboundLink")],1),e._v("!")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[11],{517:function(e,t,a){e.exports=a.p+"assets/img/mysociety-img-1.a484b939.png"},518:function(e,t){e.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZcAAACkCAMAAABsIZOIAAAB5lBMVEUKDBAKDCkKDEIKDHgKDHwKDJ0KDKIKKFsKOsEKQnAKUsEKWMEKXdkKcroKdtkKgNkKm9EkDBAkkfA0DBA0WME0nfA+DBA+p/9UDBBUDHxUDKJUefBYUhBYkdlYvPBYvP9ZDBBZtfBZtf9udhBuy9luy/Buy/9yDBByuOhzWBBzndlznfBztdlzzPBzzP94DBB4WoF9DBB9DHx9DKJ9OsF9Xdl9kdl9kfB9kf+AkXyAvMGAy9mAy/CAy/+JgBCJncGJzMGJ3NmJ3PCJ3P+Rp6KRp8GRvMGRy9mRy/CRy/+XDBCXm9GXz/aeOhCeOnyeedmeefCekcGekdmekf+enXyencGep9mep/Cep/+ezMGe3Nme3PCe3P+gDBCgb5KttaKtzMGt3Nmt3PCt3P+zXRCzXXyzeXyzecGzkaKzp8Gzt9mzt/Czt/+0chC05ei05fbAKBDAWnDAg4HAg5LLmxDL89HL8+jL8/bOeXzOeaLOecHOkaLOkcHOkdnOp8HOp//Ot9nOt/DOt//YQhDYlHDYlIHYlJLbkaLbkcHbp8Hbt9nbt/Dbt//iuHji5bri89Hi8/bwWinwWkLwWlvwg1vwlHDwlIHwlJLwz53w5brw89Hw8+jw8/b/b0L/g1v/lHD/lIH/lJL/MzhgAAAN0ElEQVR42u2djV8UxxnHVz2PQ1BQgposjRSTFEzFw5i6tA0N0RqPQGobisQop95Si6UNqba5mMaYs4qBo5G8aSlY7j/t8zKzO7u3d9wBVXL3fD8fb+92Hxac3z7PMzvP3I5lCYIgCIIgCIIgCIIgCM+A5nz+y4NljttZ81PiNto6btAmdn7EsuLT+fkRac/NkmWuz7JnN0OXoKGwIfhKn3rhep/VDOrY+TzoFBvP572Wt29N52fJreb68EA+n7Wca7m8r4KTJ0dhsfgMwgZJfJrI5SfHXmNd4tepSaGF43/SIclGOdzEHTCAeKf8Za4PdyiDWVTXRsW8MwgbDWNZxz35rtYlNj7PiSLvpwoMT3YWnQnb3ItjngDoceR15C98BmGj2JNjx8dO3NZxjNo1eM2jLo5bqS6izCb5i+vMf553IWzFpzn7Q/M62aAucBTDlo1xjMKXqQta235+iegVCOuJY6r18/O/mbUg12CnGQOZ13fGxOH6+dyhvG/qAj/0iecv6gzCBvHzu7C1OmS5fD7yxoOyP3axSkq6loEgCIIgCIIgCIIgCILGjhpg614I7dj5t6Eab4dtf53x3jc8Kvz3knofVePicf4ymAZVFsm0eZQurf/+CW8fw8vuh8tLQ96uutBl4q5Vtlmfhi4R7Pz7ny1fl+Gb9H54oZZVmSgUVme0n5gSOWpUkkb2sb4/P6Lr+yrefJZ7MD7XBwUarItFGMSvn8O6Jw+N2qqyZs6/SfxjHKsHbKB+HwyH4nEcFXW1AcuBfrIMb3b8hUXa/S90mO6lmoxnyRUUY/s/L1mNT46BRoXCYvD6xWYfd6kiGXIHe+5EbhIq+6RLlAGW2niuDRyNc0kUj3vzbxI5XYTDH9f+gibwK6kcpwzIQ9BpQKDhZWDBc6La1AUdBP41oiBPjgX8hduJPQBah2fIBHTJJm4/r3WJMlBS4KUPboOFUNeyzdoAiZTVBqYu9N5xlQHrgk7TaviL3lo1rMtKcapRupwf8eKaW06XCAOli0MTZmDqTXzqYHCWmWp2ZVCtLjXdI5tYtJKrM9vvzUToQrVMf9IfNpA/PcnXZZbr+8UGWpes1QwGsbHXQ8c9XdhA1051HEt8MaJ14W7YV0M7P66X/AIJ/2sQo5ETS0AXjDmzFMjm+jDU+PX9gC5w6AG9FhnolJJDA0upp+YLmLp4Bvj7sBOgNq42UKlkeHnpHUMX7o/VqC4/ECJuVmr+/qVqqEdbbrrrxg3kfl8QBEEQBEEQBEEQfoDETw1UZNdcZlAAR5m5YlYWHBmo5ZpAEVhNMzGK71C8gkZrv/zcBz2hH2p6v62ELsq6m6tea+vSTZKsWU3e8SEWCWAwuqzVnlQq9fZ+fdG8kjqzt8Z04eI7v7anm0rpEoFn3V1R4V61tFf6Ly+f3pTU5XTg466fb11doKoMNf9tNwoFqJo10jQA3EBZM/nN/YKqOq94zRQovmtd4oOdVvuvLmbSltWVyVzpjPVmgFGrPZNBf2nBfdqArQO6xLi8j7UGqHtOvYdlTfyAMwC0laGiQ2OhPCkACz1YxamwiqZ0OaC8hnQBt0n1w/s3fE/aIkAdk0uZqjDT8O0xnBGQBL1g5ozpL6Hiu5qywn5wpTP+FjlCS9r3ly7QpelCp9Vyuc03KGppLlzSV6Wh3JzVVTqoyXgZIzjeT/UemhTgcPmGq2c6nHkxK3U6dghez3YY+zh2kUKky75++rUv7bf2bKWwliR3aHgEDoLOc1ftgn3JxaI4FiryBnQZtWJHe9BFMiFdUCfwEWVQWpdEjqbIqC+zOzTlxtNFN7zFNbdZXUwDU9s1Dpt/Ukl/2YeKaV320FtScQvp0vD9DDuLoYwSZD26YO5oWacurIzShZ5oY/qLlzig8OxNuYFJB2PHf3vQ18XokUX6C+my65cdhr+wMqHM8+x1+e7SthsrRvuDGrDP1OXejJmFzeJ7hC4XILmkOXaZcawd4liULrsfLhi64FbrAgpBRAvmF/rdkFJi454uln3tD5ZVXX7Z9Yv9sUOGLriNv9yx1fL+6kcrFLoWre33qRNAnzy3wU9e3g8W3yPiWFfm6pG0Rfl/FF8yVym2Yd4vqQt95/nLgzZFrrh+WEp+7lw21B8jXSDC0VMIlC7oPtX2xw6kzv7oNGZ6DGfQCUgdZvfqr5Fbm/LBfA0q6yevef/CvYUK71/qBL6vXJ8qgfvKtcQveb/f7E23rbv7fUEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEGoWcz1vaMILJyrltl13KANrcMLzwidH5H23CxZ8GnEs5uhS9BQ2BB8pU+9oB7lbdMD7vEJ+F7L27emcf3vZjzCi4vDI9av5fK+Cg6tBq7EsqtbLlSIJvEpLEQ8OfaaWpGdHyINLazXkIaGRjlcXIUAHiit/YWXJVAGtBq4Wr9dP4Za2GAYyzruyXe1LrHx+RH1MGkvVdCTu7PoTNjmXhzzBECPI68jf+EzCBvFnhw7Pnbito5j1K7Bax51cdxKdRFlNslfXGf+87wLYSs+zdnfoUU6ArrAUQxbNsYxCl+mLmht+/klolcgrCeOqdbnJ9vnqNOMgczrO2PicP187lDeN3WBH/rE8xd1BmGD+Pld2Fodslw+H3njQdkfu1glJV3LQBAEQRAEQRAEQRAEIUzRWoutj+vq/6/WpCYaHtHyoURUjYvH+ctgGqxdJCt3Or0QKKnRTYuVDy/Uqy4Td62yzfr0dPEWAkVd1CK6vLZrfTBRKKzOaD8xJXLUqCSN7GN9f35E1/cZ+7Pcg/G5PlwiGsb5Iwzi189h3ZOHRm1VWTPm3yhrGtN2svGp96hKqgx40dfdD8lR9OLTvHM4sLJ7bZJcQTFwZerGJ8cmCrQYcuByx2Yfd6kiGbrA7bkTuUmo7JMuUQZYauO5NnBUrW5MixfPBv3FprWPcTFqmEKgDHiBVnSQ1sc7P15eXv4Pfm4lRepAF3QQ+NeIgsBq7qa/sC58TUMNk2fIBHTJJm4/r3WJMlBSYEEAHAELoa5lB2oDbA2vzbwsNfxTBqyLXj1e+4veWvWiy0pxqlG6nB/x4ppbTpcIA6WLQxNmYOpNfOpg5HQ06+TIz/p4+sCdPmUQrUv99MgmFq3k6sz2ezMRulAt0w86tHb6nb4iXWa5vl9soHWB+AQGsbHXQ8e9T823/sjWcC5twIu9fzVEK7jXX36BhP81iNHIiSWgC8YcWu4eKvsYi/z6fkAXOPSAXosMdErJoYGl1FPzBfzORRYTkWt5swqUAffHhpeX3vF1Uf2xetBlS0DhLNyr7i6OWfV1/1I11IMuN921OoNEjt4U3e3U+/2+IAiCIAiCIAiCINQV7ZfbNuU8NCxXAhyRU1XSsuCgRPcWGx7CapoJjZNAhXFpCMYbl29iAz73QY/VksmMRp8g1pu50lni5F0D2HKDnSV1IYNQQw+WOlv81EBXGv5Cqn5WoAuPkLauOUBKg3g7PrxZXv9XUqnUYf1/PpR6e/8z0IVHtfi1Pd0EusB2tOSfPLgOXQyDinV5qwd1qXiMTY2QrjVQqiYheHMRSvzyl/aX+Vg1UFWGmv+2G4UCVM0aaRoAbqCsmfzmfkFVnVe8P5Er8VzP8nThliJdwG3QOeKnMpkB/JAJN3wXGTS93wb2eBw+xQdfzVztQb8Cl4sdPYIbOAH4izLogjO36LDWhfvSltr3Y7JGQzgOuvDFYehic8GBv6FowyMJeDIDDqLqCGbUR3mWgpqEgN9Axa/N6wg2fLMCXXa9kUr1ex/3pdBvwHs8T6oCqGNyKVMVZhq+PYYzApKgF8ycMf2FK/EYv5aXF8J/KDZJ04VObK1Y74B5cYeu8Ja00kX7y6k0iIstDT8X602zPZooA3zrOw6fTe3rutwGatDp0iGf1uBXQtUwNjymQH2nEb96ra2CE3BwlsI0zSDBwgT8sLoIzZoENn7qzN498Jo6bcSxsx10hhc7lC5KqwOHrfjLHdWJkiR3aHgEDoLOc1ftgn3JxaI4piu+AX8xdYEmx3bjNrWaLirvGVQuBBbtdLUHdYHDLenY0R48B20sK6AL7Iu/2abPwLqofXi8a6Cdfai0Lup77aoabvPsA23lNbylZimoUh8qBEVx73D56Kg00PLQx9gheouZ52x1ujR8P8POYiijBNmwLrHe0SJ/wVTUUq0uVstoy0A4v/A+OA5OFk5tRbooZViXxBcjQX/xe2Q8S0HpAt/jbnYN2fweWaS/KN84bfgLK7OeVNPw3aVtN1aM9gc1YJ+py70ZMwNSJb6kLhjHoCMFHSPSZcBqvxLS5UInRirYNF1EXUY9XfA9/FxYF2rx+Js/7TSzu78PdMFzXeiM0GV4acjXhbZKlzvw0JXZcH4ha56loHWJT/2uz9CjovxyoN/ac7bDyPsQxA70ryfvr360QqFr0dp+nzoB9MlzG/zk5X1ViY/QhULJAG5QCYxglPd/P9iJ4Sfj3Yx0Za4eSePmyqujZId5n3ThMKV0wRNgZCIDME9bgV+FH2kf9AKu9vBvH4jUxaHHragnDnizrfA5BqH+GFnzLAWtC7pPtf0xcKVfv9hBoevMXvSrM3spkMHmqVH+AtpEPCcq2hfRj668n7zW/YuevlXR/csWgu8r//+q9GYGSu2L0iV4X1n2zqTc/T7MEXK38P2+IAjCs+F/1QFBHfBcnIMAAAAASUVORK5CYII="},519:function(e,t,a){e.exports=a.p+"assets/img/mysociety-img-3.f1a972a0.png"},520:function(e,t,a){e.exports=a.p+"assets/img/mysociety-img-4.7862ba68.png"},521:function(e,t,a){e.exports=a.p+"assets/img/mysociety-img-5.8895357e.png"},522:function(e,t,a){e.exports=a.p+"assets/img/mysociety-img-6.8f8bc957.png"},702:function(e,t,a){"use strict";a.r(t);var o=a(29),n=Object(o.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("p",[o("em",[e._v("Originally published on: "),o("a",{attrs:{href:"https://www.mysociety.org/2022/09/13/publishing-and-analysing-data-our-workflow/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://www.mysociety.org/2022/09/13/publishing-and-analysing-data-our-workflow/"),o("OutboundLink")],1)])]),e._v(" "),o("p",[e._v("I recently blogged about the data "),o("a",{attrs:{href:"https://www.mysociety.org/2022/09/13/we-want-you-to-build-on-our-local-climate-data-tell-us-what-you-need/",target:"_blank",rel:"noopener noreferrer"}},[e._v("we’re publishing and making use of in mySociety’s climate programme"),o("OutboundLink")],1),e._v(" (and how we want to help people make use of it!). This blog post explores behind the scenes how we’re managing that data, using the GitHub ecosystem and Frictionless Data standards to validate and publish data.")]),e._v(" "),o("h2",{attrs:{id:"how-we-re-handling-common-data-analysis-and-data-publishing-tasks"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#how-we-re-handling-common-data-analysis-and-data-publishing-tasks"}},[e._v("#")]),e._v(" How we’re handling common data analysis and data publishing tasks.")]),e._v(" "),o("p",[e._v("Generally we do all our data analysis in Python and Jupyter notebooks. While we have some analysis using R, we have more Python developers and projects, so this makes it easier for analysis code to be shared and understood between analysis and production projects.")]),e._v(" "),o("p",[e._v("Following the same basic ideas as (and stealing some folder structure from) the "),o("a",{attrs:{href:"https://drivendata.github.io/cookiecutter-data-science/",target:"_blank",rel:"noopener noreferrer"}},[e._v("cookiecutter data science"),o("OutboundLink")],1),e._v(" approach that each small project should live in a separate repository, we have a "),o("a",{attrs:{href:"https://github.com/mysociety/python-data-auto-template",target:"_blank",rel:"noopener noreferrer"}},[e._v("standard repository template"),o("OutboundLink")],1),e._v(" for working with data processing and analysis.")]),e._v(" "),o("p",[e._v("The template defines a folder structure, and standard config files for development in Docker and VS Code. A shared data_common library builds a base Docker image (for faster access to new repos), and common tools and utilities that are shared between projects for dataset management. This includes helpers for managing dataset releases, and for working with our charting theme. The use of Docker means that the development environment and the GitHub Actions environment can be kept in sync – and so processes can easily be shifted to a scheduled task as a GitHub Action.")]),e._v(" "),o("p",[e._v("The advantage of this common library approach is that it is easy to update the set of common tools from each new project, but because each project is pegged to a commit of the common library, new projects get the benefit of advances, while old projects do not need to be updated all the time to keep working.")]),e._v(" "),o("p",[e._v("This process can run end-to-end in GitHub – where the repository is created in GitHub, Codespaces can be used for development, automated testing and building happens with GitHub Actions and the data is published through GitHub Pages. The use of GitHub Actions especially means testing and validation of the data can live on Github’s infrastructure, rather than requiring additional work for each small project on our servers.")]),e._v(" "),o("h2",{attrs:{id:"dataset-management"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#dataset-management"}},[e._v("#")]),e._v(" Dataset management")]),e._v(" "),o("p",[e._v("One of the goals of this data management process is to make it easy to take a dataset we’ve built for our purposes, and make it easily accessible for re-use by others.")]),e._v(" "),o("p",[e._v("The data_common library contains a dataset command line tool – which automates the creation of various config files, publishing, and validation of our data.")]),e._v(" "),o("p",[e._v("Rather than reinventing the wheel, we use the "),o("a",{attrs:{href:"https://specs.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("frictionless data standard"),o("OutboundLink")],1),e._v(" as a way of describing the data. A repo will hold one or more "),o("a",{attrs:{href:"https://specs.frictionlessdata.io/data-package/",target:"_blank",rel:"noopener noreferrer"}},[e._v("data packages"),o("OutboundLink")],1),e._v(", which are a collection of "),o("a",{attrs:{href:"https://specs.frictionlessdata.io/data-resource/",target:"_blank",rel:"noopener noreferrer"}},[e._v("data resources"),o("OutboundLink")],1),e._v(" (generally a CSV table). The dataset tool detects changes to the data resources, and updates the config files. Changes between config files can then be used for automated version changes.")]),e._v(" "),o("p",[o("img",{attrs:{src:a(517),alt:"mysociety-img-1"}})]),e._v(" "),o("h2",{attrs:{id:"data-integrity"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#data-integrity"}},[e._v("#")]),e._v(" Data integrity")]),e._v(" "),o("p",[e._v("Leaning on the frictionless standard for basic validation that the structure is right, we use "),o("a",{attrs:{href:"https://docs.pytest.org/en/7.1.x/",target:"_blank",rel:"noopener noreferrer"}},[e._v("pytest"),o("OutboundLink")],1),e._v(" to run additional tests on the data itself. This means we define a set of rules that the dataset should pass (eg ‘all cells in this column contain a value’), and if it doesn’t, the dataset will not validate and will fail to build.")]),e._v(" "),o("p",[e._v("This is especially important because we have datasets that are fed by automated processes, read external Google Sheets, or accept input from other organisations. The "),o("a",{attrs:{href:"https://mysociety.github.io/uk_local_authority_names_and_codes/",target:"_blank",rel:"noopener noreferrer"}},[e._v("local authority codes dataset"),o("OutboundLink")],1),e._v(" has "),o("a",{attrs:{href:"https://github.com/mysociety/uk_local_authority_names_and_codes/tree/main/tests",target:"_blank",rel:"noopener noreferrer"}},[e._v("a number of tests"),o("OutboundLink")],1),e._v(" to check authorities haven’t been unexpectedly deleted, that the start date and end dates make sense, and that only certain kinds of authorities can be designated as the county council or combined authority overlapping with a different authority. This means that when someone submits a change to the source dataset, we can have a certain amount of faith that the dataset is being improved because the automated testing is checking that nothing is obviously broken.")]),e._v(" "),o("p",[e._v("The automated versioning approach means the defined structure of a resource is also a form of automated testing. Generally following the "),o("a",{attrs:{href:"https://specs.frictionlessdata.io/patterns/#data-package-version",target:"_blank",rel:"noopener noreferrer"}},[e._v("semver rules for frictionless data"),o("OutboundLink")],1),e._v(" (exception that adding a new column after the last column is not a major change), the dataset tool will try and determine if a change from the previous version is a MAJOR (backward compatibility breaking), MINOR (new resource, row or column), or PATCH (correcting errors) change. Generally, we want to avoid major changes, and the automated action will throw an error if this happens. If a major change is required, this can be done manually. The fact that external users of the file can peg their usage to a particular major version means that changes can be made knowing nothing is immediately going to break (even if data may become more stale in the long run).")]),e._v(" "),o("p",[o("img",{attrs:{src:a(518),alt:"mysociety-img-2"}})]),e._v(" "),o("h2",{attrs:{id:"data-publishing-and-accessibility"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#data-publishing-and-accessibility"}},[e._v("#")]),e._v(" Data publishing and accessibility")]),e._v(" "),o("p",[e._v("The frictionless standard allows an optional description for each data column. We make this required, so that each column needs to have been given a human readable description for the dataset to validate successfully. Internally, this is useful as enforcing documentation (and making sure you really understand what units a column is in), and means that it is much easier for external users to understand what is going on.")]),e._v(" "),o("p",[e._v("Previously, we were uploading the CSVs to GitHub repositories and leaving it as that – but GitHub isn’t friendly to non-developers, and clicking a CSV file opens it up in the browser rather than downloading it.")]),e._v(" "),o("p",[e._v("To help make data more accessible, we now publish a small GitHub Pages site for each repo, which allows small static sites to be built from the contents of a repository (the "),o("a",{attrs:{href:"https://everypolitician.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("EveryPolitician project"),o("OutboundLink")],1),e._v(" also used this approach). This means we can have fuller documentation of the data, better analytics on access, sign-posting to surveys, and better sign-posted links to downloading multiple versions of the data.")]),e._v(" "),o("p",[o("img",{attrs:{src:a(519),alt:"mysociety-img-3"}})]),e._v(" "),o("p",[e._v("The automated deployment means we can also very easily create Excel files that packages together all resources in a package into the same file, and include the meta-data information about the dataset, as well as information about how they can tell us about how they’re using it.")]),e._v(" "),o("p",[e._v("Publishing in an Excel format acknowledges a practical reality that lots of people work in Excel. CSVs don’t always load nicely in Excel, and since Excel files can contain multiple sheets, we can add a cover page that makes it easier to use and understand our data by packaging all the explanations inside the file. We still produce both CSVs and XLSX files – and can now do so with very little work.")]),e._v(" "),o("p",[o("img",{attrs:{src:a(520),alt:"mysociety-img-4"}})]),e._v(" "),o("p",[e._v("For developers who are interested in making automated use of the data, we also provide "),o("a",{attrs:{href:"https://github.com/mysociety/mysoc-dataset",target:"_blank",rel:"noopener noreferrer"}},[e._v("a small package"),o("OutboundLink")],1),e._v(" that can be used in Python or as a CLI tool to fetch the data, and instructions on the download page on "),o("a",{attrs:{href:"https://mysociety.github.io/composite_uk_imd/downloads/uk_index_xlsx/latest",target:"_blank",rel:"noopener noreferrer"}},[e._v("how to use it"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[o("img",{attrs:{src:a(521),alt:"mysociety-img-5"}})]),e._v(" "),o("p",[e._v("At mySociety Towers, we’re fans of "),o("a",{attrs:{href:"https://datasette.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Datasette"),o("OutboundLink")],1),e._v(", a tool for exploring datasets. Simon Willison recently released "),o("a",{attrs:{href:"https://github.com/simonw/datasette-lite",target:"_blank",rel:"noopener noreferrer"}},[e._v("Datasette Lite"),o("OutboundLink")],1),e._v(", a version that runs entirely in the browser. That means that just by publishing our data as a SQLite file, we can add a link so that people can explore a dataset without leaving the browser. You can even create shareable links for queries: for example, "),o("a",{attrs:{href:"https://lite.datasette.io/?url=https://mysociety.github.io/uk_local_authority_names_and_codes/data/uk_la_past_current/latest/uk_la_past_current.sqlite#/uk_la_past_current/uk_local_authorities_current?_facet=region®ion=Scotland",target:"_blank",rel:"noopener noreferrer"}},[e._v("all current local authorities in Scotland"),o("OutboundLink")],1),e._v(", or "),o("a",{attrs:{href:"https://lite.datasette.io/?url=https://mysociety.github.io/composite_uk_imd/data/uk_index/latest/uk_index.sqlite#/uk_index/la_labels?_sort=label&_facet=label&label=1st+IMD+quintile",target:"_blank",rel:"noopener noreferrer"}},[e._v("local authorities in the most deprived quintile"),o("OutboundLink")],1),e._v(". This lets us do some very rapid prototyping of what a data service might look like, just by packaging up some of the data using our new approach.")]),e._v(" "),o("p",[o("img",{attrs:{src:a(522),alt:"mysociety-img-6"}})]),e._v(" "),o("h2",{attrs:{id:"data-analysis"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#data-analysis"}},[e._v("#")]),e._v(" Data analysis")]),e._v(" "),o("p",[e._v("Something in use in a few of our repos is the ability to automatically deploy analysis of the dataset when it is updated.")]),e._v(" "),o("p",[e._v("Analysis of the dataset can be designed in a Jupyter notebook (including tables and charts) – and this can be re-run and published on the same GitHub Pages deploy as the data itself. For instance, the "),o("a",{attrs:{href:"https://mysociety.github.io/uk_ruc/",target:"_blank",rel:"noopener noreferrer"}},[e._v("UK Composite Rural Urban Classification"),o("OutboundLink")],1),e._v(" produces "),o("a",{attrs:{href:"https://mysociety.github.io/uk_ruc/analysis/background_and_analysis.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("this analysis"),o("OutboundLink")],1),e._v(". For the moment, this is just replacing previous automatic README creation – but in principle makes it easy for us to create simple, self-updating public charts and analysis of whatever we like.")]),e._v(" "),o("p",[e._v("Bringing it all back together and keeping people to up to date with changes")]),e._v(" "),o("p",[e._v("The one downside of all these datasets living in different repositories is making them easy to discover. To help out with this, we add all data packages to our "),o("a",{attrs:{href:"https://data.mysociety.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("data.mysociety.org"),o("OutboundLink")],1),e._v(" catalogue (itself a Jekyll site that updates via GitHub Actions) and have started a lightweight "),o("a",{attrs:{href:"https://data.mysociety.org/newsletter",target:"_blank",rel:"noopener noreferrer"}},[e._v("data announcement email list"),o("OutboundLink")],1),e._v(". If you have got this far, and want to see more of our data in future – "),o("a",{attrs:{href:"https://data.mysociety.org/newsletter",target:"_blank",rel:"noopener noreferrer"}},[e._v("sign up"),o("OutboundLink")],1),e._v("!")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/112.ed3f7786.js b/assets/js/112.c2ceb052.js similarity index 96% rename from assets/js/112.ed3f7786.js rename to assets/js/112.c2ceb052.js index 40e60c85e..11344fad9 100644 --- a/assets/js/112.ed3f7786.js +++ b/assets/js/112.c2ceb052.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[112],{646:function(t,e,o){"use strict";o.r(e);var a=o(29),n=Object(a.a)({},(function(){var t=this,e=t.$createElement,o=t._self._c||e;return o("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[o("p",[o("em",[t._v("By Tracy Teal; originally posted in the Dryad blog: "),o("a",{attrs:{href:"https://blog.datadryad.org/2020/11/18/frictionless-data/",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://blog.datadryad.org/2020/11/18/frictionless-data/"),o("OutboundLink")],1)])]),t._v(" "),o("p",[t._v("Guided by our commitment to make research data publishing more seamless and also re-usable, we are thrilled to partner with Open Knowledge Foundation and the Frictionless Data team to enhance our submission processes. Integrating the Frictionless Data toolkit, Dryad will be able to directly provide feedback to authors on the structure of tabular files uploaded. This will also allow for automated file level metadata to be created at upload and available for download for published datasets.")]),t._v(" "),o("p",[t._v("We are excited to get moving on this project and with support from the Sloan Foundation, Open Knowledge Foundation has just announced a job opening to contribute to this work. Please check out the posting and circulate it to any developers who may be interested in building out this functionality with us: "),o("a",{attrs:{href:"https://okfn.org/about/jobs/",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://okfn.org/about/jobs/"),o("OutboundLink")],1)]),t._v(" "),o("p",[o("em",[t._v("Stay tuned for a project update in July 2021!")])])])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[112],{643:function(t,e,o){"use strict";o.r(e);var a=o(29),n=Object(a.a)({},(function(){var t=this,e=t.$createElement,o=t._self._c||e;return o("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[o("p",[o("em",[t._v("By Tracy Teal; originally posted in the Dryad blog: "),o("a",{attrs:{href:"https://blog.datadryad.org/2020/11/18/frictionless-data/",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://blog.datadryad.org/2020/11/18/frictionless-data/"),o("OutboundLink")],1)])]),t._v(" "),o("p",[t._v("Guided by our commitment to make research data publishing more seamless and also re-usable, we are thrilled to partner with Open Knowledge Foundation and the Frictionless Data team to enhance our submission processes. Integrating the Frictionless Data toolkit, Dryad will be able to directly provide feedback to authors on the structure of tabular files uploaded. This will also allow for automated file level metadata to be created at upload and available for download for published datasets.")]),t._v(" "),o("p",[t._v("We are excited to get moving on this project and with support from the Sloan Foundation, Open Knowledge Foundation has just announced a job opening to contribute to this work. Please check out the posting and circulate it to any developers who may be interested in building out this functionality with us: "),o("a",{attrs:{href:"https://okfn.org/about/jobs/",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://okfn.org/about/jobs/"),o("OutboundLink")],1)]),t._v(" "),o("p",[o("em",[t._v("Stay tuned for a project update in July 2021!")])])])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/114.7a312779.js b/assets/js/114.8f9f4c29.js similarity index 99% rename from assets/js/114.7a312779.js rename to assets/js/114.8f9f4c29.js index 378254045..a77638f68 100644 --- a/assets/js/114.7a312779.js +++ b/assets/js/114.8f9f4c29.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[114],{647:function(a,e,t){"use strict";t.r(e);var o=t(29),r=Object(o.a)({},(function(){var a=this,e=a.$createElement,t=a._self._c||e;return t("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[t("p",[a._v("Have you ever been looking at a dataset and had no idea what the data values mean? What units are being used? What does that acronym in the first column mean? What is the license for this data?")]),a._v(" "),t("p",[a._v("These are all very common issues that make data hard to understand and use. At Frictionless Data, we work to solve these issues by packaging data with its metadata - aka the description of the data. To help you package your data, we have "),t("a",{attrs:{href:"https://frictionlessdata.io/software/",target:"_blank",rel:"noopener noreferrer"}},[a._v("code in several languages"),t("OutboundLink")],1),a._v(" and a browser tool, called "),t("a",{attrs:{href:"https://create.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[a._v("Data Package Creator"),t("OutboundLink")],1),a._v(".")]),a._v(" "),t("p",[a._v("Our Reproducible Research Fellows recently learned all about packaging their data by using the Data Package Creator. To help others learn how they too can package their data, the Fellows wrote about packaging their data in blogs that you can read below!")]),a._v(" "),t("hr"),a._v(" "),t("h3",{attrs:{id:"data-package-is-valid-by-ouso-daniel-cohort-1"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#data-package-is-valid-by-ouso-daniel-cohort-1"}},[a._v("#")]),a._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/ouso-datapackage-blog/",target:"_blank",rel:"noopener noreferrer"}},[a._v("Data Package is Valid! By Ouso Daniel"),t("OutboundLink")],1),a._v(" (Cohort 1)")]),a._v(" "),t("p",[a._v("“To quality-check the integrity of your data package creation, you must validate it before downloading it for sharing, among many things. The best you can get from that process is “Data package is valid!”. What about before then?”")]),a._v(" "),t("hr"),a._v(" "),t("h3",{attrs:{id:"combating-other-people-s-data-by-monica-granados-cohort-1"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#combating-other-people-s-data-by-monica-granados-cohort-1"}},[a._v("#")]),a._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/monica-datapackage-blog/",target:"_blank",rel:"noopener noreferrer"}},[a._v("Combating other people’s data by Monica Granados"),t("OutboundLink")],1),a._v(" (Cohort 1)")]),a._v(" "),t("p",[a._v("“Follow the #otherpeoplesdata on Twitter and in it you will find a trove of data users trying to make sense of data they did not collect. While the data may be open, having no metadata or information about what variables mean, doesn’t make it very accessible….Without definitions and an explanation of the data, taking the data out of the context of my experiment and adding it to something like a meta-analysis is difficult. Enter Data packages. “")]),a._v(" "),t("hr"),a._v(" "),t("h3",{attrs:{id:"data-package-blog-by-lily-zhao-cohort-1"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#data-package-blog-by-lily-zhao-cohort-1"}},[a._v("#")]),a._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/lily-datapackage-blog/",target:"_blank",rel:"noopener noreferrer"}},[a._v("Data Package Blog by Lily Zhao"),t("OutboundLink")],1),a._v(" (Cohort 1)")]),a._v(" "),t("p",[a._v('"When I started graduate school, I was shocked to learn that seafood is actually the most internationally traded food commodity in the world….However, for many developing countries being connected to the global seafood market can be a double-edged sword….Over the course of my master’s degree, I developed a passion for studying these issues, which is why I am excited to share with you my experience turning some of the data my collaborators into a packaged dataset using the Open Knowledge Foundation’s Datapackage tool.”')]),a._v(" "),t("hr"),a._v(" "),t("h3",{attrs:{id:"¿como-empaquetamos-datos-y-por-que-es-importante-organizar-la-bolsa-del-supermercado-by-sele-yang-cohort-1"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#¿como-empaquetamos-datos-y-por-que-es-importante-organizar-la-bolsa-del-supermercado-by-sele-yang-cohort-1"}},[a._v("#")]),a._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/sele-datapackage-blog/",target:"_blank",rel:"noopener noreferrer"}},[a._v("¿Cómo empaquetamos datos y por qué es importante organizar la bolsa del supermercado? By Sele Yang"),t("OutboundLink")],1),a._v(" (Cohort 1)")]),a._v(" "),t("p",[a._v("“Empaquetando datos sobre aborto desde OpenStreetMap Esta es una publicación para compartirles sobre el proceso y pasos para crear datapackages. ¿Qué es esto? Un datapackage es básicamente un empaquetado que agiliza la forma en que compartimos y replicamos los datos. Es como un contenedor de datos listo para ser transportado por la autopista del conocimiento (geeky, right).”")]),a._v(" "),t("hr"),a._v(" "),t("h3",{attrs:{id:"so-you-want-to-get-your-data-package-validated-by-katerina-drakoulaki-cohort-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#so-you-want-to-get-your-data-package-validated-by-katerina-drakoulaki-cohort-2"}},[a._v("#")]),a._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/katerina-datapackage-blog/",target:"_blank",rel:"noopener noreferrer"}},[a._v("So you want to get your data package validated? By Katerina Drakoulaki"),t("OutboundLink")],1),a._v(" (Cohort 2)")]),a._v(" "),t("p",[a._v("“Have you ever found any kind of dataset, (or been given one by your PI/collaborator) and had no idea what the data were about? During my PhD I’ve had my fair share of not knowing how code works, or how stimuli were supposed to be presented, or how data were supposed to be analysed….The datapackage tool tries to solve one of these issues, more specifically creating packages in which data make sense, and have all the explanations (metadata) necessary to understand and manipulate them.”")]),a._v(" "),t("hr"),a._v(" "),t("h3",{attrs:{id:"constructing-a-basic-data-package-in-python-by-jacqueline-maasch-cohort-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#constructing-a-basic-data-package-in-python-by-jacqueline-maasch-cohort-2"}},[a._v("#")]),a._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/jacqueline-datapackage-blog/",target:"_blank",rel:"noopener noreferrer"}},[a._v("Constructing a basic data package in Python by Jacqueline Maasch"),t("OutboundLink")],1),a._v(" (Cohort 2)")]),a._v(" "),t("p",[a._v("“As a machine learning researcher, I am constantly scraping, merging, reshaping, exploring, modeling, and generating data. Because I do most of my data management and analysis in Python, I find it convenient to package my data in Python as well. The screenshots below are a walk-through of basic data package construction in Python.”")]),a._v(" "),t("hr"),a._v(" "),t("h3",{attrs:{id:"sharing-data-from-your-own-scientific-publication-by-dani-alcala-lopez-cohort-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sharing-data-from-your-own-scientific-publication-by-dani-alcala-lopez-cohort-2"}},[a._v("#")]),a._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/dani-datapackage-blog/",target:"_blank",rel:"noopener noreferrer"}},[a._v("Sharing data from your own scientific publication by Dani Alcalá-López"),t("OutboundLink")],1),a._v(" (Cohort 2)")]),a._v(" "),t("p",[a._v("“What better way to start working with open data than by sharing a Data Package from one of my own publications? In this tutorial, I will explain how to use the Frictionless Data tools to share tabular data from a scientific publication openly. This will make easier for anyone to reuse this data.”")]),a._v(" "),t("hr"),a._v(" "),t("h3",{attrs:{id:"data-package-blog-by-sam-wilairat-cohort-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#data-package-blog-by-sam-wilairat-cohort-2"}},[a._v("#")]),a._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/sam-datapackage-blog/",target:"_blank",rel:"noopener noreferrer"}},[a._v("Data Package Blog by Sam Wilairat"),t("OutboundLink")],1),a._v(" (Cohort 2)")]),a._v(" "),t("p",[a._v("“As a library science student with an interest in pursuing data librarianship, learning how to create, manage, and share frictionless data is important. These past few months I’ve been learning about Frictionless Data and how to use Frictionless Data Tools to support reproducible research….To learn how to use the Frictionless Data Tools, I decided to pursue an independent project and am working on creating a comprehensive dataset of OER (open educational resources) health science materials that can be filtered by material type, media format, topic, and more.”")]),a._v(" "),t("hr"),a._v(" "),t("h3",{attrs:{id:"let-s-talk-data-packaging-by-evelyn-night-cohort-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#let-s-talk-data-packaging-by-evelyn-night-cohort-2"}},[a._v("#")]),a._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/evelyn-datapackage-blog/",target:"_blank",rel:"noopener noreferrer"}},[a._v("Let’s Talk Data Packaging by Evelyn Night"),t("OutboundLink")],1),a._v(" (Cohort 2)")]),a._v(" "),t("p",[a._v("“A few weeks ago I met data packages for the first time and I was intrigued since I had spent too much time in the past wrangling missing and inconsistent values. Packaging data therefore taught me that arranging and preserving data does not have to be tedious anymore. Here, I show how I packaged a bit of my data (unpublished) into a neat json document using the Data Package creator . I am excited to show you just how much I have come from knowing nothing to being able to package and extract the json output.”")]),a._v(" "),t("hr"),a._v(" "),t("h3",{attrs:{id:"data-packaging-human-rights-with-the-universal-periodic-review-by-anne-lee-steele-cohort-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#data-packaging-human-rights-with-the-universal-periodic-review-by-anne-lee-steele-cohort-2"}},[a._v("#")]),a._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/anne-datapackage-blog/",target:"_blank",rel:"noopener noreferrer"}},[a._v("[Data]packaging human rights with the Universal Periodic Review by Anne Lee Steele"),t("OutboundLink")],1),a._v(" (Cohort 2)")]),a._v(" "),t("p",[a._v("“All of the records for the Universal Periodic Review have been uploaded online, and are available for the public. However, it’s not likely that the everyday user would be able to make heads or tails of what it actually means….The way I think about it, the Data Package is a way of explaining the categories used within the data itself, in case someone besides an expert is using them. While sections like “Recommendation” and “Recommending State” may be somewhat self-explanatory, I can imagine that this will get way more complicated with purely numerical data.”")]),a._v(" "),t("hr"),a._v(" "),t("h3",{attrs:{id:"creating-a-datapackage-for-microbial-community-data-and-a-phyloseq-object-by-kate-bowie-cohort-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#creating-a-datapackage-for-microbial-community-data-and-a-phyloseq-object-by-kate-bowie-cohort-2"}},[a._v("#")]),a._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/kate-datapackage-blog/",target:"_blank",rel:"noopener noreferrer"}},[a._v("Creating a datapackage for microbial community data (and a phyloseq object) by Kate Bowie"),t("OutboundLink")],1),a._v(" (Cohort 2)")]),a._v(" "),t("p",[a._v("“I study bacteria, and lucky for me, bacteria are everywhere….My lab often tries many different ways to handle the mock [bacteria] community, so it’s important that the analysis be documented and reproducible. To address this, I decided to generate a data package using a tool created by the Open Knowledge Foundation. Here is my experience creating a data package of our data, the metadata, and associated software.”")]),a._v(" "),t("hr"),a._v(" "),t("h3",{attrs:{id:"using-weather-and-rainfall-data-to-validate-by-ritwik-agarwal-cohort-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#using-weather-and-rainfall-data-to-validate-by-ritwik-agarwal-cohort-2"}},[a._v("#")]),a._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/ritwik-datapackage-blog/",target:"_blank",rel:"noopener noreferrer"}},[a._v("Using Weather and Rainfall Data to Validate by Ritwik Agarwal"),t("OutboundLink")],1),a._v(" (Cohort 2)")]),a._v(" "),t("p",[a._v("“I am using a data resource from Telangana Open Data…it is an open source data repository commissioned by the state government here in India and basically it archives and stores Weather, Topological, Agriculture and Infrastructure data which then can be used by research students and stakeholders keen to study and make reports in it….CSV files are very versatile, but cannot handle the metadata with all the necessary context. We need to make sure that people can find our data and the information they need to understand our data. That’s where the Data Package comes in! ”")])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[114],{646:function(a,e,t){"use strict";t.r(e);var o=t(29),r=Object(o.a)({},(function(){var a=this,e=a.$createElement,t=a._self._c||e;return t("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[t("p",[a._v("Have you ever been looking at a dataset and had no idea what the data values mean? What units are being used? What does that acronym in the first column mean? What is the license for this data?")]),a._v(" "),t("p",[a._v("These are all very common issues that make data hard to understand and use. At Frictionless Data, we work to solve these issues by packaging data with its metadata - aka the description of the data. To help you package your data, we have "),t("a",{attrs:{href:"https://frictionlessdata.io/software/",target:"_blank",rel:"noopener noreferrer"}},[a._v("code in several languages"),t("OutboundLink")],1),a._v(" and a browser tool, called "),t("a",{attrs:{href:"https://create.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[a._v("Data Package Creator"),t("OutboundLink")],1),a._v(".")]),a._v(" "),t("p",[a._v("Our Reproducible Research Fellows recently learned all about packaging their data by using the Data Package Creator. To help others learn how they too can package their data, the Fellows wrote about packaging their data in blogs that you can read below!")]),a._v(" "),t("hr"),a._v(" "),t("h3",{attrs:{id:"data-package-is-valid-by-ouso-daniel-cohort-1"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#data-package-is-valid-by-ouso-daniel-cohort-1"}},[a._v("#")]),a._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/ouso-datapackage-blog/",target:"_blank",rel:"noopener noreferrer"}},[a._v("Data Package is Valid! By Ouso Daniel"),t("OutboundLink")],1),a._v(" (Cohort 1)")]),a._v(" "),t("p",[a._v("“To quality-check the integrity of your data package creation, you must validate it before downloading it for sharing, among many things. The best you can get from that process is “Data package is valid!”. What about before then?”")]),a._v(" "),t("hr"),a._v(" "),t("h3",{attrs:{id:"combating-other-people-s-data-by-monica-granados-cohort-1"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#combating-other-people-s-data-by-monica-granados-cohort-1"}},[a._v("#")]),a._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/monica-datapackage-blog/",target:"_blank",rel:"noopener noreferrer"}},[a._v("Combating other people’s data by Monica Granados"),t("OutboundLink")],1),a._v(" (Cohort 1)")]),a._v(" "),t("p",[a._v("“Follow the #otherpeoplesdata on Twitter and in it you will find a trove of data users trying to make sense of data they did not collect. While the data may be open, having no metadata or information about what variables mean, doesn’t make it very accessible….Without definitions and an explanation of the data, taking the data out of the context of my experiment and adding it to something like a meta-analysis is difficult. Enter Data packages. “")]),a._v(" "),t("hr"),a._v(" "),t("h3",{attrs:{id:"data-package-blog-by-lily-zhao-cohort-1"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#data-package-blog-by-lily-zhao-cohort-1"}},[a._v("#")]),a._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/lily-datapackage-blog/",target:"_blank",rel:"noopener noreferrer"}},[a._v("Data Package Blog by Lily Zhao"),t("OutboundLink")],1),a._v(" (Cohort 1)")]),a._v(" "),t("p",[a._v('"When I started graduate school, I was shocked to learn that seafood is actually the most internationally traded food commodity in the world….However, for many developing countries being connected to the global seafood market can be a double-edged sword….Over the course of my master’s degree, I developed a passion for studying these issues, which is why I am excited to share with you my experience turning some of the data my collaborators into a packaged dataset using the Open Knowledge Foundation’s Datapackage tool.”')]),a._v(" "),t("hr"),a._v(" "),t("h3",{attrs:{id:"¿como-empaquetamos-datos-y-por-que-es-importante-organizar-la-bolsa-del-supermercado-by-sele-yang-cohort-1"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#¿como-empaquetamos-datos-y-por-que-es-importante-organizar-la-bolsa-del-supermercado-by-sele-yang-cohort-1"}},[a._v("#")]),a._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/sele-datapackage-blog/",target:"_blank",rel:"noopener noreferrer"}},[a._v("¿Cómo empaquetamos datos y por qué es importante organizar la bolsa del supermercado? By Sele Yang"),t("OutboundLink")],1),a._v(" (Cohort 1)")]),a._v(" "),t("p",[a._v("“Empaquetando datos sobre aborto desde OpenStreetMap Esta es una publicación para compartirles sobre el proceso y pasos para crear datapackages. ¿Qué es esto? Un datapackage es básicamente un empaquetado que agiliza la forma en que compartimos y replicamos los datos. Es como un contenedor de datos listo para ser transportado por la autopista del conocimiento (geeky, right).”")]),a._v(" "),t("hr"),a._v(" "),t("h3",{attrs:{id:"so-you-want-to-get-your-data-package-validated-by-katerina-drakoulaki-cohort-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#so-you-want-to-get-your-data-package-validated-by-katerina-drakoulaki-cohort-2"}},[a._v("#")]),a._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/katerina-datapackage-blog/",target:"_blank",rel:"noopener noreferrer"}},[a._v("So you want to get your data package validated? By Katerina Drakoulaki"),t("OutboundLink")],1),a._v(" (Cohort 2)")]),a._v(" "),t("p",[a._v("“Have you ever found any kind of dataset, (or been given one by your PI/collaborator) and had no idea what the data were about? During my PhD I’ve had my fair share of not knowing how code works, or how stimuli were supposed to be presented, or how data were supposed to be analysed….The datapackage tool tries to solve one of these issues, more specifically creating packages in which data make sense, and have all the explanations (metadata) necessary to understand and manipulate them.”")]),a._v(" "),t("hr"),a._v(" "),t("h3",{attrs:{id:"constructing-a-basic-data-package-in-python-by-jacqueline-maasch-cohort-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#constructing-a-basic-data-package-in-python-by-jacqueline-maasch-cohort-2"}},[a._v("#")]),a._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/jacqueline-datapackage-blog/",target:"_blank",rel:"noopener noreferrer"}},[a._v("Constructing a basic data package in Python by Jacqueline Maasch"),t("OutboundLink")],1),a._v(" (Cohort 2)")]),a._v(" "),t("p",[a._v("“As a machine learning researcher, I am constantly scraping, merging, reshaping, exploring, modeling, and generating data. Because I do most of my data management and analysis in Python, I find it convenient to package my data in Python as well. The screenshots below are a walk-through of basic data package construction in Python.”")]),a._v(" "),t("hr"),a._v(" "),t("h3",{attrs:{id:"sharing-data-from-your-own-scientific-publication-by-dani-alcala-lopez-cohort-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sharing-data-from-your-own-scientific-publication-by-dani-alcala-lopez-cohort-2"}},[a._v("#")]),a._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/dani-datapackage-blog/",target:"_blank",rel:"noopener noreferrer"}},[a._v("Sharing data from your own scientific publication by Dani Alcalá-López"),t("OutboundLink")],1),a._v(" (Cohort 2)")]),a._v(" "),t("p",[a._v("“What better way to start working with open data than by sharing a Data Package from one of my own publications? In this tutorial, I will explain how to use the Frictionless Data tools to share tabular data from a scientific publication openly. This will make easier for anyone to reuse this data.”")]),a._v(" "),t("hr"),a._v(" "),t("h3",{attrs:{id:"data-package-blog-by-sam-wilairat-cohort-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#data-package-blog-by-sam-wilairat-cohort-2"}},[a._v("#")]),a._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/sam-datapackage-blog/",target:"_blank",rel:"noopener noreferrer"}},[a._v("Data Package Blog by Sam Wilairat"),t("OutboundLink")],1),a._v(" (Cohort 2)")]),a._v(" "),t("p",[a._v("“As a library science student with an interest in pursuing data librarianship, learning how to create, manage, and share frictionless data is important. These past few months I’ve been learning about Frictionless Data and how to use Frictionless Data Tools to support reproducible research….To learn how to use the Frictionless Data Tools, I decided to pursue an independent project and am working on creating a comprehensive dataset of OER (open educational resources) health science materials that can be filtered by material type, media format, topic, and more.”")]),a._v(" "),t("hr"),a._v(" "),t("h3",{attrs:{id:"let-s-talk-data-packaging-by-evelyn-night-cohort-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#let-s-talk-data-packaging-by-evelyn-night-cohort-2"}},[a._v("#")]),a._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/evelyn-datapackage-blog/",target:"_blank",rel:"noopener noreferrer"}},[a._v("Let’s Talk Data Packaging by Evelyn Night"),t("OutboundLink")],1),a._v(" (Cohort 2)")]),a._v(" "),t("p",[a._v("“A few weeks ago I met data packages for the first time and I was intrigued since I had spent too much time in the past wrangling missing and inconsistent values. Packaging data therefore taught me that arranging and preserving data does not have to be tedious anymore. Here, I show how I packaged a bit of my data (unpublished) into a neat json document using the Data Package creator . I am excited to show you just how much I have come from knowing nothing to being able to package and extract the json output.”")]),a._v(" "),t("hr"),a._v(" "),t("h3",{attrs:{id:"data-packaging-human-rights-with-the-universal-periodic-review-by-anne-lee-steele-cohort-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#data-packaging-human-rights-with-the-universal-periodic-review-by-anne-lee-steele-cohort-2"}},[a._v("#")]),a._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/anne-datapackage-blog/",target:"_blank",rel:"noopener noreferrer"}},[a._v("[Data]packaging human rights with the Universal Periodic Review by Anne Lee Steele"),t("OutboundLink")],1),a._v(" (Cohort 2)")]),a._v(" "),t("p",[a._v("“All of the records for the Universal Periodic Review have been uploaded online, and are available for the public. However, it’s not likely that the everyday user would be able to make heads or tails of what it actually means….The way I think about it, the Data Package is a way of explaining the categories used within the data itself, in case someone besides an expert is using them. While sections like “Recommendation” and “Recommending State” may be somewhat self-explanatory, I can imagine that this will get way more complicated with purely numerical data.”")]),a._v(" "),t("hr"),a._v(" "),t("h3",{attrs:{id:"creating-a-datapackage-for-microbial-community-data-and-a-phyloseq-object-by-kate-bowie-cohort-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#creating-a-datapackage-for-microbial-community-data-and-a-phyloseq-object-by-kate-bowie-cohort-2"}},[a._v("#")]),a._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/kate-datapackage-blog/",target:"_blank",rel:"noopener noreferrer"}},[a._v("Creating a datapackage for microbial community data (and a phyloseq object) by Kate Bowie"),t("OutboundLink")],1),a._v(" (Cohort 2)")]),a._v(" "),t("p",[a._v("“I study bacteria, and lucky for me, bacteria are everywhere….My lab often tries many different ways to handle the mock [bacteria] community, so it’s important that the analysis be documented and reproducible. To address this, I decided to generate a data package using a tool created by the Open Knowledge Foundation. Here is my experience creating a data package of our data, the metadata, and associated software.”")]),a._v(" "),t("hr"),a._v(" "),t("h3",{attrs:{id:"using-weather-and-rainfall-data-to-validate-by-ritwik-agarwal-cohort-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#using-weather-and-rainfall-data-to-validate-by-ritwik-agarwal-cohort-2"}},[a._v("#")]),a._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/ritwik-datapackage-blog/",target:"_blank",rel:"noopener noreferrer"}},[a._v("Using Weather and Rainfall Data to Validate by Ritwik Agarwal"),t("OutboundLink")],1),a._v(" (Cohort 2)")]),a._v(" "),t("p",[a._v("“I am using a data resource from Telangana Open Data…it is an open source data repository commissioned by the state government here in India and basically it archives and stores Weather, Topological, Agriculture and Infrastructure data which then can be used by research students and stakeholders keen to study and make reports in it….CSV files are very versatile, but cannot handle the metadata with all the necessary context. We need to make sure that people can find our data and the information they need to understand our data. That’s where the Data Package comes in! ”")])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/115.6bee2741.js b/assets/js/115.24c7eaf7.js similarity index 98% rename from assets/js/115.6bee2741.js rename to assets/js/115.24c7eaf7.js index f41eb489d..fef48f9a8 100644 --- a/assets/js/115.6bee2741.js +++ b/assets/js/115.24c7eaf7.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[115],{648:function(e,t,a){"use strict";a.r(t);var r=a(29),o=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h2",{attrs:{id:"a-recap-from-our-december-community-call"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#a-recap-from-our-december-community-call"}},[e._v("#")]),e._v(" A recap from our December community call")]),e._v(" "),a("p",[e._v("We had a presentation about “using frictionless data package for web archive data package (WACZ format)”. More details in "),a("a",{attrs:{href:"https://github.com/frictionlessdata/forum/issues/69",target:"_blank",rel:"noopener noreferrer"}},[e._v("this GitHub issue"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("If you would like to dive deeper and watch Ilya’s presentation, you can find it here:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/2aeRcEMmmSs",frameborder:"0",allow:"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),a("h2",{attrs:{id:"other-agenda-items-from-our-hangout"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#other-agenda-items-from-our-hangout"}},[e._v("#")]),e._v(" Other agenda items from our hangout")]),e._v(" "),a("ul",[a("li",[e._v("People are interested in tools dealing with tools dealing with “small” data.")]),e._v(" "),a("li",[e._v("What are we up to for 2021? What’s the roadmap for Frictionless?\n"),a("ul",[a("li",[e._v("Specs are stable.")]),e._v(" "),a("li",[e._v("Always bet on JavaScript! We will keep focusing on working with tools for JavaScript. Its versatility is required for desktop apps, using dynamic frameworks like React, etc.\n"),a("ul",[a("li",[e._v("We will keep working on "),a("a",{attrs:{href:"https://github.com/frictionlessdata/frictionless-js",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/frictionlessdata/frictionless-js"),a("OutboundLink")],1)])])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/datopian/data-cli",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/datopian/data-cli"),a("OutboundLink")],1),e._v(" Command line tool for working with data, Data Packages and the DataHub")]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/datopian/datapub",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/datopian/datapub"),a("OutboundLink")],1),e._v(" React-based framework for building data publishing workflows (esp for CKAN)")])]),e._v(" "),a("h2",{attrs:{id:"join-us-next-time"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-time"}},[e._v("#")]),e._v(" Join us next time!")]),e._v(" "),a("p",[e._v("Our next meeting will be announced in January 2021! You can "),a("a",{attrs:{href:"https://forms.gle/5HeMrt2MDCYSYWxT8",target:"_blank",rel:"noopener noreferrer"}},[e._v("sign up here"),a("OutboundLink")],1),e._v(" to be notified when the hangout will be scheduled. We’ll give some space to talk about geospatial data standards, coping with Covid and showing a member’s platform dedicated to open data hackathons!")]),e._v(" "),a("p",[e._v("As always, there will be time for your updates too. Do you want to share something with the community? Let us know when you sign up!")]),e._v(" "),a("h2",{attrs:{id:"call-recording"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call recording")]),e._v(" "),a("p",[e._v("On a final note, here is the recording of the full call:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/lquzoKn9Flo",frameborder:"0",allow:"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),a("p",[e._v("As usual, you can join us on "),a("a",{attrs:{href:"https://discord.com/invite/j9DNFNw",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),a("OutboundLink")],1),e._v(" or "),a("a",{attrs:{href:"https://twitter.com/frictionlessd8a",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),a("OutboundLink")],1),e._v(" to say hi or ask any questions. See you there!")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[115],{647:function(e,t,a){"use strict";a.r(t);var r=a(29),o=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h2",{attrs:{id:"a-recap-from-our-december-community-call"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#a-recap-from-our-december-community-call"}},[e._v("#")]),e._v(" A recap from our December community call")]),e._v(" "),a("p",[e._v("We had a presentation about “using frictionless data package for web archive data package (WACZ format)”. More details in "),a("a",{attrs:{href:"https://github.com/frictionlessdata/forum/issues/69",target:"_blank",rel:"noopener noreferrer"}},[e._v("this GitHub issue"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("If you would like to dive deeper and watch Ilya’s presentation, you can find it here:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/2aeRcEMmmSs",frameborder:"0",allow:"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),a("h2",{attrs:{id:"other-agenda-items-from-our-hangout"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#other-agenda-items-from-our-hangout"}},[e._v("#")]),e._v(" Other agenda items from our hangout")]),e._v(" "),a("ul",[a("li",[e._v("People are interested in tools dealing with tools dealing with “small” data.")]),e._v(" "),a("li",[e._v("What are we up to for 2021? What’s the roadmap for Frictionless?\n"),a("ul",[a("li",[e._v("Specs are stable.")]),e._v(" "),a("li",[e._v("Always bet on JavaScript! We will keep focusing on working with tools for JavaScript. Its versatility is required for desktop apps, using dynamic frameworks like React, etc.\n"),a("ul",[a("li",[e._v("We will keep working on "),a("a",{attrs:{href:"https://github.com/frictionlessdata/frictionless-js",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/frictionlessdata/frictionless-js"),a("OutboundLink")],1)])])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/datopian/data-cli",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/datopian/data-cli"),a("OutboundLink")],1),e._v(" Command line tool for working with data, Data Packages and the DataHub")]),e._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/datopian/datapub",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/datopian/datapub"),a("OutboundLink")],1),e._v(" React-based framework for building data publishing workflows (esp for CKAN)")])]),e._v(" "),a("h2",{attrs:{id:"join-us-next-time"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-time"}},[e._v("#")]),e._v(" Join us next time!")]),e._v(" "),a("p",[e._v("Our next meeting will be announced in January 2021! You can "),a("a",{attrs:{href:"https://forms.gle/5HeMrt2MDCYSYWxT8",target:"_blank",rel:"noopener noreferrer"}},[e._v("sign up here"),a("OutboundLink")],1),e._v(" to be notified when the hangout will be scheduled. We’ll give some space to talk about geospatial data standards, coping with Covid and showing a member’s platform dedicated to open data hackathons!")]),e._v(" "),a("p",[e._v("As always, there will be time for your updates too. Do you want to share something with the community? Let us know when you sign up!")]),e._v(" "),a("h2",{attrs:{id:"call-recording"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call recording")]),e._v(" "),a("p",[e._v("On a final note, here is the recording of the full call:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/lquzoKn9Flo",frameborder:"0",allow:"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),a("p",[e._v("As usual, you can join us on "),a("a",{attrs:{href:"https://discord.com/invite/j9DNFNw",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),a("OutboundLink")],1),e._v(" or "),a("a",{attrs:{href:"https://twitter.com/frictionlessd8a",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),a("OutboundLink")],1),e._v(" to say hi or ask any questions. See you there!")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/116.85bdea59.js b/assets/js/116.03f644d6.js similarity index 98% rename from assets/js/116.85bdea59.js rename to assets/js/116.03f644d6.js index 734d8222b..50d8f7363 100644 --- a/assets/js/116.85bdea59.js +++ b/assets/js/116.03f644d6.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[116],{649:function(e,t,r){"use strict";r.r(t);var o=r(29),a=Object(o.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("p",[e._v("Originally published: "),r("a",{attrs:{href:"https://blog.okfn.org/2021/01/12/partnering-with-odi-to-improve-frictionless-data/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://blog.okfn.org/2021/01/12/partnering-with-odi-to-improve-frictionless-data/"),r("OutboundLink")],1)]),e._v(" "),r("p",[r("em",[e._v("In the framework of the Open Data Institute’s "),r("a",{attrs:{href:"https://theodi.org/article/call-for-proposals-funding-to-develop-open-source-tools-for-data-institutions/",target:"_blank",rel:"noopener noreferrer"}},[e._v("fund to develop open source tools for data institutions"),r("OutboundLink")],1),e._v(", the "),r("a",{attrs:{href:"okfn.org"}},[e._v("Open Knowledge Foundation (OKF)")]),e._v(" has been awarded funds to improve the quality and interoperability of Frictionless Data.")])]),e._v(" "),r("p",[e._v("In light of our effort to make data open and accessible, we are thrilled to announce we will be partnering with the "),r("a",{attrs:{href:"https://theodi.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Open Data Institute (ODI)"),r("OutboundLink")],1),e._v(" to improve our existing documentation and add new features on "),r("a",{attrs:{href:"https://frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Frictionless Data"),r("OutboundLink")],1),e._v(" to create a better user experience for all."),r("br"),e._v("\nTo achieve this, we will be working with a cohort of users from our active and engaged community to create better documentation that fits their needs. Our main goal is to make it easier for current and future users to understand and make use of the Frictionless Data tools and data libraries to their fullest potential."),r("br"),e._v("\nWe know how frustrating it can be to try and use existing code (or learn new code) that has incomplete documentation and we don’t want that to be a barrier for our users anymore. This is why we are very grateful to the ODI for granting us the opportunity to improve upon our existing documentation.")]),e._v(" "),r("h2",{attrs:{id:"so-what-will-be-changing"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#so-what-will-be-changing"}},[e._v("#")]),e._v(" So, what will be changing?")]),e._v(" "),r("ul",[r("li",[e._v("We will have a new project overview section, to help our users understand how to use Frictionless Data for their specific needs.")]),e._v(" "),r("li",[e._v("We will improve the existing documentation, to make sure even brand new users can quickly understand everything.")]),e._v(" "),r("li",[e._v("We will have Tutorials, to showcase real users experience and have user-friendly examples.")]),e._v(" "),r("li",[e._v("We will add a FAQ session.")])]),e._v(" "),r("h2",{attrs:{id:"and-when-will-all-of-that-be-ready"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#and-when-will-all-of-that-be-ready"}},[e._v("#")]),e._v(" And when will all of that be ready?")]),e._v(" "),r("p",[e._v("Very soon! By the beginning of April everything will be online, so stay tuned (and frictionless)!")]),e._v(" "),r("h2",{attrs:{id:"call-for-user-feedback"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#call-for-user-feedback"}},[e._v("#")]),e._v(" Call for user feedback")]),e._v(" "),r("p",[e._v("Feedback from our community is crucial to us, and part of this grant will be used to fund an evaluation of the existing documentation by our users in the format of user feedback sessions."),r("br"),e._v("\nAre you using our Frictionless Data tools or our Python data library? Then we want to hear from you!"),r("br"),e._v("\nWe are currently looking for novice and intermediate users to help us review our documentation, in order to make it more useful for you and all our future users."),r("br"),e._v("\nFor every user session you take part into, you will be given £50 for your time and feedback."),r("br"),e._v("\nAre you interested? Then fill in "),r("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSezZVuKjqnFL9CHtuWVjDwDu8Cv1gQCAIs85TtDYQUv1t9hVw/viewform",target:"_blank",rel:"noopener noreferrer"}},[e._v("this form"),r("OutboundLink")],1),e._v(".")]),e._v(" "),r("h2",{attrs:{id:"more-about-frictionless-data"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#more-about-frictionless-data"}},[e._v("#")]),e._v(" More about Frictionless Data")]),e._v(" "),r("p",[e._v("Frictionless Data is a set of specifications for data and metadata interoperability, accompanied by a collection of software libraries that implement these specifications, and a range of best practices for data management. The project is funded by the Sloan Foundation.")])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[116],{648:function(e,t,r){"use strict";r.r(t);var o=r(29),a=Object(o.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("p",[e._v("Originally published: "),r("a",{attrs:{href:"https://blog.okfn.org/2021/01/12/partnering-with-odi-to-improve-frictionless-data/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://blog.okfn.org/2021/01/12/partnering-with-odi-to-improve-frictionless-data/"),r("OutboundLink")],1)]),e._v(" "),r("p",[r("em",[e._v("In the framework of the Open Data Institute’s "),r("a",{attrs:{href:"https://theodi.org/article/call-for-proposals-funding-to-develop-open-source-tools-for-data-institutions/",target:"_blank",rel:"noopener noreferrer"}},[e._v("fund to develop open source tools for data institutions"),r("OutboundLink")],1),e._v(", the "),r("a",{attrs:{href:"okfn.org"}},[e._v("Open Knowledge Foundation (OKF)")]),e._v(" has been awarded funds to improve the quality and interoperability of Frictionless Data.")])]),e._v(" "),r("p",[e._v("In light of our effort to make data open and accessible, we are thrilled to announce we will be partnering with the "),r("a",{attrs:{href:"https://theodi.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Open Data Institute (ODI)"),r("OutboundLink")],1),e._v(" to improve our existing documentation and add new features on "),r("a",{attrs:{href:"https://frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Frictionless Data"),r("OutboundLink")],1),e._v(" to create a better user experience for all."),r("br"),e._v("\nTo achieve this, we will be working with a cohort of users from our active and engaged community to create better documentation that fits their needs. Our main goal is to make it easier for current and future users to understand and make use of the Frictionless Data tools and data libraries to their fullest potential."),r("br"),e._v("\nWe know how frustrating it can be to try and use existing code (or learn new code) that has incomplete documentation and we don’t want that to be a barrier for our users anymore. This is why we are very grateful to the ODI for granting us the opportunity to improve upon our existing documentation.")]),e._v(" "),r("h2",{attrs:{id:"so-what-will-be-changing"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#so-what-will-be-changing"}},[e._v("#")]),e._v(" So, what will be changing?")]),e._v(" "),r("ul",[r("li",[e._v("We will have a new project overview section, to help our users understand how to use Frictionless Data for their specific needs.")]),e._v(" "),r("li",[e._v("We will improve the existing documentation, to make sure even brand new users can quickly understand everything.")]),e._v(" "),r("li",[e._v("We will have Tutorials, to showcase real users experience and have user-friendly examples.")]),e._v(" "),r("li",[e._v("We will add a FAQ session.")])]),e._v(" "),r("h2",{attrs:{id:"and-when-will-all-of-that-be-ready"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#and-when-will-all-of-that-be-ready"}},[e._v("#")]),e._v(" And when will all of that be ready?")]),e._v(" "),r("p",[e._v("Very soon! By the beginning of April everything will be online, so stay tuned (and frictionless)!")]),e._v(" "),r("h2",{attrs:{id:"call-for-user-feedback"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#call-for-user-feedback"}},[e._v("#")]),e._v(" Call for user feedback")]),e._v(" "),r("p",[e._v("Feedback from our community is crucial to us, and part of this grant will be used to fund an evaluation of the existing documentation by our users in the format of user feedback sessions."),r("br"),e._v("\nAre you using our Frictionless Data tools or our Python data library? Then we want to hear from you!"),r("br"),e._v("\nWe are currently looking for novice and intermediate users to help us review our documentation, in order to make it more useful for you and all our future users."),r("br"),e._v("\nFor every user session you take part into, you will be given £50 for your time and feedback."),r("br"),e._v("\nAre you interested? Then fill in "),r("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSezZVuKjqnFL9CHtuWVjDwDu8Cv1gQCAIs85TtDYQUv1t9hVw/viewform",target:"_blank",rel:"noopener noreferrer"}},[e._v("this form"),r("OutboundLink")],1),e._v(".")]),e._v(" "),r("h2",{attrs:{id:"more-about-frictionless-data"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#more-about-frictionless-data"}},[e._v("#")]),e._v(" More about Frictionless Data")]),e._v(" "),r("p",[e._v("Frictionless Data is a set of specifications for data and metadata interoperability, accompanied by a collection of software libraries that implement these specifications, and a range of best practices for data management. The project is funded by the Sloan Foundation.")])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/117.85164eb1.js b/assets/js/117.773a0db9.js similarity index 99% rename from assets/js/117.85164eb1.js rename to assets/js/117.773a0db9.js index d642facb9..d2f92732f 100644 --- a/assets/js/117.85164eb1.js +++ b/assets/js/117.773a0db9.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[117],{650:function(e,a,t){"use strict";t.r(a);var o=t(29),r=Object(o.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("p",[t("em",[e._v("This blog is part of a series showcasing projects developed during the 2020 Tool Fund. The Tool Fund provided five mini-grants of $5,000 to support individuals or organisations in developing an open tool for reproducible research built using the Frictionless Data specifications and software. This Fund is part of the Frictionless Data for Reproducible Research project, which is funded by the Sloan Foundation. This project applies our work in Frictionless Data to data-driven research disciplines, in order to facilitate reproducible data workflows in research contexts.")])]),e._v(" "),t("h2",{attrs:{id:"what-problem-does-schema-collaboration-solve"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#what-problem-does-schema-collaboration-solve"}},[e._v("#")]),e._v(" What problem does Schema-Collaboration solve?")]),e._v(" "),t("p",[e._v("As a software engineer, I’ve spent more than a decade developing software used by researchers or data managers using different technologies. I have been involved in free software communities and projects for more than 20 years.")]),e._v(" "),t("p",[e._v("Whilst working for a polar research institute, we saw the opportunity to take advantage of Frictionless data packages to describe datasets in a machine readable way ready for publication. But it was difficult for data managers and researchers to collaborate effectively on this, particularly when one or both groups were not familiar with Frictionless schemas. We needed a way for researchers submitting datasets to get feedback from the data managers to ensure that the dataset’s schema was correct.")]),e._v(" "),t("h2",{attrs:{id:"how-does-schema-collaboration-make-collaborating-easier"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-does-schema-collaboration-make-collaborating-easier"}},[e._v("#")]),e._v(" How does Schema-Collaboration make collaborating easier?")]),e._v(" "),t("p",[e._v("The Frictionless "),t("a",{attrs:{href:"https://create.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Data Package Creator"),t("OutboundLink")],1),e._v(" is a very good Web-based tool to create the schemas but it didn’t help out of the box on the collaboration part. The solution in this tool fund was to build a system that uses Data Package Creator to enable data managers and researchers to create and share dataset schemas, edit them, post messages and export the schemas in different formats (text, Markdown, PDF). To encourage collaboration within a project multiple researchers can work on the same schema. Being able to view the description in human-readable formats makes it easier to spot mistakes and to integrate with third-party data repositories.")]),e._v(" "),t("p",[e._v("From a data manager’s perspective the tool allows them to keep tabs on the datasets being managed and their progress. It prevents details getting lost in emails and hopefully provides a nicer interface to encourage better collaboration.")]),e._v(" "),t("p",[e._v("In other words: think of a very simplified “Google Docs” specialised for data packages.")]),e._v(" "),t("h2",{attrs:{id:"who-can-use-schema-collaboration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#who-can-use-schema-collaboration"}},[e._v("#")]),e._v(" Who can use Schema-Collaboration?")]),e._v(" "),t("p",[e._v("The tool is designed to help data managers(*) and researchers document data packages. The documentation (which is based on Frictionless schemas) needs to be started by the data manager who then sends the URL to the researchers allowing them to edit the schema.")]),e._v(" "),t("p",[e._v("*: or anybody who wants to collaborate on creating a data package.")]),e._v(" "),t("p",[t("img",{attrs:{src:"https://user-images.githubusercontent.com/74717970/104922881-8e788c80-599b-11eb-9260-21b9a5747a8f.png",alt:"Data-packages"}}),t("br"),e._v(" "),t("em",[e._v("Data managers can view a list of datapackages within the Schema-Collaboration tool.")])]),e._v(" "),t("h2",{attrs:{id:"how-can-i-use-this-tool"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-can-i-use-this-tool"}},[e._v("#")]),e._v(" How can I use this tool?")]),e._v(" "),t("p",[e._v("To evaluate the tool it is possible to use the "),t("a",{attrs:{href:"https://carles.eu.pythonanywhere.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("public demo server"),t("OutboundLink")],1),e._v(" or to install it locally on a computer.")]),e._v(" "),t("p",[e._v("It was packaged in a Docker container to make it easier to install on servers. There is full "),t("a",{attrs:{href:"https://github.com/frictionlessdata/schema-collaboration/blob/master/docker/README.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("documentation available"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("Once the tool is installed it is used via a Web browser both by data managers and researchers.")]),e._v(" "),t("p",[t("img",{attrs:{src:"https://user-images.githubusercontent.com/74717970/104923256-19598700-599c-11eb-9cc4-19bb7637fdaa.png",alt:"datapackage-detail"}}),t("br"),e._v(" "),t("em",[e._v("You can view details about the datapackage, including comments from the data manager or other users, and also edit the datapackage.")])]),e._v(" "),t("h2",{attrs:{id:"future-plans-for-schema-collaboration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#future-plans-for-schema-collaboration"}},[e._v("#")]),e._v(" Future plans for Schema-Collaboration")]),e._v(" "),t("p",[e._v("We plan to install the schema-collaboration at the Swiss Polar Institute to be used to describe polar data sets.")]),e._v(" "),t("p",[e._v("In the upcoming January Frictionless Data community call (sign up "),t("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(" to join), I will do a demo and I would really appreciate feedback. Please feel free to use it and add issues (bugs or ideas) in the "),t("a",{attrs:{href:"https://github.com/frictionlessdata/schema-collaboration",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub repository"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"tech-stack"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#tech-stack"}},[e._v("#")]),e._v(" Tech stack")]),e._v(" "),t("p",[e._v("For the curious: schema-collaboration is developed using Python and Django and uses the django-crispy-forms package to create the forms. It supports sqlite3 and MariaDB databases.")]),e._v(" "),t("h2",{attrs:{id:"thanks-to"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#thanks-to"}},[e._v("#")]),e._v(" Thanks to…")]),e._v(" "),t("p",[e._v("In order to integrate Data Package Creator with schema-collaboration some changes where needed in the Data Package Creator. Evgeny (@roll on GitHub/Discord) from Frictionlessdata project made the changes to Data Package Creator needed to achieve this and helped with the integration. Thank you very much!")]),e._v(" "),t("p",[t("strong",[e._v("Further reading:")])]),e._v(" "),t("p",[e._v("GitHub repository: "),t("a",{attrs:{href:"https://github.com/frictionlessdata/schema-collaboration",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/frictionlessdata/schema-collaboration"),t("OutboundLink")],1)]),e._v(" "),t("p",[e._v("Meet Carles Pina Estany: "),t("a",{attrs:{href:"https://frictionlessdata.io/blog/2020/07/16/tool-fund-polar-institute/#meet-carles-pina-estany",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://frictionlessdata.io/blog/2020/07/16/tool-fund-polar-institute/#meet-carles-pina-estany"),t("OutboundLink")],1)])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[117],{652:function(e,a,t){"use strict";t.r(a);var o=t(29),r=Object(o.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("p",[t("em",[e._v("This blog is part of a series showcasing projects developed during the 2020 Tool Fund. The Tool Fund provided five mini-grants of $5,000 to support individuals or organisations in developing an open tool for reproducible research built using the Frictionless Data specifications and software. This Fund is part of the Frictionless Data for Reproducible Research project, which is funded by the Sloan Foundation. This project applies our work in Frictionless Data to data-driven research disciplines, in order to facilitate reproducible data workflows in research contexts.")])]),e._v(" "),t("h2",{attrs:{id:"what-problem-does-schema-collaboration-solve"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#what-problem-does-schema-collaboration-solve"}},[e._v("#")]),e._v(" What problem does Schema-Collaboration solve?")]),e._v(" "),t("p",[e._v("As a software engineer, I’ve spent more than a decade developing software used by researchers or data managers using different technologies. I have been involved in free software communities and projects for more than 20 years.")]),e._v(" "),t("p",[e._v("Whilst working for a polar research institute, we saw the opportunity to take advantage of Frictionless data packages to describe datasets in a machine readable way ready for publication. But it was difficult for data managers and researchers to collaborate effectively on this, particularly when one or both groups were not familiar with Frictionless schemas. We needed a way for researchers submitting datasets to get feedback from the data managers to ensure that the dataset’s schema was correct.")]),e._v(" "),t("h2",{attrs:{id:"how-does-schema-collaboration-make-collaborating-easier"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-does-schema-collaboration-make-collaborating-easier"}},[e._v("#")]),e._v(" How does Schema-Collaboration make collaborating easier?")]),e._v(" "),t("p",[e._v("The Frictionless "),t("a",{attrs:{href:"https://create.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Data Package Creator"),t("OutboundLink")],1),e._v(" is a very good Web-based tool to create the schemas but it didn’t help out of the box on the collaboration part. The solution in this tool fund was to build a system that uses Data Package Creator to enable data managers and researchers to create and share dataset schemas, edit them, post messages and export the schemas in different formats (text, Markdown, PDF). To encourage collaboration within a project multiple researchers can work on the same schema. Being able to view the description in human-readable formats makes it easier to spot mistakes and to integrate with third-party data repositories.")]),e._v(" "),t("p",[e._v("From a data manager’s perspective the tool allows them to keep tabs on the datasets being managed and their progress. It prevents details getting lost in emails and hopefully provides a nicer interface to encourage better collaboration.")]),e._v(" "),t("p",[e._v("In other words: think of a very simplified “Google Docs” specialised for data packages.")]),e._v(" "),t("h2",{attrs:{id:"who-can-use-schema-collaboration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#who-can-use-schema-collaboration"}},[e._v("#")]),e._v(" Who can use Schema-Collaboration?")]),e._v(" "),t("p",[e._v("The tool is designed to help data managers(*) and researchers document data packages. The documentation (which is based on Frictionless schemas) needs to be started by the data manager who then sends the URL to the researchers allowing them to edit the schema.")]),e._v(" "),t("p",[e._v("*: or anybody who wants to collaborate on creating a data package.")]),e._v(" "),t("p",[t("img",{attrs:{src:"https://user-images.githubusercontent.com/74717970/104922881-8e788c80-599b-11eb-9260-21b9a5747a8f.png",alt:"Data-packages"}}),t("br"),e._v(" "),t("em",[e._v("Data managers can view a list of datapackages within the Schema-Collaboration tool.")])]),e._v(" "),t("h2",{attrs:{id:"how-can-i-use-this-tool"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-can-i-use-this-tool"}},[e._v("#")]),e._v(" How can I use this tool?")]),e._v(" "),t("p",[e._v("To evaluate the tool it is possible to use the "),t("a",{attrs:{href:"https://carles.eu.pythonanywhere.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("public demo server"),t("OutboundLink")],1),e._v(" or to install it locally on a computer.")]),e._v(" "),t("p",[e._v("It was packaged in a Docker container to make it easier to install on servers. There is full "),t("a",{attrs:{href:"https://github.com/frictionlessdata/schema-collaboration/blob/master/docker/README.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("documentation available"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("Once the tool is installed it is used via a Web browser both by data managers and researchers.")]),e._v(" "),t("p",[t("img",{attrs:{src:"https://user-images.githubusercontent.com/74717970/104923256-19598700-599c-11eb-9cc4-19bb7637fdaa.png",alt:"datapackage-detail"}}),t("br"),e._v(" "),t("em",[e._v("You can view details about the datapackage, including comments from the data manager or other users, and also edit the datapackage.")])]),e._v(" "),t("h2",{attrs:{id:"future-plans-for-schema-collaboration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#future-plans-for-schema-collaboration"}},[e._v("#")]),e._v(" Future plans for Schema-Collaboration")]),e._v(" "),t("p",[e._v("We plan to install the schema-collaboration at the Swiss Polar Institute to be used to describe polar data sets.")]),e._v(" "),t("p",[e._v("In the upcoming January Frictionless Data community call (sign up "),t("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(" to join), I will do a demo and I would really appreciate feedback. Please feel free to use it and add issues (bugs or ideas) in the "),t("a",{attrs:{href:"https://github.com/frictionlessdata/schema-collaboration",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub repository"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"tech-stack"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#tech-stack"}},[e._v("#")]),e._v(" Tech stack")]),e._v(" "),t("p",[e._v("For the curious: schema-collaboration is developed using Python and Django and uses the django-crispy-forms package to create the forms. It supports sqlite3 and MariaDB databases.")]),e._v(" "),t("h2",{attrs:{id:"thanks-to"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#thanks-to"}},[e._v("#")]),e._v(" Thanks to…")]),e._v(" "),t("p",[e._v("In order to integrate Data Package Creator with schema-collaboration some changes where needed in the Data Package Creator. Evgeny (@roll on GitHub/Discord) from Frictionlessdata project made the changes to Data Package Creator needed to achieve this and helped with the integration. Thank you very much!")]),e._v(" "),t("p",[t("strong",[e._v("Further reading:")])]),e._v(" "),t("p",[e._v("GitHub repository: "),t("a",{attrs:{href:"https://github.com/frictionlessdata/schema-collaboration",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/frictionlessdata/schema-collaboration"),t("OutboundLink")],1)]),e._v(" "),t("p",[e._v("Meet Carles Pina Estany: "),t("a",{attrs:{href:"https://frictionlessdata.io/blog/2020/07/16/tool-fund-polar-institute/#meet-carles-pina-estany",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://frictionlessdata.io/blog/2020/07/16/tool-fund-polar-institute/#meet-carles-pina-estany"),t("OutboundLink")],1)])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/119.2c4ebfcb.js b/assets/js/119.f8ffd7c6.js similarity index 99% rename from assets/js/119.2c4ebfcb.js rename to assets/js/119.f8ffd7c6.js index 8d5983280..a9864674b 100644 --- a/assets/js/119.2c4ebfcb.js +++ b/assets/js/119.f8ffd7c6.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[119],{653:function(e,a,t){"use strict";t.r(a);var o=t(29),r=Object(o.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("p",[e._v("Have you ever heard a data horror story about Excel automatically changing all numbers into dates without so much as a warning? Have you ever accidentally entered a wrong data value into a spreadsheet, or accidentally deleted a cell? What if there was an easy way to detect errors in data types and content? Well there is! That is the main goal of Goodtables, the Frictionless data validation service, and also the "),t("code",[e._v("Frictionless-py")]),e._v(" "),t("code",[e._v("validate")]),e._v(" function. Interested in learning more about how you can validate your data? Read on to see how the Frictionless Fellows validated their research data and learn their tips and tricks!")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),t("p",[e._v("Click on the links below to read the whole blog.")])]),e._v(" "),t("h3",{attrs:{id:"don-t-you-wish-your-table-was-as-clean-as-mine-by-monica-granados-cohort-1"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#don-t-you-wish-your-table-was-as-clean-as-mine-by-monica-granados-cohort-1"}},[e._v("#")]),e._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/monica-goodtables-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Don’t you wish your table was as clean as mine? By Monica Granados"),t("OutboundLink")],1),e._v(" (Cohort 1)")]),e._v(" "),t("p",[e._v("“How many times have you gotten a data frame from a colleague or downloaded data that had missing values? Or it’s missing a column name? Do you wish you were never that person? Well introducing Goodtables – your solution to counteracting bad data frames! As part of the inaugural Frictionless Data Fellows, I took Goodtables out for a spin.”")]),e._v(" "),t("h3",{attrs:{id:"validando-datos-un-paquete-a-la-vez-by-sele-yang-cohort-1"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#validando-datos-un-paquete-a-la-vez-by-sele-yang-cohort-1"}},[e._v("#")]),e._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/sele-goodtables-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Validando datos un paquete a la vez by Sele Yang"),t("OutboundLink")],1),e._v(" (Cohort 1)")]),e._v(" "),t("p",[e._v("“Yo trabajé con la base de datos que vengo utilizando para el programa que se encuentra en mi repositorio de Github. Es una base de datos geográficos sobre clínicas de aborto descargada desde OpenStreetMap a través de OverpassTurbo….Goodtables es una herramienta muy poderosa, que nos permite contar contar con la posibilidad de validación constante y de forma simple para mantener nuestras bases de datos en condiciones óptimas, no sólo para nuestro trabajo, sino también para la reproducción y uso de los mismos por otras personas.”")]),e._v(" "),t("h3",{attrs:{id:"tabular-data-before-you-use-the-data-by-ouso-daniel-cohort-1"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#tabular-data-before-you-use-the-data-by-ouso-daniel-cohort-1"}},[e._v("#")]),e._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/ouso-goodtables-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Tabular data: Before you use the data by Ouso Daniel"),t("OutboundLink")],1),e._v(" (Cohort 1)")]),e._v(" "),t("p",[e._v("“I want to talk about goodtables, a Frictionless data (FD) tool for validating tabular data sets. As hinted by the name, you only want to work on/with tabular data in good condition; the tool highlights errors in your tabular dataset, with the precision of the exact location of your error. Again, the beautiful thing about FD tools is that they don’t discriminate on your preferences, it encompasses the Linux-based CLI, Python, GUI folks, among other languages.”")]),e._v(" "),t("h3",{attrs:{id:"data-validation-of-my-interview-dataset-using-goodtables-by-lily-zhao-cohort-1"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#data-validation-of-my-interview-dataset-using-goodtables-by-lily-zhao-cohort-1"}},[e._v("#")]),e._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/lily-goodtables-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Data Validation Of My Interview Dataset Using Goodtables by Lily Zhao"),t("OutboundLink")],1),e._v(" (Cohort 1)")]),e._v(" "),t("p",[e._v("“I used goodtables to validate the interview data we gathered as part of the first chapter of my PhD. These data were collected in Mo’orea, French Polynesia where we interviewed both residents and scientists regarding the future of research in Mo’orea….Amplifying local involvement and unifying the perspectives of researchers and coastal communities is critical not only in reducing inequity in science, but also in securing lasting coral reef health.”")]),e._v(" "),t("h3",{attrs:{id:"walking-through-the-frictionless-framework-by-jacqueline-maasch-cohort-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#walking-through-the-frictionless-framework-by-jacqueline-maasch-cohort-2"}},[e._v("#")]),e._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/jacqueline-goodtables-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Walking through the "),t("code",[e._v("frictionless")]),e._v(" framework by Jacqueline Maasch"),t("OutboundLink")],1),e._v(" (Cohort 2)")]),e._v(" "),t("p",[e._v("“While the GoodTables web server is a convenient tool for automated data validation, the frictionless framework allows for validation right within your Python scripts. We’ll demonstrate some key frictionless functionality, both in Python and command line syntax. As an illustrative point, we will use a CSV file that contains an invalid element – a remnant of careless file creation.”")]),e._v(" "),t("h3",{attrs:{id:"validating-your-data-before-sharing-with-the-community-by-dani-alcala-lopez-cohort-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#validating-your-data-before-sharing-with-the-community-by-dani-alcala-lopez-cohort-2"}},[e._v("#")]),e._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/dani-goodtables-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Validating your data before sharing with the community by Dani Alcalá-López"),t("OutboundLink")],1),e._v(" (Cohort 2)")]),e._v(" "),t("p",[e._v("“Once we have decided to share our data with the rest of the world, it is important to make sure that other people will be able to reuse it. This means providing as much metadata as possible, but also checking that there are no errors in the data that might prevent others from benefiting from our data. Goodtables is a simple tool that you can use both on the web and in the command-line interface to carry out this verification process”")]),e._v(" "),t("h3",{attrs:{id:"goodtables-blog-by-sam-wilairat-cohort-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#goodtables-blog-by-sam-wilairat-cohort-2"}},[e._v("#")]),e._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/sam-goodtables-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Goodtables blog by Sam Wilairat"),t("OutboundLink")],1),e._v(" (Cohort 2)")]),e._v(" "),t("p",[e._v("“Now let’s try validating the same data using the Goodtables command line tool! ….Once the installation is complete, type “goodtables path/to/file.csv”. You will either receive a green message stating that the data is valid, or a red message, like the one I have shown below, showing that the data is not valid!”")]),e._v(" "),t("h3",{attrs:{id:"using-goodtables-to-validate-metadata-from-multiple-sequencing-runs-by-kate-bowie-cohort-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#using-goodtables-to-validate-metadata-from-multiple-sequencing-runs-by-kate-bowie-cohort-2"}},[e._v("#")]),e._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/kate-goodtables-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Using goodtables to validate metadata from multiple sequencing runs by Kate Bowie"),t("OutboundLink")],1),e._v(" (Cohort 2)")]),e._v(" "),t("p",[e._v("“Here, I will show you how I used a schema and GoodTables to make sure my metadata files could be combined, so I can use them for downstream microbial diversity analysis….It’s extremely helpful that GoodTables pointed this ### [error] out, because if I tried to combine these metadata files in R with non-matching case as it is here, then it would create TWO separate columns for the metadata….Now I will be able to combine these metadata files together and it will make my data analysis pipeline a lot smoother.”")]),e._v(" "),t("h3",{attrs:{id:"reflecting-on-datafication-data-prep-and-utf-8-with-goodtables-io-by-anne-lee-steele-cohort-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#reflecting-on-datafication-data-prep-and-utf-8-with-goodtables-io-by-anne-lee-steele-cohort-2"}},[e._v("#")]),e._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/anne-goodtables-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Reflecting on ‘datafication’, data prep, and UTF-8 with goodtables.io by Anne Lee Steele"),t("OutboundLink")],1),e._v(" (Cohort 2)")]),e._v(" "),t("p",[e._v("“Before I knew it, it was 2021, and revisiting my data in the new year has made me realize just how much time and efforts goes into cleaning, structuring, and formatting datasets – and how much more goes into making them understandable for others (i.e. through Frictionless’ data-package). I’d always thought of these processes as a kind of black box, where ‘data analysis’ simply happens. But in reality, it’s the fact that we’ve been spending so much time on preparatory work that points to how important these processes actually are: and how much goes into making sure that data can be used before analyzing it in the first place.”")]),e._v(" "),t("h3",{attrs:{id:"validate-it-the-goodtables-way-by-evelyn-night-cohort-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#validate-it-the-goodtables-way-by-evelyn-night-cohort-2"}},[e._v("#")]),e._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/evelyn-goodtables-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Validate it the GoodTables way! By Evelyn Night"),t("OutboundLink")],1),e._v(" (Cohort 2)")]),e._v(" "),t("p",[e._v("“Errors may sometimes occur while describing data in a tabular format and these could be in the structure; such as missing headers and duplicated rows, or in the content for instance assigning the wrong character to a string. Some of these errors could be easily spotted by naked eyes and fixed during the data curation process while others may just go unnoticed and later impede some downstream analytical workflows. GoodTables are handy in flagging down common errors that come with tabular data handling as it recognises these discrepancies fast and efficiently to enable users debug their data easily. ”")]),e._v(" "),t("h3",{attrs:{id:"using-the-frictionless-framework-for-data-validation-by-katerina-drakoulaki-cohort-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#using-the-frictionless-framework-for-data-validation-by-katerina-drakoulaki-cohort-2"}},[e._v("#")]),e._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/katerina-goodtables-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Using the frictionless framework for data validation by Katerina Drakoulaki"),t("OutboundLink")],1),e._v(" (Cohort 2)")]),e._v(" "),t("p",[e._v("“Thus, similar to what the data package creator and "),t("a",{attrs:{href:"http://goodtables.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("goodtables.io"),t("OutboundLink")],1),e._v(" does, frictionless detects your variables and their names, and infers the type of data. However, it detected some of my variables as strings, when they are in fact integers. Of course, goodtables did not detect this, as my data were generally -in terms of formatting- valid. Not inferring the right type of data can be a problem both for future me, but also for other people looking at my data.”")])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[119],{649:function(e,a,t){"use strict";t.r(a);var o=t(29),r=Object(o.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("p",[e._v("Have you ever heard a data horror story about Excel automatically changing all numbers into dates without so much as a warning? Have you ever accidentally entered a wrong data value into a spreadsheet, or accidentally deleted a cell? What if there was an easy way to detect errors in data types and content? Well there is! That is the main goal of Goodtables, the Frictionless data validation service, and also the "),t("code",[e._v("Frictionless-py")]),e._v(" "),t("code",[e._v("validate")]),e._v(" function. Interested in learning more about how you can validate your data? Read on to see how the Frictionless Fellows validated their research data and learn their tips and tricks!")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),t("p",[e._v("Click on the links below to read the whole blog.")])]),e._v(" "),t("h3",{attrs:{id:"don-t-you-wish-your-table-was-as-clean-as-mine-by-monica-granados-cohort-1"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#don-t-you-wish-your-table-was-as-clean-as-mine-by-monica-granados-cohort-1"}},[e._v("#")]),e._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/monica-goodtables-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Don’t you wish your table was as clean as mine? By Monica Granados"),t("OutboundLink")],1),e._v(" (Cohort 1)")]),e._v(" "),t("p",[e._v("“How many times have you gotten a data frame from a colleague or downloaded data that had missing values? Or it’s missing a column name? Do you wish you were never that person? Well introducing Goodtables – your solution to counteracting bad data frames! As part of the inaugural Frictionless Data Fellows, I took Goodtables out for a spin.”")]),e._v(" "),t("h3",{attrs:{id:"validando-datos-un-paquete-a-la-vez-by-sele-yang-cohort-1"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#validando-datos-un-paquete-a-la-vez-by-sele-yang-cohort-1"}},[e._v("#")]),e._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/sele-goodtables-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Validando datos un paquete a la vez by Sele Yang"),t("OutboundLink")],1),e._v(" (Cohort 1)")]),e._v(" "),t("p",[e._v("“Yo trabajé con la base de datos que vengo utilizando para el programa que se encuentra en mi repositorio de Github. Es una base de datos geográficos sobre clínicas de aborto descargada desde OpenStreetMap a través de OverpassTurbo….Goodtables es una herramienta muy poderosa, que nos permite contar contar con la posibilidad de validación constante y de forma simple para mantener nuestras bases de datos en condiciones óptimas, no sólo para nuestro trabajo, sino también para la reproducción y uso de los mismos por otras personas.”")]),e._v(" "),t("h3",{attrs:{id:"tabular-data-before-you-use-the-data-by-ouso-daniel-cohort-1"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#tabular-data-before-you-use-the-data-by-ouso-daniel-cohort-1"}},[e._v("#")]),e._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/ouso-goodtables-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Tabular data: Before you use the data by Ouso Daniel"),t("OutboundLink")],1),e._v(" (Cohort 1)")]),e._v(" "),t("p",[e._v("“I want to talk about goodtables, a Frictionless data (FD) tool for validating tabular data sets. As hinted by the name, you only want to work on/with tabular data in good condition; the tool highlights errors in your tabular dataset, with the precision of the exact location of your error. Again, the beautiful thing about FD tools is that they don’t discriminate on your preferences, it encompasses the Linux-based CLI, Python, GUI folks, among other languages.”")]),e._v(" "),t("h3",{attrs:{id:"data-validation-of-my-interview-dataset-using-goodtables-by-lily-zhao-cohort-1"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#data-validation-of-my-interview-dataset-using-goodtables-by-lily-zhao-cohort-1"}},[e._v("#")]),e._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/lily-goodtables-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Data Validation Of My Interview Dataset Using Goodtables by Lily Zhao"),t("OutboundLink")],1),e._v(" (Cohort 1)")]),e._v(" "),t("p",[e._v("“I used goodtables to validate the interview data we gathered as part of the first chapter of my PhD. These data were collected in Mo’orea, French Polynesia where we interviewed both residents and scientists regarding the future of research in Mo’orea….Amplifying local involvement and unifying the perspectives of researchers and coastal communities is critical not only in reducing inequity in science, but also in securing lasting coral reef health.”")]),e._v(" "),t("h3",{attrs:{id:"walking-through-the-frictionless-framework-by-jacqueline-maasch-cohort-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#walking-through-the-frictionless-framework-by-jacqueline-maasch-cohort-2"}},[e._v("#")]),e._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/jacqueline-goodtables-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Walking through the "),t("code",[e._v("frictionless")]),e._v(" framework by Jacqueline Maasch"),t("OutboundLink")],1),e._v(" (Cohort 2)")]),e._v(" "),t("p",[e._v("“While the GoodTables web server is a convenient tool for automated data validation, the frictionless framework allows for validation right within your Python scripts. We’ll demonstrate some key frictionless functionality, both in Python and command line syntax. As an illustrative point, we will use a CSV file that contains an invalid element – a remnant of careless file creation.”")]),e._v(" "),t("h3",{attrs:{id:"validating-your-data-before-sharing-with-the-community-by-dani-alcala-lopez-cohort-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#validating-your-data-before-sharing-with-the-community-by-dani-alcala-lopez-cohort-2"}},[e._v("#")]),e._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/dani-goodtables-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Validating your data before sharing with the community by Dani Alcalá-López"),t("OutboundLink")],1),e._v(" (Cohort 2)")]),e._v(" "),t("p",[e._v("“Once we have decided to share our data with the rest of the world, it is important to make sure that other people will be able to reuse it. This means providing as much metadata as possible, but also checking that there are no errors in the data that might prevent others from benefiting from our data. Goodtables is a simple tool that you can use both on the web and in the command-line interface to carry out this verification process”")]),e._v(" "),t("h3",{attrs:{id:"goodtables-blog-by-sam-wilairat-cohort-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#goodtables-blog-by-sam-wilairat-cohort-2"}},[e._v("#")]),e._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/sam-goodtables-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Goodtables blog by Sam Wilairat"),t("OutboundLink")],1),e._v(" (Cohort 2)")]),e._v(" "),t("p",[e._v("“Now let’s try validating the same data using the Goodtables command line tool! ….Once the installation is complete, type “goodtables path/to/file.csv”. You will either receive a green message stating that the data is valid, or a red message, like the one I have shown below, showing that the data is not valid!”")]),e._v(" "),t("h3",{attrs:{id:"using-goodtables-to-validate-metadata-from-multiple-sequencing-runs-by-kate-bowie-cohort-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#using-goodtables-to-validate-metadata-from-multiple-sequencing-runs-by-kate-bowie-cohort-2"}},[e._v("#")]),e._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/kate-goodtables-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Using goodtables to validate metadata from multiple sequencing runs by Kate Bowie"),t("OutboundLink")],1),e._v(" (Cohort 2)")]),e._v(" "),t("p",[e._v("“Here, I will show you how I used a schema and GoodTables to make sure my metadata files could be combined, so I can use them for downstream microbial diversity analysis….It’s extremely helpful that GoodTables pointed this ### [error] out, because if I tried to combine these metadata files in R with non-matching case as it is here, then it would create TWO separate columns for the metadata….Now I will be able to combine these metadata files together and it will make my data analysis pipeline a lot smoother.”")]),e._v(" "),t("h3",{attrs:{id:"reflecting-on-datafication-data-prep-and-utf-8-with-goodtables-io-by-anne-lee-steele-cohort-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#reflecting-on-datafication-data-prep-and-utf-8-with-goodtables-io-by-anne-lee-steele-cohort-2"}},[e._v("#")]),e._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/anne-goodtables-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Reflecting on ‘datafication’, data prep, and UTF-8 with goodtables.io by Anne Lee Steele"),t("OutboundLink")],1),e._v(" (Cohort 2)")]),e._v(" "),t("p",[e._v("“Before I knew it, it was 2021, and revisiting my data in the new year has made me realize just how much time and efforts goes into cleaning, structuring, and formatting datasets – and how much more goes into making them understandable for others (i.e. through Frictionless’ data-package). I’d always thought of these processes as a kind of black box, where ‘data analysis’ simply happens. But in reality, it’s the fact that we’ve been spending so much time on preparatory work that points to how important these processes actually are: and how much goes into making sure that data can be used before analyzing it in the first place.”")]),e._v(" "),t("h3",{attrs:{id:"validate-it-the-goodtables-way-by-evelyn-night-cohort-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#validate-it-the-goodtables-way-by-evelyn-night-cohort-2"}},[e._v("#")]),e._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/evelyn-goodtables-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Validate it the GoodTables way! By Evelyn Night"),t("OutboundLink")],1),e._v(" (Cohort 2)")]),e._v(" "),t("p",[e._v("“Errors may sometimes occur while describing data in a tabular format and these could be in the structure; such as missing headers and duplicated rows, or in the content for instance assigning the wrong character to a string. Some of these errors could be easily spotted by naked eyes and fixed during the data curation process while others may just go unnoticed and later impede some downstream analytical workflows. GoodTables are handy in flagging down common errors that come with tabular data handling as it recognises these discrepancies fast and efficiently to enable users debug their data easily. ”")]),e._v(" "),t("h3",{attrs:{id:"using-the-frictionless-framework-for-data-validation-by-katerina-drakoulaki-cohort-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#using-the-frictionless-framework-for-data-validation-by-katerina-drakoulaki-cohort-2"}},[e._v("#")]),e._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/katerina-goodtables-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Using the frictionless framework for data validation by Katerina Drakoulaki"),t("OutboundLink")],1),e._v(" (Cohort 2)")]),e._v(" "),t("p",[e._v("“Thus, similar to what the data package creator and "),t("a",{attrs:{href:"http://goodtables.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("goodtables.io"),t("OutboundLink")],1),e._v(" does, frictionless detects your variables and their names, and infers the type of data. However, it detected some of my variables as strings, when they are in fact integers. Of course, goodtables did not detect this, as my data were generally -in terms of formatting- valid. Not inferring the right type of data can be a problem both for future me, but also for other people looking at my data.”")])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/12.0fa0c229.js b/assets/js/12.d9fb47fc.js similarity index 96% rename from assets/js/12.0fa0c229.js rename to assets/js/12.d9fb47fc.js index d7420deaa..48b4791c1 100644 --- a/assets/js/12.0fa0c229.js +++ b/assets/js/12.d9fb47fc.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{450:function(t,a,e){t.exports=e.p+"assets/img/dp-creator.b5d3af77.png"},451:function(t,a,e){t.exports=e.p+"assets/img/dp-creator-filled.325fa9a7.png"},452:function(t,a,e){t.exports=e.p+"assets/img/try-goodtables.13d08c7b.png"},453:function(t,a){t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAApkAAADICAMAAACUPAobAAACjlBMVEX////u7u7MzMzl5eXg4ODq6uqqqqpERET19fXy8vL//v7x8fHw8PD09PT9/Pz9HA0UFBT+/f0aGhoXFxfy8fA2Njb5+flgYGAsLCzs7OxXV1f6+vr4+Pjp6elVVVXn5+fr6+tHR0etra0iIiIeHh79IBA5OTlQUFAyMjIvLy80NDQxMTH+OyMREREQEBA9PT3+Qyn+PSX9GAr7+vonJyf9LBnNzc3+bVdeXl7+XkT+QCfR0dHkVDz+TDDPz8+GhYT+RStRUVHe3t4gICDY2NjKysrT09NZWVnc3NxcXFxjY2NMTEz7+/vCwsLa2trW1tYlJSVJSUmwsLCQkJD9IxKLi4uTk5NxcXFPT08qKir+OCH9KBa5ubn9JRTIyMiEhIR4eHhFRUWIiIj+NR/j4+O9vb2goKD9MBykpKSWlpZ0dHRlZWX+Mx3ExMSGhobHx8fk5OSdnZ17e3tra2v39/dnZ2dtbW2zs7OBgYFubm63tra1tbV+fn6/v7+np6eYmJhpaWmNjY3m5uZ3d3fDLBr+9PPd3d2ZmZl9fX1mZmb45OKysrK7u7v9NiX77ez20c6srKztl492dnb8ZFU7Ozv9Ry7uNSDX19fxX0//+fn/4t/uv7v5gXJAQEDvRS8AAADv2NT/19T9w73yV0b+UzvbLx33albzTjz1SDfnMh7i4uLyraXnq6Xsg3nPXFH4Qi3nQizmOyb1Mx3OLhv22dbij4fhWEroTTbrKBi+KBbTIBL23dvinZbkdGbYbWTsaFf8ZE3MTD7DNynjLRv3KRf4s63+q6T8kYjziH3gfHH8dmj8VUPUNCPjzszfycbYs7DFraqzo6D1p5vMioD9W0/9TkD5VD39RjjxIhP1GAq7ZrOuAAATpUlEQVR42uzc2VNSURzA8d+PQqppGV9iThMXaqa3HqoZ6JatTkjQUJOCNqLlaKKVW1aYllkmlhSaOZDbOFqm2Wr7vu/7vv03HQguNNVUejVrfp8H77mHnz59h+UCwhAwAgn51kYYAkbEGxSERDPEj4C/b2lC9XBColUnVMPfZxiu1SjJP0/Tf9Kf0g6fB3+fQsuQ/OtY+5vWW51z+67zVuub9nAJTKuAv0+hQfKPY8pW36m2i3P642LbKV+rMtSmZkiUqUTyb2PtH9ouNnZ1zeyPrq7Gi20fQnebSiqT9B875us91DCrc65vQd/55nbOajjU6zvGqEwiD9bu622c5ZvWf75Zjb2+dkZlElmwrtOHOmeHVQWd9c/uk85Dp7sGvszlqqBF41ULYaRqApX5f2Lt/u7O6RIPcLHnTk6d3iedF/3tbODLFC1c/B+UaRTxD8SZ8FeWCeVIBhRrPf10aoQHmpub3VDbNrVvnp5uHYQyiyBg1IgRfSkzpUyGMofvSkAykBg70jY1NcIDjampviboSj1ztqrqcGrqmctnD1dV+XuCJ6l8edbPD5d7UlPP8h+hoYjpbUcYG6QyeZVfyzyascK8ZiJAhmqLXGWSv43p/KeyovAys7LOXIWGvNstbs+1Z1ndUHe+9uqNGx738Z6sZ8c97rqT/qz78DgrrwWehIeiHPHrBrvMMQuXb61RFfyszHk7zRklIj9mmNX2YbhWECrCa2Pp3lJ+lG7DpZvNmxKDZe4R46TdZcXi1jQX4uodFnVyJQbohEVY5jKVWhEXbxa3O3V8J263ef8yJPJgyp7peVE8cPLy5duxTVNP1zYd7IDjZ7oB3M3QNKojFq7766D5YCxcyHsCLXl+d9P08FBexKke5cCXGWCXytynqhjNBJUSUDvi+zJXi3bjZLOIuGGVMduSi7qUEhZeG80uq3VDgXSbcrtdsU0w8jKzzSulXW1NkiFG7UJWvMpoLc0Ml7lMyFUkiUzn2qzYa3HynYx8RUoBErnKvJuVE8UDAbU3c07AtTt3aqGtG8YuyKuFRzn1UH8TznlzWqElx+t2+y/AQWkoJ8J7dxDKVNfU1DilMu2qIMOPn2fGbOLHXSIqc6sRk5ICj+bS2igUIiqE6vD5XosGMXlPnKnQlI3SVFmNEnGHC+eZtXzaxEJllpuKcFia1moehlii5jsliJNTkMhWpj6aB5o7miH2vP4YBDV0wzm9vg4O6U9A/SOo1+u94NHr78OF8/BEGtJH5PAyB/nRPFPlNHDsx2Um2xGxXETUFMZkmoJlSmujwGeYuTB87tyKAXGC2rwNpan18/k60YVlglqtFoXqUJnDUtTJVoYx+xHxgLBaJyQgplGZ8pXZe++bMnmD+ga4yqOrb2hobDx1BOoCZXaHynToe6BWr58J9S1jvdKQPuJe76CXmatyAqzMHvnjR/M1oTKL1qbkFiYHy5TWxgksUGZ++Ny5OVRm2mTzcGlqV8HXMku2Lw5QhspEVphsKY0PlrlIGM53qEwZMd31e44ovEyHwwu1jodw/sqVkze8vEyHg5fp4GU2wLmqK4/hoMOR4z7XxA/hIUfEvceD/goIl0yyF6vWxf74FdDkTfy4XsRsUYOYGSxTWhsFBaJBWBo+L7Moecq5cSbUlSZLU3tqdIhJLt5xPKIxiYXKzI9B1FhKrOYixDI1ozLlxdjzS+lReJnp6V6AS1530/EW6HDwMtPT6+BIOi+TH6+2xMI7PncfoJUPhobSIy49H/yrRktTlizMRPhxmUWiXZFoEdEqlBRWTMiIx7XO1eG1USjNt7pWSbdp1+0wJE7I52VivhAX3q20JBkS15UiW1tsLN9QgRhTEnyeOSFxXqLJoNuwWZFtcSKVKTOmuWCL0gxPbbZ0N8y0vT/orn3gtX2EDputAz7aWuGhLetBs7vunY2bCbFefggNRbmgYUPsfXN+1WhnoYisQly3xrAuEfeJ68Nro5i2QbSvjty2bLd5+9erRriqWNqN2ykWpBUjxmeqLRUaxP0FgQ6Zs8bk2hO40iRucuqoTLkx3YtLU+Rz6YVuqJX5nT9907Laiojb7BhNyTskA4tpXn4aJ5dPLzX/0meNfq/MpRP2xK+0WDGKLltYjGRgMaZ5dVimMA+/0rD/r0zMLjVtj2EYZaWlgr5kNOAYqyy7/XlG/30+WVbJ6JPDRM40ja/fXr95a1bf3bp5/e1rYyWjb1sQWdPUVSaUp03uj7TyhEodY0hlEjkxHqcyQNcHod9kgS6HUJnztEj+A+wreX5XOxT+E0LRIrrTJN/SLKqEIaBynoKQaHFaIIQQQgghhBBCCCGEEEIIIYQQQgghhBBCyBf27u8nbSiKA/jtxJ4LapO+lEgLHbz4HzQkJCw1QoXKCDVIHwiIUaMSdSD4Y1OnW7K5uIdlL/sf9lfuUrg6YcvGIstg55PYY869t8T0a0pJaBFCCCGEEEIIITS+WjlHnADCQ/qXQ42gcda6TbfIBBCFPk9fKQSNscoSmQii0G/zX7gFCvpjtxNy0hOFAScEjTGRTAZRGDApf9p/alIOHyZz0kzK4cNkTppJOXyYzL+o9f7KPtpWya8oYP6sj8lEj28+C2ACtP1/kswg6EMnk+62f+M/IXTLNvNWc4X8DIVp8r20S37Icsj3kiYmczwU4UonU3XYJb8QoPSHyWT9YZIZjscdI2a1/b9Opj9b0ggm8z81DbU3rCxDza9DsBJcnr9xSyewRkilXTDPw4R1X8bd6xXv2X0idDh87AoA8p0+8a9a9nGK3M3mT/cbTGa1Pce2Qmb3l8lsnbGp/1oy5zsqHYdv5j2YzNFIwZVXM5DXIWLC8zac7UVZMvVC9HMWzokO0VoW4JWXzMNqtQlQ5mOpCDiznb58DPH1GiTuZv80mW/A8OpWdC6dzWXNAxY+/4ZprraIBMt79vEmT6bUjAvkvhluupltiVxtExKvE9I4ZsnkK8nzM7tUZsnc3HM/XwT5Hh8k03sg5jPKkpnLLlRnCPkYLGRTQycz3PFqg3n9IuzBZI7GCdx4tQRbOkuUvwLHcqDKkmmsfyI6WOwHFkkDrr1kEhI4gD2pN+adzb1+CrIKuYX1+9l9T5EWAz37Ucmrs5BP2MHKYfw8IO8186lsNbACZ0a6fhrwhJwi5FnlzZVgM52LbAcaewGhBv5AaZtCmK+ccZ+lY7Yb0ELFLzEzeLdHjxXr1vh5Yj+yE0jW6kkj+Dbgg5180ZUCwxF1z+XGRjGtd2EyR6MCR16NQ1rvRE+EbUIuWDKJb+cmwjo6ZAjJwUEvmTEICXzsPpmfoEHYL9b97D6i3BPLyF32xwQYspyG8JJNWS2sqPBSlp0PsieUyWRPWeXNQ9svy2VTNmxlv2RVtEJiDnS+MmYpsrzryuUQqxtBmfflDivmFW1nWpaLRdmAtCznYWq/MCP7t6g8HHHK86W44Uz1YDJHIww1nZXF7vtMQnZ4MhM1t+iw0Hnd/V4yWTf6hfCxgWRG7mf3EaWei4LqVT8YyZomSSsFo1wzTXMBdAWeS9LHD5InFHqRhpwk8aZ4zJo+EGgh3Xj9rJGwNT/ofOXqMzaYc6XGDatOUOJ9qcOKSZ6WcXlaKEpGVGWvaldm2uZqRZWGJG52OdfvNnswmSNyAGdPid6G1W6qLqCtyucsmbtwSXL9yQyb3rtHPsaSOXV/Nj+Bz3ezB87mas8ypL26D9Msmaqq2JVXmakO2oJFVf1YVz2hmKquRQSVN8Uj1vTBU/XtZenCKV021RmY4ivXqmww56q756w6QZX31Q7rk1eE9oft1HVRfRJlr6oVDFVJFSNBXR2O6OtaSvk4TOaITMcBTIC60E2VEoJ4FlgyL8G8WYDIw2RWwT44ONjiY6QNG9OdvnzEr4D47P4rIKVHe3s2w4qQPVAMSChKGr4mo7qiGEWNwqKilOuKJxRTlFmrqPDmvi0oyktTUy7f2uws/lZUZuEFXylaVFFeu8pJpxbjCu8rHZbolYuFOUU5LSopSLKxml5h7bnIiTIccXEAJnMU+CffVw2NdFNFfCX76pIlkzbtD0YIlh4kswkdr/kY2TL5p0bXln1skJ8nU+MWQ9nYoWjFpzQDspX9eFNrXZWMi8xaJ5maVq5rnlCMbXKQ4k0aX09uRRqalq9lNLpQe64JsMlXzrvVpBNxNcHcSMdCwbs9eqy1JPPiEE5Sa9EzPWUHD3OZZ1ou6qRj0YQ2HHF5ACbz75jN+wgpwzZ5XCK9E77O2u1dgdIn7sv4wmmY0hfnZmRthvphmdJynXoiMcqcZp7ypm/dtd77KZ0zq5Suhyidh698JU0c2UeHLqX5I7dZPqO877GgY5uuuZHVZChWqZ/EzaJAaSNSiDt0SOLzAZjMv8NXi17uRGpLI0hmv5RLH9nXHNvsVOnoiEsDMJl/SeXYdksp8sjEuUEpd+6RvYs6m5XIxdzoiPkBmMyxJvoHVVz/YysHC5mdGf/oiOl+mMzxJvpnJoKY6IfX5uPtVpidCGKyT2Iev6E21ipLrVlhAojGA8klmk8RNMY0Jz0h3+t9iCZO8E4I441Oxt1j+jn7E3HrEYQQQgghhBBCCCGEEEIIIYQQQgh9Y+/+XpMK4ziOf2zVV08lCJHMxVN20x8ghBA4JpubP4eNrV3ISklJw5VtLhe2MiEXeSHd7LL7/sqO52hhY2O76Zzz9HnBpudSvm88z4N6DhERERERERERERER0WV9TlzRyu2J+9dAXvZzTbNfv8amCnMgD0vkoJffYS4+BnnYFWgmFrttWVzU7qX9X7QbH8vUhHbjY5ma0G58LFMT2o2PZWpCu/GxTEfVZAPAsqh9WZq5A39S9v4cBCQyfmSZ9M+sSRrAkWzcuVCZYbnHMulfMFZlDmjII8Pvx5T53CpzemCVaT5esMxnSqnI0zwsb5RX58oynVWXb7hb3M6N40NiL6sq81aIZpktFX4P62D690lE1t/KA6Aipend/U6X2VtbWx+oE4zdrL3AXxp5eEEsNvgxxjKdkZAurkjFCs+XjXbb0piUWc4eliU/U+aKkic3h9KHoaK3zi6zBcA4fIkJz5Z5e5zmgGU6I7i0nRtI0w5PPgVyu89CdpmyjKoczJRpnc1vFaP+pBxbd5E+u0z0W0GV/H49qO7t1gFs1pE8Toc3/OgrVUNgKxMeuPsrIGaZZpoDns2dUpFUO7tvv2duS7kxsp8nJQ6EokXjVJnoSPO6DM9ZZw6CQX9JvQ6q/vWrZpnVVyHcTT/GQeVkJTNCsPEhZHQqy4mnPbiZtc4ccJ3pmKZsSAd2eDdqYZH0gl1mBjCK0dDpMvPS6xdvnbsDMrWMoBoCZpmBSAE7mWBuNA/U69bZ/Ev6DlBYDcHFuANy2H6xLEO7zPxmE8m0pCbrzDkk5BX+KnMOuJtVxS6ss/mZO6AvgXGUSatMdI6w1QIWUt96q3aZeRU2qXm4GMt0WlfKAUzWmdnOsRR9dpkS2d2W0myZbalcA3ZFqsD5OyBYUdr/So1cvAB/vzFKDewyq3vzY67+SifLdFpJ+oAdXqmdzR4+wuRsvvkw/cCYLbO6JOvAjhT9lynTp4Z7BnbCC0DPLnM54gNOPhpwMZbpPQXpwHaxMvE2fAQkVDVVixz78P0oYDzvnqwc1OBmLNNzRnFpXq7Md+oFYNTiX1uFdgnv4y/h64UztQW4Gcv0nIPIVoifm5NXaDc+lqkJ7cbHMjWh3fhYpia0G9/vMre0e2n/l4S7d9qXF6suWurrvBKCp73R7eoxU/7CZ5CX6XbFranH90BERERERERERES/2KVjlYahMAzDBxwCGQoOwbiUlkho7NAlQ1c5Q4V0yHpG78B7ELwA6VV4ldZByFia00WeB374+eYXAAAAAAAAAID/7I5sHu/IJgAAAAAAAAAAAAAAwBXK2QJkV66+ht0sw8dKm+RWvu/aYj1L0e6+A+R1v2wP+4dZ9od2GSCrclEth1M7y2l4qQJkVR6362q29SZA5jK7tpqt7QLkLvM5A2WSvcx6k0EdIHeZ2wyUSfYyUzdRN013jRQgc5l9PfEWFvUlmpjqqT7ALcssLizzMxTK5JbK45gmzmWm/imOMY7na/7+dNbEGPv0u/QxvoZTnybGwE87ddPSRhDHcfwXG9i6NEt2F6k1D63MYFVIvCxLYSGHjtINbrYjQhovaQMGkpaWYhQURMWD+AIET/teHR8OcxIhs/Hy/9yG+R2//InhMlmgyeAEy2jtfojf/yi+G8ketv7Vvp7KIFgb7c/PtaVaxF/iFEA90DAQkn+ZKO2jYqcuJj1US2EFJ4EMUey4qKvFpwJOazheoDJJjuxESM0GHDlAshB8xE85Rncb9racIJJtbO7JawzVAgerezE2pE6AEMNlcqa5gcMsfGcswg67xngHm4zJ5JAdo8vYGt6oxaXaxbhhOg5C8i8zui9z8FSmYKLyVpW5K9giamoRU5kkf3biCY0qU2SIhIhgiQN0l+Fm3h+Eoo1b4f1GRy1StUuxwoXGAyGmy+SaFTg8Q4vzFiz+WOZ8v4ILLkJcDV3U1SJVuwhn61xDZZJZlBmp9B7KHA+wdV4o/lI/i6P/pblv94tYvSYF9KhMkiM78b1nWOh7L+GDkFmWmVGZ5HXYSdl/hoW+/xJlEDLLMhUqk7wGO2mUDWiAENM30wS6mcR4mavNxtSa6yDEKNvplJtT80MQYpZb/Xux9HkqS0fD6h2MR7S77s5NUgAAAABJRU5ErkJggg=="},454:function(t,a,e){t.exports=e.p+"assets/img/datahub-dataset.aa0e87ca.png"},590:function(t,a,e){"use strict";e.r(a);var o=e(29),r=Object(o.a)({},(function(){var t=this,a=t.$createElement,o=t._self._c||a;return o("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[o("p",[t._v("In this section, we will walk through the process of publishing, using a dataset of the periodic table of elements as an example. We will define its metadata by creating a data package, describe the structure of the CSV using a Table Schema, validate it on Goodtables, and finally publish to a public CKAN instance. Let’s start.")]),t._v(" "),o("p",[t._v("First, let’s look at the data. It is available as a CSV file on "),o("a",{attrs:{href:"https://raw.githubusercontent.com/frictionlessdata/example-data-packages/d2b96aaed6ab12db41d73022a2988eeb292116e9/periodic-table/data.csv",target:"_blank",rel:"noopener noreferrer"}},[t._v("this link"),o("OutboundLink")],1),t._v(". The first five rows look like:")]),t._v(" "),o("table",[o("thead",[o("tr",[o("th",[t._v("atomic number")]),t._v(" "),o("th",[t._v("symbol")]),t._v(" "),o("th",[t._v("name")]),t._v(" "),o("th",[t._v("atomic mass")]),t._v(" "),o("th",[t._v("metal or nonmetal?")])])]),t._v(" "),o("tbody",[o("tr",[o("td",[t._v("1")]),t._v(" "),o("td",[t._v("H")]),t._v(" "),o("td",[t._v("Hydrogen")]),t._v(" "),o("td",[t._v("1.00794")]),t._v(" "),o("td",[t._v("nonmetal")])]),t._v(" "),o("tr",[o("td",[t._v("2")]),t._v(" "),o("td",[t._v("He")]),t._v(" "),o("td",[t._v("Helium")]),t._v(" "),o("td",[t._v("4.002602")]),t._v(" "),o("td",[t._v("noble gas")])]),t._v(" "),o("tr",[o("td",[t._v("3")]),t._v(" "),o("td",[t._v("Li")]),t._v(" "),o("td",[t._v("Lithium")]),t._v(" "),o("td",[t._v("6.941")]),t._v(" "),o("td",[t._v("alkali metal")])]),t._v(" "),o("tr",[o("td",[t._v("4")]),t._v(" "),o("td",[t._v("Be")]),t._v(" "),o("td",[t._v("Beryllium")]),t._v(" "),o("td",[t._v("9.012182")]),t._v(" "),o("td",[t._v("alkaline earth metal")])]),t._v(" "),o("tr",[o("td",[t._v("5")]),t._v(" "),o("td",[t._v("B")]),t._v(" "),o("td",[t._v("Boron")]),t._v(" "),o("td",[t._v("10.811")]),t._v(" "),o("td",[t._v("metalloid")])])])]),t._v(" "),o("p",[t._v("As we can see, there are some numeric fields, both integers (atomic number) and floating point (atomic mass), and others are textual with strings. Our first objective is to describe the metadata by creating a Data Package, and its contents by creating a Table Schema.")]),t._v(" "),o("h2",{attrs:{id:"step-1-package-our-data-as-a-data-package"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#step-1-package-our-data-as-a-data-package"}},[t._v("#")]),t._v(" Step 1. Package our data as a Data Package")]),t._v(" "),o("p",[t._v("The easiest way to create a data package is using the "),o("a",{attrs:{href:"https://create.frictionlessdata.io/",title:"Data Package Creator",target:"_blank",rel:"noopener noreferrer"}},[t._v("Data Package Creator"),o("OutboundLink")],1),t._v(". It provides a graphical interface to describe the data package’s metadata, add resources, and define the schema for tabular resources. This is what you should see when you first open it:")]),t._v(" "),o("p",[o("img",{attrs:{src:e(450),alt:"Data Package Creator"}}),o("br"),t._v(" "),o("em",[t._v("Data Package Creator")])]),t._v(" "),o("p",[t._v("The left side bar contains the metadata for the Data Package as a whole, and the main part on the right contains the metadata for each specific resource.")]),t._v(" "),o("p",[t._v("Let’s add our CSV resource. On the main section of the page, fill the inputs with:")]),t._v(" "),o("ul",[o("li",[o("strong",[t._v("Name")]),t._v(": periodic-table")]),t._v(" "),o("li",[o("strong",[t._v("Path")]),t._v(": "),o("a",{attrs:{href:"https://raw.githubusercontent.com/frictionlessdata/example-data-packages/d2b96aaed6ab12db41d73022a2988eeb292116e9/periodic-table/data.csv",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://raw.githubusercontent.com/frictionlessdata/example-data-packages/d2b96aaed6ab12db41d73022a2988eeb292116e9/periodic-table/data.csv"),o("OutboundLink")],1)])]),t._v(" "),o("p",[t._v("Resource and data package names must be unique, lowercase, can contain only letters, numbers, and the characters “.”, “-” and “_”.")]),t._v(" "),o("p",[t._v("And click on the "),o("em",[t._v("Load")]),t._v(" button. After a few seconds, a new box should appear with the text “Add all inferred fields (data has 5 extra column(s))”. Click on it, and the fields will be created, with their data types and formats inferred from the data. This saves us time, as we don’t need to start from scratch.")]),t._v(" "),o("p",[t._v("The Data Package Creator got almost all data types correctly, except the {atomic mass} column. It inferred the column as having integer values, but as we can see from the data, the numbers aren’t whole, they have floating points. Just change the type to "),o("strong",[t._v("number")]),t._v(", and that’s it.")]),t._v(" "),o("p",[t._v("You can view a sample of the data in each column by hovering the mouse below its name.")]),t._v(" "),o("p",[t._v("Usually, we would now add titles and descriptions to each field. However, as this is a simple dataset, the field names should be enough. In the end, the fields are:")]),t._v(" "),o("table",[o("thead",[o("tr",[o("th",[t._v("Name")]),t._v(" "),o("th",[t._v("Data type")]),t._v(" "),o("th",[t._v("Data format")])])]),t._v(" "),o("tbody",[o("tr",[o("td",[t._v("atomic number")]),t._v(" "),o("td",[t._v("integer")]),t._v(" "),o("td",[t._v("default")])]),t._v(" "),o("tr",[o("td",[t._v("symbol")]),t._v(" "),o("td",[t._v("string")]),t._v(" "),o("td",[t._v("default")])]),t._v(" "),o("tr",[o("td",[t._v("name")]),t._v(" "),o("td",[t._v("string")]),t._v(" "),o("td",[t._v("default")])]),t._v(" "),o("tr",[o("td",[t._v("atomic mass")]),t._v(" "),o("td",[t._v("number")]),t._v(" "),o("td",[t._v("default")])]),t._v(" "),o("tr",[o("td",[t._v("metal or nonmetal?")]),t._v(" "),o("td",[t._v("string")]),t._v(" "),o("td",[t._v("default")])])])]),t._v(" "),o("p",[t._v("We can add more information about this resource by clicking on the gear icon to the left of the “Load” button. Add the following information:")]),t._v(" "),o("ul",[o("li",[o("strong",[t._v("Title")]),t._v(": Periodic table")]),t._v(" "),o("li",[o("strong",[t._v("Profile")]),t._v(": Tabular Data Resource")]),t._v(" "),o("li",[o("strong",[t._v("Format")]),t._v(": csv")]),t._v(" "),o("li",[o("strong",[t._v("Encoding")]),t._v(": (blank)")]),t._v(" "),o("li",[o("strong",[t._v("Description")]),t._v(": (blank)")])]),t._v(" "),o("p",[t._v("After this, we’re only missing metadata for the data package as a whole, available on the left side bar. Add:")]),t._v(" "),o("ul",[o("li",[o("strong",[t._v("Name")]),t._v(": periodic-table")]),t._v(" "),o("li",[o("strong",[t._v("Title")]),t._v(": Periodic table")]),t._v(" "),o("li",[o("strong",[t._v("Profile")]),t._v(": Tabular Data Package")]),t._v(" "),o("li",[o("strong",[t._v("Description")]),t._v(": Periodic table of chemical elements")]),t._v(" "),o("li",[o("strong",[t._v("Home Page")]),t._v(": "),o("a",{attrs:{href:"https://github.com/frictionlessdata/example-data-packages/tree/master/periodic-table",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/frictionlessdata/example-data-packages/tree/master/periodic-table"),o("OutboundLink")],1)]),t._v(" "),o("li",[o("strong",[t._v("Version")]),t._v(": 1.0.0")]),t._v(" "),o("li",[o("strong",[t._v("License")]),t._v(": CC0-1.0")]),t._v(" "),o("li",[o("strong",[t._v("Author")]),t._v(": (blank)")])]),t._v(" "),o("p",[o("img",{attrs:{src:e(451),alt:""}})]),t._v(" "),o("p",[t._v("Let’s validate the data package, to ensure we haven’t missed anything. Just click on the "),o("em",[t._v("Validate")]),t._v(" button on the bottom left, and you should see a green message “Data package is valid!”. This means that the data package is valid, but not necessarily its contents (we’ll check them in the next step).")]),t._v(" "),o("p",[t._v("Save the data package by clicking on the "),o("em",[t._v("Download")]),t._v(" button. This will download a “datapackage.json” file that contains everything we added here. Our next step is to use it to validate the data.")]),t._v(" "),o("h2",{attrs:{id:"step-2-validate-our-data-package-and-its-contents"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#step-2-validate-our-data-package-and-its-contents"}},[t._v("#")]),t._v(" Step 2. Validate our data package and its contents")]),t._v(" "),o("p",[t._v("We now have a data package with our CSV file, including with a table schema describing the contents and types of its columns. Our final step before publishing is validating the data, so we can avoid publishing data with errors. To do so, we’ll use goodtables.")]),t._v(" "),o("p",[o("a",{attrs:{href:"https://goodtables.io",target:"_blank",rel:"noopener noreferrer"}},[t._v("Goodtables"),o("OutboundLink")],1),t._v(" is a tabular data validator that allows you to automatically check for errors such as blank headers, duplicate rows, data with the wrong type (e.g. should be a number but is a date), and others. As it supports data packages, we can simply load the one we created in the previous step. Let’s do it.")]),t._v(" "),o("ol",[o("li",[t._v("Go to "),o("a",{attrs:{href:"https://try.goodtables.io",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://try.goodtables.io"),o("OutboundLink")],1)]),t._v(" "),o("li",[t._v("On the "),o("em",[t._v("Source")]),t._v(" input, click on the "),o("em",[t._v("Upload File")]),t._v(" link.")]),t._v(" "),o("li",[t._v("Click on "),o("em",[t._v("Browse…")]),t._v(" and select the "),o("em",[t._v("datapackage.json")]),t._v(" file you downloaded in the previous step")]),t._v(" "),o("li",[t._v("Click on "),o("em",[t._v("Validate")])])]),t._v(" "),o("p",[t._v("After a few seconds, you should see:")]),t._v(" "),o("p",[o("img",{attrs:{src:e(452),alt:"try.goodtables"}}),o("br"),t._v(" "),o("em",[t._v("try.goodtables")])]),t._v(" "),o("p",[t._v("This means that:")]),t._v(" "),o("ul",[o("li",[t._v("The data package is valid")]),t._v(" "),o("li",[t._v("The CSV file is valid")]),t._v(" "),o("li",[t._v("There are no blank rows or headers, or duplicate rows")]),t._v(" "),o("li",[t._v("The data is valid according to the table schema we created (numbers are numbers, and so on)")])]),t._v(" "),o("p",[t._v("Although it can’t tell you if your data is correct, for example if the Aluminium"),o("br"),t._v("\natomic mass is 26.9815386, it does ensure you that all atomic mass values are"),o("br"),t._v("\nnumbers, among the other validations.")]),t._v(" "),o("p",[t._v("Now that we’ve created a data package, described our data with a table schema,"),o("br"),t._v("\nand validated it, we can finally publish it.")]),t._v(" "),o("h2",{attrs:{id:"step-3-publish-the-data"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#step-3-publish-the-data"}},[t._v("#")]),t._v(" Step 3. Publish the data")]),t._v(" "),o("p",[t._v("Our final step is to publish the dataset. The specifics instructions will vary depend on where you’re publishing to. In this example, we’ll see how to publish to a public "),o("a",{attrs:{href:"https://ckan.org",target:"_blank",rel:"noopener noreferrer"}},[t._v("CKAN"),o("OutboundLink")],1),t._v(" instance, the "),o("a",{attrs:{href:"https://old.datahub.io",target:"_blank",rel:"noopener noreferrer"}},[t._v("Datahub"),o("OutboundLink")],1),t._v(". If you want to use it and don’t have an account yet, you can request one via "),o("a",{attrs:{href:"https://discuss.okfn.org/c/open-knowledge-labs/datahub",target:"_blank",rel:"noopener noreferrer"}},[t._v("our community page"),o("OutboundLink")],1),t._v(". "),o("em",[t._v("(Note: this example is now out of date. See the "),o("a",{attrs:{href:"https://docs.ckan.org/en/2.9/",target:"_blank",rel:"noopener noreferrer"}},[t._v("CKAN docs"),o("OutboundLink")],1),t._v(" for more updated information")]),t._v("). Let’s start.")]),t._v(" "),o("p",[t._v("After you’re logged in, go to the "),o("a",{attrs:{href:"https://old.datahub.io/dataset",target:"_blank",rel:"noopener noreferrer"}},[t._v("datasets list page"),o("OutboundLink")],1),t._v(" and click on the "),o("code",[t._v("Import Data Package")]),t._v(" button. On this form, click on “Upload”, select the "),o("code",[t._v("datapackage.json")]),t._v(" file we created in the previous step, and choose your organisation. We’ll keep the visibility as private for now, so we can review the dataset before it’s made public.")]),t._v(" "),o("p",[o("img",{attrs:{src:e(453),alt:"Importing a data packate to the DataHub"}}),o("br"),t._v(" "),o("em",[t._v("Importing a data packate to the DataHub")])]),t._v(" "),o("p",[t._v("If you don’t see the “Import Data Package” button in your CKAN instance, install the "),o("a",{attrs:{href:"https://github.com/frictionlessdata/ckanext-datapackager",target:"_blank",rel:"noopener noreferrer"}},[t._v("ckanext-datapackager"),o("OutboundLink")],1),t._v(" extension to add support for importing and exporting your datasets as data packages.")]),t._v(" "),o("p",[t._v("You will be redirected to the newly created dataset on CKAN, with its metadata and resource extracted from the data package. Double check if everything seems fine, and when you’re finished, click on the “Manage” button and change the visibility to “Public”.")]),t._v(" "),o("p",[o("a",{attrs:{href:"https://datahub.ckan.io/dataset/period-table-9896953431",target:"_blank",rel:"noopener noreferrer"}},[o("img",{attrs:{src:e(454),alt:"Data package in CKAN"}}),o("OutboundLink")],1)]),t._v(" "),o("p",[t._v("That’s it! CKAN supports data packages via the "),o("a",{attrs:{href:"https://github.com/frictionlessdata/ckanext-datapackager",target:"_blank",rel:"noopener noreferrer"}},[t._v("ckanext-datapackager"),o("OutboundLink")],1),t._v(" extension, so importing (and exporting) data packages is trivial, as all the work on describing the dataset was done while creating the data package.")])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{452:function(t,a,e){t.exports=e.p+"assets/img/dp-creator.b5d3af77.png"},453:function(t,a,e){t.exports=e.p+"assets/img/dp-creator-filled.325fa9a7.png"},454:function(t,a,e){t.exports=e.p+"assets/img/try-goodtables.13d08c7b.png"},455:function(t,a){t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAApkAAADICAMAAACUPAobAAACjlBMVEX////u7u7MzMzl5eXg4ODq6uqqqqpERET19fXy8vL//v7x8fHw8PD09PT9/Pz9HA0UFBT+/f0aGhoXFxfy8fA2Njb5+flgYGAsLCzs7OxXV1f6+vr4+Pjp6elVVVXn5+fr6+tHR0etra0iIiIeHh79IBA5OTlQUFAyMjIvLy80NDQxMTH+OyMREREQEBA9PT3+Qyn+PSX9GAr7+vonJyf9LBnNzc3+bVdeXl7+XkT+QCfR0dHkVDz+TDDPz8+GhYT+RStRUVHe3t4gICDY2NjKysrT09NZWVnc3NxcXFxjY2NMTEz7+/vCwsLa2trW1tYlJSVJSUmwsLCQkJD9IxKLi4uTk5NxcXFPT08qKir+OCH9KBa5ubn9JRTIyMiEhIR4eHhFRUWIiIj+NR/j4+O9vb2goKD9MBykpKSWlpZ0dHRlZWX+Mx3ExMSGhobHx8fk5OSdnZ17e3tra2v39/dnZ2dtbW2zs7OBgYFubm63tra1tbV+fn6/v7+np6eYmJhpaWmNjY3m5uZ3d3fDLBr+9PPd3d2ZmZl9fX1mZmb45OKysrK7u7v9NiX77ez20c6srKztl492dnb8ZFU7Ozv9Ry7uNSDX19fxX0//+fn/4t/uv7v5gXJAQEDvRS8AAADv2NT/19T9w73yV0b+UzvbLx33albzTjz1SDfnMh7i4uLyraXnq6Xsg3nPXFH4Qi3nQizmOyb1Mx3OLhv22dbij4fhWEroTTbrKBi+KBbTIBL23dvinZbkdGbYbWTsaFf8ZE3MTD7DNynjLRv3KRf4s63+q6T8kYjziH3gfHH8dmj8VUPUNCPjzszfycbYs7DFraqzo6D1p5vMioD9W0/9TkD5VD39RjjxIhP1GAq7ZrOuAAATpUlEQVR42uzc2VNSURzA8d+PQqppGV9iThMXaqa3HqoZ6JatTkjQUJOCNqLlaKKVW1aYllkmlhSaOZDbOFqm2Wr7vu/7vv03HQguNNVUejVrfp8H77mHnz59h+UCwhAwAgn51kYYAkbEGxSERDPEj4C/b2lC9XBColUnVMPfZxiu1SjJP0/Tf9Kf0g6fB3+fQsuQ/OtY+5vWW51z+67zVuub9nAJTKuAv0+hQfKPY8pW36m2i3P642LbKV+rMtSmZkiUqUTyb2PtH9ouNnZ1zeyPrq7Gi20fQnebSiqT9B875us91DCrc65vQd/55nbOajjU6zvGqEwiD9bu622c5ZvWf75Zjb2+dkZlElmwrtOHOmeHVQWd9c/uk85Dp7sGvszlqqBF41ULYaRqApX5f2Lt/u7O6RIPcLHnTk6d3iedF/3tbODLFC1c/B+UaRTxD8SZ8FeWCeVIBhRrPf10aoQHmpub3VDbNrVvnp5uHYQyiyBg1IgRfSkzpUyGMofvSkAykBg70jY1NcIDjampviboSj1ztqrqcGrqmctnD1dV+XuCJ6l8edbPD5d7UlPP8h+hoYjpbUcYG6QyeZVfyzyascK8ZiJAhmqLXGWSv43p/KeyovAys7LOXIWGvNstbs+1Z1ndUHe+9uqNGx738Z6sZ8c97rqT/qz78DgrrwWehIeiHPHrBrvMMQuXb61RFfyszHk7zRklIj9mmNX2YbhWECrCa2Pp3lJ+lG7DpZvNmxKDZe4R46TdZcXi1jQX4uodFnVyJQbohEVY5jKVWhEXbxa3O3V8J263ef8yJPJgyp7peVE8cPLy5duxTVNP1zYd7IDjZ7oB3M3QNKojFq7766D5YCxcyHsCLXl+d9P08FBexKke5cCXGWCXytynqhjNBJUSUDvi+zJXi3bjZLOIuGGVMduSi7qUEhZeG80uq3VDgXSbcrtdsU0w8jKzzSulXW1NkiFG7UJWvMpoLc0Ml7lMyFUkiUzn2qzYa3HynYx8RUoBErnKvJuVE8UDAbU3c07AtTt3aqGtG8YuyKuFRzn1UH8TznlzWqElx+t2+y/AQWkoJ8J7dxDKVNfU1DilMu2qIMOPn2fGbOLHXSIqc6sRk5ICj+bS2igUIiqE6vD5XosGMXlPnKnQlI3SVFmNEnGHC+eZtXzaxEJllpuKcFia1moehlii5jsliJNTkMhWpj6aB5o7miH2vP4YBDV0wzm9vg4O6U9A/SOo1+u94NHr78OF8/BEGtJH5PAyB/nRPFPlNHDsx2Um2xGxXETUFMZkmoJlSmujwGeYuTB87tyKAXGC2rwNpan18/k60YVlglqtFoXqUJnDUtTJVoYx+xHxgLBaJyQgplGZ8pXZe++bMnmD+ga4yqOrb2hobDx1BOoCZXaHynToe6BWr58J9S1jvdKQPuJe76CXmatyAqzMHvnjR/M1oTKL1qbkFiYHy5TWxgksUGZ++Ny5OVRm2mTzcGlqV8HXMku2Lw5QhspEVphsKY0PlrlIGM53qEwZMd31e44ovEyHwwu1jodw/sqVkze8vEyHg5fp4GU2wLmqK4/hoMOR4z7XxA/hIUfEvceD/goIl0yyF6vWxf74FdDkTfy4XsRsUYOYGSxTWhsFBaJBWBo+L7Moecq5cSbUlSZLU3tqdIhJLt5xPKIxiYXKzI9B1FhKrOYixDI1ozLlxdjzS+lReJnp6V6AS1530/EW6HDwMtPT6+BIOi+TH6+2xMI7PncfoJUPhobSIy49H/yrRktTlizMRPhxmUWiXZFoEdEqlBRWTMiIx7XO1eG1USjNt7pWSbdp1+0wJE7I52VivhAX3q20JBkS15UiW1tsLN9QgRhTEnyeOSFxXqLJoNuwWZFtcSKVKTOmuWCL0gxPbbZ0N8y0vT/orn3gtX2EDputAz7aWuGhLetBs7vunY2bCbFefggNRbmgYUPsfXN+1WhnoYisQly3xrAuEfeJ68Nro5i2QbSvjty2bLd5+9erRriqWNqN2ykWpBUjxmeqLRUaxP0FgQ6Zs8bk2hO40iRucuqoTLkx3YtLU+Rz6YVuqJX5nT9907Laiojb7BhNyTskA4tpXn4aJ5dPLzX/0meNfq/MpRP2xK+0WDGKLltYjGRgMaZ5dVimMA+/0rD/r0zMLjVtj2EYZaWlgr5kNOAYqyy7/XlG/30+WVbJ6JPDRM40ja/fXr95a1bf3bp5/e1rYyWjb1sQWdPUVSaUp03uj7TyhEodY0hlEjkxHqcyQNcHod9kgS6HUJnztEj+A+wreX5XOxT+E0LRIrrTJN/SLKqEIaBynoKQaHFaIIQQQgghhBBCCCGEEEIIIYQQQgghhBBCyBf27u8nbSiKA/jtxJ4LapO+lEgLHbz4HzQkJCw1QoXKCDVIHwiIUaMSdSD4Y1OnW7K5uIdlL/sf9lfuUrg6YcvGIstg55PYY869t8T0a0pJaBFCCCGEEEIIITS+WjlHnADCQ/qXQ42gcda6TbfIBBCFPk9fKQSNscoSmQii0G/zX7gFCvpjtxNy0hOFAScEjTGRTAZRGDApf9p/alIOHyZz0kzK4cNkTppJOXyYzL+o9f7KPtpWya8oYP6sj8lEj28+C2ACtP1/kswg6EMnk+62f+M/IXTLNvNWc4X8DIVp8r20S37Icsj3kiYmczwU4UonU3XYJb8QoPSHyWT9YZIZjscdI2a1/b9Opj9b0ggm8z81DbU3rCxDza9DsBJcnr9xSyewRkilXTDPw4R1X8bd6xXv2X0idDh87AoA8p0+8a9a9nGK3M3mT/cbTGa1Pce2Qmb3l8lsnbGp/1oy5zsqHYdv5j2YzNFIwZVXM5DXIWLC8zac7UVZMvVC9HMWzokO0VoW4JWXzMNqtQlQ5mOpCDiznb58DPH1GiTuZv80mW/A8OpWdC6dzWXNAxY+/4ZprraIBMt79vEmT6bUjAvkvhluupltiVxtExKvE9I4ZsnkK8nzM7tUZsnc3HM/XwT5Hh8k03sg5jPKkpnLLlRnCPkYLGRTQycz3PFqg3n9IuzBZI7GCdx4tQRbOkuUvwLHcqDKkmmsfyI6WOwHFkkDrr1kEhI4gD2pN+adzb1+CrIKuYX1+9l9T5EWAz37Ucmrs5BP2MHKYfw8IO8186lsNbACZ0a6fhrwhJwi5FnlzZVgM52LbAcaewGhBv5AaZtCmK+ccZ+lY7Yb0ELFLzEzeLdHjxXr1vh5Yj+yE0jW6kkj+Dbgg5180ZUCwxF1z+XGRjGtd2EyR6MCR16NQ1rvRE+EbUIuWDKJb+cmwjo6ZAjJwUEvmTEICXzsPpmfoEHYL9b97D6i3BPLyF32xwQYspyG8JJNWS2sqPBSlp0PsieUyWRPWeXNQ9svy2VTNmxlv2RVtEJiDnS+MmYpsrzryuUQqxtBmfflDivmFW1nWpaLRdmAtCznYWq/MCP7t6g8HHHK86W44Uz1YDJHIww1nZXF7vtMQnZ4MhM1t+iw0Hnd/V4yWTf6hfCxgWRG7mf3EaWei4LqVT8YyZomSSsFo1wzTXMBdAWeS9LHD5InFHqRhpwk8aZ4zJo+EGgh3Xj9rJGwNT/ofOXqMzaYc6XGDatOUOJ9qcOKSZ6WcXlaKEpGVGWvaldm2uZqRZWGJG52OdfvNnswmSNyAGdPid6G1W6qLqCtyucsmbtwSXL9yQyb3rtHPsaSOXV/Nj+Bz3ezB87mas8ypL26D9Msmaqq2JVXmakO2oJFVf1YVz2hmKquRQSVN8Uj1vTBU/XtZenCKV021RmY4ivXqmww56q756w6QZX31Q7rk1eE9oft1HVRfRJlr6oVDFVJFSNBXR2O6OtaSvk4TOaITMcBTIC60E2VEoJ4FlgyL8G8WYDIw2RWwT44ONjiY6QNG9OdvnzEr4D47P4rIKVHe3s2w4qQPVAMSChKGr4mo7qiGEWNwqKilOuKJxRTlFmrqPDmvi0oyktTUy7f2uws/lZUZuEFXylaVFFeu8pJpxbjCu8rHZbolYuFOUU5LSopSLKxml5h7bnIiTIccXEAJnMU+CffVw2NdFNFfCX76pIlkzbtD0YIlh4kswkdr/kY2TL5p0bXln1skJ8nU+MWQ9nYoWjFpzQDspX9eFNrXZWMi8xaJ5maVq5rnlCMbXKQ4k0aX09uRRqalq9lNLpQe64JsMlXzrvVpBNxNcHcSMdCwbs9eqy1JPPiEE5Sa9EzPWUHD3OZZ1ou6qRj0YQ2HHF5ACbz75jN+wgpwzZ5XCK9E77O2u1dgdIn7sv4wmmY0hfnZmRthvphmdJynXoiMcqcZp7ypm/dtd77KZ0zq5Suhyidh698JU0c2UeHLqX5I7dZPqO877GgY5uuuZHVZChWqZ/EzaJAaSNSiDt0SOLzAZjMv8NXi17uRGpLI0hmv5RLH9nXHNvsVOnoiEsDMJl/SeXYdksp8sjEuUEpd+6RvYs6m5XIxdzoiPkBmMyxJvoHVVz/YysHC5mdGf/oiOl+mMzxJvpnJoKY6IfX5uPtVpidCGKyT2Iev6E21ipLrVlhAojGA8klmk8RNMY0Jz0h3+t9iCZO8E4I441Oxt1j+jn7E3HrEYQQQgghhBBCCCGEEEIIIYQQQgh9Y+/+XpMK4ziOf2zVV08lCJHMxVN20x8ghBA4JpubP4eNrV3ISklJw5VtLhe2MiEXeSHd7LL7/sqO52hhY2O76Zzz9HnBpudSvm88z4N6DhERERERERERERER0WV9TlzRyu2J+9dAXvZzTbNfv8amCnMgD0vkoJffYS4+BnnYFWgmFrttWVzU7qX9X7QbH8vUhHbjY5ma0G58LFMT2o2PZWpCu/GxTEfVZAPAsqh9WZq5A39S9v4cBCQyfmSZ9M+sSRrAkWzcuVCZYbnHMulfMFZlDmjII8Pvx5T53CpzemCVaT5esMxnSqnI0zwsb5RX58oynVWXb7hb3M6N40NiL6sq81aIZpktFX4P62D690lE1t/KA6Aipend/U6X2VtbWx+oE4zdrL3AXxp5eEEsNvgxxjKdkZAurkjFCs+XjXbb0piUWc4eliU/U+aKkic3h9KHoaK3zi6zBcA4fIkJz5Z5e5zmgGU6I7i0nRtI0w5PPgVyu89CdpmyjKoczJRpnc1vFaP+pBxbd5E+u0z0W0GV/H49qO7t1gFs1pE8Toc3/OgrVUNgKxMeuPsrIGaZZpoDns2dUpFUO7tvv2duS7kxsp8nJQ6EokXjVJnoSPO6DM9ZZw6CQX9JvQ6q/vWrZpnVVyHcTT/GQeVkJTNCsPEhZHQqy4mnPbiZtc4ccJ3pmKZsSAd2eDdqYZH0gl1mBjCK0dDpMvPS6xdvnbsDMrWMoBoCZpmBSAE7mWBuNA/U69bZ/Ev6DlBYDcHFuANy2H6xLEO7zPxmE8m0pCbrzDkk5BX+KnMOuJtVxS6ss/mZO6AvgXGUSatMdI6w1QIWUt96q3aZeRU2qXm4GMt0WlfKAUzWmdnOsRR9dpkS2d2W0myZbalcA3ZFqsD5OyBYUdr/So1cvAB/vzFKDewyq3vzY67+SifLdFpJ+oAdXqmdzR4+wuRsvvkw/cCYLbO6JOvAjhT9lynTp4Z7BnbCC0DPLnM54gNOPhpwMZbpPQXpwHaxMvE2fAQkVDVVixz78P0oYDzvnqwc1OBmLNNzRnFpXq7Md+oFYNTiX1uFdgnv4y/h64UztQW4Gcv0nIPIVoifm5NXaDc+lqkJ7cbHMjWh3fhYpia0G9/vMre0e2n/l4S7d9qXF6suWurrvBKCp73R7eoxU/7CZ5CX6XbFranH90BERERERERERES/2KVjlYahMAzDBxwCGQoOwbiUlkho7NAlQ1c5Q4V0yHpG78B7ELwA6VV4ldZByFia00WeB374+eYXAAAAAAAAAID/7I5sHu/IJgAAAAAAAAAAAAAAwBXK2QJkV66+ht0sw8dKm+RWvu/aYj1L0e6+A+R1v2wP+4dZ9od2GSCrclEth1M7y2l4qQJkVR6362q29SZA5jK7tpqt7QLkLvM5A2WSvcx6k0EdIHeZ2wyUSfYyUzdRN013jRQgc5l9PfEWFvUlmpjqqT7ALcssLizzMxTK5JbK45gmzmWm/imOMY7na/7+dNbEGPv0u/QxvoZTnybGwE87ddPSRhDHcfwXG9i6NEt2F6k1D63MYFVIvCxLYSGHjtINbrYjQhovaQMGkpaWYhQURMWD+AIET/teHR8OcxIhs/Hy/9yG+R2//InhMlmgyeAEy2jtfojf/yi+G8ketv7Vvp7KIFgb7c/PtaVaxF/iFEA90DAQkn+ZKO2jYqcuJj1US2EFJ4EMUey4qKvFpwJOazheoDJJjuxESM0GHDlAshB8xE85Rncb9racIJJtbO7JawzVAgerezE2pE6AEMNlcqa5gcMsfGcswg67xngHm4zJ5JAdo8vYGt6oxaXaxbhhOg5C8i8zui9z8FSmYKLyVpW5K9giamoRU5kkf3biCY0qU2SIhIhgiQN0l+Fm3h+Eoo1b4f1GRy1StUuxwoXGAyGmy+SaFTg8Q4vzFiz+WOZ8v4ILLkJcDV3U1SJVuwhn61xDZZJZlBmp9B7KHA+wdV4o/lI/i6P/pblv94tYvSYF9KhMkiM78b1nWOh7L+GDkFmWmVGZ5HXYSdl/hoW+/xJlEDLLMhUqk7wGO2mUDWiAENM30wS6mcR4mavNxtSa6yDEKNvplJtT80MQYpZb/Xux9HkqS0fD6h2MR7S77s5NUgAAAABJRU5ErkJggg=="},456:function(t,a,e){t.exports=e.p+"assets/img/datahub-dataset.aa0e87ca.png"},591:function(t,a,e){"use strict";e.r(a);var o=e(29),r=Object(o.a)({},(function(){var t=this,a=t.$createElement,o=t._self._c||a;return o("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[o("p",[t._v("In this section, we will walk through the process of publishing, using a dataset of the periodic table of elements as an example. We will define its metadata by creating a data package, describe the structure of the CSV using a Table Schema, validate it on Goodtables, and finally publish to a public CKAN instance. Let’s start.")]),t._v(" "),o("p",[t._v("First, let’s look at the data. It is available as a CSV file on "),o("a",{attrs:{href:"https://raw.githubusercontent.com/frictionlessdata/example-data-packages/d2b96aaed6ab12db41d73022a2988eeb292116e9/periodic-table/data.csv",target:"_blank",rel:"noopener noreferrer"}},[t._v("this link"),o("OutboundLink")],1),t._v(". The first five rows look like:")]),t._v(" "),o("table",[o("thead",[o("tr",[o("th",[t._v("atomic number")]),t._v(" "),o("th",[t._v("symbol")]),t._v(" "),o("th",[t._v("name")]),t._v(" "),o("th",[t._v("atomic mass")]),t._v(" "),o("th",[t._v("metal or nonmetal?")])])]),t._v(" "),o("tbody",[o("tr",[o("td",[t._v("1")]),t._v(" "),o("td",[t._v("H")]),t._v(" "),o("td",[t._v("Hydrogen")]),t._v(" "),o("td",[t._v("1.00794")]),t._v(" "),o("td",[t._v("nonmetal")])]),t._v(" "),o("tr",[o("td",[t._v("2")]),t._v(" "),o("td",[t._v("He")]),t._v(" "),o("td",[t._v("Helium")]),t._v(" "),o("td",[t._v("4.002602")]),t._v(" "),o("td",[t._v("noble gas")])]),t._v(" "),o("tr",[o("td",[t._v("3")]),t._v(" "),o("td",[t._v("Li")]),t._v(" "),o("td",[t._v("Lithium")]),t._v(" "),o("td",[t._v("6.941")]),t._v(" "),o("td",[t._v("alkali metal")])]),t._v(" "),o("tr",[o("td",[t._v("4")]),t._v(" "),o("td",[t._v("Be")]),t._v(" "),o("td",[t._v("Beryllium")]),t._v(" "),o("td",[t._v("9.012182")]),t._v(" "),o("td",[t._v("alkaline earth metal")])]),t._v(" "),o("tr",[o("td",[t._v("5")]),t._v(" "),o("td",[t._v("B")]),t._v(" "),o("td",[t._v("Boron")]),t._v(" "),o("td",[t._v("10.811")]),t._v(" "),o("td",[t._v("metalloid")])])])]),t._v(" "),o("p",[t._v("As we can see, there are some numeric fields, both integers (atomic number) and floating point (atomic mass), and others are textual with strings. Our first objective is to describe the metadata by creating a Data Package, and its contents by creating a Table Schema.")]),t._v(" "),o("h2",{attrs:{id:"step-1-package-our-data-as-a-data-package"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#step-1-package-our-data-as-a-data-package"}},[t._v("#")]),t._v(" Step 1. Package our data as a Data Package")]),t._v(" "),o("p",[t._v("The easiest way to create a data package is using the "),o("a",{attrs:{href:"https://create.frictionlessdata.io/",title:"Data Package Creator",target:"_blank",rel:"noopener noreferrer"}},[t._v("Data Package Creator"),o("OutboundLink")],1),t._v(". It provides a graphical interface to describe the data package’s metadata, add resources, and define the schema for tabular resources. This is what you should see when you first open it:")]),t._v(" "),o("p",[o("img",{attrs:{src:e(452),alt:"Data Package Creator"}}),o("br"),t._v(" "),o("em",[t._v("Data Package Creator")])]),t._v(" "),o("p",[t._v("The left side bar contains the metadata for the Data Package as a whole, and the main part on the right contains the metadata for each specific resource.")]),t._v(" "),o("p",[t._v("Let’s add our CSV resource. On the main section of the page, fill the inputs with:")]),t._v(" "),o("ul",[o("li",[o("strong",[t._v("Name")]),t._v(": periodic-table")]),t._v(" "),o("li",[o("strong",[t._v("Path")]),t._v(": "),o("a",{attrs:{href:"https://raw.githubusercontent.com/frictionlessdata/example-data-packages/d2b96aaed6ab12db41d73022a2988eeb292116e9/periodic-table/data.csv",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://raw.githubusercontent.com/frictionlessdata/example-data-packages/d2b96aaed6ab12db41d73022a2988eeb292116e9/periodic-table/data.csv"),o("OutboundLink")],1)])]),t._v(" "),o("p",[t._v("Resource and data package names must be unique, lowercase, can contain only letters, numbers, and the characters “.”, “-” and “_”.")]),t._v(" "),o("p",[t._v("And click on the "),o("em",[t._v("Load")]),t._v(" button. After a few seconds, a new box should appear with the text “Add all inferred fields (data has 5 extra column(s))”. Click on it, and the fields will be created, with their data types and formats inferred from the data. This saves us time, as we don’t need to start from scratch.")]),t._v(" "),o("p",[t._v("The Data Package Creator got almost all data types correctly, except the {atomic mass} column. It inferred the column as having integer values, but as we can see from the data, the numbers aren’t whole, they have floating points. Just change the type to "),o("strong",[t._v("number")]),t._v(", and that’s it.")]),t._v(" "),o("p",[t._v("You can view a sample of the data in each column by hovering the mouse below its name.")]),t._v(" "),o("p",[t._v("Usually, we would now add titles and descriptions to each field. However, as this is a simple dataset, the field names should be enough. In the end, the fields are:")]),t._v(" "),o("table",[o("thead",[o("tr",[o("th",[t._v("Name")]),t._v(" "),o("th",[t._v("Data type")]),t._v(" "),o("th",[t._v("Data format")])])]),t._v(" "),o("tbody",[o("tr",[o("td",[t._v("atomic number")]),t._v(" "),o("td",[t._v("integer")]),t._v(" "),o("td",[t._v("default")])]),t._v(" "),o("tr",[o("td",[t._v("symbol")]),t._v(" "),o("td",[t._v("string")]),t._v(" "),o("td",[t._v("default")])]),t._v(" "),o("tr",[o("td",[t._v("name")]),t._v(" "),o("td",[t._v("string")]),t._v(" "),o("td",[t._v("default")])]),t._v(" "),o("tr",[o("td",[t._v("atomic mass")]),t._v(" "),o("td",[t._v("number")]),t._v(" "),o("td",[t._v("default")])]),t._v(" "),o("tr",[o("td",[t._v("metal or nonmetal?")]),t._v(" "),o("td",[t._v("string")]),t._v(" "),o("td",[t._v("default")])])])]),t._v(" "),o("p",[t._v("We can add more information about this resource by clicking on the gear icon to the left of the “Load” button. Add the following information:")]),t._v(" "),o("ul",[o("li",[o("strong",[t._v("Title")]),t._v(": Periodic table")]),t._v(" "),o("li",[o("strong",[t._v("Profile")]),t._v(": Tabular Data Resource")]),t._v(" "),o("li",[o("strong",[t._v("Format")]),t._v(": csv")]),t._v(" "),o("li",[o("strong",[t._v("Encoding")]),t._v(": (blank)")]),t._v(" "),o("li",[o("strong",[t._v("Description")]),t._v(": (blank)")])]),t._v(" "),o("p",[t._v("After this, we’re only missing metadata for the data package as a whole, available on the left side bar. Add:")]),t._v(" "),o("ul",[o("li",[o("strong",[t._v("Name")]),t._v(": periodic-table")]),t._v(" "),o("li",[o("strong",[t._v("Title")]),t._v(": Periodic table")]),t._v(" "),o("li",[o("strong",[t._v("Profile")]),t._v(": Tabular Data Package")]),t._v(" "),o("li",[o("strong",[t._v("Description")]),t._v(": Periodic table of chemical elements")]),t._v(" "),o("li",[o("strong",[t._v("Home Page")]),t._v(": "),o("a",{attrs:{href:"https://github.com/frictionlessdata/example-data-packages/tree/master/periodic-table",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/frictionlessdata/example-data-packages/tree/master/periodic-table"),o("OutboundLink")],1)]),t._v(" "),o("li",[o("strong",[t._v("Version")]),t._v(": 1.0.0")]),t._v(" "),o("li",[o("strong",[t._v("License")]),t._v(": CC0-1.0")]),t._v(" "),o("li",[o("strong",[t._v("Author")]),t._v(": (blank)")])]),t._v(" "),o("p",[o("img",{attrs:{src:e(453),alt:""}})]),t._v(" "),o("p",[t._v("Let’s validate the data package, to ensure we haven’t missed anything. Just click on the "),o("em",[t._v("Validate")]),t._v(" button on the bottom left, and you should see a green message “Data package is valid!”. This means that the data package is valid, but not necessarily its contents (we’ll check them in the next step).")]),t._v(" "),o("p",[t._v("Save the data package by clicking on the "),o("em",[t._v("Download")]),t._v(" button. This will download a “datapackage.json” file that contains everything we added here. Our next step is to use it to validate the data.")]),t._v(" "),o("h2",{attrs:{id:"step-2-validate-our-data-package-and-its-contents"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#step-2-validate-our-data-package-and-its-contents"}},[t._v("#")]),t._v(" Step 2. Validate our data package and its contents")]),t._v(" "),o("p",[t._v("We now have a data package with our CSV file, including with a table schema describing the contents and types of its columns. Our final step before publishing is validating the data, so we can avoid publishing data with errors. To do so, we’ll use goodtables.")]),t._v(" "),o("p",[o("a",{attrs:{href:"https://goodtables.io",target:"_blank",rel:"noopener noreferrer"}},[t._v("Goodtables"),o("OutboundLink")],1),t._v(" is a tabular data validator that allows you to automatically check for errors such as blank headers, duplicate rows, data with the wrong type (e.g. should be a number but is a date), and others. As it supports data packages, we can simply load the one we created in the previous step. Let’s do it.")]),t._v(" "),o("ol",[o("li",[t._v("Go to "),o("a",{attrs:{href:"https://try.goodtables.io",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://try.goodtables.io"),o("OutboundLink")],1)]),t._v(" "),o("li",[t._v("On the "),o("em",[t._v("Source")]),t._v(" input, click on the "),o("em",[t._v("Upload File")]),t._v(" link.")]),t._v(" "),o("li",[t._v("Click on "),o("em",[t._v("Browse…")]),t._v(" and select the "),o("em",[t._v("datapackage.json")]),t._v(" file you downloaded in the previous step")]),t._v(" "),o("li",[t._v("Click on "),o("em",[t._v("Validate")])])]),t._v(" "),o("p",[t._v("After a few seconds, you should see:")]),t._v(" "),o("p",[o("img",{attrs:{src:e(454),alt:"try.goodtables"}}),o("br"),t._v(" "),o("em",[t._v("try.goodtables")])]),t._v(" "),o("p",[t._v("This means that:")]),t._v(" "),o("ul",[o("li",[t._v("The data package is valid")]),t._v(" "),o("li",[t._v("The CSV file is valid")]),t._v(" "),o("li",[t._v("There are no blank rows or headers, or duplicate rows")]),t._v(" "),o("li",[t._v("The data is valid according to the table schema we created (numbers are numbers, and so on)")])]),t._v(" "),o("p",[t._v("Although it can’t tell you if your data is correct, for example if the Aluminium"),o("br"),t._v("\natomic mass is 26.9815386, it does ensure you that all atomic mass values are"),o("br"),t._v("\nnumbers, among the other validations.")]),t._v(" "),o("p",[t._v("Now that we’ve created a data package, described our data with a table schema,"),o("br"),t._v("\nand validated it, we can finally publish it.")]),t._v(" "),o("h2",{attrs:{id:"step-3-publish-the-data"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#step-3-publish-the-data"}},[t._v("#")]),t._v(" Step 3. Publish the data")]),t._v(" "),o("p",[t._v("Our final step is to publish the dataset. The specifics instructions will vary depend on where you’re publishing to. In this example, we’ll see how to publish to a public "),o("a",{attrs:{href:"https://ckan.org",target:"_blank",rel:"noopener noreferrer"}},[t._v("CKAN"),o("OutboundLink")],1),t._v(" instance, the "),o("a",{attrs:{href:"https://old.datahub.io",target:"_blank",rel:"noopener noreferrer"}},[t._v("Datahub"),o("OutboundLink")],1),t._v(". If you want to use it and don’t have an account yet, you can request one via "),o("a",{attrs:{href:"https://discuss.okfn.org/c/open-knowledge-labs/datahub",target:"_blank",rel:"noopener noreferrer"}},[t._v("our community page"),o("OutboundLink")],1),t._v(". "),o("em",[t._v("(Note: this example is now out of date. See the "),o("a",{attrs:{href:"https://docs.ckan.org/en/2.9/",target:"_blank",rel:"noopener noreferrer"}},[t._v("CKAN docs"),o("OutboundLink")],1),t._v(" for more updated information")]),t._v("). Let’s start.")]),t._v(" "),o("p",[t._v("After you’re logged in, go to the "),o("a",{attrs:{href:"https://old.datahub.io/dataset",target:"_blank",rel:"noopener noreferrer"}},[t._v("datasets list page"),o("OutboundLink")],1),t._v(" and click on the "),o("code",[t._v("Import Data Package")]),t._v(" button. On this form, click on “Upload”, select the "),o("code",[t._v("datapackage.json")]),t._v(" file we created in the previous step, and choose your organisation. We’ll keep the visibility as private for now, so we can review the dataset before it’s made public.")]),t._v(" "),o("p",[o("img",{attrs:{src:e(455),alt:"Importing a data packate to the DataHub"}}),o("br"),t._v(" "),o("em",[t._v("Importing a data packate to the DataHub")])]),t._v(" "),o("p",[t._v("If you don’t see the “Import Data Package” button in your CKAN instance, install the "),o("a",{attrs:{href:"https://github.com/frictionlessdata/ckanext-datapackager",target:"_blank",rel:"noopener noreferrer"}},[t._v("ckanext-datapackager"),o("OutboundLink")],1),t._v(" extension to add support for importing and exporting your datasets as data packages.")]),t._v(" "),o("p",[t._v("You will be redirected to the newly created dataset on CKAN, with its metadata and resource extracted from the data package. Double check if everything seems fine, and when you’re finished, click on the “Manage” button and change the visibility to “Public”.")]),t._v(" "),o("p",[o("a",{attrs:{href:"https://datahub.ckan.io/dataset/period-table-9896953431",target:"_blank",rel:"noopener noreferrer"}},[o("img",{attrs:{src:e(456),alt:"Data package in CKAN"}}),o("OutboundLink")],1)]),t._v(" "),o("p",[t._v("That’s it! CKAN supports data packages via the "),o("a",{attrs:{href:"https://github.com/frictionlessdata/ckanext-datapackager",target:"_blank",rel:"noopener noreferrer"}},[t._v("ckanext-datapackager"),o("OutboundLink")],1),t._v(" extension, so importing (and exporting) data packages is trivial, as all the work on describing the dataset was done while creating the data package.")])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/120.9ab4a56a.js b/assets/js/120.b82fb5fb.js similarity index 98% rename from assets/js/120.9ab4a56a.js rename to assets/js/120.b82fb5fb.js index 1188a4ea7..69a5214a1 100644 --- a/assets/js/120.9ab4a56a.js +++ b/assets/js/120.b82fb5fb.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[120],{652:function(e,t,r){"use strict";r.r(t);var a=r(29),o=Object(a.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h2",{attrs:{id:"a-recap-from-our-january-community-call"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#a-recap-from-our-january-community-call"}},[e._v("#")]),e._v(" A recap from our January community call")]),e._v(" "),r("p",[e._v("On January 28"),r("sup",[e._v("th")]),e._v(" we had our first Frictionless Data Community Call for 2021. It was great to see it was so well attended!")]),e._v(" "),r("p",[e._v("We heard a presentation by Carles Pina i Estany on schema-collaboration, a system that uses Data Package Creator to enable data managers and researchers to create and share dataset schemas, edit them, post messages and export the schemas in different formats (text, Markdown, PDF). Before this tool was developed, researchers communicated with a data manager via email for each datapackage they were publishing, which slowed down considerably the whole process, besides making it more difficult.")]),e._v(" "),r("p",[e._v("To discover more about schema-collaboration, have a look at it on "),r("a",{attrs:{href:"https://github.com/frictionlessdata/schema-collaboration/",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub"),r("OutboundLink")],1),e._v(" or read "),r("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/01/18/schema-collaboration/",target:"_blank",rel:"noopener noreferrer"}},[e._v("the blog"),r("OutboundLink")],1),e._v(" Carles wrote about the project. If you would like to dive deeper and watch Carles’ presentation, you can find it here:")]),e._v(" "),r("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/_0cs25Fj_yU",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),r("h2",{attrs:{id:"other-agenda-items-from-our-hangout"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#other-agenda-items-from-our-hangout"}},[e._v("#")]),e._v(" Other agenda items from our hangout")]),e._v(" "),r("ul",[r("li",[r("p",[r("a",{attrs:{href:"https://opendataday.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Open Data Day"),r("OutboundLink")],1),e._v(" is fast approaching! If you are organising something to celebrate open data on March 6"),r("sup",[e._v("th")]),e._v(", let us know! You still have a few days to apply for mini-grants for your community events.")])]),e._v(" "),r("li",[r("p",[r("a",{attrs:{href:"https://csvconf.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("csv,conf,v6"),r("OutboundLink")],1),e._v(" is happening on May 4-5. If you want to give a talk, make sure to submit a proposal by February 28"),r("sup",[e._v("th")]),e._v(". More info "),r("a",{attrs:{href:"https://csvconf.com/submit/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),r("OutboundLink")],1),e._v(".")])])]),e._v(" "),r("h2",{attrs:{id:"news-from-the-community"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#news-from-the-community"}},[e._v("#")]),e._v(" News from the community")]),e._v(" "),r("p",[e._v("Giuseppe Peronato and "),r("a",{attrs:{href:"https://cividi.ch/",target:"_blank",rel:"noopener noreferrer"}},[e._v("cividi"),r("OutboundLink")],1),e._v(" started using Frictionless Data for data pipelines using (Geo-)Spatial datasets, e.g. raster data and GeoJSONs. You can have a look "),r("a",{attrs:{href:"https://github.com/datahq/dataflows/pull/153",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),r("OutboundLink")],1),e._v(". They have also been looking more closely at the Creator’s UI library in a "),r("a",{attrs:{href:"https://github.com/gperonato/archive-forger",target:"_blank",rel:"noopener noreferrer"}},[e._v("prototype"),r("OutboundLink")],1),e._v(" with researchers, and releasing a "),r("a",{attrs:{href:"https://blog.datalets.ch/073/",target:"_blank",rel:"noopener noreferrer"}},[e._v("QGIS plugin"),r("OutboundLink")],1),e._v(" for Frictionless Data.")]),e._v(" "),r("p",[e._v("Thorben started working on the official vaccination publication by the German Federal Health Authority, which was replaced daily with a Data Package Pipeline saved as a Data Package by a GitHub Action. If you are interested, have a look "),r("a",{attrs:{href:"https://github.com/n0rdlicht/rki-vaccination-scraper",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),r("OutboundLink")],1),e._v(".")]),e._v(" "),r("h2",{attrs:{id:"join-us-next-month"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[e._v("#")]),e._v(" Join us next month!")]),e._v(" "),r("p",[e._v("Our next meeting will be on 25"),r("sup",[e._v("th")]),e._v(" February. Don’t miss the opportunity to get a code demonstration on "),r("a",{attrs:{href:"http://frictionless.py",target:"_blank",rel:"noopener noreferrer"}},[e._v("frictionless.py"),r("OutboundLink")],1),e._v(" by our very own Evgeny Karev (@roll). You can "),r("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("sign up here"),r("OutboundLink")],1),e._v(".")]),e._v(" "),r("p",[e._v("Do you want to share something with the community? Let us know when you sign up!")]),e._v(" "),r("h2",{attrs:{id:"call-recording"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call recording:")]),e._v(" "),r("p",[e._v("On a final note, here is the recording of the full call:")]),e._v(" "),r("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/Z4-EM2RPKMA",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),r("p",[e._v("As usual, you can join us on "),r("a",{attrs:{href:"https://discord.com/invite/j9DNFNw",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),r("OutboundLink")],1),e._v(" or "),r("a",{attrs:{href:"https://twitter.com/frictionlessd8a",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),r("OutboundLink")],1),e._v(" to say hi or ask any questions. See you there!")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[120],{650:function(e,t,r){"use strict";r.r(t);var a=r(29),o=Object(a.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h2",{attrs:{id:"a-recap-from-our-january-community-call"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#a-recap-from-our-january-community-call"}},[e._v("#")]),e._v(" A recap from our January community call")]),e._v(" "),r("p",[e._v("On January 28"),r("sup",[e._v("th")]),e._v(" we had our first Frictionless Data Community Call for 2021. It was great to see it was so well attended!")]),e._v(" "),r("p",[e._v("We heard a presentation by Carles Pina i Estany on schema-collaboration, a system that uses Data Package Creator to enable data managers and researchers to create and share dataset schemas, edit them, post messages and export the schemas in different formats (text, Markdown, PDF). Before this tool was developed, researchers communicated with a data manager via email for each datapackage they were publishing, which slowed down considerably the whole process, besides making it more difficult.")]),e._v(" "),r("p",[e._v("To discover more about schema-collaboration, have a look at it on "),r("a",{attrs:{href:"https://github.com/frictionlessdata/schema-collaboration/",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub"),r("OutboundLink")],1),e._v(" or read "),r("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/01/18/schema-collaboration/",target:"_blank",rel:"noopener noreferrer"}},[e._v("the blog"),r("OutboundLink")],1),e._v(" Carles wrote about the project. If you would like to dive deeper and watch Carles’ presentation, you can find it here:")]),e._v(" "),r("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/_0cs25Fj_yU",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),r("h2",{attrs:{id:"other-agenda-items-from-our-hangout"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#other-agenda-items-from-our-hangout"}},[e._v("#")]),e._v(" Other agenda items from our hangout")]),e._v(" "),r("ul",[r("li",[r("p",[r("a",{attrs:{href:"https://opendataday.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Open Data Day"),r("OutboundLink")],1),e._v(" is fast approaching! If you are organising something to celebrate open data on March 6"),r("sup",[e._v("th")]),e._v(", let us know! You still have a few days to apply for mini-grants for your community events.")])]),e._v(" "),r("li",[r("p",[r("a",{attrs:{href:"https://csvconf.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("csv,conf,v6"),r("OutboundLink")],1),e._v(" is happening on May 4-5. If you want to give a talk, make sure to submit a proposal by February 28"),r("sup",[e._v("th")]),e._v(". More info "),r("a",{attrs:{href:"https://csvconf.com/submit/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),r("OutboundLink")],1),e._v(".")])])]),e._v(" "),r("h2",{attrs:{id:"news-from-the-community"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#news-from-the-community"}},[e._v("#")]),e._v(" News from the community")]),e._v(" "),r("p",[e._v("Giuseppe Peronato and "),r("a",{attrs:{href:"https://cividi.ch/",target:"_blank",rel:"noopener noreferrer"}},[e._v("cividi"),r("OutboundLink")],1),e._v(" started using Frictionless Data for data pipelines using (Geo-)Spatial datasets, e.g. raster data and GeoJSONs. You can have a look "),r("a",{attrs:{href:"https://github.com/datahq/dataflows/pull/153",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),r("OutboundLink")],1),e._v(". They have also been looking more closely at the Creator’s UI library in a "),r("a",{attrs:{href:"https://github.com/gperonato/archive-forger",target:"_blank",rel:"noopener noreferrer"}},[e._v("prototype"),r("OutboundLink")],1),e._v(" with researchers, and releasing a "),r("a",{attrs:{href:"https://blog.datalets.ch/073/",target:"_blank",rel:"noopener noreferrer"}},[e._v("QGIS plugin"),r("OutboundLink")],1),e._v(" for Frictionless Data.")]),e._v(" "),r("p",[e._v("Thorben started working on the official vaccination publication by the German Federal Health Authority, which was replaced daily with a Data Package Pipeline saved as a Data Package by a GitHub Action. If you are interested, have a look "),r("a",{attrs:{href:"https://github.com/n0rdlicht/rki-vaccination-scraper",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),r("OutboundLink")],1),e._v(".")]),e._v(" "),r("h2",{attrs:{id:"join-us-next-month"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[e._v("#")]),e._v(" Join us next month!")]),e._v(" "),r("p",[e._v("Our next meeting will be on 25"),r("sup",[e._v("th")]),e._v(" February. Don’t miss the opportunity to get a code demonstration on "),r("a",{attrs:{href:"http://frictionless.py",target:"_blank",rel:"noopener noreferrer"}},[e._v("frictionless.py"),r("OutboundLink")],1),e._v(" by our very own Evgeny Karev (@roll). You can "),r("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("sign up here"),r("OutboundLink")],1),e._v(".")]),e._v(" "),r("p",[e._v("Do you want to share something with the community? Let us know when you sign up!")]),e._v(" "),r("h2",{attrs:{id:"call-recording"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call recording:")]),e._v(" "),r("p",[e._v("On a final note, here is the recording of the full call:")]),e._v(" "),r("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/Z4-EM2RPKMA",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),r("p",[e._v("As usual, you can join us on "),r("a",{attrs:{href:"https://discord.com/invite/j9DNFNw",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),r("OutboundLink")],1),e._v(" or "),r("a",{attrs:{href:"https://twitter.com/frictionlessd8a",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),r("OutboundLink")],1),e._v(" to say hi or ask any questions. See you there!")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/121.1bb95626.js b/assets/js/121.c7c0fbf6.js similarity index 97% rename from assets/js/121.1bb95626.js rename to assets/js/121.c7c0fbf6.js index b0c398aab..ad770f068 100644 --- a/assets/js/121.1bb95626.js +++ b/assets/js/121.c7c0fbf6.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[121],{654:function(e,t,a){"use strict";a.r(t);var r=a(29),o=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[e._v("HuBMAP ("),a("a",{attrs:{href:"https://portal.hubmapconsortium.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Human BioMolecular Atlas Program"),a("OutboundLink")],1),e._v(") is creating an open, global atlas of the human body at the cellular level. To do this, we’re incorporating data from dozens of different assay types, and as many institutions. Each assay type has its own metadata requirements, and Frictionless Table Schemas are an important part of our validation framework, to ensure that the metadata supplied by the labs is good.")]),e._v(" "),a("p",[e._v("That system has worked well, as far as it goes, but when there are errors, it’s a pain for the labs to read the error message, find the original TSV, scroll to the appropriate row and column, re-enter, re-save, re-upload… and hopefully not repeat! To simplify that process, we’ve made "),a("a",{attrs:{href:"https://pypi.org/project/tableschema-to-template/#description",target:"_blank",rel:"noopener noreferrer"}},[e._v("tableschema-to-template"),a("OutboundLink")],1),e._v(": it takes a Table Schema as input, and returns an Excel template with embedded documentation and some basic validations.")]),e._v(" "),a("p",[a("code",[e._v("pip install tableschema-to-template")])]),e._v(" "),a("p",[a("code",[e._v("ts2xl.py schema.yaml new-template.xlsx")])]),e._v(" "),a("p",[e._v("It can be used either as a command-line tool, or as a python library. Right now the generated Excel files offer pull-downs for enum constraints, and also check that floats, integers, and booleans are the correct format, and that numbers are in bounds. Adding support for regex pattern constraints is a high priority for us… What features are important to you? Issues and PRs are welcome at the "),a("a",{attrs:{href:"https://github.com/hubmapconsortium/tableschema-to-template",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub repo"),a("OutboundLink")],1),e._v(".")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[121],{653:function(e,t,a){"use strict";a.r(t);var r=a(29),o=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[e._v("HuBMAP ("),a("a",{attrs:{href:"https://portal.hubmapconsortium.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Human BioMolecular Atlas Program"),a("OutboundLink")],1),e._v(") is creating an open, global atlas of the human body at the cellular level. To do this, we’re incorporating data from dozens of different assay types, and as many institutions. Each assay type has its own metadata requirements, and Frictionless Table Schemas are an important part of our validation framework, to ensure that the metadata supplied by the labs is good.")]),e._v(" "),a("p",[e._v("That system has worked well, as far as it goes, but when there are errors, it’s a pain for the labs to read the error message, find the original TSV, scroll to the appropriate row and column, re-enter, re-save, re-upload… and hopefully not repeat! To simplify that process, we’ve made "),a("a",{attrs:{href:"https://pypi.org/project/tableschema-to-template/#description",target:"_blank",rel:"noopener noreferrer"}},[e._v("tableschema-to-template"),a("OutboundLink")],1),e._v(": it takes a Table Schema as input, and returns an Excel template with embedded documentation and some basic validations.")]),e._v(" "),a("p",[a("code",[e._v("pip install tableschema-to-template")])]),e._v(" "),a("p",[a("code",[e._v("ts2xl.py schema.yaml new-template.xlsx")])]),e._v(" "),a("p",[e._v("It can be used either as a command-line tool, or as a python library. Right now the generated Excel files offer pull-downs for enum constraints, and also check that floats, integers, and booleans are the correct format, and that numbers are in bounds. Adding support for regex pattern constraints is a high priority for us… What features are important to you? Issues and PRs are welcome at the "),a("a",{attrs:{href:"https://github.com/hubmapconsortium/tableschema-to-template",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub repo"),a("OutboundLink")],1),e._v(".")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/122.a52b442f.js b/assets/js/122.a79b9d94.js similarity index 98% rename from assets/js/122.a52b442f.js rename to assets/js/122.a79b9d94.js index 9681349eb..92a84dc93 100644 --- a/assets/js/122.a52b442f.js +++ b/assets/js/122.a79b9d94.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[122],{655:function(e,t,a){"use strict";a.r(t);var o=a(29),r=Object(o.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[e._v("Originally published: "),a("a",{attrs:{href:"https://blog.okfn.org/2021/02/25/how-we-are-improving-the-quality-and-interoperability-of-frictionless-data/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://blog.okfn.org/2021/02/25/how-we-are-improving-the-quality-and-interoperability-of-frictionless-data/"),a("OutboundLink")],1)]),e._v(" "),a("p",[e._v("As we "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/01/13/partnering-with-odi/#so-what-will-be-changing",target:"_blank",rel:"noopener noreferrer"}},[e._v("announced in January"),a("OutboundLink")],1),e._v(", the "),a("a",{attrs:{href:"http://okfn.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Open Knowledge Foundation"),a("OutboundLink")],1),e._v(" has been awarded funds from "),a("a",{attrs:{href:"https://theodi.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("the Open Data Institute"),a("OutboundLink")],1),e._v(" to improve the quality and interoperability of "),a("a",{attrs:{href:"frictionlessdata.io"}},[e._v("Frictionless Data")]),e._v(". We are halfway through the process of reviewing our documentation and adding new features to Frictionless Data, and wanted to give a status update showing how this work is improving the overall Frictionless experience.")]),e._v(" "),a("p",[e._v("We have already done four feedback sessions and have been delighted to meet 16 users from very diverse backgrounds and different levels of expertise using Frictionless Data, some of whom we knew and some not. In spite of the variety of users, it was very interesting to see a widespread consensus on the way the documentation can be improved. You can have a look at a few of the community PRs "),a("a",{attrs:{href:"https://github.com/frictionlessdata/frictionless-py/pull/708",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(" and "),a("a",{attrs:{href:"https://github.com/frictionlessdata/frictionless-py/pull/637",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("We are very grateful to all the Frictionless Data users who took part in our sessions - they helped us see all of our guides with fresh eyes. It was very important for us to do this review together with the Frictionless Data community because they are (together with those to come) the one who will benefit from it, so are the best placed to flag issues and propose changes.")]),e._v(" "),a("p",[e._v("Every comment is being carefully reviewed at the moment and the new documentation will soon be released.")]),e._v(" "),a("h2",{attrs:{id:"what-are-the-next-steps"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-are-the-next-steps"}},[e._v("#")]),e._v(" What are the next steps?")]),e._v(" "),a("ul",[a("li",[e._v("We are going to have 8 to 12 more users giving us feedback in the coming month.")]),e._v(" "),a("li",[e._v("We are also adding a FAQ section based on the questions we got from our users in the past.")])]),e._v(" "),a("p",[e._v("If you have any feedback and/or improvement suggestions, please let us know on our "),a("a",{attrs:{href:"https://discordapp.com/invite/Sewv6av",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord Channel"),a("OutboundLink")],1),e._v(" or on "),a("a",{attrs:{href:"https://twitter.com/frictionlessd8a",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h2",{attrs:{id:"more-about-frictionless-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#more-about-frictionless-data"}},[e._v("#")]),e._v(" More about Frictionless Data")]),e._v(" "),a("p",[e._v("Frictionless Data is a set of specifications for data and metadata interoperability, accompanied by a collection of software libraries that implement these specifications, and a range of best practices for data management. The project is funded by the Sloan Foundation.")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[122],{654:function(e,t,a){"use strict";a.r(t);var o=a(29),r=Object(o.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[e._v("Originally published: "),a("a",{attrs:{href:"https://blog.okfn.org/2021/02/25/how-we-are-improving-the-quality-and-interoperability-of-frictionless-data/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://blog.okfn.org/2021/02/25/how-we-are-improving-the-quality-and-interoperability-of-frictionless-data/"),a("OutboundLink")],1)]),e._v(" "),a("p",[e._v("As we "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/01/13/partnering-with-odi/#so-what-will-be-changing",target:"_blank",rel:"noopener noreferrer"}},[e._v("announced in January"),a("OutboundLink")],1),e._v(", the "),a("a",{attrs:{href:"http://okfn.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Open Knowledge Foundation"),a("OutboundLink")],1),e._v(" has been awarded funds from "),a("a",{attrs:{href:"https://theodi.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("the Open Data Institute"),a("OutboundLink")],1),e._v(" to improve the quality and interoperability of "),a("a",{attrs:{href:"frictionlessdata.io"}},[e._v("Frictionless Data")]),e._v(". We are halfway through the process of reviewing our documentation and adding new features to Frictionless Data, and wanted to give a status update showing how this work is improving the overall Frictionless experience.")]),e._v(" "),a("p",[e._v("We have already done four feedback sessions and have been delighted to meet 16 users from very diverse backgrounds and different levels of expertise using Frictionless Data, some of whom we knew and some not. In spite of the variety of users, it was very interesting to see a widespread consensus on the way the documentation can be improved. You can have a look at a few of the community PRs "),a("a",{attrs:{href:"https://github.com/frictionlessdata/frictionless-py/pull/708",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(" and "),a("a",{attrs:{href:"https://github.com/frictionlessdata/frictionless-py/pull/637",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("We are very grateful to all the Frictionless Data users who took part in our sessions - they helped us see all of our guides with fresh eyes. It was very important for us to do this review together with the Frictionless Data community because they are (together with those to come) the one who will benefit from it, so are the best placed to flag issues and propose changes.")]),e._v(" "),a("p",[e._v("Every comment is being carefully reviewed at the moment and the new documentation will soon be released.")]),e._v(" "),a("h2",{attrs:{id:"what-are-the-next-steps"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-are-the-next-steps"}},[e._v("#")]),e._v(" What are the next steps?")]),e._v(" "),a("ul",[a("li",[e._v("We are going to have 8 to 12 more users giving us feedback in the coming month.")]),e._v(" "),a("li",[e._v("We are also adding a FAQ section based on the questions we got from our users in the past.")])]),e._v(" "),a("p",[e._v("If you have any feedback and/or improvement suggestions, please let us know on our "),a("a",{attrs:{href:"https://discordapp.com/invite/Sewv6av",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord Channel"),a("OutboundLink")],1),e._v(" or on "),a("a",{attrs:{href:"https://twitter.com/frictionlessd8a",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h2",{attrs:{id:"more-about-frictionless-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#more-about-frictionless-data"}},[e._v("#")]),e._v(" More about Frictionless Data")]),e._v(" "),a("p",[e._v("Frictionless Data is a set of specifications for data and metadata interoperability, accompanied by a collection of software libraries that implement these specifications, and a range of best practices for data management. The project is funded by the Sloan Foundation.")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/123.3cc6b810.js b/assets/js/123.dfc3095f.js similarity index 98% rename from assets/js/123.3cc6b810.js rename to assets/js/123.dfc3095f.js index 0b0afaff7..806f28cef 100644 --- a/assets/js/123.3cc6b810.js +++ b/assets/js/123.dfc3095f.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[123],{656:function(e,r,t){"use strict";t.r(r);var o=t(29),a=Object(o.a)({},(function(){var e=this,r=e.$createElement,t=e._self._c||r;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h2",{attrs:{id:"a-recap-from-our-february-community-call"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#a-recap-from-our-february-community-call"}},[e._v("#")]),e._v(" A recap from our February community call")]),e._v(" "),t("p",[e._v("On this February Community Call we had a top notch code demonstration of the new "),t("a",{attrs:{href:"http://frictionless.py",target:"_blank",rel:"noopener noreferrer"}},[e._v("frictionless.py"),t("OutboundLink")],1),e._v(" framework by our Frictionless Data senior developer Evgeny Karev. We had been looking very much forward to presenting the new framework to you all and we were very pleased that so many of you joined us. If you would like to know more about it, you can explore the new Frictionless Python framework through the "),t("a",{attrs:{href:"https://framework.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("documentation portal"),t("OutboundLink")],1),e._v(" or on "),t("a",{attrs:{href:"https://github.com/frictionlessdata/frictionless-py",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("If you couldn’t make it to the call, or you are just curious and would like to go over the presentation again, here it is:")]),e._v(" "),t("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/WX4NbYmvu9M",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),t("h2",{attrs:{id:"other-agenda-items-from-our-hangout"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#other-agenda-items-from-our-hangout"}},[e._v("#")]),e._v(" Other agenda items from our hangout")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://opendataday.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Open Data Day"),t("OutboundLink")],1),e._v(" is fast approaching with over 200 events organised online on March 6"),t("sup",[e._v("th")]),e._v(". Together with the "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Frictionless Data Fellows"),t("OutboundLink")],1),e._v(" we will be celebrating open research data. Join us online from 3pm UTC. "),t("a",{attrs:{href:"https://us02web.zoom.us/meeting/register/tZUvdeuspjMoGtK-rR8wV4IrnfEW_5-KdLkG",target:"_blank",rel:"noopener noreferrer"}},[e._v("RSVP here"),t("OutboundLink")],1),e._v(" for the link to join this virtual event. This event is open to everyone.")]),e._v(" "),t("h2",{attrs:{id:"join-us-next-month"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[e._v("#")]),e._v(" Join us next month!")]),e._v(" "),t("p",[e._v("Our next meeting will be on 25"),t("sup",[e._v("th")]),e._v(" March. We will hear about Hackathons to facilitate the creation of web tools to create field-specific FAIR archive files from Oleg Lavrovsky and Giuseppe Peronato.")]),e._v(" "),t("p",[e._v("You can sign up "),t("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("Do you want to share something with the community? Let us know when you sign up!")]),e._v(" "),t("h2",{attrs:{id:"call-recording"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call recording:")]),e._v(" "),t("p",[e._v("On a final note, here is the recording of the full call:")]),e._v(" "),t("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/W0EHL6SSPcE",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),t("p",[e._v("As usual, you can join us on "),t("a",{attrs:{href:"https://discord.com/invite/j9DNFNw",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),t("OutboundLink")],1),e._v(" or "),t("a",{attrs:{href:"https://twitter.com/frictionlessd8a",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),t("OutboundLink")],1),e._v(" to say hi or ask any questions. See you there!")])])}),[],!1,null,null,null);r.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[123],{655:function(e,r,t){"use strict";t.r(r);var o=t(29),a=Object(o.a)({},(function(){var e=this,r=e.$createElement,t=e._self._c||r;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h2",{attrs:{id:"a-recap-from-our-february-community-call"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#a-recap-from-our-february-community-call"}},[e._v("#")]),e._v(" A recap from our February community call")]),e._v(" "),t("p",[e._v("On this February Community Call we had a top notch code demonstration of the new "),t("a",{attrs:{href:"http://frictionless.py",target:"_blank",rel:"noopener noreferrer"}},[e._v("frictionless.py"),t("OutboundLink")],1),e._v(" framework by our Frictionless Data senior developer Evgeny Karev. We had been looking very much forward to presenting the new framework to you all and we were very pleased that so many of you joined us. If you would like to know more about it, you can explore the new Frictionless Python framework through the "),t("a",{attrs:{href:"https://framework.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("documentation portal"),t("OutboundLink")],1),e._v(" or on "),t("a",{attrs:{href:"https://github.com/frictionlessdata/frictionless-py",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("If you couldn’t make it to the call, or you are just curious and would like to go over the presentation again, here it is:")]),e._v(" "),t("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/WX4NbYmvu9M",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),t("h2",{attrs:{id:"other-agenda-items-from-our-hangout"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#other-agenda-items-from-our-hangout"}},[e._v("#")]),e._v(" Other agenda items from our hangout")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://opendataday.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Open Data Day"),t("OutboundLink")],1),e._v(" is fast approaching with over 200 events organised online on March 6"),t("sup",[e._v("th")]),e._v(". Together with the "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Frictionless Data Fellows"),t("OutboundLink")],1),e._v(" we will be celebrating open research data. Join us online from 3pm UTC. "),t("a",{attrs:{href:"https://us02web.zoom.us/meeting/register/tZUvdeuspjMoGtK-rR8wV4IrnfEW_5-KdLkG",target:"_blank",rel:"noopener noreferrer"}},[e._v("RSVP here"),t("OutboundLink")],1),e._v(" for the link to join this virtual event. This event is open to everyone.")]),e._v(" "),t("h2",{attrs:{id:"join-us-next-month"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[e._v("#")]),e._v(" Join us next month!")]),e._v(" "),t("p",[e._v("Our next meeting will be on 25"),t("sup",[e._v("th")]),e._v(" March. We will hear about Hackathons to facilitate the creation of web tools to create field-specific FAIR archive files from Oleg Lavrovsky and Giuseppe Peronato.")]),e._v(" "),t("p",[e._v("You can sign up "),t("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("Do you want to share something with the community? Let us know when you sign up!")]),e._v(" "),t("h2",{attrs:{id:"call-recording"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call recording:")]),e._v(" "),t("p",[e._v("On a final note, here is the recording of the full call:")]),e._v(" "),t("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/W0EHL6SSPcE",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),t("p",[e._v("As usual, you can join us on "),t("a",{attrs:{href:"https://discord.com/invite/j9DNFNw",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),t("OutboundLink")],1),e._v(" or "),t("a",{attrs:{href:"https://twitter.com/frictionlessd8a",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),t("OutboundLink")],1),e._v(" to say hi or ask any questions. See you there!")])])}),[],!1,null,null,null);r.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/124.4132dc2c.js b/assets/js/124.6ad45b64.js similarity index 99% rename from assets/js/124.4132dc2c.js rename to assets/js/124.6ad45b64.js index 769dbe4bb..69d5709f2 100644 --- a/assets/js/124.4132dc2c.js +++ b/assets/js/124.6ad45b64.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[124],{657:function(e,t,a){"use strict";a.r(t);var r=a(29),o=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[a("em",[e._v("This blog is part of a series showcasing projects developed during the 2020-2021 Tool Fund. The Tool Fund provided five mini-grants of $5,000 to support individuals or organisations in developing an open tool for reproducible research built using the Frictionless Data specifications and software. This Fund is part of the Frictionless Data for Reproducible Research project, which is funded by the Sloan Foundation. This project applies our work in Frictionless Data to data-driven research disciplines, in order to facilitate reproducible data workflows in research contexts.")])]),e._v(" "),a("p",[e._v("We are Simon Tyrrell and Xingdong Bian, both research software engineers, in Robert Davey’s Data Infrastructure and Algorithms group at the Earlham Institute. We built the "),a("a",{attrs:{href:"https://grassroots.tools/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Grassroots Infrastructure project"),a("OutboundLink")],1),e._v(" which aims to create an easily-deployable suite of computing middleware tools to help users and developers gain access to scientific data. This is part of the "),a("a",{attrs:{href:"https://designingfuturewheat.org.uk/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Designing Future Wheat (DFW)"),a("OutboundLink")],1),e._v(" project. There are two separate parts of this project that we have added Frictionless Data support to and we’ll now describe each of these in turn.")]),e._v(" "),a("h2",{attrs:{id:"why-add-frictionless-to-the-designing-future-wheat-project"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#why-add-frictionless-to-the-designing-future-wheat-project"}},[e._v("#")]),e._v(" Why add Frictionless to the Designing Future Wheat project?")]),e._v(" "),a("p",[e._v("The first part of the Tool Fund project we added Frictionless Data to is the DFW data portal which delivers large scale wheat datasets that are also tied to semantically marked-up metadata. These datasets are heterogeneous and vary from field trial information, sequencing data, through to phenotyping images, etc. Given the different needs of users of this data, there is an increasing need to be able to manage this data and its associated metadata to allow for as easy dissemination as possible. So the issue that we had was how can we standardize the methods to access this data/metadata and label it using both well-defined ontologies and standards to deliver consistent data packages to users in an interoperable way. This is where Frictionless Data came in, allowing data scientists a consistent, well-defined standard to use when building programs or workflows to access the data stored on the portal.")]),e._v(" "),a("p",[e._v("The portal uses a combination of an "),a("a",{attrs:{href:"https://irods.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("iRODS"),a("OutboundLink")],1),e._v(" repository, to store the data and metadata, and "),a("a",{attrs:{href:"https://httpd.apache.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Apache"),a("OutboundLink")],1),e._v(" to host the files with our in-house developed Apache module, mod_eirods_dav, linking the two together. It was this module that we added the Frictionless Data support to and further details are available in the "),a("a",{attrs:{href:"https://github.com/billyfish/eirods-dav#frictionless-data-support",target:"_blank",rel:"noopener noreferrer"}},[e._v("documentation"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h2",{attrs:{id:"how-does-the-new-frictionless-implementation-work"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-does-the-new-frictionless-implementation-work"}},[e._v("#")]),e._v(" How does the new Frictionless implementation work?")]),e._v(" "),a("p",[e._v("So what does it do? Well, it can generate a datapackage.json file automatically for any number of specified directories. These Data Packages can either be generated dynamically on each access or can optionally be written back to the iRODS repository and served like any other static file stored there. Since every iRODS repository can use different metadata keys for storing the information that the Data Packages require, the required key names are completely configurable by specifying the iRODS metadata keys to use in the mod_eirods_dav configuration file and you can do things like combining the values of multiple iRODS metadata keys with generic strings to produce the value that you want to use in the Data Package. Currently the Data Package’s name, title, description, authors, unique identifier and license details are all supported. For each entry within the Data Package’s resources array, the name, path checksum and size attributes are also stored.")]),e._v(" "),a("p",[e._v("As well as standard entries within the Data Package, we also added support for Tabular Data Packages. As with standard entries, all of the keys for the column names can be generated from setting the required directives within the module configuration file.")]),e._v(" "),a("p",[a("img",{attrs:{src:"https://user-images.githubusercontent.com/74717970/110128100-b5154a00-7dc6-11eb-8d8a-a915a49e6742.png",alt:"imgblog"}}),a("br"),e._v("\nFigure1: A Data Package generated automatically by mod_eirods_dav")]),e._v(" "),a("p",[a("img",{attrs:{src:"https://user-images.githubusercontent.com/74717970/110128509-25bc6680-7dc7-11eb-8c2e-ff966169f9c5.png",alt:"imgblog2"}}),a("br"),e._v("\nFigure2: Tabular Data Package generated automatically by mod_eirods_dav")]),e._v(" "),a("h2",{attrs:{id:"adding-ckan-support"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#adding-ckan-support"}},[e._v("#")]),e._v(" Adding CKAN support")]),e._v(" "),a("p",[e._v("The second of the tools that we have implemented Frictionless Data support for is the DFW CKAN website. Primarily we use this to store publications from the project output. We currently have over 300 entries in there and since its collection is getting larger and larger, we needed a more manageable way of having better data integration, especially when using other systems through the projects by our collaborators.")]),e._v(" "),a("p",[e._v("So we built a simple Python Django webapp to do this:")]),e._v(" "),a("p",[a("img",{attrs:{src:"https://user-images.githubusercontent.com/74717970/110128662-58fef580-7dc7-11eb-88c9-46e8e36b4def.png",alt:"imgblog3"}})]),e._v(" "),a("p",[e._v("By querying the REST API provided by CKAN and getting the datasets’ metadata as JSON output, followed by using the "),a("a",{attrs:{href:"https://github.com/frictionlessdata/frictionless-ckan-mapper",target:"_blank",rel:"noopener noreferrer"}},[e._v("Frictionless CKAN Mapper"),a("OutboundLink")],1),e._v(", the JSON is converted into datapackage.json, to conform with Frictionless Data standard. If any of the resources under a dataset is CSV, the headings will be extracted as the "),a("a",{attrs:{href:"https://specs.frictionlessdata.io/table-schema/",target:"_blank",rel:"noopener noreferrer"}},[e._v("tabular data package schema"),a("OutboundLink")],1),e._v(" and integrated into the datapackage.json file itself. As well as providing the datapackage.json file as a download through the Django web app, it is also possible to push the datapackage.json back to the CKAN as a resource file on the page. This requires the CKAN user key with the relevant permissions.")]),e._v(" "),a("p",[a("img",{attrs:{src:"https://user-images.githubusercontent.com/74717970/110128881-94012900-7dc7-11eb-9833-e46f351477be.png",alt:"imgblog4"}})]),e._v(" "),a("h2",{attrs:{id:"how-can-you-try-this-tool"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-can-you-try-this-tool"}},[e._v("#")]),e._v(" How can you try this tool?")]),e._v(" "),a("p",[e._v("The tool can be used by accessing its REST interface:")]),e._v(" "),a("ul",[a("li",[a("code",[e._v("/convert?q={ckan-dataset-id}")]),e._v(" - convert CKAN dataset json to datapackage json e.g. /convert?q=0c03fa08-2142-426b-b1ca-fa852f909aa6")]),e._v(" "),a("li",[a("code",[e._v("/convert_resources?q={ckan-dataset-id}")]),e._v(" - convert CKAN dataset json to datapackage json with resources, also if any of the resources files are CSV files, the tabular data package will be converted. e.g. /convert_resources?q=grassroots-frictionless-data-test")]),e._v(" "),a("li",[a("code",[e._v("/convert_push?q={ckan-dataset-id}&key={ckan-user-key}")]),e._v(" - push the generated datapackage.json to the CKAN entry."),a("br"),e._v("\nAn example REST query page:")])]),e._v(" "),a("p",[a("img",{attrs:{src:"https://user-images.githubusercontent.com/74717970/110129172-efcbb200-7dc7-11eb-9230-a70cbbd6d9cf.png",alt:"imgblog5"}})]),e._v(" "),a("p",[e._v("It is possible to have your own local deployment of the tool too by downloading the web app from its Github repository, installing the requirements, and running the server with")]),e._v(" "),a("p",[a("code",[e._v("$manage.py runserver 8000")])]),e._v(" "),a("p",[e._v("Our collaborators can utilise the datapackage.json and integrate the CKAN entries to their own tools or project with ease as it conforms to the Frictionless Data standard.")]),e._v(" "),a("h2",{attrs:{id:"next-steps-for-frictionlessly-designing-future-wheat"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#next-steps-for-frictionlessly-designing-future-wheat"}},[e._v("#")]),e._v(" Next Steps for Frictionlessly Designing Future Wheat")]),e._v(" "),a("p",[e._v("It has been a hugely positive step to implement support for Frictionless Data Packages and we’ve already used these packages ourselves after two of our servers decided to fall over within three days of each other! Our future plans are to add support for further metadata keys within the datapackage.json files and expose more datasets as Frictionless Data Packages. For the CKAN-side, there are a few improvements that can be made in future: firstly, make the base CKAN url configurable in a config file, so this can be used for any CKAN website. Secondly, create a docker file to include the whole Django app, so it is more portable and easier to be deployed. You can keep track of the project at the following links:")]),e._v(" "),a("ul",[a("li",[e._v("The Designing Future Wheat Data Portal: "),a("a",{attrs:{href:"https://opendata.earlham.ac.uk/wheat/under_license/toronto/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://opendata.earlham.ac.uk/wheat/under_license/toronto/"),a("OutboundLink")],1)]),e._v(" "),a("li",[e._v("The Designing Future Wheat publications portal: "),a("a",{attrs:{href:"https://ckan.grassroots.tools",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://ckan.grassroots.tools"),a("OutboundLink")],1)]),e._v(" "),a("li",[e._v("mod_eirods_dav: "),a("a",{attrs:{href:"https://github.com/billyfish/eirods-dav",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/billyfish/eirods-dav"),a("OutboundLink")],1)]),e._v(" "),a("li",[e._v("CKAN Frictionless Data web application: "),a("a",{attrs:{href:"https://github.com/TGAC/ckan-frictionlessdata",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/TGAC/ckan-frictionlessdata"),a("OutboundLink")],1)])])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[124],{656:function(e,t,a){"use strict";a.r(t);var r=a(29),o=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[a("em",[e._v("This blog is part of a series showcasing projects developed during the 2020-2021 Tool Fund. The Tool Fund provided five mini-grants of $5,000 to support individuals or organisations in developing an open tool for reproducible research built using the Frictionless Data specifications and software. This Fund is part of the Frictionless Data for Reproducible Research project, which is funded by the Sloan Foundation. This project applies our work in Frictionless Data to data-driven research disciplines, in order to facilitate reproducible data workflows in research contexts.")])]),e._v(" "),a("p",[e._v("We are Simon Tyrrell and Xingdong Bian, both research software engineers, in Robert Davey’s Data Infrastructure and Algorithms group at the Earlham Institute. We built the "),a("a",{attrs:{href:"https://grassroots.tools/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Grassroots Infrastructure project"),a("OutboundLink")],1),e._v(" which aims to create an easily-deployable suite of computing middleware tools to help users and developers gain access to scientific data. This is part of the "),a("a",{attrs:{href:"https://designingfuturewheat.org.uk/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Designing Future Wheat (DFW)"),a("OutboundLink")],1),e._v(" project. There are two separate parts of this project that we have added Frictionless Data support to and we’ll now describe each of these in turn.")]),e._v(" "),a("h2",{attrs:{id:"why-add-frictionless-to-the-designing-future-wheat-project"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#why-add-frictionless-to-the-designing-future-wheat-project"}},[e._v("#")]),e._v(" Why add Frictionless to the Designing Future Wheat project?")]),e._v(" "),a("p",[e._v("The first part of the Tool Fund project we added Frictionless Data to is the DFW data portal which delivers large scale wheat datasets that are also tied to semantically marked-up metadata. These datasets are heterogeneous and vary from field trial information, sequencing data, through to phenotyping images, etc. Given the different needs of users of this data, there is an increasing need to be able to manage this data and its associated metadata to allow for as easy dissemination as possible. So the issue that we had was how can we standardize the methods to access this data/metadata and label it using both well-defined ontologies and standards to deliver consistent data packages to users in an interoperable way. This is where Frictionless Data came in, allowing data scientists a consistent, well-defined standard to use when building programs or workflows to access the data stored on the portal.")]),e._v(" "),a("p",[e._v("The portal uses a combination of an "),a("a",{attrs:{href:"https://irods.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("iRODS"),a("OutboundLink")],1),e._v(" repository, to store the data and metadata, and "),a("a",{attrs:{href:"https://httpd.apache.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Apache"),a("OutboundLink")],1),e._v(" to host the files with our in-house developed Apache module, mod_eirods_dav, linking the two together. It was this module that we added the Frictionless Data support to and further details are available in the "),a("a",{attrs:{href:"https://github.com/billyfish/eirods-dav#frictionless-data-support",target:"_blank",rel:"noopener noreferrer"}},[e._v("documentation"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h2",{attrs:{id:"how-does-the-new-frictionless-implementation-work"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-does-the-new-frictionless-implementation-work"}},[e._v("#")]),e._v(" How does the new Frictionless implementation work?")]),e._v(" "),a("p",[e._v("So what does it do? Well, it can generate a datapackage.json file automatically for any number of specified directories. These Data Packages can either be generated dynamically on each access or can optionally be written back to the iRODS repository and served like any other static file stored there. Since every iRODS repository can use different metadata keys for storing the information that the Data Packages require, the required key names are completely configurable by specifying the iRODS metadata keys to use in the mod_eirods_dav configuration file and you can do things like combining the values of multiple iRODS metadata keys with generic strings to produce the value that you want to use in the Data Package. Currently the Data Package’s name, title, description, authors, unique identifier and license details are all supported. For each entry within the Data Package’s resources array, the name, path checksum and size attributes are also stored.")]),e._v(" "),a("p",[e._v("As well as standard entries within the Data Package, we also added support for Tabular Data Packages. As with standard entries, all of the keys for the column names can be generated from setting the required directives within the module configuration file.")]),e._v(" "),a("p",[a("img",{attrs:{src:"https://user-images.githubusercontent.com/74717970/110128100-b5154a00-7dc6-11eb-8d8a-a915a49e6742.png",alt:"imgblog"}}),a("br"),e._v("\nFigure1: A Data Package generated automatically by mod_eirods_dav")]),e._v(" "),a("p",[a("img",{attrs:{src:"https://user-images.githubusercontent.com/74717970/110128509-25bc6680-7dc7-11eb-8c2e-ff966169f9c5.png",alt:"imgblog2"}}),a("br"),e._v("\nFigure2: Tabular Data Package generated automatically by mod_eirods_dav")]),e._v(" "),a("h2",{attrs:{id:"adding-ckan-support"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#adding-ckan-support"}},[e._v("#")]),e._v(" Adding CKAN support")]),e._v(" "),a("p",[e._v("The second of the tools that we have implemented Frictionless Data support for is the DFW CKAN website. Primarily we use this to store publications from the project output. We currently have over 300 entries in there and since its collection is getting larger and larger, we needed a more manageable way of having better data integration, especially when using other systems through the projects by our collaborators.")]),e._v(" "),a("p",[e._v("So we built a simple Python Django webapp to do this:")]),e._v(" "),a("p",[a("img",{attrs:{src:"https://user-images.githubusercontent.com/74717970/110128662-58fef580-7dc7-11eb-88c9-46e8e36b4def.png",alt:"imgblog3"}})]),e._v(" "),a("p",[e._v("By querying the REST API provided by CKAN and getting the datasets’ metadata as JSON output, followed by using the "),a("a",{attrs:{href:"https://github.com/frictionlessdata/frictionless-ckan-mapper",target:"_blank",rel:"noopener noreferrer"}},[e._v("Frictionless CKAN Mapper"),a("OutboundLink")],1),e._v(", the JSON is converted into datapackage.json, to conform with Frictionless Data standard. If any of the resources under a dataset is CSV, the headings will be extracted as the "),a("a",{attrs:{href:"https://specs.frictionlessdata.io/table-schema/",target:"_blank",rel:"noopener noreferrer"}},[e._v("tabular data package schema"),a("OutboundLink")],1),e._v(" and integrated into the datapackage.json file itself. As well as providing the datapackage.json file as a download through the Django web app, it is also possible to push the datapackage.json back to the CKAN as a resource file on the page. This requires the CKAN user key with the relevant permissions.")]),e._v(" "),a("p",[a("img",{attrs:{src:"https://user-images.githubusercontent.com/74717970/110128881-94012900-7dc7-11eb-9833-e46f351477be.png",alt:"imgblog4"}})]),e._v(" "),a("h2",{attrs:{id:"how-can-you-try-this-tool"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-can-you-try-this-tool"}},[e._v("#")]),e._v(" How can you try this tool?")]),e._v(" "),a("p",[e._v("The tool can be used by accessing its REST interface:")]),e._v(" "),a("ul",[a("li",[a("code",[e._v("/convert?q={ckan-dataset-id}")]),e._v(" - convert CKAN dataset json to datapackage json e.g. /convert?q=0c03fa08-2142-426b-b1ca-fa852f909aa6")]),e._v(" "),a("li",[a("code",[e._v("/convert_resources?q={ckan-dataset-id}")]),e._v(" - convert CKAN dataset json to datapackage json with resources, also if any of the resources files are CSV files, the tabular data package will be converted. e.g. /convert_resources?q=grassroots-frictionless-data-test")]),e._v(" "),a("li",[a("code",[e._v("/convert_push?q={ckan-dataset-id}&key={ckan-user-key}")]),e._v(" - push the generated datapackage.json to the CKAN entry."),a("br"),e._v("\nAn example REST query page:")])]),e._v(" "),a("p",[a("img",{attrs:{src:"https://user-images.githubusercontent.com/74717970/110129172-efcbb200-7dc7-11eb-9230-a70cbbd6d9cf.png",alt:"imgblog5"}})]),e._v(" "),a("p",[e._v("It is possible to have your own local deployment of the tool too by downloading the web app from its Github repository, installing the requirements, and running the server with")]),e._v(" "),a("p",[a("code",[e._v("$manage.py runserver 8000")])]),e._v(" "),a("p",[e._v("Our collaborators can utilise the datapackage.json and integrate the CKAN entries to their own tools or project with ease as it conforms to the Frictionless Data standard.")]),e._v(" "),a("h2",{attrs:{id:"next-steps-for-frictionlessly-designing-future-wheat"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#next-steps-for-frictionlessly-designing-future-wheat"}},[e._v("#")]),e._v(" Next Steps for Frictionlessly Designing Future Wheat")]),e._v(" "),a("p",[e._v("It has been a hugely positive step to implement support for Frictionless Data Packages and we’ve already used these packages ourselves after two of our servers decided to fall over within three days of each other! Our future plans are to add support for further metadata keys within the datapackage.json files and expose more datasets as Frictionless Data Packages. For the CKAN-side, there are a few improvements that can be made in future: firstly, make the base CKAN url configurable in a config file, so this can be used for any CKAN website. Secondly, create a docker file to include the whole Django app, so it is more portable and easier to be deployed. You can keep track of the project at the following links:")]),e._v(" "),a("ul",[a("li",[e._v("The Designing Future Wheat Data Portal: "),a("a",{attrs:{href:"https://opendata.earlham.ac.uk/wheat/under_license/toronto/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://opendata.earlham.ac.uk/wheat/under_license/toronto/"),a("OutboundLink")],1)]),e._v(" "),a("li",[e._v("The Designing Future Wheat publications portal: "),a("a",{attrs:{href:"https://ckan.grassroots.tools",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://ckan.grassroots.tools"),a("OutboundLink")],1)]),e._v(" "),a("li",[e._v("mod_eirods_dav: "),a("a",{attrs:{href:"https://github.com/billyfish/eirods-dav",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/billyfish/eirods-dav"),a("OutboundLink")],1)]),e._v(" "),a("li",[e._v("CKAN Frictionless Data web application: "),a("a",{attrs:{href:"https://github.com/TGAC/ckan-frictionlessdata",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/TGAC/ckan-frictionlessdata"),a("OutboundLink")],1)])])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/125.ac9d6293.js b/assets/js/125.f54a71c6.js similarity index 99% rename from assets/js/125.ac9d6293.js rename to assets/js/125.f54a71c6.js index d40ae0278..6e5b24571 100644 --- a/assets/js/125.ac9d6293.js +++ b/assets/js/125.f54a71c6.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[125],{658:function(e,a,t){"use strict";t.r(a);var o=t(29),r=Object(o.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("p",[e._v("The “reproducibility crisis” is a hot topic in scientific research these days. Can you reproduce published data from another laboratory? Can you follow the published scientific methods and get the same result? Unfortunately, the answer to these questions is often no.")]),e._v(" "),t("p",[e._v("One of the goals of Frictionless Data is to help researchers make their work more reproducible. To achieve this, we focus on making data more understandable (make sure to document your metadata!), of higher quality (via validation checks), and easier to reuse (by standardization and packaging).")]),e._v(" "),t("p",[e._v("As a test of these reproducibility measures, we tasked the Frictionless Fellows with reproducing each others’ data packages! This was a great learning experience for the Fellows and revealed some important lessons about how to make their data more (re)usable. Click on the blog links below to read more about their experiences!")]),e._v(" "),t("hr"),e._v(" "),t("h3",{attrs:{id:"reproduciendo-un-viaje-a-mo-rea-by-sele-yang-cohort-1"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#reproduciendo-un-viaje-a-mo-rea-by-sele-yang-cohort-1"}},[e._v("#")]),e._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/sele-partner-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Reproduciendo un viaje a Mo’rea by Sele Yang"),t("OutboundLink")],1),e._v(" (Cohort 1)")]),e._v(" "),t("p",[e._v("“Mi viaje a través de los datos de Lily, me llevó a Mo’rea, Polinesia Francesa, desde donde ella, a través de diferentes herramientas, recopiló un total de 175 entrevistas entre residentes y también investigadores/as de la región…Para reproducir los datos de Lily, utilicé inicialmente el DataPackage Creator tool para cargar su información en bruto y así empezar a revisar las especificaciones de su data type creados de manera automática por la herramienta.”")]),e._v(" "),t("hr"),e._v(" "),t("h3",{attrs:{id:"packaging-ouso-s-data-by-lily-zhao-cohort-1"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#packaging-ouso-s-data-by-lily-zhao-cohort-1"}},[e._v("#")]),e._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/lily-partner-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Packaging Ouso’s Data by Lily Zhao"),t("OutboundLink")],1),e._v(" (Cohort 1)")]),e._v(" "),t("p",[e._v("“This week I had the opportunity to work with my colleague’s data. He created a Datapackage which I replicated. In doing so, I learned a lot about the Datapackage web interface….Using these data Ouso and his co-authors evaluate the ability of high-resolution melting analysis to identify illegally targeted wildlife species.”")]),e._v(" "),t("hr"),e._v(" "),t("h3",{attrs:{id:"data-barter-real-life-data-interactions-by-ouso-daniel-cohort-1"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#data-barter-real-life-data-interactions-by-ouso-daniel-cohort-1"}},[e._v("#")]),e._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/ouso-partner-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Data Barter: Real-life data interactions by Ouso Daniel"),t("OutboundLink")],1),e._v(" (Cohort 1)")]),e._v(" "),t("p",[e._v("“Exchanging data packages and working backwards from them is an important test in the illustration of the overall goal of the Frictionless Data initiative. Remember, FD seeks to facilitate and promote open and reproducible research, consequently promoting collaboration. By trying to reproduce Monica’s work I was able to capture an error, which I highlighted for her attention, thus improved the work. Exactly how science is supposed to work!”")]),e._v(" "),t("hr"),e._v(" "),t("h3",{attrs:{id:"on-readme-files-sharing-data-and-interoperability-by-anne-lee-steele-cohort-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#on-readme-files-sharing-data-and-interoperability-by-anne-lee-steele-cohort-2"}},[e._v("#")]),e._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/anne-partner-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("On README files, sharing data and interoperability by Anne Lee Steele"),t("OutboundLink")],1),e._v(" (Cohort 2)")]),e._v(" "),t("p",[e._v("“One of the goals of the Frictionless Data Fellowship has been to help us make our research more interoperable, which is another way of saying: something that other researchers can use, even if they have entirely different systems or tools with which they approach the same topic….What if researchers of all types wrote prototypical “data packages” about their research, that gave greater context to their work, or explained its wider relevance? In my fields, many researchers tend to find this in ‘the art of the footnote’, but this type of informal knowledge or context is not operationalized in any real way.”")]),e._v(" "),t("hr"),e._v(" "),t("h3",{attrs:{id:"using-frictionless-tools-to-help-you-understand-open-data-by-dani-alcala-lopez-cohort-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#using-frictionless-tools-to-help-you-understand-open-data-by-dani-alcala-lopez-cohort-2"}},[e._v("#")]),e._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/dani-partner-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Using Frictionless tools to help you understand open data by Dani Alcalá-López"),t("OutboundLink")],1),e._v(" (Cohort 2)")]),e._v(" "),t("p",[e._v("“A few weeks ago, the fellows did an interesting exercise: We would try to replicate each others DataPackages in pairs. We had spent some time before creating and validating DataPacakges with our own data. Now it was the time to see how would it be to work with someone else’s. This experience was intended to be a way for us to check how it was to be at the other side.”")]),e._v(" "),t("hr"),e._v(" "),t("h3",{attrs:{id:"validating-someone-else-s-data-by-katerina-drakoulaki-cohort-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#validating-someone-else-s-data-by-katerina-drakoulaki-cohort-2"}},[e._v("#")]),e._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/katerina-partner-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Validating someone else’s data! By Katerina Drakoulaki"),t("OutboundLink")],1),e._v(" (Cohort 2)")]),e._v(" "),t("p",[e._v("“The first thing I did was to go through the README file on my fellow’s repository. Since the repository was in a completely different field, I really had to read through everything very carefully, and think about the terms they used….Validating the data (to the extent that it was possible after all) was easy using the goodtables tools.”")]),e._v(" "),t("hr"),e._v(" "),t("h3",{attrs:{id:"reproducing-jacqueline-s-datapackage-and-revalidating-her-data-by-sam-wilairat-cohort-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#reproducing-jacqueline-s-datapackage-and-revalidating-her-data-by-sam-wilairat-cohort-2"}},[e._v("#")]),e._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/sam-reproduce-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Reproducing Jacqueline’s Datapackage and Revalidating her Data! By Sam Wilairat"),t("OutboundLink")],1),e._v(" (Cohort 2)")]),e._v(" "),t("p",[e._v("“Using Jacqueline’s GitHub repository, Frictionless Data Package Creator, and Goodtables, I feel that I can confidently reuse her dataset for my own research purposes. While there was one piece of metadata missing from her dataset, her publicly published datapackage .JSON file on her repository helped me to quickly figure out how to interpret the unlabeled column. I also feel confident that the data is valid because after doing a visual scan of the dataset, I used the Goodtables tool to double check that the data was valid!”")]),e._v(" "),t("hr"),e._v(" "),t("h3",{attrs:{id:"reproducing-a-data-package-by-jacqueline-maasch-cohort-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#reproducing-a-data-package-by-jacqueline-maasch-cohort-2"}},[e._v("#")]),e._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/jacqueline-pkg-reprod-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Reproducing a data package by Jacqueline Maasch"),t("OutboundLink")],1),e._v(" (Cohort 2)")]),e._v(" "),t("p",[e._v("“Is it easy to reproduce someone else’s data package? Sometimes, but not always. Tools that automate data management can standardize the process, making reproducibility simpler to achieve. However, accurately anticipating a tool’s expected behavior is essential, especially when mixing technologies.”")]),e._v(" "),t("hr"),e._v(" "),t("h3",{attrs:{id:"validating-data-from-daniel-alcala-lopez-by-evelyn-night-cohort-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#validating-data-from-daniel-alcala-lopez-by-evelyn-night-cohort-2"}},[e._v("#")]),e._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/evelyn-partner-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Validating data from Daniel Alcalá-López by Evelyn Night"),t("OutboundLink")],1),e._v(" (Cohort 2)")]),e._v(" "),t("p",[e._v("“In a fast paced research world where there’s an approximate increase of 8-9% in scientific publications every year, an overload of information is usually fed to the outside world. Unfortunately for us, most of this information is often wasted due to the reproducibility crisis marred by data or code that’s often locked away. We explored the question, ‘how reproducible is your data?’ by exchanging personal data and validating them according to the instructions that are outlined in the fellows’ recent goodtables blogs.”")])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[125],{657:function(e,a,t){"use strict";t.r(a);var o=t(29),r=Object(o.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("p",[e._v("The “reproducibility crisis” is a hot topic in scientific research these days. Can you reproduce published data from another laboratory? Can you follow the published scientific methods and get the same result? Unfortunately, the answer to these questions is often no.")]),e._v(" "),t("p",[e._v("One of the goals of Frictionless Data is to help researchers make their work more reproducible. To achieve this, we focus on making data more understandable (make sure to document your metadata!), of higher quality (via validation checks), and easier to reuse (by standardization and packaging).")]),e._v(" "),t("p",[e._v("As a test of these reproducibility measures, we tasked the Frictionless Fellows with reproducing each others’ data packages! This was a great learning experience for the Fellows and revealed some important lessons about how to make their data more (re)usable. Click on the blog links below to read more about their experiences!")]),e._v(" "),t("hr"),e._v(" "),t("h3",{attrs:{id:"reproduciendo-un-viaje-a-mo-rea-by-sele-yang-cohort-1"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#reproduciendo-un-viaje-a-mo-rea-by-sele-yang-cohort-1"}},[e._v("#")]),e._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/sele-partner-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Reproduciendo un viaje a Mo’rea by Sele Yang"),t("OutboundLink")],1),e._v(" (Cohort 1)")]),e._v(" "),t("p",[e._v("“Mi viaje a través de los datos de Lily, me llevó a Mo’rea, Polinesia Francesa, desde donde ella, a través de diferentes herramientas, recopiló un total de 175 entrevistas entre residentes y también investigadores/as de la región…Para reproducir los datos de Lily, utilicé inicialmente el DataPackage Creator tool para cargar su información en bruto y así empezar a revisar las especificaciones de su data type creados de manera automática por la herramienta.”")]),e._v(" "),t("hr"),e._v(" "),t("h3",{attrs:{id:"packaging-ouso-s-data-by-lily-zhao-cohort-1"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#packaging-ouso-s-data-by-lily-zhao-cohort-1"}},[e._v("#")]),e._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/lily-partner-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Packaging Ouso’s Data by Lily Zhao"),t("OutboundLink")],1),e._v(" (Cohort 1)")]),e._v(" "),t("p",[e._v("“This week I had the opportunity to work with my colleague’s data. He created a Datapackage which I replicated. In doing so, I learned a lot about the Datapackage web interface….Using these data Ouso and his co-authors evaluate the ability of high-resolution melting analysis to identify illegally targeted wildlife species.”")]),e._v(" "),t("hr"),e._v(" "),t("h3",{attrs:{id:"data-barter-real-life-data-interactions-by-ouso-daniel-cohort-1"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#data-barter-real-life-data-interactions-by-ouso-daniel-cohort-1"}},[e._v("#")]),e._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/ouso-partner-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Data Barter: Real-life data interactions by Ouso Daniel"),t("OutboundLink")],1),e._v(" (Cohort 1)")]),e._v(" "),t("p",[e._v("“Exchanging data packages and working backwards from them is an important test in the illustration of the overall goal of the Frictionless Data initiative. Remember, FD seeks to facilitate and promote open and reproducible research, consequently promoting collaboration. By trying to reproduce Monica’s work I was able to capture an error, which I highlighted for her attention, thus improved the work. Exactly how science is supposed to work!”")]),e._v(" "),t("hr"),e._v(" "),t("h3",{attrs:{id:"on-readme-files-sharing-data-and-interoperability-by-anne-lee-steele-cohort-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#on-readme-files-sharing-data-and-interoperability-by-anne-lee-steele-cohort-2"}},[e._v("#")]),e._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/anne-partner-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("On README files, sharing data and interoperability by Anne Lee Steele"),t("OutboundLink")],1),e._v(" (Cohort 2)")]),e._v(" "),t("p",[e._v("“One of the goals of the Frictionless Data Fellowship has been to help us make our research more interoperable, which is another way of saying: something that other researchers can use, even if they have entirely different systems or tools with which they approach the same topic….What if researchers of all types wrote prototypical “data packages” about their research, that gave greater context to their work, or explained its wider relevance? In my fields, many researchers tend to find this in ‘the art of the footnote’, but this type of informal knowledge or context is not operationalized in any real way.”")]),e._v(" "),t("hr"),e._v(" "),t("h3",{attrs:{id:"using-frictionless-tools-to-help-you-understand-open-data-by-dani-alcala-lopez-cohort-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#using-frictionless-tools-to-help-you-understand-open-data-by-dani-alcala-lopez-cohort-2"}},[e._v("#")]),e._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/dani-partner-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Using Frictionless tools to help you understand open data by Dani Alcalá-López"),t("OutboundLink")],1),e._v(" (Cohort 2)")]),e._v(" "),t("p",[e._v("“A few weeks ago, the fellows did an interesting exercise: We would try to replicate each others DataPackages in pairs. We had spent some time before creating and validating DataPacakges with our own data. Now it was the time to see how would it be to work with someone else’s. This experience was intended to be a way for us to check how it was to be at the other side.”")]),e._v(" "),t("hr"),e._v(" "),t("h3",{attrs:{id:"validating-someone-else-s-data-by-katerina-drakoulaki-cohort-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#validating-someone-else-s-data-by-katerina-drakoulaki-cohort-2"}},[e._v("#")]),e._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/katerina-partner-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Validating someone else’s data! By Katerina Drakoulaki"),t("OutboundLink")],1),e._v(" (Cohort 2)")]),e._v(" "),t("p",[e._v("“The first thing I did was to go through the README file on my fellow’s repository. Since the repository was in a completely different field, I really had to read through everything very carefully, and think about the terms they used….Validating the data (to the extent that it was possible after all) was easy using the goodtables tools.”")]),e._v(" "),t("hr"),e._v(" "),t("h3",{attrs:{id:"reproducing-jacqueline-s-datapackage-and-revalidating-her-data-by-sam-wilairat-cohort-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#reproducing-jacqueline-s-datapackage-and-revalidating-her-data-by-sam-wilairat-cohort-2"}},[e._v("#")]),e._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/sam-reproduce-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Reproducing Jacqueline’s Datapackage and Revalidating her Data! By Sam Wilairat"),t("OutboundLink")],1),e._v(" (Cohort 2)")]),e._v(" "),t("p",[e._v("“Using Jacqueline’s GitHub repository, Frictionless Data Package Creator, and Goodtables, I feel that I can confidently reuse her dataset for my own research purposes. While there was one piece of metadata missing from her dataset, her publicly published datapackage .JSON file on her repository helped me to quickly figure out how to interpret the unlabeled column. I also feel confident that the data is valid because after doing a visual scan of the dataset, I used the Goodtables tool to double check that the data was valid!”")]),e._v(" "),t("hr"),e._v(" "),t("h3",{attrs:{id:"reproducing-a-data-package-by-jacqueline-maasch-cohort-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#reproducing-a-data-package-by-jacqueline-maasch-cohort-2"}},[e._v("#")]),e._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/jacqueline-pkg-reprod-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Reproducing a data package by Jacqueline Maasch"),t("OutboundLink")],1),e._v(" (Cohort 2)")]),e._v(" "),t("p",[e._v("“Is it easy to reproduce someone else’s data package? Sometimes, but not always. Tools that automate data management can standardize the process, making reproducibility simpler to achieve. However, accurately anticipating a tool’s expected behavior is essential, especially when mixing technologies.”")]),e._v(" "),t("hr"),e._v(" "),t("h3",{attrs:{id:"validating-data-from-daniel-alcala-lopez-by-evelyn-night-cohort-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#validating-data-from-daniel-alcala-lopez-by-evelyn-night-cohort-2"}},[e._v("#")]),e._v(" "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/evelyn-partner-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Validating data from Daniel Alcalá-López by Evelyn Night"),t("OutboundLink")],1),e._v(" (Cohort 2)")]),e._v(" "),t("p",[e._v("“In a fast paced research world where there’s an approximate increase of 8-9% in scientific publications every year, an overload of information is usually fed to the outside world. Unfortunately for us, most of this information is often wasted due to the reproducibility crisis marred by data or code that’s often locked away. We explored the question, ‘how reproducible is your data?’ by exchanging personal data and validating them according to the instructions that are outlined in the fellows’ recent goodtables blogs.”")])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/126.88c9378d.js b/assets/js/126.3ce8c3cc.js similarity index 98% rename from assets/js/126.88c9378d.js rename to assets/js/126.3ce8c3cc.js index cedf6bd64..691c32aeb 100644 --- a/assets/js/126.88c9378d.js +++ b/assets/js/126.3ce8c3cc.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[126],{659:function(e,t,r){"use strict";r.r(t);var o=r(29),a=Object(o.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h2",{attrs:{id:"a-recap-from-our-march-community-call"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#a-recap-from-our-march-community-call"}},[e._v("#")]),e._v(" A recap from our March community call")]),e._v(" "),r("p",[e._v("On our last Frictionless Data community call on March 25"),r("sup",[e._v("th")]),e._v(", we dealt with a very current topic thanks to Thorben Westerhuys, who presented his project on Frictionless Vaccination data.")]),e._v(" "),r("p",[e._v("To compensate for the lack of time perspective in the government data, Thorben has developed a spatiotemporal tracker for state level covid vaccination data, which takes the data provided by the government, reformats it and makes it available to everyone in a structured, more machine readable form.")]),e._v(" "),r("p",[e._v("To discover more about this great project, have a look at it on "),r("a",{attrs:{href:"https://github.com/n0rdlicht/rki-vaccination-scraper",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub"),r("OutboundLink")],1),e._v(". If you would like to dive deeper and discover all the project’s applications, you can watch Thorben’s presentation here:")]),e._v(" "),r("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/TR0kNEC3bBM",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),r("h2",{attrs:{id:"other-agenda-items-from-our-hangout"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#other-agenda-items-from-our-hangout"}},[e._v("#")]),e._v(" Other agenda items from our hangout")]),e._v(" "),r("p",[r("a",{attrs:{href:"https://csvconf.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("csv,conf,v6"),r("OutboundLink")],1),e._v(" is happening on May 4-5. Registrations are open. Don’t forget to book your place!")]),e._v(" "),r("h2",{attrs:{id:"join-us-next-month"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[e._v("#")]),e._v(" Join us next month!")]),e._v(" "),r("p",[e._v("Our next meeting will be on April 29"),r("sup",[e._v("th")]),e._v(". We will hear a presentation from the Frictionless Fellows. You can sign up "),r("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),r("OutboundLink")],1),e._v(".")]),e._v(" "),r("p",[e._v("Do you want to share something with the community? Let us know when you sign up!")]),e._v(" "),r("h2",{attrs:{id:"call-recording"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call recording:")]),e._v(" "),r("p",[e._v("On a final note, here is the recording of the full call:")]),e._v(" "),r("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/5cghp8KieLE",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),r("p",[e._v(" ")]),e._v(" "),r("p",[e._v("As usual, you can join us on "),r("a",{attrs:{href:"https://discord.com/invite/j9DNFNw",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),r("OutboundLink")],1),e._v(" or "),r("a",{attrs:{href:"https://twitter.com/frictionlessd8a",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),r("OutboundLink")],1),e._v(" to say hi or ask any questions. See you there!")])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[126],{661:function(e,t,r){"use strict";r.r(t);var o=r(29),a=Object(o.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h2",{attrs:{id:"a-recap-from-our-march-community-call"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#a-recap-from-our-march-community-call"}},[e._v("#")]),e._v(" A recap from our March community call")]),e._v(" "),r("p",[e._v("On our last Frictionless Data community call on March 25"),r("sup",[e._v("th")]),e._v(", we dealt with a very current topic thanks to Thorben Westerhuys, who presented his project on Frictionless Vaccination data.")]),e._v(" "),r("p",[e._v("To compensate for the lack of time perspective in the government data, Thorben has developed a spatiotemporal tracker for state level covid vaccination data, which takes the data provided by the government, reformats it and makes it available to everyone in a structured, more machine readable form.")]),e._v(" "),r("p",[e._v("To discover more about this great project, have a look at it on "),r("a",{attrs:{href:"https://github.com/n0rdlicht/rki-vaccination-scraper",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub"),r("OutboundLink")],1),e._v(". If you would like to dive deeper and discover all the project’s applications, you can watch Thorben’s presentation here:")]),e._v(" "),r("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/TR0kNEC3bBM",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),r("h2",{attrs:{id:"other-agenda-items-from-our-hangout"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#other-agenda-items-from-our-hangout"}},[e._v("#")]),e._v(" Other agenda items from our hangout")]),e._v(" "),r("p",[r("a",{attrs:{href:"https://csvconf.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("csv,conf,v6"),r("OutboundLink")],1),e._v(" is happening on May 4-5. Registrations are open. Don’t forget to book your place!")]),e._v(" "),r("h2",{attrs:{id:"join-us-next-month"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[e._v("#")]),e._v(" Join us next month!")]),e._v(" "),r("p",[e._v("Our next meeting will be on April 29"),r("sup",[e._v("th")]),e._v(". We will hear a presentation from the Frictionless Fellows. You can sign up "),r("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),r("OutboundLink")],1),e._v(".")]),e._v(" "),r("p",[e._v("Do you want to share something with the community? Let us know when you sign up!")]),e._v(" "),r("h2",{attrs:{id:"call-recording"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call recording:")]),e._v(" "),r("p",[e._v("On a final note, here is the recording of the full call:")]),e._v(" "),r("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/5cghp8KieLE",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),r("p",[e._v(" ")]),e._v(" "),r("p",[e._v("As usual, you can join us on "),r("a",{attrs:{href:"https://discord.com/invite/j9DNFNw",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),r("OutboundLink")],1),e._v(" or "),r("a",{attrs:{href:"https://twitter.com/frictionlessd8a",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),r("OutboundLink")],1),e._v(" to say hi or ask any questions. See you there!")])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/127.5ff67dd0.js b/assets/js/127.eb88b5b3.js similarity index 98% rename from assets/js/127.5ff67dd0.js rename to assets/js/127.eb88b5b3.js index 17a2cfcee..7a7191354 100644 --- a/assets/js/127.5ff67dd0.js +++ b/assets/js/127.eb88b5b3.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[127],{660:function(e,t,o){"use strict";o.r(t);var r=o(29),a=Object(r.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("p",[o("em",[e._v("This blog is part of a series showcasing projects developed during the 2020-2021 Tool Fund. The Tool Fund provided five mini-grants of $5,000 to support individuals or organisations in developing an open tool for reproducible research built using the Frictionless Data specifications and software. This Fund is part of the Frictionless Data for Reproducible Research project, which is funded by the Sloan Foundation. This project applies our work in Frictionless Data to data-driven research disciplines, in order to facilitate reproducible data workflows in research contexts.")])]),e._v(" "),o("p",[e._v("My name is Nikhil and I am a pre-final year student pursuing "),o("a",{attrs:{href:"http://M.Sc",target:"_blank",rel:"noopener noreferrer"}},[e._v("M.Sc"),o("OutboundLink")],1),e._v(". Economics and B.E. Computer Science from BITS Pilani, India. For my Frictionless Data Tool Fund, I worked with "),o("a",{attrs:{href:"http://intermine.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("InterMine"),o("OutboundLink")],1),e._v(" which is an open-source biological data warehouse and offers a webapp to query and download that data in multiple formats like CSV, TSV, JSON, XML, etc. However, it is sometimes difficult for new users to understand the InterMine data since it is complex and structured. Also, for developers to contribute to InterMine in a more effective way, they need to understand the data and its structure at the core of InterMine, and this can be difficult for new developers.")]),e._v(" "),o("p",[e._v("To help resolve these user needs, my solution was to design a data package for InterMine and give users the option to download the data package along with the results of any query. This would help them understand the structure of the results like class and attributes by describing all the attributes and summarizing other important information such as data sources, primary key(s), etc. Also, other fields like the version of app, link to query and timestamp can help them trace any potential errors. The new feature to export data packages is available in both the old version of InterMine webapps and the new version (BlueGenes). Users can use any of the apps to build a query and then go to the results page, where they can click on the export button, which provides the option to export Frictionless Data Package (see the images below for detailed steps).")]),e._v(" "),o("p",[e._v("Within InterMine, there are over 30 mines that provide biological data for organisms like flies, humans, rats, etc. For this Frictionless Tool Fund, the target audience is the InterMine community, whether it’s researchers in institutes around the world or Google Summer of Code and Outreachy applicants who can understand the process of querying and the structure of data to kickstart their contribution.")]),e._v(" "),o("p",[e._v("While this Tool Fund is over, a future idea to improve this work is adding class and attribute descriptions in the data package using the configuration files in the InterMine codebase. The class description file already exists but we need to add the attribute descriptions. Another possible future expansion would be integrating this feature with one of the frictionless tools, like Goodtables. For more details, see the images below and read the documentation for the tool "),o("a",{attrs:{href:"https://github.com/intermine/im-docs/blob/master/versioned_docs/version-5.0.0/webapp/frictionless/index.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[e._v("Screenshot 1 : Step 1 to export data package"),o("br"),e._v(" "),o("img",{attrs:{src:"https://user-images.githubusercontent.com/74717970/114539496-d6364980-9c54-11eb-8d17-b4eb35f483b4.png",alt:"screenshot1"}})]),e._v(" "),o("p",[e._v("Screenshot 2 : Step 2 to export data package"),o("br"),e._v(" "),o("img",{attrs:{src:"https://user-images.githubusercontent.com/74717970/114539567-e9e1b000-9c54-11eb-933d-4545f79a3b65.png",alt:"screenshot2"}})]),e._v(" "),o("p",[e._v("Screenshot 3 : A sample data package"),o("br"),e._v(" "),o("img",{attrs:{src:"https://user-images.githubusercontent.com/74717970/114539626-f49c4500-9c54-11eb-8452-fdf6bf810686.png",alt:"screenshot3"}})])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[127],{732:function(e,t,o){"use strict";o.r(t);var r=o(29),a=Object(r.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("p",[o("em",[e._v("This blog is part of a series showcasing projects developed during the 2020-2021 Tool Fund. The Tool Fund provided five mini-grants of $5,000 to support individuals or organisations in developing an open tool for reproducible research built using the Frictionless Data specifications and software. This Fund is part of the Frictionless Data for Reproducible Research project, which is funded by the Sloan Foundation. This project applies our work in Frictionless Data to data-driven research disciplines, in order to facilitate reproducible data workflows in research contexts.")])]),e._v(" "),o("p",[e._v("My name is Nikhil and I am a pre-final year student pursuing "),o("a",{attrs:{href:"http://M.Sc",target:"_blank",rel:"noopener noreferrer"}},[e._v("M.Sc"),o("OutboundLink")],1),e._v(". Economics and B.E. Computer Science from BITS Pilani, India. For my Frictionless Data Tool Fund, I worked with "),o("a",{attrs:{href:"http://intermine.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("InterMine"),o("OutboundLink")],1),e._v(" which is an open-source biological data warehouse and offers a webapp to query and download that data in multiple formats like CSV, TSV, JSON, XML, etc. However, it is sometimes difficult for new users to understand the InterMine data since it is complex and structured. Also, for developers to contribute to InterMine in a more effective way, they need to understand the data and its structure at the core of InterMine, and this can be difficult for new developers.")]),e._v(" "),o("p",[e._v("To help resolve these user needs, my solution was to design a data package for InterMine and give users the option to download the data package along with the results of any query. This would help them understand the structure of the results like class and attributes by describing all the attributes and summarizing other important information such as data sources, primary key(s), etc. Also, other fields like the version of app, link to query and timestamp can help them trace any potential errors. The new feature to export data packages is available in both the old version of InterMine webapps and the new version (BlueGenes). Users can use any of the apps to build a query and then go to the results page, where they can click on the export button, which provides the option to export Frictionless Data Package (see the images below for detailed steps).")]),e._v(" "),o("p",[e._v("Within InterMine, there are over 30 mines that provide biological data for organisms like flies, humans, rats, etc. For this Frictionless Tool Fund, the target audience is the InterMine community, whether it’s researchers in institutes around the world or Google Summer of Code and Outreachy applicants who can understand the process of querying and the structure of data to kickstart their contribution.")]),e._v(" "),o("p",[e._v("While this Tool Fund is over, a future idea to improve this work is adding class and attribute descriptions in the data package using the configuration files in the InterMine codebase. The class description file already exists but we need to add the attribute descriptions. Another possible future expansion would be integrating this feature with one of the frictionless tools, like Goodtables. For more details, see the images below and read the documentation for the tool "),o("a",{attrs:{href:"https://github.com/intermine/im-docs/blob/master/versioned_docs/version-5.0.0/webapp/frictionless/index.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[e._v("Screenshot 1 : Step 1 to export data package"),o("br"),e._v(" "),o("img",{attrs:{src:"https://user-images.githubusercontent.com/74717970/114539496-d6364980-9c54-11eb-8d17-b4eb35f483b4.png",alt:"screenshot1"}})]),e._v(" "),o("p",[e._v("Screenshot 2 : Step 2 to export data package"),o("br"),e._v(" "),o("img",{attrs:{src:"https://user-images.githubusercontent.com/74717970/114539567-e9e1b000-9c54-11eb-933d-4545f79a3b65.png",alt:"screenshot2"}})]),e._v(" "),o("p",[e._v("Screenshot 3 : A sample data package"),o("br"),e._v(" "),o("img",{attrs:{src:"https://user-images.githubusercontent.com/74717970/114539626-f49c4500-9c54-11eb-8452-fdf6bf810686.png",alt:"screenshot3"}})])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/128.5f662b25.js b/assets/js/128.7f2ef645.js similarity index 99% rename from assets/js/128.5f662b25.js rename to assets/js/128.7f2ef645.js index ada62f042..d4acb233f 100644 --- a/assets/js/128.5f662b25.js +++ b/assets/js/128.7f2ef645.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[128],{661:function(e,t,o){"use strict";o.r(t);var a=o(29),n=Object(a.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("p",[e._v("Originally published: "),o("a",{attrs:{href:"https://blog.okfn.org/2021/04/14/unveiling-the-new-frictionless-data-documentation-portal/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://blog.okfn.org/2021/04/14/unveiling-the-new-frictionless-data-documentation-portal/"),o("OutboundLink")],1)]),e._v(" "),o("p",[e._v("Have you used Frictionless Data documentation in the past and been confused or wanted more examples? Are you a brand new Frictionless Data user looking to get started learning?")]),e._v(" "),o("p",[e._v("We invite you all to read our new and improved "),o("a",{attrs:{href:"https://framework.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("documentation portal"),o("OutboundLink")],1),e._v("! Thanks to a "),o("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/01/13/partnering-with-odi/",target:"_blank",rel:"noopener noreferrer"}},[e._v("fund that the Open Knowledge Foundation was awarded"),o("OutboundLink")],1),e._v(" from the "),o("a",{attrs:{href:"https://theodi.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Open Data Institute"),o("OutboundLink")],1),e._v(", we have completely reworked the guides of our "),o("a",{attrs:{href:"https://framework.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Frictionless Data Framework website"),o("OutboundLink")],1),e._v(" according to the suggestions from a cohort of users gathered in several feedback sessions throughout the months of February and March.")]),e._v(" "),o("p",[e._v("We cannot stress enough how precious those feedback sessions have been to us. They were an excellent opportunity to connect with our users and reflect together with them on how to make all our guides more useful for current and future users. The enthusiasm and engagement that the community showed for the process was great to see and reminded us that the link with the community should be at the core of open source projects.")]),e._v(" "),o("p",[e._v("We were amazed by the amount of extremely useful inputs that we got. While we are still digesting some of the suggestions and working out how to best implement them, we have made many changes to make the documentation a smoother, Frictionless experience.")]),e._v(" "),o("h2",{attrs:{id:"so-what-s-new"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#so-what-s-new"}},[e._v("#")]),e._v(" So what’s new?")]),e._v(" "),o("p",[e._v("A common theme from the feedback sessions was that it was sometimes difficult for novice users to understand the whole potential of the Frictionless specifications. To help make this clearer, we added a more detailed explanation, user examples and user stories to our "),o("a",{attrs:{href:"https://framework.frictionlessdata.io/docs/guides/introduction",target:"_blank",rel:"noopener noreferrer"}},[e._v("Introduction"),o("OutboundLink")],1),e._v(". We also added some extra installation tips and a troubleshooting section to our "),o("a",{attrs:{href:"https://framework.frictionlessdata.io/docs/guides/quick-start",target:"_blank",rel:"noopener noreferrer"}},[e._v("Quick Start guide"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[e._v("The users also suggested several code changes, like more realistic code examples, better explanations of functions, and the ability to run code examples in both the Command Line and Python. This last suggestion was prompted because most of the guides use a mix of Command Line and Python syntax, which was confusing to our users. We have clarified that by adding a switch in the code snippets that allows user to work with a pure Python Syntax or pure Command Line (when possible), as you can see "),o("a",{attrs:{href:"https://framework.frictionlessdata.io/docs/guides/basic-examples",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(". We also put together an "),o("a",{attrs:{href:"https://framework.frictionlessdata.io/docs/faq/",target:"_blank",rel:"noopener noreferrer"}},[e._v("FAQ section"),o("OutboundLink")],1),e._v(" based on questions that were often asked on our "),o("a",{attrs:{href:"https://discord.com/invite/Sewv6av",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord chat"),o("OutboundLink")],1),e._v(". If you have suggestions for other common questions to add, let us know!")]),e._v(" "),o("p",[e._v("The documentation revamping process also included the publication of new tutorials. We worked on two new Frictionless tutorials, which are published under the Notebooks link in the navigation menu. While working on those, we got inspired by the feedback sessions and realised that it made sense to give our community the possibility to contribute to the project with some real life examples of Frictionless Data use. The user selection process has started and we hope to get the new tutorials online by the end of the month, so stay tuned!")]),e._v(" "),o("h2",{attrs:{id:"what-s-next"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#what-s-next"}},[e._v("#")]),e._v(" What’s next?")]),e._v(" "),o("p",[e._v("Our commitment to continually improving our documentation is not over with this project coming to an end! Do you have suggestions for changes you would like to see in our documentation? Please reach out to us or open a "),o("a",{attrs:{href:"https://github.com/frictionlessdata/frictionless-py/pulls",target:"_blank",rel:"noopener noreferrer"}},[e._v("pull request"),o("OutboundLink")],1),e._v(" to contribute. Everyone is welcome to contribute! Learn how to do it "),o("a",{attrs:{href:"https://framework.frictionlessdata.io/docs/development/contributing",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("h2",{attrs:{id:"thanks-thanks-thanks"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#thanks-thanks-thanks"}},[e._v("#")]),e._v(" Thanks, thanks, thanks!")]),e._v(" "),o("p",[e._v("Once again, we are very grateful to the Open Data Institute for giving us the chance to focus on this documentation in order to improve it. We cannot thank enough all our users who took part in the feedback sessions, your contributions were precious.")]),e._v(" "),o("h2",{attrs:{id:"more-about-frictionless-data"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#more-about-frictionless-data"}},[e._v("#")]),e._v(" More about Frictionless Data")]),e._v(" "),o("p",[e._v("Frictionless Data is a set of specifications for data and metadata interoperability, accompanied by a collection of software libraries that implement these specifications, and a range of best practices for data management. The project is funded by the Sloan Foundation.")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[128],{659:function(e,t,o){"use strict";o.r(t);var a=o(29),n=Object(a.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("p",[e._v("Originally published: "),o("a",{attrs:{href:"https://blog.okfn.org/2021/04/14/unveiling-the-new-frictionless-data-documentation-portal/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://blog.okfn.org/2021/04/14/unveiling-the-new-frictionless-data-documentation-portal/"),o("OutboundLink")],1)]),e._v(" "),o("p",[e._v("Have you used Frictionless Data documentation in the past and been confused or wanted more examples? Are you a brand new Frictionless Data user looking to get started learning?")]),e._v(" "),o("p",[e._v("We invite you all to read our new and improved "),o("a",{attrs:{href:"https://framework.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("documentation portal"),o("OutboundLink")],1),e._v("! Thanks to a "),o("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/01/13/partnering-with-odi/",target:"_blank",rel:"noopener noreferrer"}},[e._v("fund that the Open Knowledge Foundation was awarded"),o("OutboundLink")],1),e._v(" from the "),o("a",{attrs:{href:"https://theodi.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Open Data Institute"),o("OutboundLink")],1),e._v(", we have completely reworked the guides of our "),o("a",{attrs:{href:"https://framework.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Frictionless Data Framework website"),o("OutboundLink")],1),e._v(" according to the suggestions from a cohort of users gathered in several feedback sessions throughout the months of February and March.")]),e._v(" "),o("p",[e._v("We cannot stress enough how precious those feedback sessions have been to us. They were an excellent opportunity to connect with our users and reflect together with them on how to make all our guides more useful for current and future users. The enthusiasm and engagement that the community showed for the process was great to see and reminded us that the link with the community should be at the core of open source projects.")]),e._v(" "),o("p",[e._v("We were amazed by the amount of extremely useful inputs that we got. While we are still digesting some of the suggestions and working out how to best implement them, we have made many changes to make the documentation a smoother, Frictionless experience.")]),e._v(" "),o("h2",{attrs:{id:"so-what-s-new"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#so-what-s-new"}},[e._v("#")]),e._v(" So what’s new?")]),e._v(" "),o("p",[e._v("A common theme from the feedback sessions was that it was sometimes difficult for novice users to understand the whole potential of the Frictionless specifications. To help make this clearer, we added a more detailed explanation, user examples and user stories to our "),o("a",{attrs:{href:"https://framework.frictionlessdata.io/docs/guides/introduction",target:"_blank",rel:"noopener noreferrer"}},[e._v("Introduction"),o("OutboundLink")],1),e._v(". We also added some extra installation tips and a troubleshooting section to our "),o("a",{attrs:{href:"https://framework.frictionlessdata.io/docs/guides/quick-start",target:"_blank",rel:"noopener noreferrer"}},[e._v("Quick Start guide"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[e._v("The users also suggested several code changes, like more realistic code examples, better explanations of functions, and the ability to run code examples in both the Command Line and Python. This last suggestion was prompted because most of the guides use a mix of Command Line and Python syntax, which was confusing to our users. We have clarified that by adding a switch in the code snippets that allows user to work with a pure Python Syntax or pure Command Line (when possible), as you can see "),o("a",{attrs:{href:"https://framework.frictionlessdata.io/docs/guides/basic-examples",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(". We also put together an "),o("a",{attrs:{href:"https://framework.frictionlessdata.io/docs/faq/",target:"_blank",rel:"noopener noreferrer"}},[e._v("FAQ section"),o("OutboundLink")],1),e._v(" based on questions that were often asked on our "),o("a",{attrs:{href:"https://discord.com/invite/Sewv6av",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord chat"),o("OutboundLink")],1),e._v(". If you have suggestions for other common questions to add, let us know!")]),e._v(" "),o("p",[e._v("The documentation revamping process also included the publication of new tutorials. We worked on two new Frictionless tutorials, which are published under the Notebooks link in the navigation menu. While working on those, we got inspired by the feedback sessions and realised that it made sense to give our community the possibility to contribute to the project with some real life examples of Frictionless Data use. The user selection process has started and we hope to get the new tutorials online by the end of the month, so stay tuned!")]),e._v(" "),o("h2",{attrs:{id:"what-s-next"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#what-s-next"}},[e._v("#")]),e._v(" What’s next?")]),e._v(" "),o("p",[e._v("Our commitment to continually improving our documentation is not over with this project coming to an end! Do you have suggestions for changes you would like to see in our documentation? Please reach out to us or open a "),o("a",{attrs:{href:"https://github.com/frictionlessdata/frictionless-py/pulls",target:"_blank",rel:"noopener noreferrer"}},[e._v("pull request"),o("OutboundLink")],1),e._v(" to contribute. Everyone is welcome to contribute! Learn how to do it "),o("a",{attrs:{href:"https://framework.frictionlessdata.io/docs/development/contributing",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("h2",{attrs:{id:"thanks-thanks-thanks"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#thanks-thanks-thanks"}},[e._v("#")]),e._v(" Thanks, thanks, thanks!")]),e._v(" "),o("p",[e._v("Once again, we are very grateful to the Open Data Institute for giving us the chance to focus on this documentation in order to improve it. We cannot thank enough all our users who took part in the feedback sessions, your contributions were precious.")]),e._v(" "),o("h2",{attrs:{id:"more-about-frictionless-data"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#more-about-frictionless-data"}},[e._v("#")]),e._v(" More about Frictionless Data")]),e._v(" "),o("p",[e._v("Frictionless Data is a set of specifications for data and metadata interoperability, accompanied by a collection of software libraries that implement these specifications, and a range of best practices for data management. The project is funded by the Sloan Foundation.")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/129.23d46734.js b/assets/js/129.f8e42f7d.js similarity index 99% rename from assets/js/129.23d46734.js rename to assets/js/129.f8e42f7d.js index 320b2f894..f564878c3 100644 --- a/assets/js/129.23d46734.js +++ b/assets/js/129.f8e42f7d.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[129],{665:function(e,t,r){"use strict";r.r(t);var a=r(29),o=Object(a.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("p",[e._v("On our last Frictionless Data community call on April 29"),r("sup",[e._v("th")]),e._v(" we had an interactive session with our great Frictionless Data Fellows: Daniel Alcalá López, Kate Bowie, Katerina Drakoulaki, Anne Lee, Jacqueline Maasch, Evelyn Night and Samantha Wilairat.")]),e._v(" "),r("p",[e._v("The Fellows are early career researchers recruited to become champions of the Frictionless Data tools and approaches in their field. During the nine months of their fellowship, which started in August 2020, the Fellows learned how to use Frictionless tools in their domains to improve reproducible research workflows, and how to advocate for open science. It was a real pleasure to work with this amazing cohort. Sadly the fellowship is coming to an end, but we are sure we will hear a lot from them in the future.")]),e._v(" "),r("p",[e._v("You can learn more about them "),r("a",{attrs:{href:"https://fellows.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),r("OutboundLink")],1),e._v(", and read all the great blogs they wrote "),r("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),r("OutboundLink")],1),e._v(".")]),e._v(" "),r("p",[e._v("If you would like to hear directly from the Fellows about their experience with Frictionless Data and what the fellowship meant for them, you can have a look at the presentation they made during the community call here below:")]),e._v(" "),r("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/uw7wqdiCP_g",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),r("h2",{attrs:{id:"other-agenda-items-from-our-hangout"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#other-agenda-items-from-our-hangout"}},[e._v("#")]),e._v(" Other agenda items from our hangout")]),e._v(" "),r("p",[r("a",{attrs:{href:"https://csvconf.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("csv,conf,v6"),r("OutboundLink")],1),e._v(" is happening on May 4-5. It is free and virtual - register "),r("a",{attrs:{href:"https://www.eventbrite.com/e/csvconfv6-tickets-144250211265",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),r("OutboundLink")],1),e._v(". There are two Frictionless sessions:")]),e._v(" "),r("ul",[r("li",[e._v("May 4"),r("sup",[e._v("th")]),e._v(": Frictionless Data workshop led by the Reproducible Research fellows, don’t miss the opportunity to meet the Fellows again!")]),e._v(" "),r("li",[e._v("May 5"),r("sup",[e._v("th")]),e._v(": Frictionless Data for Wheat by Simon Tyrrell")])]),e._v(" "),r("p",[e._v("Full programme here: "),r("a",{attrs:{href:"https://csvconf.com/speakers",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://csvconf.com/speakers"),r("OutboundLink")],1)]),e._v(" "),r("h2",{attrs:{id:"news-from-the-community"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#news-from-the-community"}},[e._v("#")]),e._v(" News from the Community")]),e._v(" "),r("p",[e._v("Oleg Lavrovsky presented instant APIs for small Frictionless Data-powered apps. "),r("a",{attrs:{href:"https://scene.rip/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Here"),r("OutboundLink")],1),e._v(" is an example app developed during the latest Swiss OpenGLAM hackathon. To know more about it, you can also check:")]),e._v(" "),r("ul",[r("li",[e._v("The "),r("a",{attrs:{href:"https://github.com/we-art-o-nauts/the-scene-lives",target:"_blank",rel:"noopener noreferrer"}},[e._v("source code"),r("OutboundLink")],1),e._v(" which uses "),r("a",{attrs:{href:"https://github.com/datahq/dataflows",target:"_blank",rel:"noopener noreferrer"}},[e._v("DataFlows"),r("OutboundLink")],1),e._v(" for the aggregation, and the "),r("a",{attrs:{href:"https://github.com/rgieseke/pandas-datapackage-reader",target:"_blank",rel:"noopener noreferrer"}},[e._v("Pandas Data Package reader"),r("OutboundLink")],1),e._v(" as the basis for filtering.")]),e._v(" "),r("li",[e._v("The "),r("a",{attrs:{href:"https://hack.glam.opendata.ch/project/114",target:"_blank",rel:"noopener noreferrer"}},[e._v("project page"),r("OutboundLink")],1),e._v(" and slides which outline the motivation to collect and homogenize electronic art archives.")]),e._v(" "),r("li",[e._v("An "),r("a",{attrs:{href:"https://github.com/loleg/baumkataster-data",target:"_blank",rel:"noopener noreferrer"}},[e._v("earlier attempt"),r("OutboundLink")],1),e._v(" which involves a city tree catalogue. The team is also building on this approach in several projects at "),r("a",{attrs:{href:"http://github.com/cividi",target:"_blank",rel:"noopener noreferrer"}},[e._v("cividi"),r("OutboundLink")],1),e._v(".")])]),e._v(" "),r("h2",{attrs:{id:"join-us-next-month"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[e._v("#")]),e._v(" Join us next month!")]),e._v(" "),r("p",[e._v("Our next meeting will be on May 27"),r("sup",[e._v("th")]),e._v(". We will hear a presentation from Simon Tyrrell on his Tool Fund project - Frictionless Data for Wheat. You can sign up "),r("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),r("OutboundLink")],1),e._v(".")]),e._v(" "),r("p",[e._v("Do you want to share something with the community? Let us know when you sign up!")]),e._v(" "),r("h2",{attrs:{id:"call-recording"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call recording:")]),e._v(" "),r("p",[e._v("On a final note, here is the recording of the full call:")]),e._v(" "),r("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/sRJZnm7bUQc",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),r("p",[e._v("As usual, you can join us on "),r("a",{attrs:{href:"https://discord.com/invite/j9DNFNw",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),r("OutboundLink")],1),e._v(" or "),r("a",{attrs:{href:"https://twitter.com/frictionlessd8a",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),r("OutboundLink")],1),e._v(" to say hi or ask any questions. See you there!")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[129],{658:function(e,t,r){"use strict";r.r(t);var a=r(29),o=Object(a.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("p",[e._v("On our last Frictionless Data community call on April 29"),r("sup",[e._v("th")]),e._v(" we had an interactive session with our great Frictionless Data Fellows: Daniel Alcalá López, Kate Bowie, Katerina Drakoulaki, Anne Lee, Jacqueline Maasch, Evelyn Night and Samantha Wilairat.")]),e._v(" "),r("p",[e._v("The Fellows are early career researchers recruited to become champions of the Frictionless Data tools and approaches in their field. During the nine months of their fellowship, which started in August 2020, the Fellows learned how to use Frictionless tools in their domains to improve reproducible research workflows, and how to advocate for open science. It was a real pleasure to work with this amazing cohort. Sadly the fellowship is coming to an end, but we are sure we will hear a lot from them in the future.")]),e._v(" "),r("p",[e._v("You can learn more about them "),r("a",{attrs:{href:"https://fellows.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),r("OutboundLink")],1),e._v(", and read all the great blogs they wrote "),r("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),r("OutboundLink")],1),e._v(".")]),e._v(" "),r("p",[e._v("If you would like to hear directly from the Fellows about their experience with Frictionless Data and what the fellowship meant for them, you can have a look at the presentation they made during the community call here below:")]),e._v(" "),r("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/uw7wqdiCP_g",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),r("h2",{attrs:{id:"other-agenda-items-from-our-hangout"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#other-agenda-items-from-our-hangout"}},[e._v("#")]),e._v(" Other agenda items from our hangout")]),e._v(" "),r("p",[r("a",{attrs:{href:"https://csvconf.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("csv,conf,v6"),r("OutboundLink")],1),e._v(" is happening on May 4-5. It is free and virtual - register "),r("a",{attrs:{href:"https://www.eventbrite.com/e/csvconfv6-tickets-144250211265",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),r("OutboundLink")],1),e._v(". There are two Frictionless sessions:")]),e._v(" "),r("ul",[r("li",[e._v("May 4"),r("sup",[e._v("th")]),e._v(": Frictionless Data workshop led by the Reproducible Research fellows, don’t miss the opportunity to meet the Fellows again!")]),e._v(" "),r("li",[e._v("May 5"),r("sup",[e._v("th")]),e._v(": Frictionless Data for Wheat by Simon Tyrrell")])]),e._v(" "),r("p",[e._v("Full programme here: "),r("a",{attrs:{href:"https://csvconf.com/speakers",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://csvconf.com/speakers"),r("OutboundLink")],1)]),e._v(" "),r("h2",{attrs:{id:"news-from-the-community"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#news-from-the-community"}},[e._v("#")]),e._v(" News from the Community")]),e._v(" "),r("p",[e._v("Oleg Lavrovsky presented instant APIs for small Frictionless Data-powered apps. "),r("a",{attrs:{href:"https://scene.rip/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Here"),r("OutboundLink")],1),e._v(" is an example app developed during the latest Swiss OpenGLAM hackathon. To know more about it, you can also check:")]),e._v(" "),r("ul",[r("li",[e._v("The "),r("a",{attrs:{href:"https://github.com/we-art-o-nauts/the-scene-lives",target:"_blank",rel:"noopener noreferrer"}},[e._v("source code"),r("OutboundLink")],1),e._v(" which uses "),r("a",{attrs:{href:"https://github.com/datahq/dataflows",target:"_blank",rel:"noopener noreferrer"}},[e._v("DataFlows"),r("OutboundLink")],1),e._v(" for the aggregation, and the "),r("a",{attrs:{href:"https://github.com/rgieseke/pandas-datapackage-reader",target:"_blank",rel:"noopener noreferrer"}},[e._v("Pandas Data Package reader"),r("OutboundLink")],1),e._v(" as the basis for filtering.")]),e._v(" "),r("li",[e._v("The "),r("a",{attrs:{href:"https://hack.glam.opendata.ch/project/114",target:"_blank",rel:"noopener noreferrer"}},[e._v("project page"),r("OutboundLink")],1),e._v(" and slides which outline the motivation to collect and homogenize electronic art archives.")]),e._v(" "),r("li",[e._v("An "),r("a",{attrs:{href:"https://github.com/loleg/baumkataster-data",target:"_blank",rel:"noopener noreferrer"}},[e._v("earlier attempt"),r("OutboundLink")],1),e._v(" which involves a city tree catalogue. The team is also building on this approach in several projects at "),r("a",{attrs:{href:"http://github.com/cividi",target:"_blank",rel:"noopener noreferrer"}},[e._v("cividi"),r("OutboundLink")],1),e._v(".")])]),e._v(" "),r("h2",{attrs:{id:"join-us-next-month"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[e._v("#")]),e._v(" Join us next month!")]),e._v(" "),r("p",[e._v("Our next meeting will be on May 27"),r("sup",[e._v("th")]),e._v(". We will hear a presentation from Simon Tyrrell on his Tool Fund project - Frictionless Data for Wheat. You can sign up "),r("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),r("OutboundLink")],1),e._v(".")]),e._v(" "),r("p",[e._v("Do you want to share something with the community? Let us know when you sign up!")]),e._v(" "),r("h2",{attrs:{id:"call-recording"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call recording:")]),e._v(" "),r("p",[e._v("On a final note, here is the recording of the full call:")]),e._v(" "),r("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/sRJZnm7bUQc",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),r("p",[e._v("As usual, you can join us on "),r("a",{attrs:{href:"https://discord.com/invite/j9DNFNw",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),r("OutboundLink")],1),e._v(" or "),r("a",{attrs:{href:"https://twitter.com/frictionlessd8a",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),r("OutboundLink")],1),e._v(" to say hi or ask any questions. See you there!")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/13.d6483d82.js b/assets/js/13.326928dc.js similarity index 99% rename from assets/js/13.d6483d82.js rename to assets/js/13.326928dc.js index cc001bded..b00a64255 100644 --- a/assets/js/13.d6483d82.js +++ b/assets/js/13.326928dc.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{468:function(t,e,a){t.exports=a.p+"assets/img/figure-1.ab449321.png"},469:function(t,e,a){t.exports=a.p+"assets/img/figure-2.b334817a.png"},470:function(t,e,a){t.exports=a.p+"assets/img/figure-3.7144591c.png"},471:function(t,e,a){t.exports=a.p+"assets/img/figure-4.478e4974.gif"},472:function(t,e,a){t.exports=a.p+"assets/img/figure-5.e20a138b.gif"},605:function(t,e,a){"use strict";a.r(e);var o=a(29),r=Object(o.a)({},(function(){var t=this,e=t.$createElement,o=t._self._c||e;return o("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[o("p",[t._v("Errors in data are not uncommon. They also often get in the way of quick and timely data analysis for many data users. What if there was a way to quickly identify errors in your data to accelerate the process by which you fix them before sharing your data or using it for analysis?")]),t._v(" "),o("p",[t._v("In this section, we will learn how to carry out one-time data validation using")]),t._v(" "),o("ul",[o("li",[t._v("a free web tool called "),o("a",{attrs:{href:"https://try.goodtables.io",target:"_blank",rel:"noopener noreferrer"}},[t._v("try.goodtables.io"),o("OutboundLink")],1),t._v(",")]),t._v(" "),o("li",[t._v("the goodtables command line tool which you use in your local machine.")])]),t._v(" "),o("p",[t._v("Our working assumption is that you already know what a data schema and a data package are, and how to create them. If not, "),o("RouterLink",{attrs:{to:"/blog/2018/03/07/well-packaged-datasets/"}},[t._v("start here")]),t._v(".")],1),t._v(" "),o("h2",{attrs:{id:"one-time-data-validation-with-try-goodtables-io"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#one-time-data-validation-with-try-goodtables-io"}},[t._v("#")]),t._v(" One-time data validation with "),o("a",{attrs:{href:"http://try.goodtables.io",target:"_blank",rel:"noopener noreferrer"}},[t._v("try.goodtables.io"),o("OutboundLink")],1)]),t._v(" "),o("p",[t._v("Now that you have your data package you may want to check it for errors. We refer to this process as data validation. Raw data is often ‘messy’ or ‘dirty’, which means it contains errors and irrelevant bits that make it inaccurate and difficult to quickly analyse and draw insight from existing datasets. "),o("strong",[t._v("Goodtables")]),t._v(" exists to identify structural and content errors in your tabular data so they can be fixed quickly. As with other tools mentioned in this field guide, goodtables aims to help data publishers improve the quality of their data before the data is shared elsewhere and used for analysis, or archived.")]),t._v(" "),o("p",[o("strong",[t._v("Types of errors identified in the validation process")])]),t._v(" "),o("p",[t._v("Here are some of the errors that "),o("a",{attrs:{href:"http://try.goodtables.io",target:"_blank",rel:"noopener noreferrer"}},[t._v("try.goodtables.io"),o("OutboundLink")],1),t._v(" highlights. A more exhaustive list is available "),o("a",{attrs:{href:"https://github.com/frictionlessdata/goodtables-py#validation",target:"_blank",rel:"noopener noreferrer"}},[t._v("here"),o("OutboundLink")],1),t._v(".")]),t._v(" "),o("table",[o("thead",[o("tr",[o("th",[o("strong",[t._v("Structural Errors")])]),t._v(" "),o("th")])]),t._v(" "),o("tbody",[o("tr",[o("td",[t._v("blank-header")]),t._v(" "),o("td",[t._v("There is a blank header name. All cells in the header row must have a value.")])]),t._v(" "),o("tr",[o("td",[t._v("duplicate-header")]),t._v(" "),o("td",[t._v("There are multiple columns with the same name. All column names must be unique.")])]),t._v(" "),o("tr",[o("td",[t._v("blank-row")]),t._v(" "),o("td",[t._v("Rows must have at least one non-blank cell.")])]),t._v(" "),o("tr",[o("td",[t._v("duplicate-row")]),t._v(" "),o("td",[t._v("Rows can’t be duplicated.")])]),t._v(" "),o("tr",[o("td",[t._v("extra-value")]),t._v(" "),o("td",[t._v("A row has more columns than the header.")])]),t._v(" "),o("tr",[o("td",[t._v("missing-value")]),t._v(" "),o("td",[t._v("A row has less columns than the header.")])]),t._v(" "),o("tr",[o("td",[o("strong",[t._v("Content Errors")])]),t._v(" "),o("td")]),t._v(" "),o("tr",[o("td",[t._v("schema-error")]),t._v(" "),o("td",[t._v("Schema is not valid.")])]),t._v(" "),o("tr",[o("td",[t._v("non-matching-header")]),t._v(" "),o("td",[t._v("The header’s name in the schema is different from what’s in the data.")])]),t._v(" "),o("tr",[o("td",[t._v("extra-header")]),t._v(" "),o("td",[t._v("The data contains a header not defined in the schema.")])]),t._v(" "),o("tr",[o("td",[t._v("missing-header")]),t._v(" "),o("td",[t._v("The data doesn’t contain a header defined in the schema.")])]),t._v(" "),o("tr",[o("td",[t._v("type-or-format-error")]),t._v(" "),o("td",[t._v("The value can’t be cast based on the schema type and format for this field.")])])])]),t._v(" "),o("p",[o("strong",[t._v("Load tabular data for one-time validation")])]),t._v(" "),o("p",[t._v("You can add a dataset for one-time validation on "),o("a",{attrs:{href:"https://try.goodtables.io",target:"_blank",rel:"noopener noreferrer"}},[t._v("try.goodtables.io"),o("OutboundLink")],1),t._v(" in two ways:")]),t._v(" "),o("ul",[o("li",[t._v("If your tabular data is publicly available online, obtain a link to the tabular data you would like to validate and paste it in the "),o("strong",[t._v("{Source}")]),t._v(" section.")]),t._v(" "),o("li",[t._v("Alternatively, Click on the Upload file prompt in the "),o("strong",[t._v("{Source}")]),t._v(" section to load a tabular dataset from your local machine")])]),t._v(" "),o("p",[o("strong",[t._v("Validating data without a schema")])]),t._v(" "),o("p",[t._v("In this section we will illustrate how to check tabular data for structural errors on "),o("a",{attrs:{href:"https://try.goodtables.io/",target:"_blank",rel:"noopener noreferrer"}},[t._v("try.goodtables.io"),o("OutboundLink")],1),t._v(" where a data schema is not available. For this tutorial we will use a "),o("a",{attrs:{href:"https://raw.githubusercontent.com/frictionlessdata/goodtables-py/bc6470a970aacf65f20a3ddb7f71eb05a2a31c70/data/invalid-on-structure.csv",target:"_blank",rel:"noopener noreferrer"}},[t._v("sample CSV file with errors"),o("OutboundLink")],1),t._v(".")]),t._v(" "),o("p",[t._v("Copy and paste the file’s URL to the "),o("strong",[t._v("{Source}")]),t._v(" input. When you click on the "),o("strong",[t._v("{Validate}")]),t._v(" button, "),o("a",{attrs:{href:"https://try.goodtables.io/",target:"_blank",rel:"noopener noreferrer"}},[t._v("try.goodtables.io"),o("OutboundLink")],1),t._v(" presents an exhaustive list of structural errors in your dataset.")]),t._v(" "),o("p",[o("img",{attrs:{src:a(468),alt:"Add dataset link in the Source field, or select the Upload file option"}}),o("br"),t._v(" "),o("em",[t._v("Figure 1: Add dataset link in the Source field, or select the Upload file option.")])]),t._v(" "),o("p",[t._v("If needed, you can disable two types of validation checks:")]),t._v(" "),o("ul",[o("li",[o("p",[t._v("Ignore blank rows"),o("br"),t._v("\nUse this checkbox to indicate whether blank rows should be considered as errors, or simply ignored. Check this option if missing data is a known issue that cannot be fixed immediately i.e. if you are not the owner/publisher of the data.")])]),t._v(" "),o("li",[o("p",[t._v("Ignore duplicate rows"),o("br"),t._v("\nUse this checkbox to indicate whether duplicate rows should be considered as errors, or simply ignored.")])])]),t._v(" "),o("p",[t._v("We will leave all boxes unchecked for our example. On validate, we receive a list of 12 errors as we can see in figure 7 below.")]),t._v(" "),o("p",[o("img",{attrs:{src:a(469),alt:"dataset errors outlined on try.goodtables.io"}}),o("br"),t._v(" "),o("em",[t._v("Figure 2: dataset errors outlined on "),o("a",{attrs:{href:"http://try.goodtables.io",target:"_blank",rel:"noopener noreferrer"}},[t._v("try.goodtables.io"),o("OutboundLink")],1),t._v(".")])]),t._v(" "),o("p",[o("a",{attrs:{href:"https://try.goodtables.io",target:"_blank",rel:"noopener noreferrer"}},[t._v("try.goodtables.io"),o("OutboundLink")],1),t._v(" points us to specific cells containing errors so they can be fixed easily. We can use this list as a guide to fix all errors in our data manually, and run a second validation test to confirm that all issues are resolved. If there no validations could be found, the ensuing message will be as in figure 8 below:")]),t._v(" "),o("p",[o("img",{attrs:{src:a(470),alt:"valid data message on goodtables.io"}}),o("br"),t._v(" "),o("em",[t._v("Figure 3: valid data message on "),o("a",{attrs:{href:"http://goodtables.io",target:"_blank",rel:"noopener noreferrer"}},[t._v("goodtables.io"),o("OutboundLink")],1),t._v(".")])]),t._v(" "),o("p",[t._v("Improving data quality is an iterative process that should involve data publishers and maintainers. Tools such as "),o("a",{attrs:{href:"https://try.goodtables.io",target:"_blank",rel:"noopener noreferrer"}},[t._v("try.goodtables.io"),o("OutboundLink")],1),t._v(" allow you to focus on complex errors like if the presented data is correct, instead of wasting time with simple (but very common) errors like incorrect date formats.")]),t._v(" "),o("p",[o("strong",[t._v("Validating tabular data with a schema")])]),t._v(" "),o("p",[t._v("A data schema contains information on the structure of your tabular data. Providing a data schema as part of the validation process on "),o("a",{attrs:{href:"https://try.goodtables.io",target:"_blank",rel:"noopener noreferrer"}},[t._v("try.goodtables.io"),o("OutboundLink")],1),t._v(" makes it possible to check your dataset for content errors. For example, a schema contains information on fields and their assigned data types, making it possible to highlight misplaced data i.e. text in an amounts column where numeric data is expected. If you haven’t yet, learn how to create a data schema for your data collection before continuing with this section.")]),t._v(" "),o("p",[t._v("To test how this works, you can use:")]),t._v(" "),o("ul",[o("li",[t._v("any of the data packages from "),o("a",{attrs:{href:"https://github.com/frictionlessdata/example-data-packages",target:"_blank",rel:"noopener noreferrer"}},[t._v("this Data Package collection on GitHub"),o("OutboundLink")],1),t._v(", which comprises of example data packages curated by the Frictionless Data team or")]),t._v(" "),o("li",[o("a",{attrs:{href:"http://datahub.io/core/",target:"_blank",rel:"noopener noreferrer"}},[t._v("any of the Core Data Packages on DataHub"),o("OutboundLink")],1),t._v(". The Core Data project provides essential data for data wranglers and data science community. Read more about it "),o("a",{attrs:{href:"https://datahub.io/docs/core-data",target:"_blank",rel:"noopener noreferrer"}},[t._v("here"),o("OutboundLink")],1),t._v(".")])]),t._v(" "),o("p",[t._v("In any given Data Package, the "),o("em",[t._v("datapackage.json")]),t._v(" file contains the schema and the data folder contains tabular data to be validated against the schema.")]),t._v(" "),o("p",[t._v("Often, you will find that you may be working in workflows that involve many datasets, which are updated regularly. In cases such as this, one-time validation on "),o("a",{attrs:{href:"http://try.goodtables.io",target:"_blank",rel:"noopener noreferrer"}},[t._v("try.goodtables.io"),o("OutboundLink")],1),t._v(" is probably not the answer. But fear not! Goodtables has the ability to automate the validation process so that errors are checked for continually. Find out more in our continuous and "),o("a",{attrs:{href:"/blog/2018/03/12/automatically-validated-tabular-data"}},[t._v("automated data validation section")]),t._v(".")]),t._v(" "),o("h2",{attrs:{id:"one-time-data-validation-with-goodtables-command-line-tool"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#one-time-data-validation-with-goodtables-command-line-tool"}},[t._v("#")]),t._v(" One-time data validation with goodtables command line tool")]),t._v(" "),o("p",[t._v("The same validations that we’ve done on "),o("a",{attrs:{href:"http://try.goodtables.io",target:"_blank",rel:"noopener noreferrer"}},[t._v("try.goodtables.io"),o("OutboundLink")],1),t._v(", can also be done in your local machine using goodtables. This is especially useful for big datasets, or if your data is not publicly accessible online. However, this is a slightly technical task, which requires basic knowledge of the command line (CLI). If you don’t know how to use the CLI, or are a bit rusty, we recommend you to read the "),o("a",{attrs:{href:"https://tutorial.djangogirls.org/en/intro_to_command_line/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Introduction to the command-line tutorial"),o("OutboundLink")],1),t._v(" before proceeding.")]),t._v(" "),o("p",[t._v("For this section, you will need:")]),t._v(" "),o("ul",[o("li",[t._v("Python, a programming language which the goodtables command-line tool is written in - ["),o("a",{attrs:{href:"https://tutorial.djangogirls.org/en/python_installation/",target:"_blank",rel:"noopener noreferrer"}},[t._v("installation instructions"),o("OutboundLink")],1),t._v("]")]),t._v(" "),o("li",[t._v("PIP, a tool that allows you to install packages written in Python. Installing Python automatically installs PIP, but in case not - [installation instructions]")]),t._v(" "),o("li",[t._v("Basic knowledge on how to use the command-line (see the "),o("a",{attrs:{href:"https://tutorial.djangogirls.org/en/intro_to_command_line/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Introduction to the command-line"),o("OutboundLink")],1),t._v(" if you want to brush up your skills)")])]),t._v(" "),o("p",[t._v("Once Python is set up, open your "),o("strong",[t._v("Terminal")]),t._v(" and install goodtables using the package manager, PIP. The command "),o("code",[t._v("pip install goodtables")]),t._v(".")]),t._v(" "),o("p",[o("img",{attrs:{src:a(471),alt:"installing goodtables command-line tool with pip in Terminal"}}),o("br"),t._v(" "),o("em",[t._v("Figure 4: installing goodtables command-line tool with pip in Terminal.")])]),t._v(" "),o("p",[t._v("To validate a data file, type goodtables followed by the path to your file i.e. "),o("code",[t._v("goodtables path/to/file.csv")]),t._v(". You can pass multiple file paths one after the other, or even the path to a "),o("em",[t._v("datapackage.json")]),t._v(" file.")]),t._v(" "),o("p",[t._v("For our first example, we will download and check "),o("a",{attrs:{href:"https://github.com/frictionlessdata/datapackage-py/blob/master/data/data.csv",target:"_blank",rel:"noopener noreferrer"}},[t._v("this simple location CSV data file"),o("OutboundLink")],1),t._v(" for errors. In the second instance, we will validate this "),o("a",{attrs:{href:"https://raw.githubusercontent.com/frictionlessdata/goodtables-py/bc6470a970aacf65f20a3ddb7f71eb05a2a31c70/data/invalid-on-structure.csv",target:"_blank",rel:"noopener noreferrer"}},[t._v("Department of Data Expenses dataset, that contains errors"),o("OutboundLink")],1),t._v(".")]),t._v(" "),o("p",[o("img",{attrs:{src:a(472),alt:"Validating data files using goodtables in Terminal"}}),o("br"),t._v(" "),o("em",[t._v("Figure 5: Validating data files using goodtables in Terminal.")])]),t._v(" "),o("p",[t._v("You can see the list of options by running "),o("code",[t._v("goodtables --help")]),t._v(". The full documentation, including the list of validation checks that can be run, is available "),o("a",{attrs:{href:"https://github.com/frictionlessdata/goodtables-py",target:"_blank",rel:"noopener noreferrer"}},[t._v("on the goodtables-py repository on GitHub"),o("OutboundLink")],1),t._v(".")]),t._v(" "),o("p",[t._v("Congratulations, you now know how to validate your tabular data using the command-line!")]),t._v(" "),o("p",[t._v("If you regularly update your data or maintain many different datasets, running the validations manually can be time-consuming. The solution is to automate this process, so the data is validated every time it changes, ensuring the errors are caught as soon as possible. Find out how to do it in the “"),o("a",{attrs:{href:"/blog/2018/03/12/automatically-validated-tabular-data"}},[t._v("Automating the validation checks")]),t._v("” section.")])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{468:function(t,e,a){t.exports=a.p+"assets/img/figure-1.ab449321.png"},469:function(t,e,a){t.exports=a.p+"assets/img/figure-2.b334817a.png"},470:function(t,e,a){t.exports=a.p+"assets/img/figure-3.7144591c.png"},471:function(t,e,a){t.exports=a.p+"assets/img/figure-4.478e4974.gif"},472:function(t,e,a){t.exports=a.p+"assets/img/figure-5.e20a138b.gif"},603:function(t,e,a){"use strict";a.r(e);var o=a(29),r=Object(o.a)({},(function(){var t=this,e=t.$createElement,o=t._self._c||e;return o("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[o("p",[t._v("Errors in data are not uncommon. They also often get in the way of quick and timely data analysis for many data users. What if there was a way to quickly identify errors in your data to accelerate the process by which you fix them before sharing your data or using it for analysis?")]),t._v(" "),o("p",[t._v("In this section, we will learn how to carry out one-time data validation using")]),t._v(" "),o("ul",[o("li",[t._v("a free web tool called "),o("a",{attrs:{href:"https://try.goodtables.io",target:"_blank",rel:"noopener noreferrer"}},[t._v("try.goodtables.io"),o("OutboundLink")],1),t._v(",")]),t._v(" "),o("li",[t._v("the goodtables command line tool which you use in your local machine.")])]),t._v(" "),o("p",[t._v("Our working assumption is that you already know what a data schema and a data package are, and how to create them. If not, "),o("RouterLink",{attrs:{to:"/blog/2018/03/07/well-packaged-datasets/"}},[t._v("start here")]),t._v(".")],1),t._v(" "),o("h2",{attrs:{id:"one-time-data-validation-with-try-goodtables-io"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#one-time-data-validation-with-try-goodtables-io"}},[t._v("#")]),t._v(" One-time data validation with "),o("a",{attrs:{href:"http://try.goodtables.io",target:"_blank",rel:"noopener noreferrer"}},[t._v("try.goodtables.io"),o("OutboundLink")],1)]),t._v(" "),o("p",[t._v("Now that you have your data package you may want to check it for errors. We refer to this process as data validation. Raw data is often ‘messy’ or ‘dirty’, which means it contains errors and irrelevant bits that make it inaccurate and difficult to quickly analyse and draw insight from existing datasets. "),o("strong",[t._v("Goodtables")]),t._v(" exists to identify structural and content errors in your tabular data so they can be fixed quickly. As with other tools mentioned in this field guide, goodtables aims to help data publishers improve the quality of their data before the data is shared elsewhere and used for analysis, or archived.")]),t._v(" "),o("p",[o("strong",[t._v("Types of errors identified in the validation process")])]),t._v(" "),o("p",[t._v("Here are some of the errors that "),o("a",{attrs:{href:"http://try.goodtables.io",target:"_blank",rel:"noopener noreferrer"}},[t._v("try.goodtables.io"),o("OutboundLink")],1),t._v(" highlights. A more exhaustive list is available "),o("a",{attrs:{href:"https://github.com/frictionlessdata/goodtables-py#validation",target:"_blank",rel:"noopener noreferrer"}},[t._v("here"),o("OutboundLink")],1),t._v(".")]),t._v(" "),o("table",[o("thead",[o("tr",[o("th",[o("strong",[t._v("Structural Errors")])]),t._v(" "),o("th")])]),t._v(" "),o("tbody",[o("tr",[o("td",[t._v("blank-header")]),t._v(" "),o("td",[t._v("There is a blank header name. All cells in the header row must have a value.")])]),t._v(" "),o("tr",[o("td",[t._v("duplicate-header")]),t._v(" "),o("td",[t._v("There are multiple columns with the same name. All column names must be unique.")])]),t._v(" "),o("tr",[o("td",[t._v("blank-row")]),t._v(" "),o("td",[t._v("Rows must have at least one non-blank cell.")])]),t._v(" "),o("tr",[o("td",[t._v("duplicate-row")]),t._v(" "),o("td",[t._v("Rows can’t be duplicated.")])]),t._v(" "),o("tr",[o("td",[t._v("extra-value")]),t._v(" "),o("td",[t._v("A row has more columns than the header.")])]),t._v(" "),o("tr",[o("td",[t._v("missing-value")]),t._v(" "),o("td",[t._v("A row has less columns than the header.")])]),t._v(" "),o("tr",[o("td",[o("strong",[t._v("Content Errors")])]),t._v(" "),o("td")]),t._v(" "),o("tr",[o("td",[t._v("schema-error")]),t._v(" "),o("td",[t._v("Schema is not valid.")])]),t._v(" "),o("tr",[o("td",[t._v("non-matching-header")]),t._v(" "),o("td",[t._v("The header’s name in the schema is different from what’s in the data.")])]),t._v(" "),o("tr",[o("td",[t._v("extra-header")]),t._v(" "),o("td",[t._v("The data contains a header not defined in the schema.")])]),t._v(" "),o("tr",[o("td",[t._v("missing-header")]),t._v(" "),o("td",[t._v("The data doesn’t contain a header defined in the schema.")])]),t._v(" "),o("tr",[o("td",[t._v("type-or-format-error")]),t._v(" "),o("td",[t._v("The value can’t be cast based on the schema type and format for this field.")])])])]),t._v(" "),o("p",[o("strong",[t._v("Load tabular data for one-time validation")])]),t._v(" "),o("p",[t._v("You can add a dataset for one-time validation on "),o("a",{attrs:{href:"https://try.goodtables.io",target:"_blank",rel:"noopener noreferrer"}},[t._v("try.goodtables.io"),o("OutboundLink")],1),t._v(" in two ways:")]),t._v(" "),o("ul",[o("li",[t._v("If your tabular data is publicly available online, obtain a link to the tabular data you would like to validate and paste it in the "),o("strong",[t._v("{Source}")]),t._v(" section.")]),t._v(" "),o("li",[t._v("Alternatively, Click on the Upload file prompt in the "),o("strong",[t._v("{Source}")]),t._v(" section to load a tabular dataset from your local machine")])]),t._v(" "),o("p",[o("strong",[t._v("Validating data without a schema")])]),t._v(" "),o("p",[t._v("In this section we will illustrate how to check tabular data for structural errors on "),o("a",{attrs:{href:"https://try.goodtables.io/",target:"_blank",rel:"noopener noreferrer"}},[t._v("try.goodtables.io"),o("OutboundLink")],1),t._v(" where a data schema is not available. For this tutorial we will use a "),o("a",{attrs:{href:"https://raw.githubusercontent.com/frictionlessdata/goodtables-py/bc6470a970aacf65f20a3ddb7f71eb05a2a31c70/data/invalid-on-structure.csv",target:"_blank",rel:"noopener noreferrer"}},[t._v("sample CSV file with errors"),o("OutboundLink")],1),t._v(".")]),t._v(" "),o("p",[t._v("Copy and paste the file’s URL to the "),o("strong",[t._v("{Source}")]),t._v(" input. When you click on the "),o("strong",[t._v("{Validate}")]),t._v(" button, "),o("a",{attrs:{href:"https://try.goodtables.io/",target:"_blank",rel:"noopener noreferrer"}},[t._v("try.goodtables.io"),o("OutboundLink")],1),t._v(" presents an exhaustive list of structural errors in your dataset.")]),t._v(" "),o("p",[o("img",{attrs:{src:a(468),alt:"Add dataset link in the Source field, or select the Upload file option"}}),o("br"),t._v(" "),o("em",[t._v("Figure 1: Add dataset link in the Source field, or select the Upload file option.")])]),t._v(" "),o("p",[t._v("If needed, you can disable two types of validation checks:")]),t._v(" "),o("ul",[o("li",[o("p",[t._v("Ignore blank rows"),o("br"),t._v("\nUse this checkbox to indicate whether blank rows should be considered as errors, or simply ignored. Check this option if missing data is a known issue that cannot be fixed immediately i.e. if you are not the owner/publisher of the data.")])]),t._v(" "),o("li",[o("p",[t._v("Ignore duplicate rows"),o("br"),t._v("\nUse this checkbox to indicate whether duplicate rows should be considered as errors, or simply ignored.")])])]),t._v(" "),o("p",[t._v("We will leave all boxes unchecked for our example. On validate, we receive a list of 12 errors as we can see in figure 7 below.")]),t._v(" "),o("p",[o("img",{attrs:{src:a(469),alt:"dataset errors outlined on try.goodtables.io"}}),o("br"),t._v(" "),o("em",[t._v("Figure 2: dataset errors outlined on "),o("a",{attrs:{href:"http://try.goodtables.io",target:"_blank",rel:"noopener noreferrer"}},[t._v("try.goodtables.io"),o("OutboundLink")],1),t._v(".")])]),t._v(" "),o("p",[o("a",{attrs:{href:"https://try.goodtables.io",target:"_blank",rel:"noopener noreferrer"}},[t._v("try.goodtables.io"),o("OutboundLink")],1),t._v(" points us to specific cells containing errors so they can be fixed easily. We can use this list as a guide to fix all errors in our data manually, and run a second validation test to confirm that all issues are resolved. If there no validations could be found, the ensuing message will be as in figure 8 below:")]),t._v(" "),o("p",[o("img",{attrs:{src:a(470),alt:"valid data message on goodtables.io"}}),o("br"),t._v(" "),o("em",[t._v("Figure 3: valid data message on "),o("a",{attrs:{href:"http://goodtables.io",target:"_blank",rel:"noopener noreferrer"}},[t._v("goodtables.io"),o("OutboundLink")],1),t._v(".")])]),t._v(" "),o("p",[t._v("Improving data quality is an iterative process that should involve data publishers and maintainers. Tools such as "),o("a",{attrs:{href:"https://try.goodtables.io",target:"_blank",rel:"noopener noreferrer"}},[t._v("try.goodtables.io"),o("OutboundLink")],1),t._v(" allow you to focus on complex errors like if the presented data is correct, instead of wasting time with simple (but very common) errors like incorrect date formats.")]),t._v(" "),o("p",[o("strong",[t._v("Validating tabular data with a schema")])]),t._v(" "),o("p",[t._v("A data schema contains information on the structure of your tabular data. Providing a data schema as part of the validation process on "),o("a",{attrs:{href:"https://try.goodtables.io",target:"_blank",rel:"noopener noreferrer"}},[t._v("try.goodtables.io"),o("OutboundLink")],1),t._v(" makes it possible to check your dataset for content errors. For example, a schema contains information on fields and their assigned data types, making it possible to highlight misplaced data i.e. text in an amounts column where numeric data is expected. If you haven’t yet, learn how to create a data schema for your data collection before continuing with this section.")]),t._v(" "),o("p",[t._v("To test how this works, you can use:")]),t._v(" "),o("ul",[o("li",[t._v("any of the data packages from "),o("a",{attrs:{href:"https://github.com/frictionlessdata/example-data-packages",target:"_blank",rel:"noopener noreferrer"}},[t._v("this Data Package collection on GitHub"),o("OutboundLink")],1),t._v(", which comprises of example data packages curated by the Frictionless Data team or")]),t._v(" "),o("li",[o("a",{attrs:{href:"http://datahub.io/core/",target:"_blank",rel:"noopener noreferrer"}},[t._v("any of the Core Data Packages on DataHub"),o("OutboundLink")],1),t._v(". The Core Data project provides essential data for data wranglers and data science community. Read more about it "),o("a",{attrs:{href:"https://datahub.io/docs/core-data",target:"_blank",rel:"noopener noreferrer"}},[t._v("here"),o("OutboundLink")],1),t._v(".")])]),t._v(" "),o("p",[t._v("In any given Data Package, the "),o("em",[t._v("datapackage.json")]),t._v(" file contains the schema and the data folder contains tabular data to be validated against the schema.")]),t._v(" "),o("p",[t._v("Often, you will find that you may be working in workflows that involve many datasets, which are updated regularly. In cases such as this, one-time validation on "),o("a",{attrs:{href:"http://try.goodtables.io",target:"_blank",rel:"noopener noreferrer"}},[t._v("try.goodtables.io"),o("OutboundLink")],1),t._v(" is probably not the answer. But fear not! Goodtables has the ability to automate the validation process so that errors are checked for continually. Find out more in our continuous and "),o("a",{attrs:{href:"/blog/2018/03/12/automatically-validated-tabular-data"}},[t._v("automated data validation section")]),t._v(".")]),t._v(" "),o("h2",{attrs:{id:"one-time-data-validation-with-goodtables-command-line-tool"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#one-time-data-validation-with-goodtables-command-line-tool"}},[t._v("#")]),t._v(" One-time data validation with goodtables command line tool")]),t._v(" "),o("p",[t._v("The same validations that we’ve done on "),o("a",{attrs:{href:"http://try.goodtables.io",target:"_blank",rel:"noopener noreferrer"}},[t._v("try.goodtables.io"),o("OutboundLink")],1),t._v(", can also be done in your local machine using goodtables. This is especially useful for big datasets, or if your data is not publicly accessible online. However, this is a slightly technical task, which requires basic knowledge of the command line (CLI). If you don’t know how to use the CLI, or are a bit rusty, we recommend you to read the "),o("a",{attrs:{href:"https://tutorial.djangogirls.org/en/intro_to_command_line/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Introduction to the command-line tutorial"),o("OutboundLink")],1),t._v(" before proceeding.")]),t._v(" "),o("p",[t._v("For this section, you will need:")]),t._v(" "),o("ul",[o("li",[t._v("Python, a programming language which the goodtables command-line tool is written in - ["),o("a",{attrs:{href:"https://tutorial.djangogirls.org/en/python_installation/",target:"_blank",rel:"noopener noreferrer"}},[t._v("installation instructions"),o("OutboundLink")],1),t._v("]")]),t._v(" "),o("li",[t._v("PIP, a tool that allows you to install packages written in Python. Installing Python automatically installs PIP, but in case not - [installation instructions]")]),t._v(" "),o("li",[t._v("Basic knowledge on how to use the command-line (see the "),o("a",{attrs:{href:"https://tutorial.djangogirls.org/en/intro_to_command_line/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Introduction to the command-line"),o("OutboundLink")],1),t._v(" if you want to brush up your skills)")])]),t._v(" "),o("p",[t._v("Once Python is set up, open your "),o("strong",[t._v("Terminal")]),t._v(" and install goodtables using the package manager, PIP. The command "),o("code",[t._v("pip install goodtables")]),t._v(".")]),t._v(" "),o("p",[o("img",{attrs:{src:a(471),alt:"installing goodtables command-line tool with pip in Terminal"}}),o("br"),t._v(" "),o("em",[t._v("Figure 4: installing goodtables command-line tool with pip in Terminal.")])]),t._v(" "),o("p",[t._v("To validate a data file, type goodtables followed by the path to your file i.e. "),o("code",[t._v("goodtables path/to/file.csv")]),t._v(". You can pass multiple file paths one after the other, or even the path to a "),o("em",[t._v("datapackage.json")]),t._v(" file.")]),t._v(" "),o("p",[t._v("For our first example, we will download and check "),o("a",{attrs:{href:"https://github.com/frictionlessdata/datapackage-py/blob/master/data/data.csv",target:"_blank",rel:"noopener noreferrer"}},[t._v("this simple location CSV data file"),o("OutboundLink")],1),t._v(" for errors. In the second instance, we will validate this "),o("a",{attrs:{href:"https://raw.githubusercontent.com/frictionlessdata/goodtables-py/bc6470a970aacf65f20a3ddb7f71eb05a2a31c70/data/invalid-on-structure.csv",target:"_blank",rel:"noopener noreferrer"}},[t._v("Department of Data Expenses dataset, that contains errors"),o("OutboundLink")],1),t._v(".")]),t._v(" "),o("p",[o("img",{attrs:{src:a(472),alt:"Validating data files using goodtables in Terminal"}}),o("br"),t._v(" "),o("em",[t._v("Figure 5: Validating data files using goodtables in Terminal.")])]),t._v(" "),o("p",[t._v("You can see the list of options by running "),o("code",[t._v("goodtables --help")]),t._v(". The full documentation, including the list of validation checks that can be run, is available "),o("a",{attrs:{href:"https://github.com/frictionlessdata/goodtables-py",target:"_blank",rel:"noopener noreferrer"}},[t._v("on the goodtables-py repository on GitHub"),o("OutboundLink")],1),t._v(".")]),t._v(" "),o("p",[t._v("Congratulations, you now know how to validate your tabular data using the command-line!")]),t._v(" "),o("p",[t._v("If you regularly update your data or maintain many different datasets, running the validations manually can be time-consuming. The solution is to automate this process, so the data is validated every time it changes, ensuring the errors are caught as soon as possible. Find out how to do it in the “"),o("a",{attrs:{href:"/blog/2018/03/12/automatically-validated-tabular-data"}},[t._v("Automating the validation checks")]),t._v("” section.")])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/131.1373b305.js b/assets/js/131.5da513f6.js similarity index 98% rename from assets/js/131.1373b305.js rename to assets/js/131.5da513f6.js index 08027c693..1ca889676 100644 --- a/assets/js/131.1373b305.js +++ b/assets/js/131.5da513f6.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[131],{663:function(e,t,a){"use strict";a.r(t);var o=a(29),r=Object(o.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[e._v("Have you noticed some changes to our website? Building upon last year’s "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2020/05/01/announcing-new-website/",target:"_blank",rel:"noopener noreferrer"}},[e._v("website redesign"),a("OutboundLink")],1),e._v(", we have finished making some new changes that we are very excited to tell you about! When we started reviewing our documentation for the "),a("a",{attrs:{href:"http://framework.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Frictionless Python Framework"),a("OutboundLink")],1),e._v(" with the "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/01/13/partnering-with-odi/#so-what-will-be-changing",target:"_blank",rel:"noopener noreferrer"}},[e._v("support of the ODI"),a("OutboundLink")],1),e._v(" back in January, we quickly realised that our main website could benefit from some revamping as well, in order to make it more user-friendly and easier to navigate.")]),e._v(" "),a("p",[e._v("We needed to clarify the relationship between our main project website and the website of all our Frictionless standards, software, and specifications, which all had different layouts and visual styles. The harmonisation process is still ongoing, but we are already very happy with the fact that the new website offers a comprehensive view of all our tools.")]),e._v(" "),a("p",[e._v("It was important for us that people visiting our website for the very first time could quickly understand what Frictionless Data is and how it can be useful to them. We did that through a reorganisation of the homepage and the navigation, which was a bit confusing for some users. We also updated most of the text to better reflect the current status of the project, but also to clearly state what Frictionless Data is. Users should now be able to understand in a glance that Frictionless is composed of two main parts, "),a("a",{attrs:{href:"https://frictionlessdata.io/software/",target:"_blank",rel:"noopener noreferrer"}},[e._v("software"),a("OutboundLink")],1),e._v(" and "),a("a",{attrs:{href:"https://frictionlessdata.io/standards/",target:"_blank",rel:"noopener noreferrer"}},[e._v("standards"),a("OutboundLink")],1),e._v(", which make it more accessible for a broad range of people working with data.")]),e._v(" "),a("img",{attrs:{width:"1337",alt:"Schermata 2021-06-16 alle 15 03 47",src:"https://user-images.githubusercontent.com/74717970/122254960-f2ad6700-cecd-11eb-88dd-a5cd119eec45.png"}}),e._v(" "),a("p",[e._v("Users will also easily find examples of "),a("a",{attrs:{href:"https://staging.frictionlessdata.io/adoption/",target:"_blank",rel:"noopener noreferrer"}},[e._v("projects and collaborations that adopted Frictionless"),a("OutboundLink")],1),e._v(", which can be very useful to better understand the full potential of the Frictionless toolkit.")]),e._v(" "),a("p",[e._v("Our goal with this new website is to give visitors an easier way to learn about Frictionless Data, encourage them to try it out and join our great community. The new architecture should reflect that, and should make it easier for people to understand that Frictionless Data is a progressive open-source framework for building data infrastructure, aiming at making it easier to work with data. Being an open-source project, we welcome and cherish everybody’s contribution. Talking about that, we would love to hear your feedback! Let us know what you think about the new website, if you have any comments or if you see any further improvement we could make. We have created a "),a("a",{attrs:{href:"https://github.com/frictionlessdata/website/issues/198",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub issue"),a("OutboundLink")],1),e._v(" you can use to give us your thoughts.")]),e._v(" "),a("p",[e._v("Thank you!")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[131],{660:function(e,t,a){"use strict";a.r(t);var o=a(29),r=Object(o.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[e._v("Have you noticed some changes to our website? Building upon last year’s "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2020/05/01/announcing-new-website/",target:"_blank",rel:"noopener noreferrer"}},[e._v("website redesign"),a("OutboundLink")],1),e._v(", we have finished making some new changes that we are very excited to tell you about! When we started reviewing our documentation for the "),a("a",{attrs:{href:"http://framework.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Frictionless Python Framework"),a("OutboundLink")],1),e._v(" with the "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/01/13/partnering-with-odi/#so-what-will-be-changing",target:"_blank",rel:"noopener noreferrer"}},[e._v("support of the ODI"),a("OutboundLink")],1),e._v(" back in January, we quickly realised that our main website could benefit from some revamping as well, in order to make it more user-friendly and easier to navigate.")]),e._v(" "),a("p",[e._v("We needed to clarify the relationship between our main project website and the website of all our Frictionless standards, software, and specifications, which all had different layouts and visual styles. The harmonisation process is still ongoing, but we are already very happy with the fact that the new website offers a comprehensive view of all our tools.")]),e._v(" "),a("p",[e._v("It was important for us that people visiting our website for the very first time could quickly understand what Frictionless Data is and how it can be useful to them. We did that through a reorganisation of the homepage and the navigation, which was a bit confusing for some users. We also updated most of the text to better reflect the current status of the project, but also to clearly state what Frictionless Data is. Users should now be able to understand in a glance that Frictionless is composed of two main parts, "),a("a",{attrs:{href:"https://frictionlessdata.io/software/",target:"_blank",rel:"noopener noreferrer"}},[e._v("software"),a("OutboundLink")],1),e._v(" and "),a("a",{attrs:{href:"https://frictionlessdata.io/standards/",target:"_blank",rel:"noopener noreferrer"}},[e._v("standards"),a("OutboundLink")],1),e._v(", which make it more accessible for a broad range of people working with data.")]),e._v(" "),a("img",{attrs:{width:"1337",alt:"Schermata 2021-06-16 alle 15 03 47",src:"https://user-images.githubusercontent.com/74717970/122254960-f2ad6700-cecd-11eb-88dd-a5cd119eec45.png"}}),e._v(" "),a("p",[e._v("Users will also easily find examples of "),a("a",{attrs:{href:"https://staging.frictionlessdata.io/adoption/",target:"_blank",rel:"noopener noreferrer"}},[e._v("projects and collaborations that adopted Frictionless"),a("OutboundLink")],1),e._v(", which can be very useful to better understand the full potential of the Frictionless toolkit.")]),e._v(" "),a("p",[e._v("Our goal with this new website is to give visitors an easier way to learn about Frictionless Data, encourage them to try it out and join our great community. The new architecture should reflect that, and should make it easier for people to understand that Frictionless Data is a progressive open-source framework for building data infrastructure, aiming at making it easier to work with data. Being an open-source project, we welcome and cherish everybody’s contribution. Talking about that, we would love to hear your feedback! Let us know what you think about the new website, if you have any comments or if you see any further improvement we could make. We have created a "),a("a",{attrs:{href:"https://github.com/frictionlessdata/website/issues/198",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub issue"),a("OutboundLink")],1),e._v(" you can use to give us your thoughts.")]),e._v(" "),a("p",[e._v("Thank you!")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/132.eb692f68.js b/assets/js/132.96c23259.js similarity index 97% rename from assets/js/132.eb692f68.js rename to assets/js/132.96c23259.js index 5aa30f965..f6e72dd4b 100644 --- a/assets/js/132.eb692f68.js +++ b/assets/js/132.96c23259.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[132],{666:function(e,t,a){"use strict";a.r(t);var o=a(29),r=Object(o.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[e._v("We are very excited to announce that a new tool has been added to the Frictionless Data toolkit: Livemark. What is that? Livemark is a great tool that allows you to publish data articles very easily, giving you the possibility to see your data live on a working website in a blink of an eye.")]),e._v(" "),a("h2",{attrs:{id:"how-does-it-work"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-does-it-work"}},[e._v("#")]),e._v(" How does it work?")]),e._v(" "),a("p",[e._v("Livemark is a Python library generating a static page that extends Markdown with interactive charts, tables, scripts, and much much more. You can use the Frictionless framework as a "),a("code",[e._v("frictionless")]),e._v(" variable to work with your tabular data in Livemark.")]),e._v(" "),a("p",[e._v("Livemark offers a series of useful features, like automatically generating a table of contents and providing a scroll-to-top button when you scroll down your document. You can also customise the layout of your newly created webpage.")]),e._v(" "),a("h2",{attrs:{id:"how-can-you-get-started"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-can-you-get-started"}},[e._v("#")]),e._v(" How can you get started?")]),e._v(" "),a("p",[e._v("Livemark is very easy to use. We invite you watch this great demo by developer Evgeny Karev:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/NMg-eCbO6L0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),a("p",[e._v(" ")]),e._v(" "),a("p",[e._v("You can also have a look at the "),a("a",{attrs:{href:"https://frictionlessdata.github.io/livemark/",target:"_blank",rel:"noopener noreferrer"}},[e._v("documentation on GitHub"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h2",{attrs:{id:"what-do-you-think"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-do-you-think"}},[e._v("#")]),e._v(" What do you think?")]),e._v(" "),a("p",[e._v("If you create a site using Livemark, please let us know! Frictionless Data is an open source project, therefore we encourage you to give us feedback. Let us know your thoughts, suggestions, or issues by joining us in our community chat on "),a("a",{attrs:{href:"https://discord.com/invite/Sewv6av",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),a("OutboundLink")],1),e._v(" or by opening an issue in the "),a("a",{attrs:{href:"https://github.com/frictionlessdata/livemark",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub repo"),a("OutboundLink")],1),e._v(".")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[132],{663:function(e,t,a){"use strict";a.r(t);var o=a(29),r=Object(o.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[e._v("We are very excited to announce that a new tool has been added to the Frictionless Data toolkit: Livemark. What is that? Livemark is a great tool that allows you to publish data articles very easily, giving you the possibility to see your data live on a working website in a blink of an eye.")]),e._v(" "),a("h2",{attrs:{id:"how-does-it-work"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-does-it-work"}},[e._v("#")]),e._v(" How does it work?")]),e._v(" "),a("p",[e._v("Livemark is a Python library generating a static page that extends Markdown with interactive charts, tables, scripts, and much much more. You can use the Frictionless framework as a "),a("code",[e._v("frictionless")]),e._v(" variable to work with your tabular data in Livemark.")]),e._v(" "),a("p",[e._v("Livemark offers a series of useful features, like automatically generating a table of contents and providing a scroll-to-top button when you scroll down your document. You can also customise the layout of your newly created webpage.")]),e._v(" "),a("h2",{attrs:{id:"how-can-you-get-started"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-can-you-get-started"}},[e._v("#")]),e._v(" How can you get started?")]),e._v(" "),a("p",[e._v("Livemark is very easy to use. We invite you watch this great demo by developer Evgeny Karev:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/NMg-eCbO6L0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),a("p",[e._v(" ")]),e._v(" "),a("p",[e._v("You can also have a look at the "),a("a",{attrs:{href:"https://frictionlessdata.github.io/livemark/",target:"_blank",rel:"noopener noreferrer"}},[e._v("documentation on GitHub"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h2",{attrs:{id:"what-do-you-think"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-do-you-think"}},[e._v("#")]),e._v(" What do you think?")]),e._v(" "),a("p",[e._v("If you create a site using Livemark, please let us know! Frictionless Data is an open source project, therefore we encourage you to give us feedback. Let us know your thoughts, suggestions, or issues by joining us in our community chat on "),a("a",{attrs:{href:"https://discord.com/invite/Sewv6av",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),a("OutboundLink")],1),e._v(" or by opening an issue in the "),a("a",{attrs:{href:"https://github.com/frictionlessdata/livemark",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub repo"),a("OutboundLink")],1),e._v(".")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/134.f2523058.js b/assets/js/134.124cc5c6.js similarity index 98% rename from assets/js/134.f2523058.js rename to assets/js/134.124cc5c6.js index dd44749b2..0ed88b32a 100644 --- a/assets/js/134.f2523058.js +++ b/assets/js/134.124cc5c6.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[134],{667:function(e,t,a){"use strict";a.r(t);var r=a(29),o=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[e._v("At our last Frictionless Data community call on June 24"),a("sup",[e._v("th")]),e._v(" we had Nikhil Vats giving a presentation on Frictionless Package for InterMine. The project was developed during the Frictionless Toolfund 2020-2021.")]),e._v(" "),a("p",[e._v("InterMine is an open source biological data warehouse that creates databases of biological data accessed by sophisticated web query tools. Nikhil worked on the Frictionless Data Package integration, which is extremely helpful for users, as it describes all the fields of their query, specifically: name of field, type of field, class path, field and class ontology link.")]),e._v(" "),a("p",[e._v("You can learn more about the Data Package for InterMine project "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/04/13/data-package-for-intermine/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(". If you would like to dive deeper and discover all about the Frictionless implementation, you can watch Nikhil Vats’ presentation here:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/6Izm_W-hNKI",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),a("h2",{attrs:{id:"other-agenda-items-from-our-hangout"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#other-agenda-items-from-our-hangout"}},[e._v("#")]),e._v(" Other agenda items from our hangout")]),e._v(" "),a("h3",{attrs:{id:"linked-data-support"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#linked-data-support"}},[e._v("#")]),e._v(" Linked data support")]),e._v(" "),a("p",[e._v("Nikhil’s presentation naturally led to a discussion on adding support for linked data and ontologies to Frictionless Data. On several occasions the community has shown interest in extending Frictionless specifications by incorporating standard attributes like ontology terms for improved interoperability. There have also been several discussion about supporting JSON-LD or RDF in the main specifications for improved data linking and querying. Would this help your work? Let us know what you think and if you are potentially interested in participating in this project.")]),e._v(" "),a("h3",{attrs:{id:"new-tool-livemark"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#new-tool-livemark"}},[e._v("#")]),e._v(" New tool: Livemark")]),e._v(" "),a("p",[e._v("We are super happy to share with you the newest entry in the Frictionless Data toolkit: Livemark - a static page generator with built-in tables and charts support (with support for data processing and validation with Frictionless): "),a("a",{attrs:{href:"https://frictionlessdata.github.io/livemark/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://frictionlessdata.github.io/livemark/"),a("OutboundLink")],1)]),e._v(" "),a("p",[e._v("To know more about it, check out "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/06/22/livemark/",target:"_blank",rel:"noopener noreferrer"}},[e._v("our latest blog"),a("OutboundLink")],1),e._v(" (featuring a great demo by developer Evgeny Karev).")]),e._v(" "),a("p",[e._v("As usual, we would love to hear what you think, so please share your thoughts, comments and feedback with us.")]),e._v(" "),a("h1",{attrs:{id:"news-from-the-community"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#news-from-the-community"}},[e._v("#")]),e._v(" News from the community")]),e._v(" "),a("p",[e._v("Michael Amadi from Nimble Learn presented the "),a("a",{attrs:{href:"https://www.opendatablend.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Open Data Blend project"),a("OutboundLink")],1),e._v(" - a set of open data services that aim to make large and complex UK open data easier to analyse. Open Data Blend’s bulk data API is built on the Frictionless Data specs. Keep an eye out for an upcoming blog with more details!")]),e._v(" "),a("p",[e._v("Frictionless contributor Peter Desmet proposed to start a Frictionless Data community on Zenodo. We are currently discussing the best way to do that on "),a("a",{attrs:{href:"https://discord.com/invite/j9DNFNw",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),a("OutboundLink")],1),e._v(" in the "),a("em",[e._v("datasets")]),e._v(" channel. Join us there if you are interested or have ideas!")]),e._v(" "),a("h1",{attrs:{id:"join-us-next-month"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[e._v("#")]),e._v(" Join us next month!")]),e._v(" "),a("p",[e._v("Our next meeting will be on July 29"),a("sup",[e._v("th")]),e._v(". We will hear a presentation from"),a("br"),e._v("\nDave Rowe on Public Libraries Open Data Schema. You can sign up "),a("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here:"),a("OutboundLink")],1)]),e._v(" "),a("p",[e._v("Do you want to share something with the community? Let us know when you sign up!")]),e._v(" "),a("h1",{attrs:{id:"call-recording"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call recording:")]),e._v(" "),a("p",[e._v("On a final note, here is the recording of the full call:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/4Kl_VBdbc5M",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),a("p",[e._v("As usual, you can join us on "),a("a",{attrs:{href:"https://discord.com/invite/j9DNFNw",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),a("OutboundLink")],1),e._v(" or "),a("a",{attrs:{href:"https://twitter.com/frictionlessd8a",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),a("OutboundLink")],1),e._v(" to say hi or ask any questions. See you there!")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[134],{666:function(e,t,a){"use strict";a.r(t);var r=a(29),o=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[e._v("At our last Frictionless Data community call on June 24"),a("sup",[e._v("th")]),e._v(" we had Nikhil Vats giving a presentation on Frictionless Package for InterMine. The project was developed during the Frictionless Toolfund 2020-2021.")]),e._v(" "),a("p",[e._v("InterMine is an open source biological data warehouse that creates databases of biological data accessed by sophisticated web query tools. Nikhil worked on the Frictionless Data Package integration, which is extremely helpful for users, as it describes all the fields of their query, specifically: name of field, type of field, class path, field and class ontology link.")]),e._v(" "),a("p",[e._v("You can learn more about the Data Package for InterMine project "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/04/13/data-package-for-intermine/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(". If you would like to dive deeper and discover all about the Frictionless implementation, you can watch Nikhil Vats’ presentation here:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/6Izm_W-hNKI",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),a("h2",{attrs:{id:"other-agenda-items-from-our-hangout"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#other-agenda-items-from-our-hangout"}},[e._v("#")]),e._v(" Other agenda items from our hangout")]),e._v(" "),a("h3",{attrs:{id:"linked-data-support"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#linked-data-support"}},[e._v("#")]),e._v(" Linked data support")]),e._v(" "),a("p",[e._v("Nikhil’s presentation naturally led to a discussion on adding support for linked data and ontologies to Frictionless Data. On several occasions the community has shown interest in extending Frictionless specifications by incorporating standard attributes like ontology terms for improved interoperability. There have also been several discussion about supporting JSON-LD or RDF in the main specifications for improved data linking and querying. Would this help your work? Let us know what you think and if you are potentially interested in participating in this project.")]),e._v(" "),a("h3",{attrs:{id:"new-tool-livemark"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#new-tool-livemark"}},[e._v("#")]),e._v(" New tool: Livemark")]),e._v(" "),a("p",[e._v("We are super happy to share with you the newest entry in the Frictionless Data toolkit: Livemark - a static page generator with built-in tables and charts support (with support for data processing and validation with Frictionless): "),a("a",{attrs:{href:"https://frictionlessdata.github.io/livemark/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://frictionlessdata.github.io/livemark/"),a("OutboundLink")],1)]),e._v(" "),a("p",[e._v("To know more about it, check out "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/06/22/livemark/",target:"_blank",rel:"noopener noreferrer"}},[e._v("our latest blog"),a("OutboundLink")],1),e._v(" (featuring a great demo by developer Evgeny Karev).")]),e._v(" "),a("p",[e._v("As usual, we would love to hear what you think, so please share your thoughts, comments and feedback with us.")]),e._v(" "),a("h1",{attrs:{id:"news-from-the-community"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#news-from-the-community"}},[e._v("#")]),e._v(" News from the community")]),e._v(" "),a("p",[e._v("Michael Amadi from Nimble Learn presented the "),a("a",{attrs:{href:"https://www.opendatablend.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Open Data Blend project"),a("OutboundLink")],1),e._v(" - a set of open data services that aim to make large and complex UK open data easier to analyse. Open Data Blend’s bulk data API is built on the Frictionless Data specs. Keep an eye out for an upcoming blog with more details!")]),e._v(" "),a("p",[e._v("Frictionless contributor Peter Desmet proposed to start a Frictionless Data community on Zenodo. We are currently discussing the best way to do that on "),a("a",{attrs:{href:"https://discord.com/invite/j9DNFNw",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),a("OutboundLink")],1),e._v(" in the "),a("em",[e._v("datasets")]),e._v(" channel. Join us there if you are interested or have ideas!")]),e._v(" "),a("h1",{attrs:{id:"join-us-next-month"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[e._v("#")]),e._v(" Join us next month!")]),e._v(" "),a("p",[e._v("Our next meeting will be on July 29"),a("sup",[e._v("th")]),e._v(". We will hear a presentation from"),a("br"),e._v("\nDave Rowe on Public Libraries Open Data Schema. You can sign up "),a("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here:"),a("OutboundLink")],1)]),e._v(" "),a("p",[e._v("Do you want to share something with the community? Let us know when you sign up!")]),e._v(" "),a("h1",{attrs:{id:"call-recording"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call recording:")]),e._v(" "),a("p",[e._v("On a final note, here is the recording of the full call:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/4Kl_VBdbc5M",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),a("p",[e._v("As usual, you can join us on "),a("a",{attrs:{href:"https://discord.com/invite/j9DNFNw",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),a("OutboundLink")],1),e._v(" or "),a("a",{attrs:{href:"https://twitter.com/frictionlessd8a",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),a("OutboundLink")],1),e._v(" to say hi or ask any questions. See you there!")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/135.89ac1b60.js b/assets/js/135.ba6e6e56.js similarity index 98% rename from assets/js/135.89ac1b60.js rename to assets/js/135.ba6e6e56.js index 96b59b279..e201b9c15 100644 --- a/assets/js/135.89ac1b60.js +++ b/assets/js/135.ba6e6e56.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[135],{670:function(e,t,o){"use strict";o.r(t);var n=o(29),a=Object(n.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("p",[e._v("To say that I am proud of the "),o("RouterLink",{attrs:{to:"/blog/2020/09/01/hello-fellows-cohort2/"}},[e._v("second cohort of Frictionless Fellows")]),e._v(" is an understatement. Their insight, discussions, and breakthroughs have been a true joy to witness, and I feel so lucky to have had the chance to work and learn with each of them. Over the last 9 months, they not only learned about Frictionless Data tooling, how to make their research more reproducible, and how to advocate for open science, they also gave many presentations (some for the first time in public!), published papers, wrote dissertations, and gained confidence in their coding skills. I know each of them will be a leader in the open space, so keep an eye on them!")],1),e._v(" "),o("p",[e._v("As a final assignment, the Fellows have written blogs reflecting upon their experiences and what they learned during the programme. I’ve copied blurbs from each below, but be sure to click on the links to read more from each Fellow!")]),e._v(" "),o("ul",[o("li",[o("p",[o("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/anne-final-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Endings, Beginnings, and Reflections - by Anne Lee Steele"),o("OutboundLink")],1),o("br"),e._v("\n“What came out of this fellowship, as my colleagues have said time and time again, is much more than I ever could have imagined. Over the course of the past year, I’ve had fascinating debates with my cohort, and learned about how different disciplines unpack complex debates surrounding transparency, openness, and accessibility (as well as many other things). I’ve learned how to engage with the universe of open knowledge, and have even started working on my own related projects! With the support of OKF, I’ve learned how to give presentations in public, and think about data in ways I never had before.”")])]),e._v(" "),o("li",[o("p",[o("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/evelyn-final-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("A done deal - by Evelyn Night"),o("OutboundLink")],1),o("br"),e._v("\n“The fellowship was both exhilarating and educative. I got to engage in Open Science conversations, learned about and used frictionless tools like the Data Package Creator and Goodtables. I also navigated the open data landscape using CLI, Python, and git. I also got to engage in the Frictionless Community calls where software geniuses presented their work and also held Open science-centered conversations. These discussions enhanced my understanding of the Open Science movement and I felt a great honor to be involved in such meetings. I learned so much that the 9 months flew by.”")])]),e._v(" "),o("li",[o("p",[o("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/jacqueline-final-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("A fellowship concludes - by Jacqueline Maasch"),o("OutboundLink")],1),o("br"),e._v("\n“It is hard to believe that my time as a Reproducible Research Fellow is over. I am most grateful for this program giving me a dedicated space in which to learn, a community with which to engage, and language with which to arm myself. I have been exposed to issues in open science that I had never encountered before, and have had the privilege of discussing these issues with people from across the world. I will miss the journal clubs the most!”")])]),e._v(" "),o("li",[o("p",[o("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/katerina-final-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("My experience in the fellows program - a reflection - by Katerina Drakoulaki"),o("OutboundLink")],1),o("br"),e._v("\n“I got into the fellowship just with the hope of getting the opportunity to learn things I didn’t have the opportunity to learn on my own. That is, I did not have specific expectations, I was (and still am) grateful to be in. I feel that all the implicit expectations I might have had are all fulfilled. I got an amazing boost in my digital skills altogether and I know exactly why (no I did not gain a few IQ points). I was in a helpful community and I matured in a way that enabled me to have more of a growth mindset. I also saw other people ‘fail’, as in having their code not working and having to google the solution! I have to say all the readings, the discussions, the tutorials, the Frictionless tools have been amazing, but this shift in my mindset has been the greatest gift the fellowship has given me.”")])])]),e._v(" "),o("p",[e._v("Thank you Fellows! As a bonus, here are the reflections from the first cohort of Fellows: "),o("a",{attrs:{href:"https://blog.okfn.org/2020/06/09/reflecting-on-the-first-cohort-of-frictionless-data-reproducible-research-fellows/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://blog.okfn.org/2020/06/09/reflecting-on-the-first-cohort-of-frictionless-data-reproducible-research-fellows/"),o("OutboundLink")],1)])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[135],{665:function(e,t,o){"use strict";o.r(t);var n=o(29),a=Object(n.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("p",[e._v("To say that I am proud of the "),o("RouterLink",{attrs:{to:"/blog/2020/09/01/hello-fellows-cohort2/"}},[e._v("second cohort of Frictionless Fellows")]),e._v(" is an understatement. Their insight, discussions, and breakthroughs have been a true joy to witness, and I feel so lucky to have had the chance to work and learn with each of them. Over the last 9 months, they not only learned about Frictionless Data tooling, how to make their research more reproducible, and how to advocate for open science, they also gave many presentations (some for the first time in public!), published papers, wrote dissertations, and gained confidence in their coding skills. I know each of them will be a leader in the open space, so keep an eye on them!")],1),e._v(" "),o("p",[e._v("As a final assignment, the Fellows have written blogs reflecting upon their experiences and what they learned during the programme. I’ve copied blurbs from each below, but be sure to click on the links to read more from each Fellow!")]),e._v(" "),o("ul",[o("li",[o("p",[o("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/anne-final-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Endings, Beginnings, and Reflections - by Anne Lee Steele"),o("OutboundLink")],1),o("br"),e._v("\n“What came out of this fellowship, as my colleagues have said time and time again, is much more than I ever could have imagined. Over the course of the past year, I’ve had fascinating debates with my cohort, and learned about how different disciplines unpack complex debates surrounding transparency, openness, and accessibility (as well as many other things). I’ve learned how to engage with the universe of open knowledge, and have even started working on my own related projects! With the support of OKF, I’ve learned how to give presentations in public, and think about data in ways I never had before.”")])]),e._v(" "),o("li",[o("p",[o("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/evelyn-final-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("A done deal - by Evelyn Night"),o("OutboundLink")],1),o("br"),e._v("\n“The fellowship was both exhilarating and educative. I got to engage in Open Science conversations, learned about and used frictionless tools like the Data Package Creator and Goodtables. I also navigated the open data landscape using CLI, Python, and git. I also got to engage in the Frictionless Community calls where software geniuses presented their work and also held Open science-centered conversations. These discussions enhanced my understanding of the Open Science movement and I felt a great honor to be involved in such meetings. I learned so much that the 9 months flew by.”")])]),e._v(" "),o("li",[o("p",[o("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/jacqueline-final-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("A fellowship concludes - by Jacqueline Maasch"),o("OutboundLink")],1),o("br"),e._v("\n“It is hard to believe that my time as a Reproducible Research Fellow is over. I am most grateful for this program giving me a dedicated space in which to learn, a community with which to engage, and language with which to arm myself. I have been exposed to issues in open science that I had never encountered before, and have had the privilege of discussing these issues with people from across the world. I will miss the journal clubs the most!”")])]),e._v(" "),o("li",[o("p",[o("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/katerina-final-blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("My experience in the fellows program - a reflection - by Katerina Drakoulaki"),o("OutboundLink")],1),o("br"),e._v("\n“I got into the fellowship just with the hope of getting the opportunity to learn things I didn’t have the opportunity to learn on my own. That is, I did not have specific expectations, I was (and still am) grateful to be in. I feel that all the implicit expectations I might have had are all fulfilled. I got an amazing boost in my digital skills altogether and I know exactly why (no I did not gain a few IQ points). I was in a helpful community and I matured in a way that enabled me to have more of a growth mindset. I also saw other people ‘fail’, as in having their code not working and having to google the solution! I have to say all the readings, the discussions, the tutorials, the Frictionless tools have been amazing, but this shift in my mindset has been the greatest gift the fellowship has given me.”")])])]),e._v(" "),o("p",[e._v("Thank you Fellows! As a bonus, here are the reflections from the first cohort of Fellows: "),o("a",{attrs:{href:"https://blog.okfn.org/2020/06/09/reflecting-on-the-first-cohort-of-frictionless-data-reproducible-research-fellows/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://blog.okfn.org/2020/06/09/reflecting-on-the-first-cohort-of-frictionless-data-reproducible-research-fellows/"),o("OutboundLink")],1)])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/137.aa63e6f2.js b/assets/js/137.9854a8e5.js similarity index 98% rename from assets/js/137.aa63e6f2.js rename to assets/js/137.9854a8e5.js index ca71bd5b8..ec560ace5 100644 --- a/assets/js/137.aa63e6f2.js +++ b/assets/js/137.9854a8e5.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[137],{669:function(e,t,o){"use strict";o.r(t);var r=o(29),a=Object(r.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("p",[e._v("Are you looking for a way to automate the validation workflows of your datasets? Look no further, Frictionless Repository is here!")]),e._v(" "),o("p",[e._v("We are very excited to announce that a new tool has been added to the Frictionless Data toolkit: Frictionless Repository. This is a Github Action allowing the continuous data validation of your repository and it will ensure the quality of your data by reporting any problems you might have with your datasets in no time.")]),e._v(" "),o("h2",{attrs:{id:"how-does-it-work"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#how-does-it-work"}},[e._v("#")]),e._v(" How does it work?")]),e._v(" "),o("p",[e._v("Every time you add or update any tabular data file in your repository, Frictionless Repository runs a validation. Missing header? Data type mismatch? You will get a neat, visual, human-readable validation report straight away, which will show any problems your data may have. The report lets you spot immediately where the error occurred, making it extremely easy to correct it. You can even get a Markdown Badge to display in your repository to show that your data is valid.")]),e._v(" "),o("p",[e._v("Frictionless Repository only requires a simple installation. It is completely serverless, and it doesn’t rely on any third-party hardware except for the Github infrastructure.")]),e._v(" "),o("h2",{attrs:{id:"let-s-go"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#let-s-go"}},[e._v("#")]),e._v(" Let’s go!")]),e._v(" "),o("p",[e._v("Before you get started, have a look at developer Evgeny Karev’s demo:")]),e._v(" "),o("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/kXA4hmuF57c",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),o("p",[e._v(" ")]),e._v(" "),o("p",[e._v("We also encourage you to check out the dedicated "),o("a",{attrs:{href:"https://repository.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("documentation website"),o("OutboundLink")],1),e._v(", to get more detailed information.")]),e._v(" "),o("h2",{attrs:{id:"what-do-you-think"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#what-do-you-think"}},[e._v("#")]),e._v(" What do you think?")]),e._v(" "),o("p",[e._v("If you use Frictionless Repository, please let us know! Frictionless Data is an open source project, therefore we encourage you to give us feedback. Let us know your thoughts, suggestions, or issues by joining us in our community chat on "),o("a",{attrs:{href:"https://discord.com/invite/Sewv6av",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),o("OutboundLink")],1),e._v(" or by opening an issue in the "),o("a",{attrs:{href:"https://github.com/frictionlessdata/repository",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub repo"),o("OutboundLink")],1),e._v(".")])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[137],{667:function(e,t,o){"use strict";o.r(t);var r=o(29),a=Object(r.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("p",[e._v("Are you looking for a way to automate the validation workflows of your datasets? Look no further, Frictionless Repository is here!")]),e._v(" "),o("p",[e._v("We are very excited to announce that a new tool has been added to the Frictionless Data toolkit: Frictionless Repository. This is a Github Action allowing the continuous data validation of your repository and it will ensure the quality of your data by reporting any problems you might have with your datasets in no time.")]),e._v(" "),o("h2",{attrs:{id:"how-does-it-work"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#how-does-it-work"}},[e._v("#")]),e._v(" How does it work?")]),e._v(" "),o("p",[e._v("Every time you add or update any tabular data file in your repository, Frictionless Repository runs a validation. Missing header? Data type mismatch? You will get a neat, visual, human-readable validation report straight away, which will show any problems your data may have. The report lets you spot immediately where the error occurred, making it extremely easy to correct it. You can even get a Markdown Badge to display in your repository to show that your data is valid.")]),e._v(" "),o("p",[e._v("Frictionless Repository only requires a simple installation. It is completely serverless, and it doesn’t rely on any third-party hardware except for the Github infrastructure.")]),e._v(" "),o("h2",{attrs:{id:"let-s-go"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#let-s-go"}},[e._v("#")]),e._v(" Let’s go!")]),e._v(" "),o("p",[e._v("Before you get started, have a look at developer Evgeny Karev’s demo:")]),e._v(" "),o("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/kXA4hmuF57c",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),o("p",[e._v(" ")]),e._v(" "),o("p",[e._v("We also encourage you to check out the dedicated "),o("a",{attrs:{href:"https://repository.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("documentation website"),o("OutboundLink")],1),e._v(", to get more detailed information.")]),e._v(" "),o("h2",{attrs:{id:"what-do-you-think"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#what-do-you-think"}},[e._v("#")]),e._v(" What do you think?")]),e._v(" "),o("p",[e._v("If you use Frictionless Repository, please let us know! Frictionless Data is an open source project, therefore we encourage you to give us feedback. Let us know your thoughts, suggestions, or issues by joining us in our community chat on "),o("a",{attrs:{href:"https://discord.com/invite/Sewv6av",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),o("OutboundLink")],1),e._v(" or by opening an issue in the "),o("a",{attrs:{href:"https://github.com/frictionlessdata/repository",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub repo"),o("OutboundLink")],1),e._v(".")])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/138.90a2498b.js b/assets/js/138.40f3a2e2.js similarity index 99% rename from assets/js/138.90a2498b.js rename to assets/js/138.40f3a2e2.js index c12d2376b..af98e7662 100644 --- a/assets/js/138.90a2498b.js +++ b/assets/js/138.40f3a2e2.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[138],{671:function(e,t,o){"use strict";o.r(t);var a=o(29),r=Object(a.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("p",[o("em",[e._v("The Frictionless Data Reproducible Research "),o("a",{attrs:{href:"http://fellows.frictionlessdata.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("Fellows Program"),o("OutboundLink")],1),e._v(", supported by the Sloan Foundation, aims to train graduate students, postdoctoral scholars, and early career researchers how to become champions for open, reproducible research using Frictionless Data tools and approaches in their field.")])]),e._v(" "),o("h3",{attrs:{id:"apply-today-to-join-the-third-cohort-of-frictionless-data-fellows"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#apply-today-to-join-the-third-cohort-of-frictionless-data-fellows"}},[e._v("#")]),e._v(" Apply today to join the Third Cohort of Frictionless Data Fellows!")]),e._v(" "),o("p",[e._v("Fellows will learn about Frictionless Data, including how to use Frictionless tools in their domains to improve reproducible research workflows, and how to advocate for open science. Working closely with the Frictionless Data team, Fellows will lead training workshops at conferences, host events at universities and in labs, and write blogs and other communications content. In addition to mentorship, we are providing Fellows with stipends of $5,000 to support their work and time during the nine-month long Fellowship. We welcome applications using this "),o("a",{attrs:{href:"https://forms.gle/3t9EoHKWYUnBdzHF8",target:"_blank",rel:"noopener noreferrer"}},[e._v("form"),o("OutboundLink")],1),e._v(" from 4th August until 31st August 2021, with the Fellowship starting in October. We value diversity and encourage applicants from communities that are under-represented in science and technology, people of colour, women, people with disabilities, and LGBTI+ individuals. Questions? Please read the "),o("a",{attrs:{href:"https://fellows.frictionlessdata.io/apply",target:"_blank",rel:"noopener noreferrer"}},[e._v("FAQ"),o("OutboundLink")],1),e._v(", and feel free to email us ("),o("a",{attrs:{href:"mailto:frictionlessdata@okfn.org"}},[e._v("frictionlessdata@okfn.org")]),e._v(") if your question is not answered in the FAQ.")]),e._v(" "),o("h3",{attrs:{id:"frictionless-data-for-reproducible-research"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#frictionless-data-for-reproducible-research"}},[e._v("#")]),e._v(" Frictionless Data for Reproducible Research")]),e._v(" "),o("p",[e._v("The Fellowship is part of the "),o("a",{attrs:{href:"http://frictionlessdata.io/adoption/#frictionless-data-for-reproducible-research/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Frictionless Data for Reproducible Research"),o("OutboundLink")],1),e._v(" project at "),o("a",{attrs:{href:"https://okfn.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Open Knowledge Foundation"),o("OutboundLink")],1),e._v(", and is the third iteration. Frictionless Data aims to reduce the friction often found when working with data, such as when data is poorly structured, incomplete, hard to find, or is archived in difficult to use formats. This project, funded by the Sloan Foundation and the Open Knowledge Foundation, applies our work to data-driven research disciplines, in order to help researchers and the research community resolve data workflow issues. At its core, Frictionless Data is a set of specifications for data and metadata interoperability, accompanied by a collection of software libraries that implement these specifications, and a range of best practices for data management. The core specification, the Data Package, is a simple and practical “container” for data and metadata. The Frictionless Data approach aims to address identified needs for improving data-driven research such as generalized, standard metadata formats, interoperable data, and open-source tooling for data validation.")]),e._v(" "),o("h3",{attrs:{id:"fellowship-program"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#fellowship-program"}},[e._v("#")]),e._v(" Fellowship program")]),e._v(" "),o("p",[e._v("During the Fellowship, our team will be on hand to work closely with you as you complete the work. We will help you learn Frictionless Data tooling and software, and provide you with resources to help you create workshops and presentations. Also, we will announce Fellows on the project website and will be publishing your blogs and workshops slides within our network channels. We will provide mentorship on how to work on an Open project, and will work with you to achieve your Fellowship goals. You can read more about the first two cohorts of the Programme in the Fellows blog: "),o("a",{attrs:{href:"http://fellows.frictionlessdata.io/blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://fellows.frictionlessdata.io/blog/"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("h3",{attrs:{id:"how-to-apply"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#how-to-apply"}},[e._v("#")]),e._v(" How to apply")]),e._v(" "),o("p",[e._v("The Fund is open to early career research individuals, such as graduate students and postdoctoral scholars, anywhere in the world, and in any scientific discipline. Successful applicants will be enthusiastic about reproducible research and open science, have some experience with communications, writing, or giving presentations, and have some technical skills (basic experience with Python, R, or Matlab for example), but do not need to be technically proficient. If you are interested, but do not have all of the qualifications, we still encourage you to "),o("a",{attrs:{href:"https://forms.gle/3t9EoHKWYUnBdzHF8",target:"_blank",rel:"noopener noreferrer"}},[e._v("apply"),o("OutboundLink")],1),e._v(". We welcome applications using this "),o("a",{attrs:{href:"https://forms.gle/3t9EoHKWYUnBdzHF8",target:"_blank",rel:"noopener noreferrer"}},[e._v("form"),o("OutboundLink")],1),e._v(" from 4th August until 31st August 2021.")]),e._v(" "),o("p",[e._v("If you have any questions, please email the team at "),o("a",{attrs:{href:"mailto:frictionlessdata@okfn.org"}},[e._v("frictionlessdata@okfn.org")]),e._v(" and check out the "),o("a",{attrs:{href:"https://fellows.frictionlessdata.io/apply",target:"_blank",rel:"noopener noreferrer"}},[e._v("Fellows FAQ section"),o("OutboundLink")],1),e._v(". "),o("a",{attrs:{href:"https://forms.gle/3t9EoHKWYUnBdzHF8",target:"_blank",rel:"noopener noreferrer"}},[e._v("Apply"),o("OutboundLink")],1),e._v(" soon, and share with your networks!")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[138],{669:function(e,t,o){"use strict";o.r(t);var a=o(29),r=Object(a.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("p",[o("em",[e._v("The Frictionless Data Reproducible Research "),o("a",{attrs:{href:"http://fellows.frictionlessdata.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("Fellows Program"),o("OutboundLink")],1),e._v(", supported by the Sloan Foundation, aims to train graduate students, postdoctoral scholars, and early career researchers how to become champions for open, reproducible research using Frictionless Data tools and approaches in their field.")])]),e._v(" "),o("h3",{attrs:{id:"apply-today-to-join-the-third-cohort-of-frictionless-data-fellows"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#apply-today-to-join-the-third-cohort-of-frictionless-data-fellows"}},[e._v("#")]),e._v(" Apply today to join the Third Cohort of Frictionless Data Fellows!")]),e._v(" "),o("p",[e._v("Fellows will learn about Frictionless Data, including how to use Frictionless tools in their domains to improve reproducible research workflows, and how to advocate for open science. Working closely with the Frictionless Data team, Fellows will lead training workshops at conferences, host events at universities and in labs, and write blogs and other communications content. In addition to mentorship, we are providing Fellows with stipends of $5,000 to support their work and time during the nine-month long Fellowship. We welcome applications using this "),o("a",{attrs:{href:"https://forms.gle/3t9EoHKWYUnBdzHF8",target:"_blank",rel:"noopener noreferrer"}},[e._v("form"),o("OutboundLink")],1),e._v(" from 4th August until 31st August 2021, with the Fellowship starting in October. We value diversity and encourage applicants from communities that are under-represented in science and technology, people of colour, women, people with disabilities, and LGBTI+ individuals. Questions? Please read the "),o("a",{attrs:{href:"https://fellows.frictionlessdata.io/apply",target:"_blank",rel:"noopener noreferrer"}},[e._v("FAQ"),o("OutboundLink")],1),e._v(", and feel free to email us ("),o("a",{attrs:{href:"mailto:frictionlessdata@okfn.org"}},[e._v("frictionlessdata@okfn.org")]),e._v(") if your question is not answered in the FAQ.")]),e._v(" "),o("h3",{attrs:{id:"frictionless-data-for-reproducible-research"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#frictionless-data-for-reproducible-research"}},[e._v("#")]),e._v(" Frictionless Data for Reproducible Research")]),e._v(" "),o("p",[e._v("The Fellowship is part of the "),o("a",{attrs:{href:"http://frictionlessdata.io/adoption/#frictionless-data-for-reproducible-research/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Frictionless Data for Reproducible Research"),o("OutboundLink")],1),e._v(" project at "),o("a",{attrs:{href:"https://okfn.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Open Knowledge Foundation"),o("OutboundLink")],1),e._v(", and is the third iteration. Frictionless Data aims to reduce the friction often found when working with data, such as when data is poorly structured, incomplete, hard to find, or is archived in difficult to use formats. This project, funded by the Sloan Foundation and the Open Knowledge Foundation, applies our work to data-driven research disciplines, in order to help researchers and the research community resolve data workflow issues. At its core, Frictionless Data is a set of specifications for data and metadata interoperability, accompanied by a collection of software libraries that implement these specifications, and a range of best practices for data management. The core specification, the Data Package, is a simple and practical “container” for data and metadata. The Frictionless Data approach aims to address identified needs for improving data-driven research such as generalized, standard metadata formats, interoperable data, and open-source tooling for data validation.")]),e._v(" "),o("h3",{attrs:{id:"fellowship-program"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#fellowship-program"}},[e._v("#")]),e._v(" Fellowship program")]),e._v(" "),o("p",[e._v("During the Fellowship, our team will be on hand to work closely with you as you complete the work. We will help you learn Frictionless Data tooling and software, and provide you with resources to help you create workshops and presentations. Also, we will announce Fellows on the project website and will be publishing your blogs and workshops slides within our network channels. We will provide mentorship on how to work on an Open project, and will work with you to achieve your Fellowship goals. You can read more about the first two cohorts of the Programme in the Fellows blog: "),o("a",{attrs:{href:"http://fellows.frictionlessdata.io/blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://fellows.frictionlessdata.io/blog/"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("h3",{attrs:{id:"how-to-apply"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#how-to-apply"}},[e._v("#")]),e._v(" How to apply")]),e._v(" "),o("p",[e._v("The Fund is open to early career research individuals, such as graduate students and postdoctoral scholars, anywhere in the world, and in any scientific discipline. Successful applicants will be enthusiastic about reproducible research and open science, have some experience with communications, writing, or giving presentations, and have some technical skills (basic experience with Python, R, or Matlab for example), but do not need to be technically proficient. If you are interested, but do not have all of the qualifications, we still encourage you to "),o("a",{attrs:{href:"https://forms.gle/3t9EoHKWYUnBdzHF8",target:"_blank",rel:"noopener noreferrer"}},[e._v("apply"),o("OutboundLink")],1),e._v(". We welcome applications using this "),o("a",{attrs:{href:"https://forms.gle/3t9EoHKWYUnBdzHF8",target:"_blank",rel:"noopener noreferrer"}},[e._v("form"),o("OutboundLink")],1),e._v(" from 4th August until 31st August 2021.")]),e._v(" "),o("p",[e._v("If you have any questions, please email the team at "),o("a",{attrs:{href:"mailto:frictionlessdata@okfn.org"}},[e._v("frictionlessdata@okfn.org")]),e._v(" and check out the "),o("a",{attrs:{href:"https://fellows.frictionlessdata.io/apply",target:"_blank",rel:"noopener noreferrer"}},[e._v("Fellows FAQ section"),o("OutboundLink")],1),e._v(". "),o("a",{attrs:{href:"https://forms.gle/3t9EoHKWYUnBdzHF8",target:"_blank",rel:"noopener noreferrer"}},[e._v("Apply"),o("OutboundLink")],1),e._v(" soon, and share with your networks!")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/139.5863c0da.js b/assets/js/139.0039bad6.js similarity index 99% rename from assets/js/139.5863c0da.js rename to assets/js/139.0039bad6.js index a62123e28..5b975f644 100644 --- a/assets/js/139.5863c0da.js +++ b/assets/js/139.0039bad6.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[139],{672:function(e,t,a){"use strict";a.r(t);var o=a(29),r=Object(o.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[e._v("We are halfway through 2021 (aka 2020 part two), and we thought it would be a good moment to look back at all that has happened in the Frictionless Community over these past 6 months. We’re so grateful for everyone in the community - thanks for your contributions, discussions, and participation! A big part of the community is our monthly call, so in case you’ve missed any of the community calls of 2021, here is a quick recap.")]),e._v(" "),a("p",[e._v("We started the year with a great presentation by Carles Pina i Estany. Carles is a very active member of our community and also a tool-fund grantee. He presented his tool-fund project: "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/01/18/schema-collaboration/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Frictionless schema-collaboration"),a("OutboundLink")],1),e._v(". What is that? It’s a system that uses Data Package Creator to enable data managers and researchers to create and share dataset schemas, edit them, post messages and export the schemas in different formats (like text, Markdown or PDF). It is a very useful tool because before researchers communicated with data managers via email for each data package they were publishing. Frictionless schema-collaboration makes it easy and faster to communicate.")]),e._v(" "),a("p",[e._v("February was a great month, we started "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/02/26/halfway-odi/#what-are-the-next-steps",target:"_blank",rel:"noopener noreferrer"}},[e._v("improving the documentation of the Frictionless Framework website"),a("OutboundLink")],1),e._v(" together with the community and we had a brilliant code demonstration of the newly-released Frictionless Python Framework by senior developer Evgeny Karev at the monthly community call. How great was that? That particular call broke the record of attendance, it was fantastic to have so many of you there! And in case you were not there, we recorded Evgeny’s demo and you can watch it on "),a("a",{attrs:{href:"LINK"}},[e._v("YouTube")]),e._v(".")]),e._v(" "),a("p",[e._v("March marked one year since the beginning of the Covid-19 pandemic in Europe and the Americas. It seemed fair to dedicate that community call to Covid-19 data, so we had Thorben Westerhuys presenting his project on Frictionless vaccination data. Thorben developed "),a("a",{attrs:{href:"https://github.com/n0rdlicht/rki-vaccination-scraper",target:"_blank",rel:"noopener noreferrer"}},[e._v("a spatiotemporal tracker for state level covid vaccination data in Germany"),a("OutboundLink")],1),e._v(" to solve the problems linked to governments publishing vaccination data not parsed for machines. His vaccination scraper takes that data, reformats it and makes it available to everyone in a structured, more machine readable form.")]),e._v(" "),a("p",[e._v("At the end of April we had an interactive session with the "),a("a",{attrs:{href:"https://fellows.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Frictionless Fellows"),a("OutboundLink")],1),e._v(". Daniel Alcalá López, Kate Bowie, Katerina Drakoulaki, Anne Lee, Jacqueline Maasch, Evelyn Night and Samantha Wilairat took some time to tell the community about their journey through Open Science. They also shared with the community some of the things they learnt during their 9-months fellowship and how they plan to integrate them to their work. This cohort of fellows made us very proud, they were a true joy to work with. Keep an eye on them all, they will be leaders in Open Science! And in case you are interested in becoming a Frictionless Fellow, we are currently recruiting the 3rd cohort. More info on the programme and how to apply "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/08/02/apply-fellows/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("During the April call we also got a short presentation on instant APIs for small Frictionless Data-powered apps by Oleg Lavrovsky. Oleg is also an active member of our community, you have probably already met him at many of our calls.")]),e._v(" "),a("p",[e._v("May started gloriously with csv,conf, where we had two talks on Frictionless Data. One was by the Fellows, and the other one was by Simon Tyrrell. On top of the one at csv,conf, Simon gave a presentation together with Xingdong Bian about their "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/03/05/frictionless-data-for-wheat",target:"_blank",rel:"noopener noreferrer"}},[e._v("Frictionless Data for Wheat project"),a("OutboundLink")],1),e._v(" at the monthly call. Simon and Xingdong are researchers at the Earlham Institute, and they are both tool-fund grantees, like Carles. They presented their project to the community and explained how they use Frictionless Data to make their large amount of data available, usable and interoperable for everyone.")]),e._v(" "),a("p",[e._v("The last call we had was in June, also featuring a tool-fund grantee: Nikhil Vats. Nikhil presented the "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/04/13/data-package-for-intermine/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Frictionless Data Package integration he developed for InterMine"),a("OutboundLink")],1),e._v(", an open source biological data warehouse that creates databases of biological data accessed by sophisticated web query tools. Nikhil’s integration makes users’ queries more useful, as it describes all the fields of their query, specifically: name of field, type of field, class path, field and class ontology link."),a("br"),e._v("\nIn the same call, Michael Amadi announced the release of Data Blend, a great project using Frictionless Data. If you find it cool and would like to know more about it, read "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/07/12/open-data-blend/",target:"_blank",rel:"noopener noreferrer"}},[e._v("this case-study"),a("OutboundLink")],1),e._v(", but also make sure you don’t miss the October community call, because we will be hearing a presentation on it!")]),e._v(" "),a("p",[e._v("July’s call was canceled last minute, but it has been rescheduled to August 12th, and it’s going to be extremely interesting! In case you did not sign up yet, please do "),a("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(". We will be hearing from Dave Rowe (aka "),a("a",{attrs:{href:"https://www.librarieshacked.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Libraries Hacked"),a("OutboundLink")],1),e._v(") and how he uses Frictionless Data specs and standards for public libraries open data."),a("br"),e._v("\nThis first 2021 semester was also great because we "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/06/16/new-changes-to-the-website/",target:"_blank",rel:"noopener noreferrer"}},[e._v("completed our website redesign"),a("OutboundLink")],1),e._v(" and we added two great tools to the Frictionless Data toolkit: "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/06/22/livemark",target:"_blank",rel:"noopener noreferrer"}},[e._v("Livemark"),a("OutboundLink")],1),e._v(" and "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/07/21/frictionless-repository/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Frictionless Repository"),a("OutboundLink")],1),e._v(". These tools get better and better everyday thanks to the precious contributions of the community. Thanks to you all, for making the Frictionless Data project so great. Nothing could have happened without you!")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[139],{670:function(e,t,a){"use strict";a.r(t);var o=a(29),r=Object(o.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[e._v("We are halfway through 2021 (aka 2020 part two), and we thought it would be a good moment to look back at all that has happened in the Frictionless Community over these past 6 months. We’re so grateful for everyone in the community - thanks for your contributions, discussions, and participation! A big part of the community is our monthly call, so in case you’ve missed any of the community calls of 2021, here is a quick recap.")]),e._v(" "),a("p",[e._v("We started the year with a great presentation by Carles Pina i Estany. Carles is a very active member of our community and also a tool-fund grantee. He presented his tool-fund project: "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/01/18/schema-collaboration/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Frictionless schema-collaboration"),a("OutboundLink")],1),e._v(". What is that? It’s a system that uses Data Package Creator to enable data managers and researchers to create and share dataset schemas, edit them, post messages and export the schemas in different formats (like text, Markdown or PDF). It is a very useful tool because before researchers communicated with data managers via email for each data package they were publishing. Frictionless schema-collaboration makes it easy and faster to communicate.")]),e._v(" "),a("p",[e._v("February was a great month, we started "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/02/26/halfway-odi/#what-are-the-next-steps",target:"_blank",rel:"noopener noreferrer"}},[e._v("improving the documentation of the Frictionless Framework website"),a("OutboundLink")],1),e._v(" together with the community and we had a brilliant code demonstration of the newly-released Frictionless Python Framework by senior developer Evgeny Karev at the monthly community call. How great was that? That particular call broke the record of attendance, it was fantastic to have so many of you there! And in case you were not there, we recorded Evgeny’s demo and you can watch it on "),a("a",{attrs:{href:"LINK"}},[e._v("YouTube")]),e._v(".")]),e._v(" "),a("p",[e._v("March marked one year since the beginning of the Covid-19 pandemic in Europe and the Americas. It seemed fair to dedicate that community call to Covid-19 data, so we had Thorben Westerhuys presenting his project on Frictionless vaccination data. Thorben developed "),a("a",{attrs:{href:"https://github.com/n0rdlicht/rki-vaccination-scraper",target:"_blank",rel:"noopener noreferrer"}},[e._v("a spatiotemporal tracker for state level covid vaccination data in Germany"),a("OutboundLink")],1),e._v(" to solve the problems linked to governments publishing vaccination data not parsed for machines. His vaccination scraper takes that data, reformats it and makes it available to everyone in a structured, more machine readable form.")]),e._v(" "),a("p",[e._v("At the end of April we had an interactive session with the "),a("a",{attrs:{href:"https://fellows.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Frictionless Fellows"),a("OutboundLink")],1),e._v(". Daniel Alcalá López, Kate Bowie, Katerina Drakoulaki, Anne Lee, Jacqueline Maasch, Evelyn Night and Samantha Wilairat took some time to tell the community about their journey through Open Science. They also shared with the community some of the things they learnt during their 9-months fellowship and how they plan to integrate them to their work. This cohort of fellows made us very proud, they were a true joy to work with. Keep an eye on them all, they will be leaders in Open Science! And in case you are interested in becoming a Frictionless Fellow, we are currently recruiting the 3rd cohort. More info on the programme and how to apply "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/08/02/apply-fellows/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("During the April call we also got a short presentation on instant APIs for small Frictionless Data-powered apps by Oleg Lavrovsky. Oleg is also an active member of our community, you have probably already met him at many of our calls.")]),e._v(" "),a("p",[e._v("May started gloriously with csv,conf, where we had two talks on Frictionless Data. One was by the Fellows, and the other one was by Simon Tyrrell. On top of the one at csv,conf, Simon gave a presentation together with Xingdong Bian about their "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/03/05/frictionless-data-for-wheat",target:"_blank",rel:"noopener noreferrer"}},[e._v("Frictionless Data for Wheat project"),a("OutboundLink")],1),e._v(" at the monthly call. Simon and Xingdong are researchers at the Earlham Institute, and they are both tool-fund grantees, like Carles. They presented their project to the community and explained how they use Frictionless Data to make their large amount of data available, usable and interoperable for everyone.")]),e._v(" "),a("p",[e._v("The last call we had was in June, also featuring a tool-fund grantee: Nikhil Vats. Nikhil presented the "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/04/13/data-package-for-intermine/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Frictionless Data Package integration he developed for InterMine"),a("OutboundLink")],1),e._v(", an open source biological data warehouse that creates databases of biological data accessed by sophisticated web query tools. Nikhil’s integration makes users’ queries more useful, as it describes all the fields of their query, specifically: name of field, type of field, class path, field and class ontology link."),a("br"),e._v("\nIn the same call, Michael Amadi announced the release of Data Blend, a great project using Frictionless Data. If you find it cool and would like to know more about it, read "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/07/12/open-data-blend/",target:"_blank",rel:"noopener noreferrer"}},[e._v("this case-study"),a("OutboundLink")],1),e._v(", but also make sure you don’t miss the October community call, because we will be hearing a presentation on it!")]),e._v(" "),a("p",[e._v("July’s call was canceled last minute, but it has been rescheduled to August 12th, and it’s going to be extremely interesting! In case you did not sign up yet, please do "),a("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(". We will be hearing from Dave Rowe (aka "),a("a",{attrs:{href:"https://www.librarieshacked.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Libraries Hacked"),a("OutboundLink")],1),e._v(") and how he uses Frictionless Data specs and standards for public libraries open data."),a("br"),e._v("\nThis first 2021 semester was also great because we "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/06/16/new-changes-to-the-website/",target:"_blank",rel:"noopener noreferrer"}},[e._v("completed our website redesign"),a("OutboundLink")],1),e._v(" and we added two great tools to the Frictionless Data toolkit: "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/06/22/livemark",target:"_blank",rel:"noopener noreferrer"}},[e._v("Livemark"),a("OutboundLink")],1),e._v(" and "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/07/21/frictionless-repository/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Frictionless Repository"),a("OutboundLink")],1),e._v(". These tools get better and better everyday thanks to the precious contributions of the community. Thanks to you all, for making the Frictionless Data project so great. Nothing could have happened without you!")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/140.5e6ae68a.js b/assets/js/140.08503e80.js similarity index 98% rename from assets/js/140.5e6ae68a.js rename to assets/js/140.08503e80.js index f12a4612a..27bf2ed05 100644 --- a/assets/js/140.5e6ae68a.js +++ b/assets/js/140.08503e80.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[140],{673:function(e,a,t){"use strict";t.r(a);var r=t(29),o=Object(r.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("p",[e._v("What happens to scientific data after it is generated? The answer is complicated - sometimes that data is shared with other researchers, sometimes it is hidden away on a private hard drive. Sharing research data is a key part of open science, the movement to make research more accessible and usable by everyone to drive faster advances in science. A great way to share research data is to upload it to a repository, but simply uploading data is not the final step here. Ideally, the uploaded data will be of high quality - that is, it won’t have errors or missing data, and it will have enough descriptive information that other researchers can also use it! Over the last 6 months, we collaborated with the data repository Dryad to make it easier for researchers to upload their high quality data for sharing.")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://datadryad.org/stash",target:"_blank",rel:"noopener noreferrer"}},[e._v("Dryad"),t("OutboundLink")],1),e._v(" is a community-led data repository that allows researchers to submit data from any field, which not only promotes open science, but also helps researchers comply with open data policies from funders and journals. Because Dryad accepts all kinds of data, they need to curate that data for quality and ensure that the data does not present risk, and have comprehensive metadata to reuse the data. We quickly realized our shared goals, and formed a Pilot collaboration to add Frictionless validation functionality to the Dryad data upload page. Both teams agreed how important it is to give researchers immediate feedback about their data as they are submitting it so they can make edits in that moment, and learn about data best practices.")]),e._v(" "),t("p",[e._v("The outcome of this collaboration is a revamped upload page for the Dryad application. Researchers uploading tabular data (CSV, XLS, XLSX) under 25MB will have the files automatically validated using the Frictionless tool. These checks are based on the built-in validation of Frictionless Framework (read the validation guide "),t("a",{attrs:{href:"https://framework.frictionlessdata.io/docs/guides/validation-guide",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v("), and include checking for data errors such as blank cells, missing headers, or incorrectly formatted data. The Frictionless report will help guide researchers on which issues should be resolved, allowing researchers to edit and re-upload files before submitting their dataset for curation and publication.")]),e._v(" "),t("p",[t("img",{attrs:{src:"https://user-images.githubusercontent.com/74717970/128690898-2095f1c7-060d-4398-ac92-33f65c068c4c.png",alt:"Screen Shot 2021-08-06 at 8 10 41 AM"}}),t("br"),e._v(" "),t("em",[e._v("When a data file is uploaded, researchers can see if the data passed the Tabular Data Checks or if there are any issues. Clicking to “View 1 Issues” shows more details describing the error.")])]),e._v(" "),t("p",[t("img",{attrs:{src:"https://user-images.githubusercontent.com/74717970/128690994-16be9845-59ec-4f3b-9b76-28a163dfa1e3.png",alt:"Screen Shot 2021-08-06 at 8 12 01 AM"}}),t("br"),e._v(" "),t("em",[e._v("This uploaded data file has a blank header. With this information, the researcher can fix the error and re-upload the data.")])]),e._v(" "),t("p",[e._v("This work was funded by the Sloan Foundation as part of the Frictionless Data for Reproducible Research project. This project was truly collaboratory - most of the technical work was completed by contractor Cassiano Reinert Novais dos Santos with supervision and support from the Dryad team: Daniella Lowenberg, Scott Fisher, Ryan Scherle, and the CDL UX team (Rachael Hu and John Kratz); as well as support from the Frictionless team, Evgeny Karev, Lilly Winfree, and Sara Petti. If you have any feedback on the Dryad upload page, please let us know!")])])}),[],!1,null,null,null);a.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[140],{671:function(e,a,t){"use strict";t.r(a);var r=t(29),o=Object(r.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("p",[e._v("What happens to scientific data after it is generated? The answer is complicated - sometimes that data is shared with other researchers, sometimes it is hidden away on a private hard drive. Sharing research data is a key part of open science, the movement to make research more accessible and usable by everyone to drive faster advances in science. A great way to share research data is to upload it to a repository, but simply uploading data is not the final step here. Ideally, the uploaded data will be of high quality - that is, it won’t have errors or missing data, and it will have enough descriptive information that other researchers can also use it! Over the last 6 months, we collaborated with the data repository Dryad to make it easier for researchers to upload their high quality data for sharing.")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://datadryad.org/stash",target:"_blank",rel:"noopener noreferrer"}},[e._v("Dryad"),t("OutboundLink")],1),e._v(" is a community-led data repository that allows researchers to submit data from any field, which not only promotes open science, but also helps researchers comply with open data policies from funders and journals. Because Dryad accepts all kinds of data, they need to curate that data for quality and ensure that the data does not present risk, and have comprehensive metadata to reuse the data. We quickly realized our shared goals, and formed a Pilot collaboration to add Frictionless validation functionality to the Dryad data upload page. Both teams agreed how important it is to give researchers immediate feedback about their data as they are submitting it so they can make edits in that moment, and learn about data best practices.")]),e._v(" "),t("p",[e._v("The outcome of this collaboration is a revamped upload page for the Dryad application. Researchers uploading tabular data (CSV, XLS, XLSX) under 25MB will have the files automatically validated using the Frictionless tool. These checks are based on the built-in validation of Frictionless Framework (read the validation guide "),t("a",{attrs:{href:"https://framework.frictionlessdata.io/docs/guides/validation-guide",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v("), and include checking for data errors such as blank cells, missing headers, or incorrectly formatted data. The Frictionless report will help guide researchers on which issues should be resolved, allowing researchers to edit and re-upload files before submitting their dataset for curation and publication.")]),e._v(" "),t("p",[t("img",{attrs:{src:"https://user-images.githubusercontent.com/74717970/128690898-2095f1c7-060d-4398-ac92-33f65c068c4c.png",alt:"Screen Shot 2021-08-06 at 8 10 41 AM"}}),t("br"),e._v(" "),t("em",[e._v("When a data file is uploaded, researchers can see if the data passed the Tabular Data Checks or if there are any issues. Clicking to “View 1 Issues” shows more details describing the error.")])]),e._v(" "),t("p",[t("img",{attrs:{src:"https://user-images.githubusercontent.com/74717970/128690994-16be9845-59ec-4f3b-9b76-28a163dfa1e3.png",alt:"Screen Shot 2021-08-06 at 8 12 01 AM"}}),t("br"),e._v(" "),t("em",[e._v("This uploaded data file has a blank header. With this information, the researcher can fix the error and re-upload the data.")])]),e._v(" "),t("p",[e._v("This work was funded by the Sloan Foundation as part of the Frictionless Data for Reproducible Research project. This project was truly collaboratory - most of the technical work was completed by contractor Cassiano Reinert Novais dos Santos with supervision and support from the Dryad team: Daniella Lowenberg, Scott Fisher, Ryan Scherle, and the CDL UX team (Rachael Hu and John Kratz); as well as support from the Frictionless team, Evgeny Karev, Lilly Winfree, and Sara Petti. If you have any feedback on the Dryad upload page, please let us know!")])])}),[],!1,null,null,null);a.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/141.c3c7f0da.js b/assets/js/141.4f0a46cd.js similarity index 98% rename from assets/js/141.c3c7f0da.js rename to assets/js/141.4f0a46cd.js index 4a7d79cb8..7af851d21 100644 --- a/assets/js/141.c3c7f0da.js +++ b/assets/js/141.4f0a46cd.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[141],{674:function(e,t,r){"use strict";r.r(t);var o=r(29),a=Object(o.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("p",[e._v("On our last Frictionless Data community call on August 12"),r("sup",[e._v("th")]),e._v(" we had Dave Rowe (aka Libraries Hacked) giving a presentation on Frictionless Data standards and tooling for public libraries’ data.")]),e._v(" "),r("p",[e._v("Libraries Hacked is a project promoting open data in libraries and creating digital prototypes from that data. Public libraries hold a lot of data, but this data is often not shared and it is lacking common standards for data sharing. With the introduction of data schemas, Dave developed a series of tools to show libraries what they could do with their data. For example, Dave demonstrated membership mapping, libraries maps and a "),r("a",{attrs:{href:"https://www.mobilelibraries.org/map",target:"_blank",rel:"noopener noreferrer"}},[e._v("mobile libraries dashboard"),r("OutboundLink")],1),e._v(" that displays mobile libraries vans, estimates their location and automatically generates paper timelines.")]),e._v(" "),r("p",[e._v("You can learn more about the Libraries Hacked project "),r("a",{attrs:{href:"https://www.librarieshacked.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),r("OutboundLink")],1),e._v(". If you would like to dive deeper and discover all about what you can do with Frictionless library data, , you can watch Dave Rowe’ presentation here::")]),e._v(" "),r("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/R0U9Iwd8J00",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),r("h2",{attrs:{id:"other-agenda-items-from-our-hangout"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#other-agenda-items-from-our-hangout"}},[e._v("#")]),e._v(" Other agenda items from our hangout")]),e._v(" "),r("h3",{attrs:{id:"frictionless-hackathon-in-october"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#frictionless-hackathon-in-october"}},[e._v("#")]),e._v(" Frictionless Hackathon in October!")]),e._v(" "),r("p",[e._v("Join the Frictionless Data community for a two-day virtual event to create new project prototypes based on existing Frictionless open source code. It’s going to be fun!"),r("br"),e._v("\nWe need to decide on a date to hold this event, and are currently considering Thursday and Fridays in October. You can vote on Discord."),r("br"),e._v("\nKeep an eye on the website for more info: "),r("a",{attrs:{href:"https://frictionlessdata.io/hackathon/#what-s-a-hackathon",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://frictionlessdata.io/hackathon/#what-s-a-hackathon"),r("OutboundLink")],1)]),e._v(" "),r("h3",{attrs:{id:"recruiting-the-3rd-cohort-of-frictionless-fellows"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#recruiting-the-3rd-cohort-of-frictionless-fellows"}},[e._v("#")]),e._v(" Recruiting the 3rd cohort of Frictionless Fellows")]),e._v(" "),r("p",[e._v("Are you an early career researcher interested in Open Science? We are recruiting the 3rd cohort of Frictionless Fellows! During their 9-month Fellowship, Fellows will lead training workshops, host events at universities and in labs, and write blogs and other communications content. You will be mentored by Frictionless Data product manager Lilly Winfree, PhD and we will help you learn Frictionless Data tooling and software. Applications are open until August 31"),r("sup",[e._v("st")]),e._v("."),r("br"),e._v("\nMore info "),r("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/08/02/apply-fellows/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),r("OutboundLink")],1),r("br"),e._v("\nYou can apply via this "),r("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSdR1Qz5GL5A1BrqgFxDBOXScvNoS5AeyCWixNwtcApXUttT8Q/viewform",target:"_blank",rel:"noopener noreferrer"}},[e._v("form"),r("OutboundLink")],1),e._v(".")]),e._v(" "),r("h1",{attrs:{id:"join-us-in-2-weeks"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#join-us-in-2-weeks"}},[e._v("#")]),e._v(" Join us in 2 weeks!")]),e._v(" "),r("p",[e._v("Yes, that’s right, August is our lucky month, we don’t have one, but two community calls! Our next meeting will be in just 2 weeks, on August 26"),r("sup",[e._v("th")]),e._v(". We will hear a presentation from"),r("br"),e._v("\nAmber York and Adam Shepherd from BCO-DMO on Frictionless Data Pipelines. You can sign up "),r("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here:"),r("OutboundLink")],1)]),e._v(" "),r("p",[e._v("Do you want to share something with the community? Let us know when you sign up!")]),e._v(" "),r("h1",{attrs:{id:"call-recording"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call recording:")]),e._v(" "),r("p",[e._v("On a final note, here is the recording of the full call:")]),e._v(" "),r("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/IGhcP2dDNIg",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),r("p",[e._v("As usual, you can join us on "),r("a",{attrs:{href:"https://discord.com/invite/j9DNFNw",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),r("OutboundLink")],1),e._v(" or "),r("a",{attrs:{href:"https://twitter.com/frictionlessd8a",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),r("OutboundLink")],1),e._v(" to say hi or ask any questions. See you there!")])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[141],{672:function(e,t,r){"use strict";r.r(t);var o=r(29),a=Object(o.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("p",[e._v("On our last Frictionless Data community call on August 12"),r("sup",[e._v("th")]),e._v(" we had Dave Rowe (aka Libraries Hacked) giving a presentation on Frictionless Data standards and tooling for public libraries’ data.")]),e._v(" "),r("p",[e._v("Libraries Hacked is a project promoting open data in libraries and creating digital prototypes from that data. Public libraries hold a lot of data, but this data is often not shared and it is lacking common standards for data sharing. With the introduction of data schemas, Dave developed a series of tools to show libraries what they could do with their data. For example, Dave demonstrated membership mapping, libraries maps and a "),r("a",{attrs:{href:"https://www.mobilelibraries.org/map",target:"_blank",rel:"noopener noreferrer"}},[e._v("mobile libraries dashboard"),r("OutboundLink")],1),e._v(" that displays mobile libraries vans, estimates their location and automatically generates paper timelines.")]),e._v(" "),r("p",[e._v("You can learn more about the Libraries Hacked project "),r("a",{attrs:{href:"https://www.librarieshacked.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),r("OutboundLink")],1),e._v(". If you would like to dive deeper and discover all about what you can do with Frictionless library data, , you can watch Dave Rowe’ presentation here::")]),e._v(" "),r("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/R0U9Iwd8J00",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),r("h2",{attrs:{id:"other-agenda-items-from-our-hangout"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#other-agenda-items-from-our-hangout"}},[e._v("#")]),e._v(" Other agenda items from our hangout")]),e._v(" "),r("h3",{attrs:{id:"frictionless-hackathon-in-october"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#frictionless-hackathon-in-october"}},[e._v("#")]),e._v(" Frictionless Hackathon in October!")]),e._v(" "),r("p",[e._v("Join the Frictionless Data community for a two-day virtual event to create new project prototypes based on existing Frictionless open source code. It’s going to be fun!"),r("br"),e._v("\nWe need to decide on a date to hold this event, and are currently considering Thursday and Fridays in October. You can vote on Discord."),r("br"),e._v("\nKeep an eye on the website for more info: "),r("a",{attrs:{href:"https://frictionlessdata.io/hackathon/#what-s-a-hackathon",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://frictionlessdata.io/hackathon/#what-s-a-hackathon"),r("OutboundLink")],1)]),e._v(" "),r("h3",{attrs:{id:"recruiting-the-3rd-cohort-of-frictionless-fellows"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#recruiting-the-3rd-cohort-of-frictionless-fellows"}},[e._v("#")]),e._v(" Recruiting the 3rd cohort of Frictionless Fellows")]),e._v(" "),r("p",[e._v("Are you an early career researcher interested in Open Science? We are recruiting the 3rd cohort of Frictionless Fellows! During their 9-month Fellowship, Fellows will lead training workshops, host events at universities and in labs, and write blogs and other communications content. You will be mentored by Frictionless Data product manager Lilly Winfree, PhD and we will help you learn Frictionless Data tooling and software. Applications are open until August 31"),r("sup",[e._v("st")]),e._v("."),r("br"),e._v("\nMore info "),r("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/08/02/apply-fellows/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),r("OutboundLink")],1),r("br"),e._v("\nYou can apply via this "),r("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSdR1Qz5GL5A1BrqgFxDBOXScvNoS5AeyCWixNwtcApXUttT8Q/viewform",target:"_blank",rel:"noopener noreferrer"}},[e._v("form"),r("OutboundLink")],1),e._v(".")]),e._v(" "),r("h1",{attrs:{id:"join-us-in-2-weeks"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#join-us-in-2-weeks"}},[e._v("#")]),e._v(" Join us in 2 weeks!")]),e._v(" "),r("p",[e._v("Yes, that’s right, August is our lucky month, we don’t have one, but two community calls! Our next meeting will be in just 2 weeks, on August 26"),r("sup",[e._v("th")]),e._v(". We will hear a presentation from"),r("br"),e._v("\nAmber York and Adam Shepherd from BCO-DMO on Frictionless Data Pipelines. You can sign up "),r("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here:"),r("OutboundLink")],1)]),e._v(" "),r("p",[e._v("Do you want to share something with the community? Let us know when you sign up!")]),e._v(" "),r("h1",{attrs:{id:"call-recording"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call recording:")]),e._v(" "),r("p",[e._v("On a final note, here is the recording of the full call:")]),e._v(" "),r("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/IGhcP2dDNIg",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),r("p",[e._v("As usual, you can join us on "),r("a",{attrs:{href:"https://discord.com/invite/j9DNFNw",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),r("OutboundLink")],1),e._v(" or "),r("a",{attrs:{href:"https://twitter.com/frictionlessd8a",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),r("OutboundLink")],1),e._v(" to say hi or ask any questions. See you there!")])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/142.117144dd.js b/assets/js/142.0d7bc7fa.js similarity index 98% rename from assets/js/142.117144dd.js rename to assets/js/142.0d7bc7fa.js index 54854cc7f..9d6fa47e1 100644 --- a/assets/js/142.117144dd.js +++ b/assets/js/142.0d7bc7fa.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[142],{676:function(e,t,o){"use strict";o.r(t);var a=o(29),r=Object(a.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("p",[e._v("On our last Frictionless Data community call on August 26"),o("sup",[e._v("th")]),e._v(" we had Amber York and Adam Shepherd from BCO-DMO giving a presentation on Frictionless Data Pipelines for Ocean Science.")]),e._v(" "),o("p",[e._v("BCO-DMO is a biological and chemical oceanography data management office, working with scientists to make sure that their data is publicly available and archived for everyone else to use.")]),e._v(" "),o("p",[e._v("BCO-DMO processes around 500 datasets a year, with all sorts of variability. In the beginning the staff was writing ad hoc scripts and software to process that data, but that quickly became a challenge, as the catalogue continued to grow in both size and the variety of data types it curates.")]),e._v(" "),o("p",[e._v("Having worked for several years with Frictionless Data, BCO-DMO identified the Data Package Pipelines (DPP) project in the Frictionless toolkit as key to overcoming those challenges and achieving its data curation goals."),o("br"),e._v("\nTogether with the Frictionless Data team at Open Knowledge Foundation, BCO-DMO developed Laminar, a web application to create Frictionless Data Package Pipelines. Laminar helps data managers process data efficiently while recording the provenance of their activities to support reproducibility of results")]),e._v(" "),o("p",[e._v("You can learn more on the project "),o("a",{attrs:{href:"https://frictionlessdata.io/blog/2020/02/10/frictionless-data-pipelines-for-open-ocean/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(". If you would like to dive deeper and discover all about Frictionless Data Pipelines, you can watch Amber York’s and Adam Shepherd’s presentation:")]),e._v(" "),o("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/R0U9Iwd8J00",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),o("h2",{attrs:{id:"other-agenda-items-from-our-hangout"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#other-agenda-items-from-our-hangout"}},[e._v("#")]),e._v(" Other agenda items from our hangout")]),e._v(" "),o("h3",{attrs:{id:"frictionless-hackathon-on-7-8-october"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#frictionless-hackathon-on-7-8-october"}},[e._v("#")]),e._v(" Frictionless Hackathon on 7-8 October!")]),e._v(" "),o("p",[e._v("Join the Frictionless Data community for a two-day virtual event to create new project prototypes based on existing Frictionless open source code. It’s going to be fun!"),o("br"),e._v("\nWe are currently accepting project submissions, so if you have a cool project in mind, using based on existing Frictionless open source code, this could be an excellent opportunity to prototype it, together with other Frictionless users from all around the world. You can pitch anything - your idea doesn’t need to be complete/fully planned. We can also help you formulate a project if you have an idea but aren’t sure about it. You can also submit ideas for existing projects you need help with!")]),e._v(" "),o("p",[e._v("Use "),o("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSdd41pbfWaCYQHkQNTaf49kht1cUg7_Tg-NzqdP11pHWrD7yA/viewform",target:"_blank",rel:"noopener noreferrer"}},[e._v("this form"),o("OutboundLink")],1),e._v(" to submit your project."),o("br"),e._v("\nKeep an eye "),o("a",{attrs:{href:"https://frictionlessdata.io/hackathon/",target:"_blank",rel:"noopener noreferrer"}},[e._v("on the website"),o("OutboundLink")],1),e._v(" for more info.")]),e._v(" "),o("h1",{attrs:{id:"join-us-next-month"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[e._v("#")]),e._v(" Join us next month!")]),e._v(" "),o("p",[e._v("Our next meeting will be on September 30"),o("sup",[e._v("th")]),e._v(", exceptionally one hour later than usual. We will hear a presentation from Daniella Lowenberg and Cassiano Reinert Novais dos Santos on the Frictionless Data validation implemented for the Dryad application.")]),e._v(" "),o("p",[e._v("You can sign up "),o("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[e._v("Do you want to share something with the community? Let us know when you sign up!")]),e._v(" "),o("h1",{attrs:{id:"call-recording"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call recording:")]),e._v(" "),o("p",[e._v("On a final note, here is the recording of the full call:")]),e._v(" "),o("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/-y6njoJPMbE",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),o("p",[e._v("As usual, you can join us on "),o("a",{attrs:{href:"https://discord.com/invite/j9DNFNw",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),o("OutboundLink")],1),e._v(" or "),o("a",{attrs:{href:"https://twitter.com/frictionlessd8a",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),o("OutboundLink")],1),e._v(" to say hi or ask any questions. See you there!")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[142],{673:function(e,t,o){"use strict";o.r(t);var a=o(29),r=Object(a.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("p",[e._v("On our last Frictionless Data community call on August 26"),o("sup",[e._v("th")]),e._v(" we had Amber York and Adam Shepherd from BCO-DMO giving a presentation on Frictionless Data Pipelines for Ocean Science.")]),e._v(" "),o("p",[e._v("BCO-DMO is a biological and chemical oceanography data management office, working with scientists to make sure that their data is publicly available and archived for everyone else to use.")]),e._v(" "),o("p",[e._v("BCO-DMO processes around 500 datasets a year, with all sorts of variability. In the beginning the staff was writing ad hoc scripts and software to process that data, but that quickly became a challenge, as the catalogue continued to grow in both size and the variety of data types it curates.")]),e._v(" "),o("p",[e._v("Having worked for several years with Frictionless Data, BCO-DMO identified the Data Package Pipelines (DPP) project in the Frictionless toolkit as key to overcoming those challenges and achieving its data curation goals."),o("br"),e._v("\nTogether with the Frictionless Data team at Open Knowledge Foundation, BCO-DMO developed Laminar, a web application to create Frictionless Data Package Pipelines. Laminar helps data managers process data efficiently while recording the provenance of their activities to support reproducibility of results")]),e._v(" "),o("p",[e._v("You can learn more on the project "),o("a",{attrs:{href:"https://frictionlessdata.io/blog/2020/02/10/frictionless-data-pipelines-for-open-ocean/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(". If you would like to dive deeper and discover all about Frictionless Data Pipelines, you can watch Amber York’s and Adam Shepherd’s presentation:")]),e._v(" "),o("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/R0U9Iwd8J00",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),o("h2",{attrs:{id:"other-agenda-items-from-our-hangout"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#other-agenda-items-from-our-hangout"}},[e._v("#")]),e._v(" Other agenda items from our hangout")]),e._v(" "),o("h3",{attrs:{id:"frictionless-hackathon-on-7-8-october"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#frictionless-hackathon-on-7-8-october"}},[e._v("#")]),e._v(" Frictionless Hackathon on 7-8 October!")]),e._v(" "),o("p",[e._v("Join the Frictionless Data community for a two-day virtual event to create new project prototypes based on existing Frictionless open source code. It’s going to be fun!"),o("br"),e._v("\nWe are currently accepting project submissions, so if you have a cool project in mind, using based on existing Frictionless open source code, this could be an excellent opportunity to prototype it, together with other Frictionless users from all around the world. You can pitch anything - your idea doesn’t need to be complete/fully planned. We can also help you formulate a project if you have an idea but aren’t sure about it. You can also submit ideas for existing projects you need help with!")]),e._v(" "),o("p",[e._v("Use "),o("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSdd41pbfWaCYQHkQNTaf49kht1cUg7_Tg-NzqdP11pHWrD7yA/viewform",target:"_blank",rel:"noopener noreferrer"}},[e._v("this form"),o("OutboundLink")],1),e._v(" to submit your project."),o("br"),e._v("\nKeep an eye "),o("a",{attrs:{href:"https://frictionlessdata.io/hackathon/",target:"_blank",rel:"noopener noreferrer"}},[e._v("on the website"),o("OutboundLink")],1),e._v(" for more info.")]),e._v(" "),o("h1",{attrs:{id:"join-us-next-month"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[e._v("#")]),e._v(" Join us next month!")]),e._v(" "),o("p",[e._v("Our next meeting will be on September 30"),o("sup",[e._v("th")]),e._v(", exceptionally one hour later than usual. We will hear a presentation from Daniella Lowenberg and Cassiano Reinert Novais dos Santos on the Frictionless Data validation implemented for the Dryad application.")]),e._v(" "),o("p",[e._v("You can sign up "),o("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[e._v("Do you want to share something with the community? Let us know when you sign up!")]),e._v(" "),o("h1",{attrs:{id:"call-recording"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call recording:")]),e._v(" "),o("p",[e._v("On a final note, here is the recording of the full call:")]),e._v(" "),o("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/-y6njoJPMbE",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),o("p",[e._v("As usual, you can join us on "),o("a",{attrs:{href:"https://discord.com/invite/j9DNFNw",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),o("OutboundLink")],1),e._v(" or "),o("a",{attrs:{href:"https://twitter.com/frictionlessd8a",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),o("OutboundLink")],1),e._v(" to say hi or ask any questions. See you there!")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/144.4c70106f.js b/assets/js/144.ec36c430.js similarity index 98% rename from assets/js/144.4c70106f.js rename to assets/js/144.ec36c430.js index 5fa790b8c..f6f031f94 100644 --- a/assets/js/144.4c70106f.js +++ b/assets/js/144.ec36c430.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[144],{678:function(e,t,a){"use strict";a.r(t);var o=a(29),r=Object(o.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[e._v("On our last Frictionless Data community call on September 30"),a("sup",[e._v("th")]),e._v(" we had Daniella Lowenberg from Dryad and developer Cassiano Reinert Novais dos Santos giving a presentation on the Frictionless Data integration into Dryad.")]),e._v(" "),a("p",[e._v("Dryad is a community-led repository that makes research data discoverable, freely reusable, and citable. To ensure the quality of the submitted data, Dryad needs to curate it. It therefore made total sense to integrate the Frictionless Data validation functionality to its uploading page.")]),e._v(" "),a("p",[e._v("A pilot was started at the beginning of 2021 to add an automatic tabular data validation check to all uploaded files under 25MB, and it went live in June 2021. Since then, more than 11000 research data files have been validated, and around 1000 failed the validation test. 98,4% of the researchers whose files failed, managed to fix their errors easily and resubmit their data.")]),e._v(" "),a("p",[e._v("All the code of the Frictionless Data integration is open source and lives in the "),a("a",{attrs:{href:"https://github.com/orgs/CDL-Dryad/repositories",target:"_blank",rel:"noopener noreferrer"}},[e._v("Dryad GitHub repository"),a("OutboundLink")],1),e._v(", so go and have a look if you want and please let us know if you have any feedback.")]),e._v(" "),a("p",[e._v("You can learn more on the project "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/08/09/dryad-pilot/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(". If you would like to dive deeper and discover all about the Frictionless Data validation functionality integrated into Dryad, you can watch Daniella Lowenberg’s and Cassiano Reinert Novais dos Santos’ presentation here:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/IHVUjWGh2oY",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),a("h2",{attrs:{id:"other-agenda-items-from-our-hangout"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#other-agenda-items-from-our-hangout"}},[e._v("#")]),e._v(" Other agenda items from our hangout")]),e._v(" "),a("h3",{attrs:{id:"frictionless-hackathon-on-7-8-october"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#frictionless-hackathon-on-7-8-october"}},[e._v("#")]),e._v(" Frictionless Hackathon on 7-8 October!")]),e._v(" "),a("p",[e._v("Join the Frictionless Data community for a two-day virtual event to create new project prototypes based on existing Frictionless open source code. It’s going to be fun!"),a("br"),e._v("\nGo and explore the dashboard to know more about all the projects we plan to work on."),a("br"),e._v("\nFor general information, just go to the "),a("a",{attrs:{href:"https://frictionlessdata.io/hackathon/",target:"_blank",rel:"noopener noreferrer"}},[e._v("dedicated page"),a("OutboundLink")],1),e._v("."),a("br"),e._v("\nWe are accepting last minute registrations "),a("a",{attrs:{href:"https://forms.gle/ZhrVfSBrNy2UPRZc9",target:"_blank",rel:"noopener noreferrer"}},[e._v("via this form"),a("OutboundLink")],1),e._v(", so hurry up if you want to be on board!")]),e._v(" "),a("h1",{attrs:{id:"join-us-next-month"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[e._v("#")]),e._v(" Join us next month!")]),e._v(" "),a("p",[e._v("Our next meeting will be on October 28"),a("sup",[e._v("th")]),e._v(". We will hear a presentation from Michael Amadi on Open Data Blend datasets powered by Frictionless Data.")]),e._v(" "),a("p",[e._v("Ahead of our next call, you can learn more about Open Data Blend "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/07/12/open-data-blend/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1)]),e._v(" "),a("p",[e._v("You can sign up "),a("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here:"),a("OutboundLink")],1)]),e._v(" "),a("p",[e._v("Do you want to share something with the community? Let us know when you sign up!")]),e._v(" "),a("h1",{attrs:{id:"call-recording"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call recording:")]),e._v(" "),a("p",[e._v("On a final note, here is the recording of the full call:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/V3SJcq_XYIA",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),a("p",[e._v("As usual, you can join us on "),a("a",{attrs:{href:"https://discord.com/invite/j9DNFNw",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),a("OutboundLink")],1),e._v(" or "),a("a",{attrs:{href:"https://twitter.com/frictionlessd8a",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),a("OutboundLink")],1),e._v(" to say hi or ask any questions. See you there!")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[144],{676:function(e,t,a){"use strict";a.r(t);var o=a(29),r=Object(o.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[e._v("On our last Frictionless Data community call on September 30"),a("sup",[e._v("th")]),e._v(" we had Daniella Lowenberg from Dryad and developer Cassiano Reinert Novais dos Santos giving a presentation on the Frictionless Data integration into Dryad.")]),e._v(" "),a("p",[e._v("Dryad is a community-led repository that makes research data discoverable, freely reusable, and citable. To ensure the quality of the submitted data, Dryad needs to curate it. It therefore made total sense to integrate the Frictionless Data validation functionality to its uploading page.")]),e._v(" "),a("p",[e._v("A pilot was started at the beginning of 2021 to add an automatic tabular data validation check to all uploaded files under 25MB, and it went live in June 2021. Since then, more than 11000 research data files have been validated, and around 1000 failed the validation test. 98,4% of the researchers whose files failed, managed to fix their errors easily and resubmit their data.")]),e._v(" "),a("p",[e._v("All the code of the Frictionless Data integration is open source and lives in the "),a("a",{attrs:{href:"https://github.com/orgs/CDL-Dryad/repositories",target:"_blank",rel:"noopener noreferrer"}},[e._v("Dryad GitHub repository"),a("OutboundLink")],1),e._v(", so go and have a look if you want and please let us know if you have any feedback.")]),e._v(" "),a("p",[e._v("You can learn more on the project "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/08/09/dryad-pilot/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(". If you would like to dive deeper and discover all about the Frictionless Data validation functionality integrated into Dryad, you can watch Daniella Lowenberg’s and Cassiano Reinert Novais dos Santos’ presentation here:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/IHVUjWGh2oY",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),a("h2",{attrs:{id:"other-agenda-items-from-our-hangout"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#other-agenda-items-from-our-hangout"}},[e._v("#")]),e._v(" Other agenda items from our hangout")]),e._v(" "),a("h3",{attrs:{id:"frictionless-hackathon-on-7-8-october"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#frictionless-hackathon-on-7-8-october"}},[e._v("#")]),e._v(" Frictionless Hackathon on 7-8 October!")]),e._v(" "),a("p",[e._v("Join the Frictionless Data community for a two-day virtual event to create new project prototypes based on existing Frictionless open source code. It’s going to be fun!"),a("br"),e._v("\nGo and explore the dashboard to know more about all the projects we plan to work on."),a("br"),e._v("\nFor general information, just go to the "),a("a",{attrs:{href:"https://frictionlessdata.io/hackathon/",target:"_blank",rel:"noopener noreferrer"}},[e._v("dedicated page"),a("OutboundLink")],1),e._v("."),a("br"),e._v("\nWe are accepting last minute registrations "),a("a",{attrs:{href:"https://forms.gle/ZhrVfSBrNy2UPRZc9",target:"_blank",rel:"noopener noreferrer"}},[e._v("via this form"),a("OutboundLink")],1),e._v(", so hurry up if you want to be on board!")]),e._v(" "),a("h1",{attrs:{id:"join-us-next-month"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[e._v("#")]),e._v(" Join us next month!")]),e._v(" "),a("p",[e._v("Our next meeting will be on October 28"),a("sup",[e._v("th")]),e._v(". We will hear a presentation from Michael Amadi on Open Data Blend datasets powered by Frictionless Data.")]),e._v(" "),a("p",[e._v("Ahead of our next call, you can learn more about Open Data Blend "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/07/12/open-data-blend/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1)]),e._v(" "),a("p",[e._v("You can sign up "),a("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here:"),a("OutboundLink")],1)]),e._v(" "),a("p",[e._v("Do you want to share something with the community? Let us know when you sign up!")]),e._v(" "),a("h1",{attrs:{id:"call-recording"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call recording:")]),e._v(" "),a("p",[e._v("On a final note, here is the recording of the full call:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/V3SJcq_XYIA",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),a("p",[e._v("As usual, you can join us on "),a("a",{attrs:{href:"https://discord.com/invite/j9DNFNw",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),a("OutboundLink")],1),e._v(" or "),a("a",{attrs:{href:"https://twitter.com/frictionlessd8a",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),a("OutboundLink")],1),e._v(" to say hi or ask any questions. See you there!")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/145.2bef085b.js b/assets/js/145.cabc5960.js similarity index 99% rename from assets/js/145.2bef085b.js rename to assets/js/145.cabc5960.js index 70922607f..b70999bb3 100644 --- a/assets/js/145.2bef085b.js +++ b/assets/js/145.cabc5960.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[145],{677:function(t,e,a){"use strict";a.r(e);var o=a(29),r=Object(o.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("p",[t._v("The first (of many we hope!) Frictionless Data Hackathon is over, and it was great! Many thanks to all who helped make it such a success the past week.")]),t._v(" "),a("p",[t._v("The prize for the best project, voted by the participants, went to the DPCKAN team. Well done André, Andrés, Carolina, Daniel, Francisco and Gabriel!"),a("br"),t._v(" "),a("em",[t._v("”I feel pretty happy after this frictionless hackathon experience. We’ve grown in 2 days more than it could have been possible in one month. The knowledge and experience exchange was remarkable.”")]),t._v(", said the winning team.")]),t._v(" "),a("p",[t._v("It was also great to see participants who had never taken part in a hackathon before being enthusiastic about it. "),a("em",[t._v("”I loved the helpfulness of the community members, as well as the diversity of participants.”")])]),t._v(" "),a("p",[a("em",[t._v("“It was such a great opportunity to network with other people interested in data quality and open data!”")])]),t._v(" "),a("p",[a("em",[t._v("”It was amazing to see a weightless tool used in development. I want to learn more about it and integrate it into my projects.”")])]),t._v(" "),a("p",[t._v("Over 20 people signed up for the hackathon from Africa, Asia, Europe, South America and North America. We had a very diverse audience and saw a lot of new faces. The event ran from 7th to 8th October on our Discord server. The result of those 2 days of intense collaboration were four great projects:")]),t._v(" "),a("h2",{attrs:{id:"dpckan"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#dpckan"}},[t._v("#")]),t._v(" DPCKAN")]),t._v(" "),a("p",[t._v("The DPCKAN project was proposed by a team working on the data portal of the state of Minas Gerais in Brazil. To ensure quality metadata and automate the publishing process, the team decided to develop a tool that would allow publishing and updating datasets described with Frictionless Standards in a CKAN instance.")]),t._v(" "),a("p",[t._v("The main objectives for the hackathon were to refine the package update functions and clean up the documentation.")]),t._v(" "),a("p",[t._v("You can check out the project’s "),a("a",{attrs:{href:"https://github.com/dados-mg/dpckan",target:"_blank",rel:"noopener noreferrer"}},[t._v("GitHub repository"),a("OutboundLink")],1),t._v(" to see the improvements that were made during the hackathon.")]),t._v(" "),a("h2",{attrs:{id:"frictionless-tutorials"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#frictionless-tutorials"}},[t._v("#")]),t._v(" Frictionless Tutorials")]),t._v(" "),a("p",[t._v("The main objective of this project was to write new tutorials using the Python Frictionless Framework. The team not only created a tutorial, but also wrote "),a("a",{attrs:{href:"https://docs.google.com/document/d/1zbWMmIeU8DUwzGaEih0JGJ-DMGug5-2UksRN1x4fvj8/edit?usp=sharing",target:"_blank",rel:"noopener noreferrer"}},[t._v("more detailed instructions"),a("OutboundLink")],1),t._v(" on how to create new tutorials for future contributors.")]),t._v(" "),a("p",[t._v("You can have a look at the tutorial written during the hackathon "),a("a",{attrs:{href:"https://colab.research.google.com/drive/1tTtynfnExykcTYon1j6Y8OgzQZEXpQvP?usp=sharing",target:"_blank",rel:"noopener noreferrer"}},[t._v("here"),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("h2",{attrs:{id:"covid-tracker"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#covid-tracker"}},[t._v("#")]),t._v(" Covid tracker")]),t._v(" "),a("p",[t._v("The main objective of this project was to test Livemark, one of the newest Frictionless tools, with real data and provide an example of all its functionalities. Besides the charts and tables, the information is available on an interactive map, which also takes into account the accuracy of the official data.")]),t._v(" "),a("p",[t._v("You can have a look at the Covid Tracker "),a("a",{attrs:{href:"https://covid-tracker.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[t._v("here"),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("h2",{attrs:{id:"frictionless-community-insight"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#frictionless-community-insight"}},[t._v("#")]),t._v(" Frictionless Community Insight")]),t._v(" "),a("p",[t._v("The objective of this project, proposed by the Frictionless core team, was to build a "),a("a",{attrs:{href:"https://livemark.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Livemark"),a("OutboundLink")],1),t._v(" website telling a story about the Frictionless Data community using the data from the community survey we ran in September.")]),t._v(" "),a("p",[t._v("The main goals for the hackathon were to clean the data from the survey, visualise it and display it as a story on the Livemark website.")]),t._v(" "),a("p",[t._v("You can have a look at the "),a("a",{attrs:{href:"https://community-insights.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[t._v("draft website"),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("p",[t._v("Four other great projects started the hackathon but did not finish it:")]),t._v(" "),a("p",[a("strong",[t._v("Dataset List")]),t._v(", another Livemark project to list all the datapackages on GitHub, "),a("strong",[t._v("Frictionless Geojson")]),t._v(", an extension to add GeoJSON read and write support in frictionless-py, "),a("strong",[t._v("Improve Frictionless Data Python Framework")]),t._v(", a project to get familiar with the codebase, and "),a("strong",[t._v("Citation Context Reports")]),t._v(", a project to create Frictionless data schemas for scholarly citations data.")]),t._v(" "),a("p",[t._v("Interestingly, one of the participants started off his own project during the hackathon, building a Discord matrix bridge to allow Frictionless users and contributors to join the community Discord chat using an Open standard. Even if the Matrix did not participate in the voting, it still is a notable project. If you are interested in knowing more about it you can have a look at "),a("a",{attrs:{href:"https://github.com/frictionlessdata/project/issues/698",target:"_blank",rel:"noopener noreferrer"}},[t._v("this GitHub issue"),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("p",[t._v("On the last day of the hackathon, one hour before the end of the event, the teams pitched their projects. Here’s a recording of the event if you missed it and want to have a look:")]),t._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/PKRKldaUB5U",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),t._v(" "),a("p",[t._v("Thanks again to all those who took part in the hackathon and contributed with their time and enthusiasm to make it so great. We can’t wait for the next hack already!")])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[145],{674:function(t,e,a){"use strict";a.r(e);var o=a(29),r=Object(o.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("p",[t._v("The first (of many we hope!) Frictionless Data Hackathon is over, and it was great! Many thanks to all who helped make it such a success the past week.")]),t._v(" "),a("p",[t._v("The prize for the best project, voted by the participants, went to the DPCKAN team. Well done André, Andrés, Carolina, Daniel, Francisco and Gabriel!"),a("br"),t._v(" "),a("em",[t._v("”I feel pretty happy after this frictionless hackathon experience. We’ve grown in 2 days more than it could have been possible in one month. The knowledge and experience exchange was remarkable.”")]),t._v(", said the winning team.")]),t._v(" "),a("p",[t._v("It was also great to see participants who had never taken part in a hackathon before being enthusiastic about it. "),a("em",[t._v("”I loved the helpfulness of the community members, as well as the diversity of participants.”")])]),t._v(" "),a("p",[a("em",[t._v("“It was such a great opportunity to network with other people interested in data quality and open data!”")])]),t._v(" "),a("p",[a("em",[t._v("”It was amazing to see a weightless tool used in development. I want to learn more about it and integrate it into my projects.”")])]),t._v(" "),a("p",[t._v("Over 20 people signed up for the hackathon from Africa, Asia, Europe, South America and North America. We had a very diverse audience and saw a lot of new faces. The event ran from 7th to 8th October on our Discord server. The result of those 2 days of intense collaboration were four great projects:")]),t._v(" "),a("h2",{attrs:{id:"dpckan"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#dpckan"}},[t._v("#")]),t._v(" DPCKAN")]),t._v(" "),a("p",[t._v("The DPCKAN project was proposed by a team working on the data portal of the state of Minas Gerais in Brazil. To ensure quality metadata and automate the publishing process, the team decided to develop a tool that would allow publishing and updating datasets described with Frictionless Standards in a CKAN instance.")]),t._v(" "),a("p",[t._v("The main objectives for the hackathon were to refine the package update functions and clean up the documentation.")]),t._v(" "),a("p",[t._v("You can check out the project’s "),a("a",{attrs:{href:"https://github.com/dados-mg/dpckan",target:"_blank",rel:"noopener noreferrer"}},[t._v("GitHub repository"),a("OutboundLink")],1),t._v(" to see the improvements that were made during the hackathon.")]),t._v(" "),a("h2",{attrs:{id:"frictionless-tutorials"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#frictionless-tutorials"}},[t._v("#")]),t._v(" Frictionless Tutorials")]),t._v(" "),a("p",[t._v("The main objective of this project was to write new tutorials using the Python Frictionless Framework. The team not only created a tutorial, but also wrote "),a("a",{attrs:{href:"https://docs.google.com/document/d/1zbWMmIeU8DUwzGaEih0JGJ-DMGug5-2UksRN1x4fvj8/edit?usp=sharing",target:"_blank",rel:"noopener noreferrer"}},[t._v("more detailed instructions"),a("OutboundLink")],1),t._v(" on how to create new tutorials for future contributors.")]),t._v(" "),a("p",[t._v("You can have a look at the tutorial written during the hackathon "),a("a",{attrs:{href:"https://colab.research.google.com/drive/1tTtynfnExykcTYon1j6Y8OgzQZEXpQvP?usp=sharing",target:"_blank",rel:"noopener noreferrer"}},[t._v("here"),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("h2",{attrs:{id:"covid-tracker"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#covid-tracker"}},[t._v("#")]),t._v(" Covid tracker")]),t._v(" "),a("p",[t._v("The main objective of this project was to test Livemark, one of the newest Frictionless tools, with real data and provide an example of all its functionalities. Besides the charts and tables, the information is available on an interactive map, which also takes into account the accuracy of the official data.")]),t._v(" "),a("p",[t._v("You can have a look at the Covid Tracker "),a("a",{attrs:{href:"https://covid-tracker.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[t._v("here"),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("h2",{attrs:{id:"frictionless-community-insight"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#frictionless-community-insight"}},[t._v("#")]),t._v(" Frictionless Community Insight")]),t._v(" "),a("p",[t._v("The objective of this project, proposed by the Frictionless core team, was to build a "),a("a",{attrs:{href:"https://livemark.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Livemark"),a("OutboundLink")],1),t._v(" website telling a story about the Frictionless Data community using the data from the community survey we ran in September.")]),t._v(" "),a("p",[t._v("The main goals for the hackathon were to clean the data from the survey, visualise it and display it as a story on the Livemark website.")]),t._v(" "),a("p",[t._v("You can have a look at the "),a("a",{attrs:{href:"https://community-insights.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[t._v("draft website"),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("p",[t._v("Four other great projects started the hackathon but did not finish it:")]),t._v(" "),a("p",[a("strong",[t._v("Dataset List")]),t._v(", another Livemark project to list all the datapackages on GitHub, "),a("strong",[t._v("Frictionless Geojson")]),t._v(", an extension to add GeoJSON read and write support in frictionless-py, "),a("strong",[t._v("Improve Frictionless Data Python Framework")]),t._v(", a project to get familiar with the codebase, and "),a("strong",[t._v("Citation Context Reports")]),t._v(", a project to create Frictionless data schemas for scholarly citations data.")]),t._v(" "),a("p",[t._v("Interestingly, one of the participants started off his own project during the hackathon, building a Discord matrix bridge to allow Frictionless users and contributors to join the community Discord chat using an Open standard. Even if the Matrix did not participate in the voting, it still is a notable project. If you are interested in knowing more about it you can have a look at "),a("a",{attrs:{href:"https://github.com/frictionlessdata/project/issues/698",target:"_blank",rel:"noopener noreferrer"}},[t._v("this GitHub issue"),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("p",[t._v("On the last day of the hackathon, one hour before the end of the event, the teams pitched their projects. Here’s a recording of the event if you missed it and want to have a look:")]),t._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/PKRKldaUB5U",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),t._v(" "),a("p",[t._v("Thanks again to all those who took part in the hackathon and contributed with their time and enthusiasm to make it so great. We can’t wait for the next hack already!")])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/146.6e7c9a8b.js b/assets/js/146.35d328f6.js similarity index 98% rename from assets/js/146.6e7c9a8b.js rename to assets/js/146.35d328f6.js index 0b7bd52d8..b41c6f5c8 100644 --- a/assets/js/146.6e7c9a8b.js +++ b/assets/js/146.35d328f6.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[146],{679:function(e,t,a){"use strict";a.r(t);var o=a(29),r=Object(o.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[e._v("On our last Frictionless Data community call on October 28"),a("sup",[e._v("th")]),e._v(" we had Michael Amadi from Nimble Learn giving a presentation on Open Data Blend and their Frictionless Data journey.")]),e._v(" "),a("p",[e._v("Open Data Blend is a set of open data services that aim to make large and complex UK open data easier to analyse. The Open Data Blend datasets have two interfaces: a UI and an API, both powered by Frictionless Data. The datasets themselves are built on top of three Frictionless Data specifications: data package, data resource and table schema; and they incorporate some Frictionless Data patterns.")]),e._v(" "),a("p",[e._v("The project addresses some of the main open data challenges:")]),e._v(" "),a("ul",[a("li",[e._v("Large data volumes that are difficult to manage due to their size")]),e._v(" "),a("li",[e._v("Overwhelming complexity in data analysis")]),e._v(" "),a("li",[e._v("Open data shared in sub-optimal file formats for data analysis (e.g. PDFs)")]),e._v(" "),a("li",[e._v("When companies and organisation aggregate data, refine it and add value to it, they often don’t openly share the cleaned data")])]),e._v(" "),a("p",[e._v("You can learn more on the project "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/07/12/open-data-blend/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(". If you would like to dive deeper and discover all about how Open Data Blend uses the Frictionless Data toolkit, you can watch Michael Amadi’s presentation here:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/avAXe3SUEKI",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),a("h1",{attrs:{id:"other-agenda-items-from-our-hangout"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#other-agenda-items-from-our-hangout"}},[e._v("#")]),e._v(" Other agenda items from our hangout")]),e._v(" "),a("ul",[a("li",[e._v("Senior developer Evgeny Karev presented Livemark at PyData on October 29"),a("sup",[e._v("th")]),e._v(". If you missed it and want to have a look, check out the recording "),a("a",{attrs:{href:"https://zoom.us/rec/play/yyFTEAW3_v4cPGUNbiHS95-vlgICgNYeVdK_N9VHOdHxLDoKbTE9EZvbVpZMjIV8-WAr3qmZ9vZPoVsU.QXvKRI1hOrCwv8Lg?startTime=1635487241000&_x_zm_rtaid=iuuaYWHFSEec21FRLG7Cig.1635861744121.d2b5a7e329a988e4ea49b64e3d6e66b6&_x_zm_rhtaid=460",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(" (for Livemark jump at 1:03:03).")]),e._v(" "),a("li",[e._v("The third cohort of Frictionless Fellows has officially kicked off mid-October. You will get to meet them next year during one of our community calls. Meanwhile, stay tuned to know more about them!")]),e._v(" "),a("li",[e._v("We don’t have any presentation planned for the December community call yet. Would you like to present something? Drop us a line to let us know!")])]),e._v(" "),a("h1",{attrs:{id:"join-us-next-month"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[e._v("#")]),e._v(" Join us next month!")]),e._v(" "),a("p",[e._v("Next community call is one week earlier than usual (to avoid conflict with American Thanksgiving), on November 18"),a("sup",[e._v("th")]),e._v(". We will hear a presentation from Peter Desmet on Frictionless Data exchange format for camera trapping data.")]),e._v(" "),a("p",[e._v("You can sign up "),a("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("Do you want to share something with the community? Let us know when you sign up!")]),e._v(" "),a("h1",{attrs:{id:"call-recording"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call recording:")]),e._v(" "),a("p",[e._v("On a final note, here is the recording of the full call:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/MFffZRM8qjs",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),a("p",[e._v("As usual, you can join us on "),a("a",{attrs:{href:"https://discord.com/invite/j9DNFNw",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),a("OutboundLink")],1),e._v(" or "),a("a",{attrs:{href:"https://twitter.com/frictionlessd8a",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),a("OutboundLink")],1),e._v(" to say hi or ask any questions. See you there!")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[146],{677:function(e,t,a){"use strict";a.r(t);var o=a(29),r=Object(o.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[e._v("On our last Frictionless Data community call on October 28"),a("sup",[e._v("th")]),e._v(" we had Michael Amadi from Nimble Learn giving a presentation on Open Data Blend and their Frictionless Data journey.")]),e._v(" "),a("p",[e._v("Open Data Blend is a set of open data services that aim to make large and complex UK open data easier to analyse. The Open Data Blend datasets have two interfaces: a UI and an API, both powered by Frictionless Data. The datasets themselves are built on top of three Frictionless Data specifications: data package, data resource and table schema; and they incorporate some Frictionless Data patterns.")]),e._v(" "),a("p",[e._v("The project addresses some of the main open data challenges:")]),e._v(" "),a("ul",[a("li",[e._v("Large data volumes that are difficult to manage due to their size")]),e._v(" "),a("li",[e._v("Overwhelming complexity in data analysis")]),e._v(" "),a("li",[e._v("Open data shared in sub-optimal file formats for data analysis (e.g. PDFs)")]),e._v(" "),a("li",[e._v("When companies and organisation aggregate data, refine it and add value to it, they often don’t openly share the cleaned data")])]),e._v(" "),a("p",[e._v("You can learn more on the project "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/07/12/open-data-blend/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(". If you would like to dive deeper and discover all about how Open Data Blend uses the Frictionless Data toolkit, you can watch Michael Amadi’s presentation here:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/avAXe3SUEKI",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),a("h1",{attrs:{id:"other-agenda-items-from-our-hangout"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#other-agenda-items-from-our-hangout"}},[e._v("#")]),e._v(" Other agenda items from our hangout")]),e._v(" "),a("ul",[a("li",[e._v("Senior developer Evgeny Karev presented Livemark at PyData on October 29"),a("sup",[e._v("th")]),e._v(". If you missed it and want to have a look, check out the recording "),a("a",{attrs:{href:"https://zoom.us/rec/play/yyFTEAW3_v4cPGUNbiHS95-vlgICgNYeVdK_N9VHOdHxLDoKbTE9EZvbVpZMjIV8-WAr3qmZ9vZPoVsU.QXvKRI1hOrCwv8Lg?startTime=1635487241000&_x_zm_rtaid=iuuaYWHFSEec21FRLG7Cig.1635861744121.d2b5a7e329a988e4ea49b64e3d6e66b6&_x_zm_rhtaid=460",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(" (for Livemark jump at 1:03:03).")]),e._v(" "),a("li",[e._v("The third cohort of Frictionless Fellows has officially kicked off mid-October. You will get to meet them next year during one of our community calls. Meanwhile, stay tuned to know more about them!")]),e._v(" "),a("li",[e._v("We don’t have any presentation planned for the December community call yet. Would you like to present something? Drop us a line to let us know!")])]),e._v(" "),a("h1",{attrs:{id:"join-us-next-month"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[e._v("#")]),e._v(" Join us next month!")]),e._v(" "),a("p",[e._v("Next community call is one week earlier than usual (to avoid conflict with American Thanksgiving), on November 18"),a("sup",[e._v("th")]),e._v(". We will hear a presentation from Peter Desmet on Frictionless Data exchange format for camera trapping data.")]),e._v(" "),a("p",[e._v("You can sign up "),a("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("Do you want to share something with the community? Let us know when you sign up!")]),e._v(" "),a("h1",{attrs:{id:"call-recording"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call recording:")]),e._v(" "),a("p",[e._v("On a final note, here is the recording of the full call:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/MFffZRM8qjs",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),a("p",[e._v("As usual, you can join us on "),a("a",{attrs:{href:"https://discord.com/invite/j9DNFNw",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),a("OutboundLink")],1),e._v(" or "),a("a",{attrs:{href:"https://twitter.com/frictionlessd8a",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),a("OutboundLink")],1),e._v(" to say hi or ask any questions. See you there!")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/147.e57196d8.js b/assets/js/147.8f111805.js similarity index 98% rename from assets/js/147.e57196d8.js rename to assets/js/147.8f111805.js index c0620d8cd..270ca2118 100644 --- a/assets/js/147.e57196d8.js +++ b/assets/js/147.8f111805.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[147],{680:function(e,t,a){"use strict";a.r(t);var r=a(29),o=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[e._v("On our last Frictionless Data community call on November 18"),a("sup",[e._v("th")]),e._v(" we had Peter Desmet from the Research Institute for Nature and Forest (INBO) giving a presentation on Frictionless Data exchange format for camera trapping data.")]),e._v(" "),a("p",[e._v("Camera trapping is a non-invasive wildlife monitoring technique generating more and more data in the last few years. Darwin Core, a well established standard in the biodiversity field, does not capture the full scope of camera trapping data (e.g. it does not express your camera setup) and it is therefore not ideal. To tackle this problem, the camera trapped data package was developed, using Frictionless Data standards. The camera trapped data package is both a "),a("strong",[e._v("model")]),e._v(" and a "),a("strong",[e._v("format")]),e._v(" to exchange camera trapping data, and it is designed to capture all the essential data and metadata of camera trap studies.")]),e._v(" "),a("p",[e._v("The camera trap data package model includes:")]),e._v(" "),a("ul",[a("li",[e._v("Metadata about the project")]),e._v(" "),a("li",[e._v("Deployments info about the location, the camera and the time")]),e._v(" "),a("li",[e._v("Media including the file url, the timestamp and if it is a sequence")]),e._v(" "),a("li",[e._v("Observation about the file (Is it blank? What kind of animal can we see? etc…)")])]),e._v(" "),a("p",[e._v("The format is similar to a Frictionless Data data package. It includes: "),a("strong",[e._v("metadata")]),e._v(" about the project and the data package structure, "),a("strong",[e._v("csv files")]),e._v(" for the deployments, the media captured in the deployments, and the observations in those media.")]),e._v(" "),a("p",[e._v("If you would like to dive deeper and discover all about the Frictionless Data exchange format for camera trapping data, you can watch Peter Desmet’s presentation here:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/Pi_kbQ_KYiM",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),a("p",[e._v("You can also find Peter’s presentation deck "),a("a",{attrs:{href:"https://speakerdeck.com/peterdesmet/camtrap-dp-using-frictionless-standards-for-a-camera-trapping-data-exchange-format",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h2",{attrs:{id:"other-agenda-items-from-our-hangout"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#other-agenda-items-from-our-hangout"}},[e._v("#")]),e._v(" Other agenda items from our hangout")]),e._v(" "),a("p",[e._v("We are part of the organisation of the FOSDEM DevRoom Open Research Tools & Technologies this year too. We would love to have someone from the Frictionless community giving a talk. If you are interested please let us know! We are very happy to help you structure your idea, if needed. Calls for participation will be issued soon. Keep an eye on "),a("a",{attrs:{href:"https://fosdem.org/2022/news/2021-11-02-devroom-cfp/",target:"_blank",rel:"noopener noreferrer"}},[e._v("this page"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h1",{attrs:{id:"join-us-next-month"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[e._v("#")]),e._v(" Join us next month!")]),e._v(" "),a("p",[e._v("Next community call is one week earlier than usual, on December 16"),a("sup",[e._v("th")]),e._v(", because of the Winter holidays. Keith Hughitt is going to present some ideas around representing data processing flows as a DAG inside of a datapackage.json, and tools for interacting with and visualizing such DAGs.")]),e._v(" "),a("p",[e._v("You can sign up "),a("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("Do you want to share something with the community? Let us know when you sign up!")]),e._v(" "),a("h1",{attrs:{id:"call-recording"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call recording:")]),e._v(" "),a("p",[e._v("On a final note, here is the recording of the full call:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/DQ4hpARBVSE",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),a("p",[e._v("As usual, you can join us on "),a("a",{attrs:{href:"https://discord.com/invite/j9DNFNw",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),a("OutboundLink")],1),e._v(" or "),a("a",{attrs:{href:"https://twitter.com/frictionlessd8a",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),a("OutboundLink")],1),e._v(" to say hi or ask any questions. See you there!")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[147],{678:function(e,t,a){"use strict";a.r(t);var r=a(29),o=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[e._v("On our last Frictionless Data community call on November 18"),a("sup",[e._v("th")]),e._v(" we had Peter Desmet from the Research Institute for Nature and Forest (INBO) giving a presentation on Frictionless Data exchange format for camera trapping data.")]),e._v(" "),a("p",[e._v("Camera trapping is a non-invasive wildlife monitoring technique generating more and more data in the last few years. Darwin Core, a well established standard in the biodiversity field, does not capture the full scope of camera trapping data (e.g. it does not express your camera setup) and it is therefore not ideal. To tackle this problem, the camera trapped data package was developed, using Frictionless Data standards. The camera trapped data package is both a "),a("strong",[e._v("model")]),e._v(" and a "),a("strong",[e._v("format")]),e._v(" to exchange camera trapping data, and it is designed to capture all the essential data and metadata of camera trap studies.")]),e._v(" "),a("p",[e._v("The camera trap data package model includes:")]),e._v(" "),a("ul",[a("li",[e._v("Metadata about the project")]),e._v(" "),a("li",[e._v("Deployments info about the location, the camera and the time")]),e._v(" "),a("li",[e._v("Media including the file url, the timestamp and if it is a sequence")]),e._v(" "),a("li",[e._v("Observation about the file (Is it blank? What kind of animal can we see? etc…)")])]),e._v(" "),a("p",[e._v("The format is similar to a Frictionless Data data package. It includes: "),a("strong",[e._v("metadata")]),e._v(" about the project and the data package structure, "),a("strong",[e._v("csv files")]),e._v(" for the deployments, the media captured in the deployments, and the observations in those media.")]),e._v(" "),a("p",[e._v("If you would like to dive deeper and discover all about the Frictionless Data exchange format for camera trapping data, you can watch Peter Desmet’s presentation here:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/Pi_kbQ_KYiM",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),a("p",[e._v("You can also find Peter’s presentation deck "),a("a",{attrs:{href:"https://speakerdeck.com/peterdesmet/camtrap-dp-using-frictionless-standards-for-a-camera-trapping-data-exchange-format",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h2",{attrs:{id:"other-agenda-items-from-our-hangout"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#other-agenda-items-from-our-hangout"}},[e._v("#")]),e._v(" Other agenda items from our hangout")]),e._v(" "),a("p",[e._v("We are part of the organisation of the FOSDEM DevRoom Open Research Tools & Technologies this year too. We would love to have someone from the Frictionless community giving a talk. If you are interested please let us know! We are very happy to help you structure your idea, if needed. Calls for participation will be issued soon. Keep an eye on "),a("a",{attrs:{href:"https://fosdem.org/2022/news/2021-11-02-devroom-cfp/",target:"_blank",rel:"noopener noreferrer"}},[e._v("this page"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h1",{attrs:{id:"join-us-next-month"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[e._v("#")]),e._v(" Join us next month!")]),e._v(" "),a("p",[e._v("Next community call is one week earlier than usual, on December 16"),a("sup",[e._v("th")]),e._v(", because of the Winter holidays. Keith Hughitt is going to present some ideas around representing data processing flows as a DAG inside of a datapackage.json, and tools for interacting with and visualizing such DAGs.")]),e._v(" "),a("p",[e._v("You can sign up "),a("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("Do you want to share something with the community? Let us know when you sign up!")]),e._v(" "),a("h1",{attrs:{id:"call-recording"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call recording:")]),e._v(" "),a("p",[e._v("On a final note, here is the recording of the full call:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/DQ4hpARBVSE",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),a("p",[e._v("As usual, you can join us on "),a("a",{attrs:{href:"https://discord.com/invite/j9DNFNw",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),a("OutboundLink")],1),e._v(" or "),a("a",{attrs:{href:"https://twitter.com/frictionlessd8a",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),a("OutboundLink")],1),e._v(" to say hi or ask any questions. See you there!")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/148.b72ccf39.js b/assets/js/148.f186d227.js similarity index 99% rename from assets/js/148.b72ccf39.js rename to assets/js/148.f186d227.js index 82a0e7a39..528746cb4 100644 --- a/assets/js/148.b72ccf39.js +++ b/assets/js/148.f186d227.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[148],{682:function(e,a,t){"use strict";t.r(a);var i=t(29),r=Object(i.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("p",[e._v("We are very excited to introduce you to the 3rd cohort of "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Frictionless Data Reproducible Research Fellows"),t("OutboundLink")],1),e._v("! Over the coming months, this group of six early career researchers will be learning about open science, data management, and how to use Frictionless Data tooling in their work to make their data more open and their research more reusable. Keep an eye on them, as they are on their way to becoming champions of reproducibility! For now, go and read the introductory blogs they wrote about themselves to know more about them and their goals for this fellowship.")]),e._v(" "),t("img",{staticStyle:{margin:"10px",border:"5px solid black"},attrs:{src:"/img/blog/GQ.jpeg",width:"200px",align:"left"}}),e._v(" "),t("p",[t("strong",[e._v("Hi, everyone! My name is Guo-Qiang Zhang")]),e._v(", and I am from China. Right after I finished my residency training in Pediatrics, I joined Prof Bright I. Nwaru’s group and started my doctoral studies at Krefting Research Centre in University of Gothenburg (Sweden). My doctoral project is to look at the effects of sex hormones on women’s health (especially asthma), utilizing epidemiological methods as well as evidence synthesis tools (e.g., systematic review, umbrella review).")]),e._v(" "),t("p",[e._v("In my first year of doctoral studies, I had the opportunity to participate in the course “Reproducibility in Medical Research” led by Prof Nwaru. It was my first time to hear about Open Science and research reproducibility. As a “fresh” full-time doctoral student full of passion for medical research, I felt overwhelmed by waves of frustration when I came to know the reproducibility crisis. After spending some time with my frustration, I came to realize that in fact I can do something. In my first project, my colleagues and I conducted an umbrella review on a highly controversial topic on the impact of menopausal hormone therapy on women’s health. We put extensive efforts into making the review process as transparent as possible: we developed beforehand protocols for data extraction and statistical analysis, documented key steps of the review process, verified data in the published literature, and made all datasets and R scripts publicly available."),t("br"),e._v("\nTo keep on reading about Guo-Qiang click "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/hello-guo-qiang/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("img",{staticStyle:{margin:"10px",border:"5px solid black"},attrs:{src:"/img/blog/Victoria.jpeg",width:"140px",align:"left"}}),e._v(" "),t("p",[t("strong",[e._v("Hi all! My name is Victoria")]),e._v(". I’m a physics graduate student and recovering engineer living in Berlin. I grew up mainly in my family’s native country of Singapore, but consider myself an American, and am still workshopping a straightforward answer to “where are you from.”")]),e._v(" "),t("p",[e._v("In my past life I worked in materials QA testing; currently, I’m at the German Aerospace Centre designing laser systems in the THz range - a type of non-visible light that hangs out on the electromagnetic spectrum between infrared and microwave.")]),e._v(" "),t("p",[e._v("My Open Science journey has just begun and I’m stoked! I started to get interested in topics around data transparency and accessibility after a series of escalating frustrations with information dynamics in medical technology, beginning in my own field of gas sensing, then discovering similar disparities in tangential fields."),t("br"),e._v("\nRead more about Victoria "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/hello-victoria/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("img",{staticStyle:{margin:"10px",border:"5px solid black"},attrs:{src:"/img/blog/Zarena.jpeg",width:"140px",align:"left"}}),e._v(" "),t("p",[t("strong",[e._v("Hello everybody! My name is Zarena")]),e._v(". I grew up in the Kyrgyz Republic, yet spent half of my life studying and working abroad. Currently, I am a Research Assistant for the project Creating Culturally Appropriate Research Ethics in Central Asia (CARE) at Nazarbayev University in Kazakhstan. I am also a Mad activist and an interdisciplinary human rights researcher. I like to consider my research activities going beyond academia to encompass and make an effect on broader socio-political structures.")]),e._v(" "),t("p",[e._v("Although I believe that life would not progress without frictions, when it comes to science and research, I feel, ‘frictions’ - manifested in a form of paywalls, bureaucratic and corporate management, or other structural barriers - should be deconstructed. So, I am joining the Frictionless Data Fellowship Programme with the purpose to learn more about open and FAIR research."),t("br"),e._v("\nLearn more about Zarena "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/hello-zarena/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("img",{staticStyle:{margin:"10px",border:"5px solid black"},attrs:{src:"/img/blog/Melvin.jpeg",width:"120px",align:"left"}}),e._v(" "),t("p",[t("strong",[e._v("Hi everyone, my name is Melvin Ochieng")]),e._v(", and I’m a pathologist and up-coming soil scientist. I was born in Kenya in a town called Eldoret that is famous for producing Kenyan marathon champions. I was raised in Kenya in my early childhood days and in Tanzania afterwards. I like to consider myself both Kenyan and Tanzanian at heart because the two countries took part in molding the person I am today. I am currently a masters student at University of Mohammed VI polytechnic in Morocco, studying fertilizer science and technology. Over the past two years, my research focused on potato cyst nematode (PCN) which is a quarantine pest that had been reported in Kenya in 2015.")]),e._v(" "),t("p",[e._v("I’m excited to start this journey as a Frictionless Data fellow with my fellows for this cohort. I just recently found out about open science and I couldn’t be more excited to learn more about this concept and how it will influence me as a researcher. Advancement in technology has opened up the world in so many ways and made possible extensive networks for collaborations globally. Notably, the problems the world is facing today require a global/collaborative approach to solve. Therefore, reproducible research is of key importance in promoting this collaboration."),t("br"),e._v("\nTo know more about Melvin click "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/hello-melvin/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("img",{staticStyle:{margin:"10px",border:"5px solid black"},attrs:{src:"/img/blog/Kevin-Photo.jpeg",width:"140px",align:"left"}}),e._v(" "),t("p",[t("strong",[e._v("Hello! My name is Kevin Kidambasi")]),e._v("(KK). I was born and raised in Vihiga County of western Kenya. Currently, I live in Nairobi, the capital city of Kenya. I am a master’s student in Jomo Kenyatta University of Agriculture and Technology (JKUAT) registered at the department of Biochemistry. My MSc research at the International Centre of Insect Physiology and Ecology (icipe) focuses on the role of haematophagous camel-specific biting keds (Hippobosca camelina) in disease transmission in Laisamis, Marsabit County of northern Kenya. My broad research interest focuses on studying host-pathogen interactions to understand infection mechanisms of diseases in order to discover novel control and treatment targets.")]),e._v(" "),t("p",[e._v("I am interested in improving research reproducibility because it allows other researchers to confirm the accuracy of my data and correct any bias as well as validate the relevance of the conclusions drawn from the results. This also allows data to be analyzed in different ways and thus, give new insights and lead the research in new directions. In addition, improving research reproducibility would allow the scientific community to understand how the conclusions of a study were made and pinpoint out any mistakes in data analyses. In general, research reproducibility enhances openness, research collaboration, and data accessibility which in turn increase public trust in science and hence permits their participation and support for research. This enables public understanding of how research is conducted and its importance."),t("br"),e._v("\nRead more about Kevin "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/hello-kevin/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("img",{staticStyle:{margin:"10px",border:"5px solid black"},attrs:{src:"/img/blog/Lindsay.jpeg",width:"120px",align:"left"}}),e._v(" "),t("p",[t("strong",[e._v("Greetings! My name is Lindsay Gypin")]),e._v(", she/her. I grew up in Denver, Colorado and began my career as a K-12 educator. I taught high school English and worked as a school librarian before becoming disillusioned with the politicization of public education and determining my skills were better suited for work in public libraries. Attending library school after having worked in libraries for so many years, I found myself drawn to courses in the research data management track of librarianship, and in qualitative research methods.I recently became a Data Services Librarian at the University of North Carolina Greensboro, where I hope to assist scholars in making their research data more open and accessible.")]),e._v(" "),t("p",[e._v("For some time, I have wanted to build a reproducible workflow to uncover systemic bias in library catalogs. I’m hoping the Fellows Programme will help me build the foundation to do so."),t("br"),e._v("\nTo learn more about Lindsay click "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/hello-lindsay/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[148],{679:function(e,a,t){"use strict";t.r(a);var i=t(29),r=Object(i.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("p",[e._v("We are very excited to introduce you to the 3rd cohort of "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Frictionless Data Reproducible Research Fellows"),t("OutboundLink")],1),e._v("! Over the coming months, this group of six early career researchers will be learning about open science, data management, and how to use Frictionless Data tooling in their work to make their data more open and their research more reusable. Keep an eye on them, as they are on their way to becoming champions of reproducibility! For now, go and read the introductory blogs they wrote about themselves to know more about them and their goals for this fellowship.")]),e._v(" "),t("img",{staticStyle:{margin:"10px",border:"5px solid black"},attrs:{src:"/img/blog/GQ.jpeg",width:"200px",align:"left"}}),e._v(" "),t("p",[t("strong",[e._v("Hi, everyone! My name is Guo-Qiang Zhang")]),e._v(", and I am from China. Right after I finished my residency training in Pediatrics, I joined Prof Bright I. Nwaru’s group and started my doctoral studies at Krefting Research Centre in University of Gothenburg (Sweden). My doctoral project is to look at the effects of sex hormones on women’s health (especially asthma), utilizing epidemiological methods as well as evidence synthesis tools (e.g., systematic review, umbrella review).")]),e._v(" "),t("p",[e._v("In my first year of doctoral studies, I had the opportunity to participate in the course “Reproducibility in Medical Research” led by Prof Nwaru. It was my first time to hear about Open Science and research reproducibility. As a “fresh” full-time doctoral student full of passion for medical research, I felt overwhelmed by waves of frustration when I came to know the reproducibility crisis. After spending some time with my frustration, I came to realize that in fact I can do something. In my first project, my colleagues and I conducted an umbrella review on a highly controversial topic on the impact of menopausal hormone therapy on women’s health. We put extensive efforts into making the review process as transparent as possible: we developed beforehand protocols for data extraction and statistical analysis, documented key steps of the review process, verified data in the published literature, and made all datasets and R scripts publicly available."),t("br"),e._v("\nTo keep on reading about Guo-Qiang click "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/hello-guo-qiang/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("img",{staticStyle:{margin:"10px",border:"5px solid black"},attrs:{src:"/img/blog/Victoria.jpeg",width:"140px",align:"left"}}),e._v(" "),t("p",[t("strong",[e._v("Hi all! My name is Victoria")]),e._v(". I’m a physics graduate student and recovering engineer living in Berlin. I grew up mainly in my family’s native country of Singapore, but consider myself an American, and am still workshopping a straightforward answer to “where are you from.”")]),e._v(" "),t("p",[e._v("In my past life I worked in materials QA testing; currently, I’m at the German Aerospace Centre designing laser systems in the THz range - a type of non-visible light that hangs out on the electromagnetic spectrum between infrared and microwave.")]),e._v(" "),t("p",[e._v("My Open Science journey has just begun and I’m stoked! I started to get interested in topics around data transparency and accessibility after a series of escalating frustrations with information dynamics in medical technology, beginning in my own field of gas sensing, then discovering similar disparities in tangential fields."),t("br"),e._v("\nRead more about Victoria "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/hello-victoria/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("img",{staticStyle:{margin:"10px",border:"5px solid black"},attrs:{src:"/img/blog/Zarena.jpeg",width:"140px",align:"left"}}),e._v(" "),t("p",[t("strong",[e._v("Hello everybody! My name is Zarena")]),e._v(". I grew up in the Kyrgyz Republic, yet spent half of my life studying and working abroad. Currently, I am a Research Assistant for the project Creating Culturally Appropriate Research Ethics in Central Asia (CARE) at Nazarbayev University in Kazakhstan. I am also a Mad activist and an interdisciplinary human rights researcher. I like to consider my research activities going beyond academia to encompass and make an effect on broader socio-political structures.")]),e._v(" "),t("p",[e._v("Although I believe that life would not progress without frictions, when it comes to science and research, I feel, ‘frictions’ - manifested in a form of paywalls, bureaucratic and corporate management, or other structural barriers - should be deconstructed. So, I am joining the Frictionless Data Fellowship Programme with the purpose to learn more about open and FAIR research."),t("br"),e._v("\nLearn more about Zarena "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/hello-zarena/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("img",{staticStyle:{margin:"10px",border:"5px solid black"},attrs:{src:"/img/blog/Melvin.jpeg",width:"120px",align:"left"}}),e._v(" "),t("p",[t("strong",[e._v("Hi everyone, my name is Melvin Ochieng")]),e._v(", and I’m a pathologist and up-coming soil scientist. I was born in Kenya in a town called Eldoret that is famous for producing Kenyan marathon champions. I was raised in Kenya in my early childhood days and in Tanzania afterwards. I like to consider myself both Kenyan and Tanzanian at heart because the two countries took part in molding the person I am today. I am currently a masters student at University of Mohammed VI polytechnic in Morocco, studying fertilizer science and technology. Over the past two years, my research focused on potato cyst nematode (PCN) which is a quarantine pest that had been reported in Kenya in 2015.")]),e._v(" "),t("p",[e._v("I’m excited to start this journey as a Frictionless Data fellow with my fellows for this cohort. I just recently found out about open science and I couldn’t be more excited to learn more about this concept and how it will influence me as a researcher. Advancement in technology has opened up the world in so many ways and made possible extensive networks for collaborations globally. Notably, the problems the world is facing today require a global/collaborative approach to solve. Therefore, reproducible research is of key importance in promoting this collaboration."),t("br"),e._v("\nTo know more about Melvin click "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/hello-melvin/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("img",{staticStyle:{margin:"10px",border:"5px solid black"},attrs:{src:"/img/blog/Kevin-Photo.jpeg",width:"140px",align:"left"}}),e._v(" "),t("p",[t("strong",[e._v("Hello! My name is Kevin Kidambasi")]),e._v("(KK). I was born and raised in Vihiga County of western Kenya. Currently, I live in Nairobi, the capital city of Kenya. I am a master’s student in Jomo Kenyatta University of Agriculture and Technology (JKUAT) registered at the department of Biochemistry. My MSc research at the International Centre of Insect Physiology and Ecology (icipe) focuses on the role of haematophagous camel-specific biting keds (Hippobosca camelina) in disease transmission in Laisamis, Marsabit County of northern Kenya. My broad research interest focuses on studying host-pathogen interactions to understand infection mechanisms of diseases in order to discover novel control and treatment targets.")]),e._v(" "),t("p",[e._v("I am interested in improving research reproducibility because it allows other researchers to confirm the accuracy of my data and correct any bias as well as validate the relevance of the conclusions drawn from the results. This also allows data to be analyzed in different ways and thus, give new insights and lead the research in new directions. In addition, improving research reproducibility would allow the scientific community to understand how the conclusions of a study were made and pinpoint out any mistakes in data analyses. In general, research reproducibility enhances openness, research collaboration, and data accessibility which in turn increase public trust in science and hence permits their participation and support for research. This enables public understanding of how research is conducted and its importance."),t("br"),e._v("\nRead more about Kevin "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/hello-kevin/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("img",{staticStyle:{margin:"10px",border:"5px solid black"},attrs:{src:"/img/blog/Lindsay.jpeg",width:"120px",align:"left"}}),e._v(" "),t("p",[t("strong",[e._v("Greetings! My name is Lindsay Gypin")]),e._v(", she/her. I grew up in Denver, Colorado and began my career as a K-12 educator. I taught high school English and worked as a school librarian before becoming disillusioned with the politicization of public education and determining my skills were better suited for work in public libraries. Attending library school after having worked in libraries for so many years, I found myself drawn to courses in the research data management track of librarianship, and in qualitative research methods.I recently became a Data Services Librarian at the University of North Carolina Greensboro, where I hope to assist scholars in making their research data more open and accessible.")]),e._v(" "),t("p",[e._v("For some time, I have wanted to build a reproducible workflow to uncover systemic bias in library catalogs. I’m hoping the Fellows Programme will help me build the foundation to do so."),t("br"),e._v("\nTo learn more about Lindsay click "),t("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/hello-lindsay/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/149.9c67d050.js b/assets/js/149.4bf2a3a2.js similarity index 98% rename from assets/js/149.9c67d050.js rename to assets/js/149.4bf2a3a2.js index e1ef5c7fc..891779805 100644 --- a/assets/js/149.9c67d050.js +++ b/assets/js/149.4bf2a3a2.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[149],{681:function(e,t,a){"use strict";a.r(t);var o=a(29),r=Object(o.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[e._v("On the last Frictionless Data community call of the year, on December 16"),a("sup",[e._v("th")]),e._v(", we had Keith Hughitt from the National Cancer Institute (NCI) sharing (and demoing) his ideas around representing data processing flows as a DAG (Directed Acyclic Graph) inside of a datapackage.json, and tools for interacting with and visualizing such DAGs.")]),e._v(" "),a("p",[e._v("Keith started thinking about this when he realised that cleaning and processing data are not obvious processes, on the contrary, there is a lot of bias in them. The decisions made to clean the raw data are not generally included in the publications and are not made available in any transparent way. To allow collaboration and reproducibility, Keith thought of embedding and annotated data provenance DAG in a datapackage.json using the Frictionless specs.")]),e._v(" "),a("p",[e._v("The basic process Keith has in mind to solve this problem is:")]),e._v(" "),a("ul",[a("li",[e._v("The data provenance is encoded as a DAG in the metadata")]),e._v(" "),a("li",[e._v("For each step in processing the workflow, the previous DAG is copied and extended")]),e._v(" "),a("li",[e._v("Each node of the DAG represents a dataset at a particular stage of processing, and it can be associated with annotations, views")]),e._v(" "),a("li",[e._v("Datapackages would be generated and associated with each node")]),e._v(" "),a("li",[e._v("Have a web UI that reads the metadata and renders the DAG.")])]),e._v(" "),a("p",[e._v("If you would like to dive deeper and discover all about representing data processing flows as DAG inside of a Data Package, you can watch Keith Hughitt’s presentation here:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/pDpAuyTCvF0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),a("p",[e._v("If you find this idea interesting, come and talk to Keith on "),a("a",{attrs:{href:"https://discord.com/invite/j9DNFNw",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),a("OutboundLink")],1),e._v("! He would love to hear what you think and if you have other ideas in mind.")]),e._v(" "),a("h2",{attrs:{id:"other-agenda-items-from-our-hangout"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#other-agenda-items-from-our-hangout"}},[e._v("#")]),e._v(" Other agenda items from our hangout")]),e._v(" "),a("p",[e._v("We are part of the organisation of the "),a("a",{attrs:{href:"https://fosdem.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("FOSDEM"),a("OutboundLink")],1),e._v(" Thematic Track "),a("em",[e._v("Open Research Tools & Technologies")]),e._v(" this year too. We would love to have someone from the Frictionless community giving a talk. The deadline has been extended and you have time until December 23"),a("sup",[e._v("rd")]),e._v(" to submit a talk proposal! More info at "),a("a",{attrs:{href:"https://fosdem.org/2022/news/2021-11-02-devroom-cfp/",target:"_blank",rel:"noopener noreferrer"}},[e._v("this page"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h1",{attrs:{id:"join-us-next-month"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[e._v("#")]),e._v(" Join us next month!")]),e._v(" "),a("p",[e._v("Next community call is next year, on January 21"),a("sup",[e._v("st")]),e._v(". Francisco Alves, from the DPCKAN team who won the Frictionless Data hackathon back in October, is going to present their prototype and how it evolved.")]),e._v(" "),a("p",[e._v("You can sign up "),a("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here:"),a("OutboundLink")],1)]),e._v(" "),a("p",[e._v("Do you want to share something with the community? Let us know when you sign up!")]),e._v(" "),a("h1",{attrs:{id:"call-recording"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call recording:")]),e._v(" "),a("p",[e._v("On a final note, here is the recording of the full call:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/FaWixB29SUA",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),a("p",[e._v("As usual, you can join us on "),a("a",{attrs:{href:"https://discord.com/invite/j9DNFNw",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),a("OutboundLink")],1),e._v(" or "),a("a",{attrs:{href:"https://twitter.com/frictionlessd8a",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),a("OutboundLink")],1),e._v(" to say hi or ask any questions. See you there!")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[149],{680:function(e,t,a){"use strict";a.r(t);var o=a(29),r=Object(o.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[e._v("On the last Frictionless Data community call of the year, on December 16"),a("sup",[e._v("th")]),e._v(", we had Keith Hughitt from the National Cancer Institute (NCI) sharing (and demoing) his ideas around representing data processing flows as a DAG (Directed Acyclic Graph) inside of a datapackage.json, and tools for interacting with and visualizing such DAGs.")]),e._v(" "),a("p",[e._v("Keith started thinking about this when he realised that cleaning and processing data are not obvious processes, on the contrary, there is a lot of bias in them. The decisions made to clean the raw data are not generally included in the publications and are not made available in any transparent way. To allow collaboration and reproducibility, Keith thought of embedding and annotated data provenance DAG in a datapackage.json using the Frictionless specs.")]),e._v(" "),a("p",[e._v("The basic process Keith has in mind to solve this problem is:")]),e._v(" "),a("ul",[a("li",[e._v("The data provenance is encoded as a DAG in the metadata")]),e._v(" "),a("li",[e._v("For each step in processing the workflow, the previous DAG is copied and extended")]),e._v(" "),a("li",[e._v("Each node of the DAG represents a dataset at a particular stage of processing, and it can be associated with annotations, views")]),e._v(" "),a("li",[e._v("Datapackages would be generated and associated with each node")]),e._v(" "),a("li",[e._v("Have a web UI that reads the metadata and renders the DAG.")])]),e._v(" "),a("p",[e._v("If you would like to dive deeper and discover all about representing data processing flows as DAG inside of a Data Package, you can watch Keith Hughitt’s presentation here:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/pDpAuyTCvF0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),a("p",[e._v("If you find this idea interesting, come and talk to Keith on "),a("a",{attrs:{href:"https://discord.com/invite/j9DNFNw",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),a("OutboundLink")],1),e._v("! He would love to hear what you think and if you have other ideas in mind.")]),e._v(" "),a("h2",{attrs:{id:"other-agenda-items-from-our-hangout"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#other-agenda-items-from-our-hangout"}},[e._v("#")]),e._v(" Other agenda items from our hangout")]),e._v(" "),a("p",[e._v("We are part of the organisation of the "),a("a",{attrs:{href:"https://fosdem.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("FOSDEM"),a("OutboundLink")],1),e._v(" Thematic Track "),a("em",[e._v("Open Research Tools & Technologies")]),e._v(" this year too. We would love to have someone from the Frictionless community giving a talk. The deadline has been extended and you have time until December 23"),a("sup",[e._v("rd")]),e._v(" to submit a talk proposal! More info at "),a("a",{attrs:{href:"https://fosdem.org/2022/news/2021-11-02-devroom-cfp/",target:"_blank",rel:"noopener noreferrer"}},[e._v("this page"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h1",{attrs:{id:"join-us-next-month"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[e._v("#")]),e._v(" Join us next month!")]),e._v(" "),a("p",[e._v("Next community call is next year, on January 21"),a("sup",[e._v("st")]),e._v(". Francisco Alves, from the DPCKAN team who won the Frictionless Data hackathon back in October, is going to present their prototype and how it evolved.")]),e._v(" "),a("p",[e._v("You can sign up "),a("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here:"),a("OutboundLink")],1)]),e._v(" "),a("p",[e._v("Do you want to share something with the community? Let us know when you sign up!")]),e._v(" "),a("h1",{attrs:{id:"call-recording"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call recording:")]),e._v(" "),a("p",[e._v("On a final note, here is the recording of the full call:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/FaWixB29SUA",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),a("p",[e._v("As usual, you can join us on "),a("a",{attrs:{href:"https://discord.com/invite/j9DNFNw",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),a("OutboundLink")],1),e._v(" or "),a("a",{attrs:{href:"https://twitter.com/frictionlessd8a",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),a("OutboundLink")],1),e._v(" to say hi or ask any questions. See you there!")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/15.021d8fa7.js b/assets/js/15.cae14ca7.js similarity index 99% rename from assets/js/15.021d8fa7.js rename to assets/js/15.cae14ca7.js index 1926eac15..484e25ef2 100644 --- a/assets/js/15.021d8fa7.js +++ b/assets/js/15.cae14ca7.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{523:function(e,t,a){e.exports=a.p+"assets/img/deploy-solutions-img-1.e03bb95a.png"},524:function(e,t,a){e.exports=a.p+"assets/img/Deploy-solutions-img-2.50645805.png"},525:function(e,t,a){e.exports=a.p+"assets/img/deploy-solutions-img-3.690aace9.png"},526:function(e,t,a){e.exports=a.p+"assets/img/OASIS-Prototype-Features-Import-Data.e63330ef.gif"},705:function(e,t,a){"use strict";a.r(t);var o=a(29),s=Object(o.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"our-climate-change-research-and-development-program"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#our-climate-change-research-and-development-program"}},[e._v("#")]),e._v(" Our Climate Change Research and Development Program")]),e._v(" "),o("p",[e._v("We’re Canadian software developers passionate about space and the Earth."),o("br"),e._v("\nSince 2019, we have been working with hundreds of students, citizens, NGOs, scientists, and government officials to identify top communication problems getting citizens to act on climate change risks. We are exploring ways software can help authorities and ordinary citizens communicate better and prepare for, respond to, and recover from climate change impacts and natural disasters."),o("br"),e._v("\nWe have gathered unprecedented insights into how software can help and are now building a prototype to put these insights into practice and help individuals and communities before, during, and after a climate change impact or natural disaster.")]),e._v(" "),o("h1",{attrs:{id:"our-climate-change-software-prototype"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#our-climate-change-software-prototype"}},[e._v("#")]),e._v(" Our Climate Change Software Prototype")]),e._v(" "),o("p",[e._v("The prototype is based on historic floods that occurred in Ottawa-Gatineau in 2017 and 2019, and is intended to demonstrate ways that software can help emergency responders and local government officials communicate better with the general public."),o("br"),e._v("\nIt isn’t intended to replace any emergency alert or other government systems. Instead, its focus is on communicating, collaborating with, and supporting individuals and communities as they prepare, respond, and recover from disasters and impacts."),o("br"),e._v("\nThe prototype is modular and organized into different sections, grouped by the intended main audience:")]),e._v(" "),o("h2",{attrs:{id:"trusted-authorities-web-portal"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#trusted-authorities-web-portal"}},[e._v("#")]),e._v(" “Trusted Authorities” web portal")]),e._v(" "),o("p",[e._v("This audience includes emergency responders, government officials at the municipal, provincial, and federal levels, officials and staff at hydro-electric stations and municipal infrastructure, and other groups who would have authority over the planning, response, and recovery efforts. They produce and consume official data sources, and can share some of that information with the general public or citizen scientist audiences. The web portal contains sensitive, non-public information and therefore requires a secure login for verified users."),o("br"),e._v('\nThis is an example of the Trusted Authority Dashboard (showing other prototype"modules" in addition to the flooding):')]),e._v(" "),o("p",[o("img",{attrs:{src:a(523),alt:"deploy-solutions-img-1"}})]),e._v(" "),o("h2",{attrs:{id:"general-public-anonymous-website"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#general-public-anonymous-website"}},[e._v("#")]),e._v(" General public (anonymous website)")]),e._v(" "),o("p",[e._v("The audience for this section of the prototype is the members of the public who are impacted by the flood, or likely to be. They consume official data sources but do not produce any of their own (in our current prototype). This section is a public, read-only website which does not require any login."),o("br"),e._v("\nThe information the public will see includes a variety of data sources including: checklists for disaster preparation, response, and recovery; curated news and social media information on the disaster; useful resources including emergency and insurance information; and more.")]),e._v(" "),o("p",[o("img",{attrs:{src:a(524),alt:"deploy-solutions-img-2"}})]),e._v(" "),o("h1",{attrs:{id:"what-data-does-the-prototype-need"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#what-data-does-the-prototype-need"}},[e._v("#")]),e._v(" What Data Does the Prototype Need?")]),e._v(" "),o("p",[e._v("As you can see from the screens above, the prototype needs to manage a wide variety of flood disaster-related data sets, from all kinds of providers and with varying degrees of reliability and quality."),o("br"),e._v('\nSome of this data we consider to be"official" and “static” (meaning it exists before a disaster occurs). This kind of data include official government-sourced open data, such as a list of hospitals, police stations, and municipal infrastructure.'),o("br"),e._v("\nObviously these lists wouldn’t change in the middle of a disaster, and would be prepared ahead of time."),o("br"),e._v("\nHowever, there would also be a set of ad-hoc lists created to suit the particular needs of the disaster response and community involvement. This is data that is highly subjective to the particular circumstances of the disaster, cannot be known ahead of time, and is likely to evolve over the course of the disaster."),o("br"),e._v("\nExamples of such “dynamic data” include locations where sandbags are prepared, locations of emergency shelters, lists of emergency supplies and so on.")]),e._v(" "),o("p",[o("img",{attrs:{src:a(525),alt:"Deploy-solutions-img-3"}})]),e._v(" "),o("p",[e._v("Our software prototype allows users to upload CSV files as part of a data import process to make it easy and quick to populate the system with static or dynamic data."),o("br"),e._v("\nEnsuring the quality of ad-hoc data sets is of particular concern, since there are likely to be fewer quality checks for data generated rapidly in response to urgent need.")]),e._v(" "),o("h1",{attrs:{id:"why-do-we-need-frictionless-data"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#why-do-we-need-frictionless-data"}},[e._v("#")]),e._v(" Why Do We Need Frictionless Data?")]),e._v(" "),o("p",[e._v("Therefore, the prototype needs to ensure the users can only upload data that is considered valid according to the Frictionless schema. So before completing the import we have to check every file a user uploads. If it isn’t valid, we need to display a detailed error message to the user so they can fix any errors and retry."),o("br"),e._v("\nThis prevents a user from accidentally entering invalid information and potentially causing corrupt or incomplete records."),o("br"),e._v("\nIt may appear that adding a validation check slows things down. However, this is actually a significantly faster and more user-friendly data import process. From a technical perspective, we can make an asynchronous RESTful call to the Frictionless Data validation service and the response is quick. From a process perspective, without Frictionless Data validation a user might not find out about issues until after the import, and would then have to waste valuable time and effort cleaning up data integrity errors."),o("br"),e._v("\nSince the prototype is intended to help with a flood disaster response, it is critical to avoid any such delays or data integrity risks!")]),e._v(" "),o("h1",{attrs:{id:"how-we-use-frictionless-data"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#how-we-use-frictionless-data"}},[e._v("#")]),e._v(" How We Use Frictionless Data")]),e._v(" "),o("p",[e._v("To achieve the benefits above, we use the "),o("a",{attrs:{href:"https://framework.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Python Frictionless SDK"),o("OutboundLink")],1),e._v(" hosted in the Amazon Web Services (AWS) cloud."),o("br"),e._v("\nThe code is written in Python programming language. The main Frictionless elements we use currently are the "),o("code",[e._v("Resource")]),e._v(" schema and the "),o("code",[e._v("validate()")]),e._v(" feature. The Python code is deployed as a Lambda layer behind an AWS API Gateway service."),o("br"),e._v("\nThis technical architecture allows us to easily call the Frictionless Data validation feature from our software solutions via simple REST methods calls. The feature can be deployed, secured, and scaled independently of the other prototype components."),o("br"),e._v("\nOf course the code needs to know what schemas to validate against. We create and store Deploy Solutions frictionless schemas for the data sets we described above. There is one schema created for each type of data that we allow a user to import. We store these in a single AmazonS3 bucket, that can only be accessed by the Lambda layer."),o("br"),e._v("\nWhen a user uploads a CSV file into our prototype, they have to choose which type of data they are saving so we know which schema to validate against (depending on which page they’re on, we can usually make this choice for them)."),o("br"),e._v("\nFor example, if a user was uploading a list of Sandbag assembly locations, the software would know to validate against "),o("em",[e._v("the dss-sandbaggingregion_schema.json")]),e._v(" Frictionless schema."),o("br"),e._v("\nWe then create a Frictionless Resource file which consists of the uploaded CSV and the matching schema. Using this Resource file, our software calls the Frictionless "),o("code",[e._v("validate()")]),e._v(" method and receives the validation report back."),o("br"),e._v("\nIf errors are found, these need to be returned back to the user. In our front-end web client (we use Angular), we format the raw report into table display. The report tells the user precisely which row, column and cell requires fixing, saving them valuable time and eliminating more errors!"),o("br"),e._v("\nYou can see the result in the animated GIF below.")]),e._v(" "),o("p",[o("img",{attrs:{src:a(526),alt:"OASIS Prototype Features Import Data - Invalid Data is Blocked-high"}})]),e._v(" "),o("p",[e._v("Obviously the technical complexities mentioned above are hidden away and the user just sees a very simple and intuitive set of validation messages - or hopefully just a success message!"),o("br"),e._v("\nYou can see a full video of this process on our video showcase page: "),o("a",{attrs:{href:"https://showcase.oasis.climatechange.ca",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://showcase.oasis.climatechange.ca"),o("OutboundLink")],1)]),e._v(" "),o("h1",{attrs:{id:"want-to-learn-more-about-our-software-prototype-and-climate-change-software-r-d"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#want-to-learn-more-about-our-software-prototype-and-climate-change-software-r-d"}},[e._v("#")]),e._v(" Want to Learn More About Our Software Prototype and Climate Change Software R&D?")]),e._v(" "),o("p",[e._v("We’ve created a new service to share our climate change software development knowledge. It’s called “OASIS: Software Solutions for Climate Change Problems”."),o("br"),e._v("\nThe OASIS service includes a free weekly newsletter and premium subscription service. It shares unique insights, content, resources, and guidance on how to use software and data from Earth and space to build solutions for climate change problems."),o("br"),e._v("\nLearn more, and subscribe to the free newsletter, at "),o("a",{attrs:{href:"https://oasis.climatechange.ca",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://oasis.climatechange.ca"),o("OutboundLink")],1),e._v(".")])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{523:function(e,t,a){e.exports=a.p+"assets/img/deploy-solutions-img-1.e03bb95a.png"},524:function(e,t,a){e.exports=a.p+"assets/img/Deploy-solutions-img-2.50645805.png"},525:function(e,t,a){e.exports=a.p+"assets/img/deploy-solutions-img-3.690aace9.png"},526:function(e,t,a){e.exports=a.p+"assets/img/OASIS-Prototype-Features-Import-Data.e63330ef.gif"},704:function(e,t,a){"use strict";a.r(t);var o=a(29),s=Object(o.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"our-climate-change-research-and-development-program"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#our-climate-change-research-and-development-program"}},[e._v("#")]),e._v(" Our Climate Change Research and Development Program")]),e._v(" "),o("p",[e._v("We’re Canadian software developers passionate about space and the Earth."),o("br"),e._v("\nSince 2019, we have been working with hundreds of students, citizens, NGOs, scientists, and government officials to identify top communication problems getting citizens to act on climate change risks. We are exploring ways software can help authorities and ordinary citizens communicate better and prepare for, respond to, and recover from climate change impacts and natural disasters."),o("br"),e._v("\nWe have gathered unprecedented insights into how software can help and are now building a prototype to put these insights into practice and help individuals and communities before, during, and after a climate change impact or natural disaster.")]),e._v(" "),o("h1",{attrs:{id:"our-climate-change-software-prototype"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#our-climate-change-software-prototype"}},[e._v("#")]),e._v(" Our Climate Change Software Prototype")]),e._v(" "),o("p",[e._v("The prototype is based on historic floods that occurred in Ottawa-Gatineau in 2017 and 2019, and is intended to demonstrate ways that software can help emergency responders and local government officials communicate better with the general public."),o("br"),e._v("\nIt isn’t intended to replace any emergency alert or other government systems. Instead, its focus is on communicating, collaborating with, and supporting individuals and communities as they prepare, respond, and recover from disasters and impacts."),o("br"),e._v("\nThe prototype is modular and organized into different sections, grouped by the intended main audience:")]),e._v(" "),o("h2",{attrs:{id:"trusted-authorities-web-portal"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#trusted-authorities-web-portal"}},[e._v("#")]),e._v(" “Trusted Authorities” web portal")]),e._v(" "),o("p",[e._v("This audience includes emergency responders, government officials at the municipal, provincial, and federal levels, officials and staff at hydro-electric stations and municipal infrastructure, and other groups who would have authority over the planning, response, and recovery efforts. They produce and consume official data sources, and can share some of that information with the general public or citizen scientist audiences. The web portal contains sensitive, non-public information and therefore requires a secure login for verified users."),o("br"),e._v('\nThis is an example of the Trusted Authority Dashboard (showing other prototype"modules" in addition to the flooding):')]),e._v(" "),o("p",[o("img",{attrs:{src:a(523),alt:"deploy-solutions-img-1"}})]),e._v(" "),o("h2",{attrs:{id:"general-public-anonymous-website"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#general-public-anonymous-website"}},[e._v("#")]),e._v(" General public (anonymous website)")]),e._v(" "),o("p",[e._v("The audience for this section of the prototype is the members of the public who are impacted by the flood, or likely to be. They consume official data sources but do not produce any of their own (in our current prototype). This section is a public, read-only website which does not require any login."),o("br"),e._v("\nThe information the public will see includes a variety of data sources including: checklists for disaster preparation, response, and recovery; curated news and social media information on the disaster; useful resources including emergency and insurance information; and more.")]),e._v(" "),o("p",[o("img",{attrs:{src:a(524),alt:"deploy-solutions-img-2"}})]),e._v(" "),o("h1",{attrs:{id:"what-data-does-the-prototype-need"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#what-data-does-the-prototype-need"}},[e._v("#")]),e._v(" What Data Does the Prototype Need?")]),e._v(" "),o("p",[e._v("As you can see from the screens above, the prototype needs to manage a wide variety of flood disaster-related data sets, from all kinds of providers and with varying degrees of reliability and quality."),o("br"),e._v('\nSome of this data we consider to be"official" and “static” (meaning it exists before a disaster occurs). This kind of data include official government-sourced open data, such as a list of hospitals, police stations, and municipal infrastructure.'),o("br"),e._v("\nObviously these lists wouldn’t change in the middle of a disaster, and would be prepared ahead of time."),o("br"),e._v("\nHowever, there would also be a set of ad-hoc lists created to suit the particular needs of the disaster response and community involvement. This is data that is highly subjective to the particular circumstances of the disaster, cannot be known ahead of time, and is likely to evolve over the course of the disaster."),o("br"),e._v("\nExamples of such “dynamic data” include locations where sandbags are prepared, locations of emergency shelters, lists of emergency supplies and so on.")]),e._v(" "),o("p",[o("img",{attrs:{src:a(525),alt:"Deploy-solutions-img-3"}})]),e._v(" "),o("p",[e._v("Our software prototype allows users to upload CSV files as part of a data import process to make it easy and quick to populate the system with static or dynamic data."),o("br"),e._v("\nEnsuring the quality of ad-hoc data sets is of particular concern, since there are likely to be fewer quality checks for data generated rapidly in response to urgent need.")]),e._v(" "),o("h1",{attrs:{id:"why-do-we-need-frictionless-data"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#why-do-we-need-frictionless-data"}},[e._v("#")]),e._v(" Why Do We Need Frictionless Data?")]),e._v(" "),o("p",[e._v("Therefore, the prototype needs to ensure the users can only upload data that is considered valid according to the Frictionless schema. So before completing the import we have to check every file a user uploads. If it isn’t valid, we need to display a detailed error message to the user so they can fix any errors and retry."),o("br"),e._v("\nThis prevents a user from accidentally entering invalid information and potentially causing corrupt or incomplete records."),o("br"),e._v("\nIt may appear that adding a validation check slows things down. However, this is actually a significantly faster and more user-friendly data import process. From a technical perspective, we can make an asynchronous RESTful call to the Frictionless Data validation service and the response is quick. From a process perspective, without Frictionless Data validation a user might not find out about issues until after the import, and would then have to waste valuable time and effort cleaning up data integrity errors."),o("br"),e._v("\nSince the prototype is intended to help with a flood disaster response, it is critical to avoid any such delays or data integrity risks!")]),e._v(" "),o("h1",{attrs:{id:"how-we-use-frictionless-data"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#how-we-use-frictionless-data"}},[e._v("#")]),e._v(" How We Use Frictionless Data")]),e._v(" "),o("p",[e._v("To achieve the benefits above, we use the "),o("a",{attrs:{href:"https://framework.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Python Frictionless SDK"),o("OutboundLink")],1),e._v(" hosted in the Amazon Web Services (AWS) cloud."),o("br"),e._v("\nThe code is written in Python programming language. The main Frictionless elements we use currently are the "),o("code",[e._v("Resource")]),e._v(" schema and the "),o("code",[e._v("validate()")]),e._v(" feature. The Python code is deployed as a Lambda layer behind an AWS API Gateway service."),o("br"),e._v("\nThis technical architecture allows us to easily call the Frictionless Data validation feature from our software solutions via simple REST methods calls. The feature can be deployed, secured, and scaled independently of the other prototype components."),o("br"),e._v("\nOf course the code needs to know what schemas to validate against. We create and store Deploy Solutions frictionless schemas for the data sets we described above. There is one schema created for each type of data that we allow a user to import. We store these in a single AmazonS3 bucket, that can only be accessed by the Lambda layer."),o("br"),e._v("\nWhen a user uploads a CSV file into our prototype, they have to choose which type of data they are saving so we know which schema to validate against (depending on which page they’re on, we can usually make this choice for them)."),o("br"),e._v("\nFor example, if a user was uploading a list of Sandbag assembly locations, the software would know to validate against "),o("em",[e._v("the dss-sandbaggingregion_schema.json")]),e._v(" Frictionless schema."),o("br"),e._v("\nWe then create a Frictionless Resource file which consists of the uploaded CSV and the matching schema. Using this Resource file, our software calls the Frictionless "),o("code",[e._v("validate()")]),e._v(" method and receives the validation report back."),o("br"),e._v("\nIf errors are found, these need to be returned back to the user. In our front-end web client (we use Angular), we format the raw report into table display. The report tells the user precisely which row, column and cell requires fixing, saving them valuable time and eliminating more errors!"),o("br"),e._v("\nYou can see the result in the animated GIF below.")]),e._v(" "),o("p",[o("img",{attrs:{src:a(526),alt:"OASIS Prototype Features Import Data - Invalid Data is Blocked-high"}})]),e._v(" "),o("p",[e._v("Obviously the technical complexities mentioned above are hidden away and the user just sees a very simple and intuitive set of validation messages - or hopefully just a success message!"),o("br"),e._v("\nYou can see a full video of this process on our video showcase page: "),o("a",{attrs:{href:"https://showcase.oasis.climatechange.ca",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://showcase.oasis.climatechange.ca"),o("OutboundLink")],1)]),e._v(" "),o("h1",{attrs:{id:"want-to-learn-more-about-our-software-prototype-and-climate-change-software-r-d"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#want-to-learn-more-about-our-software-prototype-and-climate-change-software-r-d"}},[e._v("#")]),e._v(" Want to Learn More About Our Software Prototype and Climate Change Software R&D?")]),e._v(" "),o("p",[e._v("We’ve created a new service to share our climate change software development knowledge. It’s called “OASIS: Software Solutions for Climate Change Problems”."),o("br"),e._v("\nThe OASIS service includes a free weekly newsletter and premium subscription service. It shares unique insights, content, resources, and guidance on how to use software and data from Earth and space to build solutions for climate change problems."),o("br"),e._v("\nLearn more, and subscribe to the free newsletter, at "),o("a",{attrs:{href:"https://oasis.climatechange.ca",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://oasis.climatechange.ca"),o("OutboundLink")],1),e._v(".")])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/150.d8afa583.js b/assets/js/150.fdc13174.js similarity index 98% rename from assets/js/150.d8afa583.js rename to assets/js/150.fdc13174.js index 5d36c8a6e..c6a7bc920 100644 --- a/assets/js/150.d8afa583.js +++ b/assets/js/150.fdc13174.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[150],{684:function(e,t,a){"use strict";a.r(t);var n=a(29),o=Object(n.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[e._v("Originally published: "),a("a",{attrs:{href:"https://blog.okfn.org/2022/01/10/frictionless-planet-save-the-date/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://blog.okfn.org/2022/01/10/frictionless-planet-save-the-date/"),a("OutboundLink")],1)]),e._v(" "),a("p",[e._v("We believe that an ecosystem of organisations combining tools, techniques and strategies to transform datasets relevant to the climate crisis into applied knowledge and actionable campaigns can get us closer to the Paris agreement goals. Today, scientists, academics and activists are working against the clock to save us from the greatest catastrophe of our times. But they are doing so under-resourced, siloed and disconnected. Sometimes even facing physical threats or achieving very local, isolated impact. We want to reverse that by activating a cross-sectoral sharing process of tools, techniques and technologies to open the data and unleash the power of knowledge to fight against climate change. We already started with the Frictionless Data process – collaborating with researcher groups to "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2020/09/16/goodtables-bcodmo/",target:"_blank",rel:"noopener noreferrer"}},[e._v("better manage ocean research data"),a("OutboundLink")],1),e._v(" and "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2020/03/18/frictionless-data-pilot-study/",target:"_blank",rel:"noopener noreferrer"}},[e._v("openly publish cleaned, integrated energy data"),a("OutboundLink")],1),e._v(" – and we want to expand an action-oriented alliance leading to cross regional, cross sectoral, sustainable collaboration. We need to use the best tools and the best minds of our times to fight the problems of our times.")]),e._v(" "),a("p",[e._v("We consider you-your organisation- as leading thinkers-doers-communicators leveraging technology and creativity in a unique way, with the potential to lead to meaningful change and we would love to invite you to an initial brainstorming session as we think of common efforts, a sustainability path and a road of action to work the next three years and beyond.")]),e._v(" "),a("p",[e._v("What will we do together during this brainstorming session? Our overarching goal is to make open climate data more useful. To that end, during this initial session, we will conceptualise ways of cleaning and standardising open climate data, creating more reproducible and efficient methods of consuming and analysing that data, and focus on ways to put this data into the hands of those that can truly drive change.")]),e._v(" "),a("h1",{attrs:{id:"what-to-bring"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-to-bring"}},[e._v("#")]),e._v(" WHAT TO BRING?")]),e._v(" "),a("ul",[a("li",[e._v("An effort-idea that is effective and you feel proud of at the intersection of digital and climate change.")]),e._v(" "),a("li",[e._v("A data problem you are struggling with.")]),e._v(" "),a("li",[e._v("Your best post-holidays smile.")])]),e._v(" "),a("h1",{attrs:{id:"when"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#when"}},[e._v("#")]),e._v(" When?")]),e._v(" "),a("p",[e._v("13:30 GMT – 20 January – Registration open "),a("a",{attrs:{href:"https://www.eventbrite.co.uk/e/frictionless-planet-tickets-242708286017",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(". "),a("strong",[e._v("SOLD OUT")])]),e._v(" "),a("p",[e._v("20:30 GMT – 21 January – Registration open "),a("a",{attrs:{href:"https://www.eventbrite.co.uk/e/frictionless-planet-tickets-242807803677",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("Limited slots, 25 attendees per session.")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[150],{682:function(e,t,a){"use strict";a.r(t);var n=a(29),o=Object(n.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[e._v("Originally published: "),a("a",{attrs:{href:"https://blog.okfn.org/2022/01/10/frictionless-planet-save-the-date/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://blog.okfn.org/2022/01/10/frictionless-planet-save-the-date/"),a("OutboundLink")],1)]),e._v(" "),a("p",[e._v("We believe that an ecosystem of organisations combining tools, techniques and strategies to transform datasets relevant to the climate crisis into applied knowledge and actionable campaigns can get us closer to the Paris agreement goals. Today, scientists, academics and activists are working against the clock to save us from the greatest catastrophe of our times. But they are doing so under-resourced, siloed and disconnected. Sometimes even facing physical threats or achieving very local, isolated impact. We want to reverse that by activating a cross-sectoral sharing process of tools, techniques and technologies to open the data and unleash the power of knowledge to fight against climate change. We already started with the Frictionless Data process – collaborating with researcher groups to "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2020/09/16/goodtables-bcodmo/",target:"_blank",rel:"noopener noreferrer"}},[e._v("better manage ocean research data"),a("OutboundLink")],1),e._v(" and "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2020/03/18/frictionless-data-pilot-study/",target:"_blank",rel:"noopener noreferrer"}},[e._v("openly publish cleaned, integrated energy data"),a("OutboundLink")],1),e._v(" – and we want to expand an action-oriented alliance leading to cross regional, cross sectoral, sustainable collaboration. We need to use the best tools and the best minds of our times to fight the problems of our times.")]),e._v(" "),a("p",[e._v("We consider you-your organisation- as leading thinkers-doers-communicators leveraging technology and creativity in a unique way, with the potential to lead to meaningful change and we would love to invite you to an initial brainstorming session as we think of common efforts, a sustainability path and a road of action to work the next three years and beyond.")]),e._v(" "),a("p",[e._v("What will we do together during this brainstorming session? Our overarching goal is to make open climate data more useful. To that end, during this initial session, we will conceptualise ways of cleaning and standardising open climate data, creating more reproducible and efficient methods of consuming and analysing that data, and focus on ways to put this data into the hands of those that can truly drive change.")]),e._v(" "),a("h1",{attrs:{id:"what-to-bring"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-to-bring"}},[e._v("#")]),e._v(" WHAT TO BRING?")]),e._v(" "),a("ul",[a("li",[e._v("An effort-idea that is effective and you feel proud of at the intersection of digital and climate change.")]),e._v(" "),a("li",[e._v("A data problem you are struggling with.")]),e._v(" "),a("li",[e._v("Your best post-holidays smile.")])]),e._v(" "),a("h1",{attrs:{id:"when"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#when"}},[e._v("#")]),e._v(" When?")]),e._v(" "),a("p",[e._v("13:30 GMT – 20 January – Registration open "),a("a",{attrs:{href:"https://www.eventbrite.co.uk/e/frictionless-planet-tickets-242708286017",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(". "),a("strong",[e._v("SOLD OUT")])]),e._v(" "),a("p",[e._v("20:30 GMT – 21 January – Registration open "),a("a",{attrs:{href:"https://www.eventbrite.co.uk/e/frictionless-planet-tickets-242807803677",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("Limited slots, 25 attendees per session.")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/151.99fc6a01.js b/assets/js/151.0bba1436.js similarity index 98% rename from assets/js/151.99fc6a01.js rename to assets/js/151.0bba1436.js index c479666d8..e428edebc 100644 --- a/assets/js/151.99fc6a01.js +++ b/assets/js/151.0bba1436.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[151],{685:function(e,t,a){"use strict";a.r(t);var r=a(29),o=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[e._v("On January 27"),a("sup",[e._v("th")]),e._v(", for the first Frictionless Data community call of the year, we heard a presentation on the Data Package Manager for CKAN (DPCKAN) from Francisco Alves - leader of the proactive transparency policy in the Brazilian State of Minas Gerais.")]),e._v(" "),a("p",[e._v("You may remember Francisco and DPCKAN from the "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/10/13/hackathon-wrap/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Frictionless Data Hackathon"),a("OutboundLink")],1),e._v(" back in October 2021, where his team won the hack with this very project.")]),e._v(" "),a("h2",{attrs:{id:"so-what-is-dpckan"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#so-what-is-dpckan"}},[e._v("#")]),e._v(" So what is DPCKAN?")]),e._v(" "),a("p",[e._v("It all started with the will to publish all the raw data on the Fiscal Transparency portal of the State of Minas Gereis, which is built on a "),a("a",{attrs:{href:"https://ckan.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("CKAN"),a("OutboundLink")],1),e._v(" instance, as open data following the Frictionless standards.")]),e._v(" "),a("p",[e._v("Francisco and his team wanted to install a data package, and be able to work with it locally. They also wanted to have the ability to partially update a dataset already uploaded in CKAN without overwriting it (this particular feature was developed during the Hackathon). That’s how the Data Package Manager was born. It is now in active development.")]),e._v(" "),a("h2",{attrs:{id:"and-what-s-next"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#and-what-s-next"}},[e._v("#")]),e._v(" And what’s next?")]),e._v(" "),a("p",[e._v("Francisco and his team would like to:")]),e._v(" "),a("ul",[a("li",[e._v("Make it possible to read a data package directly from CKAN,")]),e._v(" "),a("li",[e._v("Make CKAN Datastore respect the Frictionless table schema types")]),e._v(" "),a("li",[e._v("Have human readable metadata visualisation")]),e._v(" "),a("li",[e._v("Contribute back upstream to Frictionless Data, CKAN, etc.")])]),e._v(" "),a("p",[e._v("Franscisco also gave a quick demo of what the DPCKAN looks like. You can watch the full presentation (including the demo):")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/1W786q76H98",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),a("p",[e._v("If you are interested in DPCKAN, come and talk to Francisco on "),a("a",{attrs:{href:"https://discord.com/invite/j9DNFNw",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),a("OutboundLink")],1),e._v("! You can also check out the presentation slides in "),a("a",{attrs:{href:"https://github.com/dados-mg/frictionless-hangout-jan2022",target:"_blank",rel:"noopener noreferrer"}},[e._v("this GitHub repository"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h2",{attrs:{id:"other-agenda-items-from-our-hangout"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#other-agenda-items-from-our-hangout"}},[e._v("#")]),e._v(" Other agenda items from our hangout")]),e._v(" "),a("p",[e._v("This year as well, we are helping organise the "),a("a",{attrs:{href:"https://fosdem.org/2022/",target:"_blank",rel:"noopener noreferrer"}},[e._v("FOSDEM"),a("OutboundLink")],1),e._v(" Thematic Track "),a("em",[e._v("Open Research Tools & Technologies")]),e._v("."),a("br"),e._v("\nJoin us on February 5th! Among the many interesting talks, you will have the opportunity to catch senior developer Evgeny Karev presenting the newest Frictionless tool: "),a("a",{attrs:{href:"https://fosdem.org/2022/schedule/event/open_research_livemark/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Livemark"),a("OutboundLink")],1),e._v("."),a("br"),e._v("\nHave a look at "),a("a",{attrs:{href:"https://fosdem.org/2022/schedule/track/open_research_tools_and_technologies/",target:"_blank",rel:"noopener noreferrer"}},[e._v("the programme"),a("OutboundLink")],1),e._v(". The event is free of charge and there is no need to register. You can just log in the talks that you like.")]),e._v(" "),a("h1",{attrs:{id:"join-us-next-month"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[e._v("#")]),e._v(" Join us next month!")]),e._v(" "),a("p",[e._v("Next community call is next year, on February 24"),a("sup",[e._v("th")]),e._v(". We don’t have a presentation scheduled yet, so if you have a project that you would like to present to the community, this could be your chance! Email us if you have something in mind: "),a("a",{attrs:{href:"mailto:sara.petti@okfn.org"}},[e._v("sara.petti@okfn.org")]),e._v(".")]),e._v(" "),a("p",[e._v("You can sign up for the call already "),a("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here:"),a("OutboundLink")],1)]),e._v(" "),a("p",[e._v("Do you want to share something with the community? Let us know when you sign up!")]),e._v(" "),a("h1",{attrs:{id:"call-recording"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call recording:")]),e._v(" "),a("p",[e._v("On a final note, here is the recording of the full call:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/4YZD0jmMOaU",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),a("p",[e._v("As usual, you can join us on "),a("a",{attrs:{href:"https://discord.com/invite/j9DNFNw",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),a("OutboundLink")],1),e._v(" or "),a("a",{attrs:{href:"https://twitter.com/frictionlessd8a",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),a("OutboundLink")],1),e._v(" to say hi or ask any questions. See you there!")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[151],{684:function(e,t,a){"use strict";a.r(t);var r=a(29),o=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[e._v("On January 27"),a("sup",[e._v("th")]),e._v(", for the first Frictionless Data community call of the year, we heard a presentation on the Data Package Manager for CKAN (DPCKAN) from Francisco Alves - leader of the proactive transparency policy in the Brazilian State of Minas Gerais.")]),e._v(" "),a("p",[e._v("You may remember Francisco and DPCKAN from the "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/10/13/hackathon-wrap/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Frictionless Data Hackathon"),a("OutboundLink")],1),e._v(" back in October 2021, where his team won the hack with this very project.")]),e._v(" "),a("h2",{attrs:{id:"so-what-is-dpckan"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#so-what-is-dpckan"}},[e._v("#")]),e._v(" So what is DPCKAN?")]),e._v(" "),a("p",[e._v("It all started with the will to publish all the raw data on the Fiscal Transparency portal of the State of Minas Gereis, which is built on a "),a("a",{attrs:{href:"https://ckan.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("CKAN"),a("OutboundLink")],1),e._v(" instance, as open data following the Frictionless standards.")]),e._v(" "),a("p",[e._v("Francisco and his team wanted to install a data package, and be able to work with it locally. They also wanted to have the ability to partially update a dataset already uploaded in CKAN without overwriting it (this particular feature was developed during the Hackathon). That’s how the Data Package Manager was born. It is now in active development.")]),e._v(" "),a("h2",{attrs:{id:"and-what-s-next"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#and-what-s-next"}},[e._v("#")]),e._v(" And what’s next?")]),e._v(" "),a("p",[e._v("Francisco and his team would like to:")]),e._v(" "),a("ul",[a("li",[e._v("Make it possible to read a data package directly from CKAN,")]),e._v(" "),a("li",[e._v("Make CKAN Datastore respect the Frictionless table schema types")]),e._v(" "),a("li",[e._v("Have human readable metadata visualisation")]),e._v(" "),a("li",[e._v("Contribute back upstream to Frictionless Data, CKAN, etc.")])]),e._v(" "),a("p",[e._v("Franscisco also gave a quick demo of what the DPCKAN looks like. You can watch the full presentation (including the demo):")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/1W786q76H98",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),a("p",[e._v("If you are interested in DPCKAN, come and talk to Francisco on "),a("a",{attrs:{href:"https://discord.com/invite/j9DNFNw",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),a("OutboundLink")],1),e._v("! You can also check out the presentation slides in "),a("a",{attrs:{href:"https://github.com/dados-mg/frictionless-hangout-jan2022",target:"_blank",rel:"noopener noreferrer"}},[e._v("this GitHub repository"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h2",{attrs:{id:"other-agenda-items-from-our-hangout"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#other-agenda-items-from-our-hangout"}},[e._v("#")]),e._v(" Other agenda items from our hangout")]),e._v(" "),a("p",[e._v("This year as well, we are helping organise the "),a("a",{attrs:{href:"https://fosdem.org/2022/",target:"_blank",rel:"noopener noreferrer"}},[e._v("FOSDEM"),a("OutboundLink")],1),e._v(" Thematic Track "),a("em",[e._v("Open Research Tools & Technologies")]),e._v("."),a("br"),e._v("\nJoin us on February 5th! Among the many interesting talks, you will have the opportunity to catch senior developer Evgeny Karev presenting the newest Frictionless tool: "),a("a",{attrs:{href:"https://fosdem.org/2022/schedule/event/open_research_livemark/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Livemark"),a("OutboundLink")],1),e._v("."),a("br"),e._v("\nHave a look at "),a("a",{attrs:{href:"https://fosdem.org/2022/schedule/track/open_research_tools_and_technologies/",target:"_blank",rel:"noopener noreferrer"}},[e._v("the programme"),a("OutboundLink")],1),e._v(". The event is free of charge and there is no need to register. You can just log in the talks that you like.")]),e._v(" "),a("h1",{attrs:{id:"join-us-next-month"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[e._v("#")]),e._v(" Join us next month!")]),e._v(" "),a("p",[e._v("Next community call is next year, on February 24"),a("sup",[e._v("th")]),e._v(". We don’t have a presentation scheduled yet, so if you have a project that you would like to present to the community, this could be your chance! Email us if you have something in mind: "),a("a",{attrs:{href:"mailto:sara.petti@okfn.org"}},[e._v("sara.petti@okfn.org")]),e._v(".")]),e._v(" "),a("p",[e._v("You can sign up for the call already "),a("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here:"),a("OutboundLink")],1)]),e._v(" "),a("p",[e._v("Do you want to share something with the community? Let us know when you sign up!")]),e._v(" "),a("h1",{attrs:{id:"call-recording"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call recording:")]),e._v(" "),a("p",[e._v("On a final note, here is the recording of the full call:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/4YZD0jmMOaU",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),a("p",[e._v("As usual, you can join us on "),a("a",{attrs:{href:"https://discord.com/invite/j9DNFNw",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),a("OutboundLink")],1),e._v(" or "),a("a",{attrs:{href:"https://twitter.com/frictionlessd8a",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),a("OutboundLink")],1),e._v(" to say hi or ask any questions. See you there!")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/152.63871bcb.js b/assets/js/152.d196a591.js similarity index 99% rename from assets/js/152.63871bcb.js rename to assets/js/152.d196a591.js index b438eb83e..83f980ca1 100644 --- a/assets/js/152.63871bcb.js +++ b/assets/js/152.d196a591.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[152],{688:function(e,a,t){"use strict";t.r(a);var r=t(29),i=Object(r.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("p",[e._v("I started the "),t("a",{attrs:{href:"https://www.librarieshacked.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Libraries Hacked"),t("OutboundLink")],1),e._v(" project in 2014. Inspired by ‘tech for good’ open data groups and hackathons, I wanted to explore how libraries could leverage data for innovation and service improvement. I had already been involved in the work of the group "),t("a",{attrs:{href:"https://www.bathhacked.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Bath Hacked"),t("OutboundLink")],1),e._v(", and worked at the local Council in Bath, releasing large amounts of open data that was well used by the community. That included data such as live car park occupancy, traffic surveys, and air quality monitoring.")]),e._v(" "),t("p",[e._v("Getting involved in civic data publishing led me to explore data software, tools, and standards. I’ve used the Frictionless standards of Table Schema and CSV Dialect, as well as the code libraries that can be utilised to implement these. Data standards are an essential tool for data publishers in order to make data easily usable and reproducible across different organisations.")]),e._v(" "),t("p",[e._v("Public library services in England are managed by 150 local government organisations. The central government department for Digital, Culture, Media, and Sport (DCMS) hold responsibility for superintending those services. In September 2019 they convened a meeting about public library data.")]),e._v(" "),t("p",[e._v("Library data, of many kinds, is not well utilised in England.")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Lack of public data")]),e._v(". There are relatively few library services sharing data about themselves for public use.")]),e._v(" "),t("li",[t("strong",[e._v("Low expectations")]),e._v(". There is no guidance on what data to share. Some services will publish certain datasets, but these will likely be different to the ones other publish.")]),e._v(" "),t("li",[t("strong",[e._v("Few standards")]),e._v(". The structure of any published data will be unique to each library service. For example, there are published lists of library branches from "),t("a",{attrs:{href:"https://www.opendatanottingham.org.uk/dataset.aspx?id=1",target:"_blank",rel:"noopener noreferrer"}},[e._v("Nottinghamshire County Council"),t("OutboundLink")],1),e._v(" and "),t("a",{attrs:{href:"https://data.gov.uk/dataset/9342032d-ab88-462f-b31c-4fb07fd4da6f/libraries",target:"_blank",rel:"noopener noreferrer"}},[e._v("North Somerset Council"),t("OutboundLink")],1),e._v(". Both are out of date, and have different fields, field names, field types, and file formats.")])]),e._v(" "),t("p",[e._v("The meeting discussed these issues, amongst others. The problems are understood, but difficult to tackle, as no organisation has direct responsibility for library data. There are also difficult underlying causes - low skills and funding being two major ones.")]),e._v(" "),t("p",[e._v("Large scale culture change will take many years. But to begin some sector-led collaborative work, a group of the attendees agreed to define the fields for a core selection of library datasets. The project would involve data practitioners from across English library services.")]),e._v(" "),t("p",[e._v("The datasets would cover:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Events")]),e._v(": the events that happen in libraries, their attendance, and outcomes")]),e._v(" "),t("li",[t("strong",[e._v("Library branches")]),e._v(": physical building locations, opening hours, and contact details")]),e._v(" "),t("li",[t("strong",[e._v("Loans")]),e._v(": the items lent from libraries, with counts, time periods, and categories")]),e._v(" "),t("li",[t("strong",[e._v("Stock")]),e._v(": the number of items held in libraries, with categories")]),e._v(" "),t("li",[t("strong",[e._v("Mobile library stops")]),e._v(": locations of mobile library stops, and their timetabled frequency")]),e._v(" "),t("li",[t("strong",[e._v("Physical visits")]),e._v(": how many people visit library premises")]),e._v(" "),t("li",[t("strong",[e._v("Membership")]),e._v(": counts of people who are library members, at small-area geographies.")])]),e._v(" "),t("p",[e._v("These can be split into 3 categories:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Registers")]),e._v(". Data that should be updated when it changes. A list of library branches is a permanent register, to be updated when there are changes to those branches.")]),e._v(" "),t("li",[t("strong",[e._v("Snapshot")]),e._v(". Data that is released as a point in time representation. Library membership will be continually changing, but a snapshot of membership counts should be released at regular intervals.")]),e._v(" "),t("li",[t("strong",[e._v("Time-series")]),e._v(". Data that is new every time it is published. Loans data should be published at regular intervals, each published file being an addition to the existing set.")])]),e._v(" "),t("p",[e._v("To work on these, we held an in-person workshop at the DCMS offices. This featured an exciting interruption by a fire drill, and we had to relocate to a nearby café (difficult for a meeting with many people held in in London!). We also formed an online group using Slack to trial and discuss the data.")]),e._v(" "),t("h2",{attrs:{id:"schemas-and-frictionless-data"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#schemas-and-frictionless-data"}},[e._v("#")]),e._v(" Schemas and Frictionless Data")]),e._v(" "),t("p",[e._v("The majority of our discussions were practical rather than technical, such as what data would be most useful, whether or not it was currently used locally by services, and common problems.")]),e._v(" "),t("p",[e._v("However, to formalise how data should be structured, it became clear that it would be necessary to create technical 'data schemas’.")]),e._v(" "),t("p",[e._v("It can be easy to decide on the data you want, but fail to describe it properly. For example, we could provide people with a spreadsheet that included a column title such as ‘Closed date’. I’d expect people to enter a date in that column, but we’d end up with all kinds of formats.")]),e._v(" "),t("p",[e._v("The "),t("a",{attrs:{href:"https://specs.frictionlessdata.io/table-schema/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Table Schema"),t("OutboundLink")],1),e._v(" specification for defining data, from Frictionless Data, provided a good option for tackling this problem. Not only would it allow us to create a detailed description for the data fields, but we could use other frictionless tools such as "),t("a",{attrs:{href:"https://goodtables.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Good Tables"),t("OutboundLink")],1),e._v(". This would allow library services to validate their data before publishing. Things like mismatching date formats would be picked up by the validator, and it would give instructions for how to fix the issue. We would additionally also provide ‘human-readable’ guidance on the datasets.")]),e._v(" "),t("p",[e._v("Frictionless Data is an "),t("a",{attrs:{href:"https://okfn.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Open Knowledge Foundation"),t("OutboundLink")],1),e._v(" project, and using tools from an internationally renowned body was also a good practice. The schemas are UK-centric but could be adapted and reused by international library services.")]),e._v(" "),t("p",[e._v("The schemas are all documented at "),t("a",{attrs:{href:"https://schema.librarydata.uk/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Public Library Open Data"),t("OutboundLink")],1),e._v(", including guidance, links to sample data, and the technical definition files.")]),e._v(" "),t("h2",{attrs:{id:"lessons-learned"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#lessons-learned"}},[e._v("#")]),e._v(" Lessons learned")]),e._v(" "),t("p",[e._v("The initial datasets are not comprehensive. They are designed to be a starting point, allowing more to be developed from service requirements.")]),e._v(" "),t("p",[e._v("They are overly focussed towards ‘physical’ library services. It wasn’t long after these meetings that public libraries adjusted to provide all-digital services due to lockdowns. There is nothing here to cover valuable usage datasets like the video views that library services receive on YouTube and Facebook.")]),e._v(" "),t("p",[e._v("There are some that have become even more important. The physical visits schema describes how to structure library footfall data, allowing for differences in collection methods and intervals. This kind of data is now in high demand, to analyse how library service visits recover.")]),e._v(" "),t("p",[e._v("Some of the discussions we had were fascinating. It was important to involve the people who work with this data on a daily basis. They will know how easy it is to extract and manipulate, and many of the pitfalls that come with interpreting it.")]),e._v(" "),t("h3",{attrs:{id:"complexity"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#complexity"}},[e._v("#")]),e._v(" Complexity")]),e._v(" "),t("p",[e._v("There was often a battle between complexity and simplicity. Complex data is good, it often means it is more robust, such as using external identifiers. But simplicity is also good, for data publishers and consumers.")]),e._v(" "),t("p",[e._v("Public library services will primarily employ data workers who are not formally trained in using data. Where there are complex concepts (e.g. Table Schema itself), they are used because they make data publishing easier and more consistent.")]),e._v(" "),t("p",[e._v("Public data should also be made as accessible as possible for the public, while being detailed enough to be useful. In this way the data schemas tend towards simplicity.")]),e._v(" "),t("h3",{attrs:{id:"standards-not-standardisation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#standards-not-standardisation"}},[e._v("#")]),e._v(" Standards not standardisation")]),e._v(" "),t("p",[e._v("There is a difference between a standard format for data, and standardised data. The schemas are primarily aimed at getting data from multiple services into the same format, to share analysis techniques between library services, and to have usable data when merged with other services.")]),e._v(" "),t("p",[e._v("There were some cases where we decided against standardising the actual data within data fields. For example, there is a column in the loans and the stock datasets called ‘Item type’. This is a category description of the library item, such as ‘Adult fiction’. In some other previous examples of data collection this data is standardised into a uniform set of categories, in order to make it easily comparable.")]),e._v(" "),t("p",[e._v("That kind of exercise defies reality though. Library services may have their own set of categories, many of them interesting and unique. To use a standard set would mean that library services would have to convert their underlying data. As well as extra work, it would be a loss of data. It would also mean that library services would be unlikely to use the converted data themselves. Why use such data if it doesn’t reflect what you actually hold?")]),e._v(" "),t("p",[e._v("The downside is that anyone analysing combined data would have to decide themselves how to compare data in those fields. However, that would be at least a clear task for the data analyst - and would most likely be an easier exercise to do in bulk.")]),e._v(" "),t("h3",{attrs:{id:"detail"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#detail"}},[e._v("#")]),e._v(" Detail")]),e._v(" "),t("p",[e._v("In my ideal world, data would be as detailed as possible. Instead of knowing how many items a library lent every month, I want that data for every hour. In fact I want to have every lending record! But feasibly that would make the data unwieldy and difficult to work with, and wouldn’t be in-line with the statistics libraries are used to.")]),e._v(" "),t("p",[e._v("We primarily made decisions based upon what library services already do. In a lot of cases this was data aggregated into monthly counts, with fields such as library branch and item type used to break down that data.")]),e._v(" "),t("h2",{attrs:{id:"the-future"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#the-future"}},[e._v("#")]),e._v(" The future")]),e._v(" "),t("p",[e._v("The initial meetings were held over two years ago, and it seems longer than that! A lot has happened in the meantime. We are still in a global pandemic that from library perspectives has de-prioritised anything other than core services.")]),e._v(" "),t("p",[e._v("However, there are good examples of the data in action. Barnet libraries "),t("a",{attrs:{href:"https://open.barnet.gov.uk/dataset/e14dj/library-data",target:"_blank",rel:"noopener noreferrer"}},[e._v("publish 5 out of the 7 data schemas"),t("OutboundLink")],1),e._v(" on a regular basis.")]),e._v(" "),t("p",[e._v("I have also been creating tools that highlight how the data can be used such as "),t("a",{attrs:{href:"https://www.librarymap.co.uk",target:"_blank",rel:"noopener noreferrer"}},[e._v("Library map"),t("OutboundLink")],1),e._v(" and "),t("a",{attrs:{href:"https://www.mobilelibraries.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("Mobile libraries"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("There is national work underway that can make use of these schemas. The British Library is working on a "),t("a",{attrs:{href:"https://www.artscouncil.org.uk/blog/single-digital-presence-libraries",target:"_blank",rel:"noopener noreferrer"}},[e._v("Single Digital Presence"),t("OutboundLink")],1),e._v(" project that will require data from library services in a standard form.")]),e._v(" "),t("p",[e._v("Internationally there are calls for more public library open data. The International Federation of Library Associations and Institutions (IFLA) has "),t("a",{attrs:{href:"https://www.ifla.org/news/ifla-releases-statement-on-open-library-data/",target:"_blank",rel:"noopener noreferrer"}},[e._v("released a statement on Open Library Data"),t("OutboundLink")],1),e._v(" calling for “governments to ensure, either directly or through supporting others, the collection and open publication of data about libraries and their use”. It would be great to work with organisations like IFLA to promote schemas that could be reused Internationally as well as for local services. There could also be the opportunity to use other Frictionless Data tools to aid in publishing data, such as "),t("a",{attrs:{href:"https://datahub.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("DataHub"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("Hopefully in the future there can be workshops, training events, and conferences that allow these data schemas to be discussed and further developed.")])])}),[],!1,null,null,null);a.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[152],{683:function(e,a,t){"use strict";t.r(a);var r=t(29),i=Object(r.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("p",[e._v("I started the "),t("a",{attrs:{href:"https://www.librarieshacked.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Libraries Hacked"),t("OutboundLink")],1),e._v(" project in 2014. Inspired by ‘tech for good’ open data groups and hackathons, I wanted to explore how libraries could leverage data for innovation and service improvement. I had already been involved in the work of the group "),t("a",{attrs:{href:"https://www.bathhacked.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Bath Hacked"),t("OutboundLink")],1),e._v(", and worked at the local Council in Bath, releasing large amounts of open data that was well used by the community. That included data such as live car park occupancy, traffic surveys, and air quality monitoring.")]),e._v(" "),t("p",[e._v("Getting involved in civic data publishing led me to explore data software, tools, and standards. I’ve used the Frictionless standards of Table Schema and CSV Dialect, as well as the code libraries that can be utilised to implement these. Data standards are an essential tool for data publishers in order to make data easily usable and reproducible across different organisations.")]),e._v(" "),t("p",[e._v("Public library services in England are managed by 150 local government organisations. The central government department for Digital, Culture, Media, and Sport (DCMS) hold responsibility for superintending those services. In September 2019 they convened a meeting about public library data.")]),e._v(" "),t("p",[e._v("Library data, of many kinds, is not well utilised in England.")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Lack of public data")]),e._v(". There are relatively few library services sharing data about themselves for public use.")]),e._v(" "),t("li",[t("strong",[e._v("Low expectations")]),e._v(". There is no guidance on what data to share. Some services will publish certain datasets, but these will likely be different to the ones other publish.")]),e._v(" "),t("li",[t("strong",[e._v("Few standards")]),e._v(". The structure of any published data will be unique to each library service. For example, there are published lists of library branches from "),t("a",{attrs:{href:"https://www.opendatanottingham.org.uk/dataset.aspx?id=1",target:"_blank",rel:"noopener noreferrer"}},[e._v("Nottinghamshire County Council"),t("OutboundLink")],1),e._v(" and "),t("a",{attrs:{href:"https://data.gov.uk/dataset/9342032d-ab88-462f-b31c-4fb07fd4da6f/libraries",target:"_blank",rel:"noopener noreferrer"}},[e._v("North Somerset Council"),t("OutboundLink")],1),e._v(". Both are out of date, and have different fields, field names, field types, and file formats.")])]),e._v(" "),t("p",[e._v("The meeting discussed these issues, amongst others. The problems are understood, but difficult to tackle, as no organisation has direct responsibility for library data. There are also difficult underlying causes - low skills and funding being two major ones.")]),e._v(" "),t("p",[e._v("Large scale culture change will take many years. But to begin some sector-led collaborative work, a group of the attendees agreed to define the fields for a core selection of library datasets. The project would involve data practitioners from across English library services.")]),e._v(" "),t("p",[e._v("The datasets would cover:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Events")]),e._v(": the events that happen in libraries, their attendance, and outcomes")]),e._v(" "),t("li",[t("strong",[e._v("Library branches")]),e._v(": physical building locations, opening hours, and contact details")]),e._v(" "),t("li",[t("strong",[e._v("Loans")]),e._v(": the items lent from libraries, with counts, time periods, and categories")]),e._v(" "),t("li",[t("strong",[e._v("Stock")]),e._v(": the number of items held in libraries, with categories")]),e._v(" "),t("li",[t("strong",[e._v("Mobile library stops")]),e._v(": locations of mobile library stops, and their timetabled frequency")]),e._v(" "),t("li",[t("strong",[e._v("Physical visits")]),e._v(": how many people visit library premises")]),e._v(" "),t("li",[t("strong",[e._v("Membership")]),e._v(": counts of people who are library members, at small-area geographies.")])]),e._v(" "),t("p",[e._v("These can be split into 3 categories:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Registers")]),e._v(". Data that should be updated when it changes. A list of library branches is a permanent register, to be updated when there are changes to those branches.")]),e._v(" "),t("li",[t("strong",[e._v("Snapshot")]),e._v(". Data that is released as a point in time representation. Library membership will be continually changing, but a snapshot of membership counts should be released at regular intervals.")]),e._v(" "),t("li",[t("strong",[e._v("Time-series")]),e._v(". Data that is new every time it is published. Loans data should be published at regular intervals, each published file being an addition to the existing set.")])]),e._v(" "),t("p",[e._v("To work on these, we held an in-person workshop at the DCMS offices. This featured an exciting interruption by a fire drill, and we had to relocate to a nearby café (difficult for a meeting with many people held in in London!). We also formed an online group using Slack to trial and discuss the data.")]),e._v(" "),t("h2",{attrs:{id:"schemas-and-frictionless-data"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#schemas-and-frictionless-data"}},[e._v("#")]),e._v(" Schemas and Frictionless Data")]),e._v(" "),t("p",[e._v("The majority of our discussions were practical rather than technical, such as what data would be most useful, whether or not it was currently used locally by services, and common problems.")]),e._v(" "),t("p",[e._v("However, to formalise how data should be structured, it became clear that it would be necessary to create technical 'data schemas’.")]),e._v(" "),t("p",[e._v("It can be easy to decide on the data you want, but fail to describe it properly. For example, we could provide people with a spreadsheet that included a column title such as ‘Closed date’. I’d expect people to enter a date in that column, but we’d end up with all kinds of formats.")]),e._v(" "),t("p",[e._v("The "),t("a",{attrs:{href:"https://specs.frictionlessdata.io/table-schema/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Table Schema"),t("OutboundLink")],1),e._v(" specification for defining data, from Frictionless Data, provided a good option for tackling this problem. Not only would it allow us to create a detailed description for the data fields, but we could use other frictionless tools such as "),t("a",{attrs:{href:"https://goodtables.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Good Tables"),t("OutboundLink")],1),e._v(". This would allow library services to validate their data before publishing. Things like mismatching date formats would be picked up by the validator, and it would give instructions for how to fix the issue. We would additionally also provide ‘human-readable’ guidance on the datasets.")]),e._v(" "),t("p",[e._v("Frictionless Data is an "),t("a",{attrs:{href:"https://okfn.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Open Knowledge Foundation"),t("OutboundLink")],1),e._v(" project, and using tools from an internationally renowned body was also a good practice. The schemas are UK-centric but could be adapted and reused by international library services.")]),e._v(" "),t("p",[e._v("The schemas are all documented at "),t("a",{attrs:{href:"https://schema.librarydata.uk/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Public Library Open Data"),t("OutboundLink")],1),e._v(", including guidance, links to sample data, and the technical definition files.")]),e._v(" "),t("h2",{attrs:{id:"lessons-learned"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#lessons-learned"}},[e._v("#")]),e._v(" Lessons learned")]),e._v(" "),t("p",[e._v("The initial datasets are not comprehensive. They are designed to be a starting point, allowing more to be developed from service requirements.")]),e._v(" "),t("p",[e._v("They are overly focussed towards ‘physical’ library services. It wasn’t long after these meetings that public libraries adjusted to provide all-digital services due to lockdowns. There is nothing here to cover valuable usage datasets like the video views that library services receive on YouTube and Facebook.")]),e._v(" "),t("p",[e._v("There are some that have become even more important. The physical visits schema describes how to structure library footfall data, allowing for differences in collection methods and intervals. This kind of data is now in high demand, to analyse how library service visits recover.")]),e._v(" "),t("p",[e._v("Some of the discussions we had were fascinating. It was important to involve the people who work with this data on a daily basis. They will know how easy it is to extract and manipulate, and many of the pitfalls that come with interpreting it.")]),e._v(" "),t("h3",{attrs:{id:"complexity"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#complexity"}},[e._v("#")]),e._v(" Complexity")]),e._v(" "),t("p",[e._v("There was often a battle between complexity and simplicity. Complex data is good, it often means it is more robust, such as using external identifiers. But simplicity is also good, for data publishers and consumers.")]),e._v(" "),t("p",[e._v("Public library services will primarily employ data workers who are not formally trained in using data. Where there are complex concepts (e.g. Table Schema itself), they are used because they make data publishing easier and more consistent.")]),e._v(" "),t("p",[e._v("Public data should also be made as accessible as possible for the public, while being detailed enough to be useful. In this way the data schemas tend towards simplicity.")]),e._v(" "),t("h3",{attrs:{id:"standards-not-standardisation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#standards-not-standardisation"}},[e._v("#")]),e._v(" Standards not standardisation")]),e._v(" "),t("p",[e._v("There is a difference between a standard format for data, and standardised data. The schemas are primarily aimed at getting data from multiple services into the same format, to share analysis techniques between library services, and to have usable data when merged with other services.")]),e._v(" "),t("p",[e._v("There were some cases where we decided against standardising the actual data within data fields. For example, there is a column in the loans and the stock datasets called ‘Item type’. This is a category description of the library item, such as ‘Adult fiction’. In some other previous examples of data collection this data is standardised into a uniform set of categories, in order to make it easily comparable.")]),e._v(" "),t("p",[e._v("That kind of exercise defies reality though. Library services may have their own set of categories, many of them interesting and unique. To use a standard set would mean that library services would have to convert their underlying data. As well as extra work, it would be a loss of data. It would also mean that library services would be unlikely to use the converted data themselves. Why use such data if it doesn’t reflect what you actually hold?")]),e._v(" "),t("p",[e._v("The downside is that anyone analysing combined data would have to decide themselves how to compare data in those fields. However, that would be at least a clear task for the data analyst - and would most likely be an easier exercise to do in bulk.")]),e._v(" "),t("h3",{attrs:{id:"detail"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#detail"}},[e._v("#")]),e._v(" Detail")]),e._v(" "),t("p",[e._v("In my ideal world, data would be as detailed as possible. Instead of knowing how many items a library lent every month, I want that data for every hour. In fact I want to have every lending record! But feasibly that would make the data unwieldy and difficult to work with, and wouldn’t be in-line with the statistics libraries are used to.")]),e._v(" "),t("p",[e._v("We primarily made decisions based upon what library services already do. In a lot of cases this was data aggregated into monthly counts, with fields such as library branch and item type used to break down that data.")]),e._v(" "),t("h2",{attrs:{id:"the-future"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#the-future"}},[e._v("#")]),e._v(" The future")]),e._v(" "),t("p",[e._v("The initial meetings were held over two years ago, and it seems longer than that! A lot has happened in the meantime. We are still in a global pandemic that from library perspectives has de-prioritised anything other than core services.")]),e._v(" "),t("p",[e._v("However, there are good examples of the data in action. Barnet libraries "),t("a",{attrs:{href:"https://open.barnet.gov.uk/dataset/e14dj/library-data",target:"_blank",rel:"noopener noreferrer"}},[e._v("publish 5 out of the 7 data schemas"),t("OutboundLink")],1),e._v(" on a regular basis.")]),e._v(" "),t("p",[e._v("I have also been creating tools that highlight how the data can be used such as "),t("a",{attrs:{href:"https://www.librarymap.co.uk",target:"_blank",rel:"noopener noreferrer"}},[e._v("Library map"),t("OutboundLink")],1),e._v(" and "),t("a",{attrs:{href:"https://www.mobilelibraries.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("Mobile libraries"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("There is national work underway that can make use of these schemas. The British Library is working on a "),t("a",{attrs:{href:"https://www.artscouncil.org.uk/blog/single-digital-presence-libraries",target:"_blank",rel:"noopener noreferrer"}},[e._v("Single Digital Presence"),t("OutboundLink")],1),e._v(" project that will require data from library services in a standard form.")]),e._v(" "),t("p",[e._v("Internationally there are calls for more public library open data. The International Federation of Library Associations and Institutions (IFLA) has "),t("a",{attrs:{href:"https://www.ifla.org/news/ifla-releases-statement-on-open-library-data/",target:"_blank",rel:"noopener noreferrer"}},[e._v("released a statement on Open Library Data"),t("OutboundLink")],1),e._v(" calling for “governments to ensure, either directly or through supporting others, the collection and open publication of data about libraries and their use”. It would be great to work with organisations like IFLA to promote schemas that could be reused Internationally as well as for local services. There could also be the opportunity to use other Frictionless Data tools to aid in publishing data, such as "),t("a",{attrs:{href:"https://datahub.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("DataHub"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("Hopefully in the future there can be workshops, training events, and conferences that allow these data schemas to be discussed and further developed.")])])}),[],!1,null,null,null);a.default=i.exports}}]); \ No newline at end of file diff --git a/assets/js/155.50f8aa63.js b/assets/js/155.f236890f.js similarity index 99% rename from assets/js/155.50f8aa63.js rename to assets/js/155.f236890f.js index b5477bb29..4315b176a 100644 --- a/assets/js/155.50f8aa63.js +++ b/assets/js/155.f236890f.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[155],{689:function(e,t,a){"use strict";a.r(t);var n=a(29),r=Object(n.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[e._v("During these past tumultuous years, it has been striking to witness the role that information has played in furthering suffering: misinformation, lack of data transparency, and closed technology have worsened the pandemic, increased political strife, and hurt climate policy. Building on these observations, the team at Open Knowledge Foundation are refocusing our energies on how we can come together to empower people, communities, and organisations to create and use open knowledge to solve the most urgent issues of our time, including climate change, inequality, and access to knowledge . Undaunted by these substantial challenges, we entered 2022 with enthusiasm for finding ways to work together, starting with climate data.")]),e._v(" "),a("p",[e._v("To start this year fresh and inspired, we convened two gatherings of climate researchers, activists, and organisations to brainstorm ways to collaborate to make open climate data more usable, accessible, and impactful. Over 30 experts attended the two sessions, from organisations around the world, and we identified and discussed many problems in the climate data space. We confirmed our initial theory that many of us are working siloed and that combining skills, knowledge and networks can result in a powerful alliance across tech communities, data experts and climate crisis activists.")]),e._v(" "),a("p",[e._v("Now, we want to share with you some common themes from these sessions and ask: how can we work together to solve these pressing climate issues?")]),e._v(" "),a("p",[e._v("A primary concern of attendees was "),a("strong",[e._v("the disconnect between how (and why) data is produced and how data can (and should) be used")]),e._v(". This disconnect shows up as frictions for data use: we know that much existing “open” data isn’t actually usable. During the call, many participants mentioned they frequently can’t find open data, and even when they can find it, they can’t easily access it. Even when they can access the data, they often can’t easily use it.")]),e._v(" "),a("p",[e._v("So why is it so hard to find, access, and use climate data? First, climate data is not particularly well standardised or curated, and data creators need better training in data management best practices. Another issue is that many climate data users don’t have technical training or knowledge required to clean messy data, greatly slowing down their research or policy work.")]),e._v(" "),a("h3",{attrs:{id:"how-will-the-open-knowledge-foundation-fix-the-identified-problems-skills-standards-and-community"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-will-the-open-knowledge-foundation-fix-the-identified-problems-skills-standards-and-community"}},[e._v("#")]),e._v(" How will the Open Knowledge Foundation fix the identified problems? Skills, standards and community.")]),e._v(" "),a("p",[e._v("An aim for this work will be to bridge the gaps between data creators and users. We plan to host several workshops in the future to work with both these groups, focusing on identifying both skills gaps and data gaps, then working towards capacity building.")]),e._v(" "),a("p",[e._v("Our goal with capacity building will be to give a data platform to those most affected by climate change. How do we make it easier for less technical or newer data users to effectively use climate data? Our future workshops will focus on training data creators and users with the "),a("a",{attrs:{href:"https://frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Open Knowledge Frictionless Data tooling"),a("OutboundLink")],1),e._v(" to better manage data, create higher quality data, and share data in impactful ways that will empower trained researchers and activists alike. For instance, the Frictionless toolbox can help data creators generate clean data that is easy to understand, share, and use, and the new Frictionless tool Livemark can help data consumers easily share climate data with impactful visualisations and narratives.")]),e._v(" "),a("p",[e._v("Another theme that emerged from the brainstorm sessions was the role data plays in generating knowledge versus the role knowledge plays in generating data, and how this interplay can be maximised to create change. For instance, "),a("strong",[e._v("we need to take a hard look at how “open” replicates cycles of inequalities")]),e._v(". Several people brought up the great work citizen scientists are doing for climate research, but how these efforts are rarely recognised by governments or other official research channels. So much vital data on local impacts of climate change are being lost as they aren’t being incorporated into official datasets. How do we make data more equitable, ensuring that those being most affected by climate change can use data to tell their stories?")]),e._v(" "),a("p",[e._v("We call on data organisations, climate researchers, and activists to join us in these efforts. How can we best work together to solve pressing climate change issues? Would you like to partner with us for workshops, or do you have other ideas for collaborations? Let us know! We would like to give our utmost thanks to the organisations that joined our brainstorming sessions for paving the way in this important work. To continue planning this work, we are creating a space to talk in our Frictionless Data community chat, and we invite all interested parties to join us. We are currently migrating our community from Discord to Slack. We encourage you to join the Slack channel, which will soon be populated with all Frictionless community members: "),a("a",{attrs:{href:"https://join.slack.com/t/frictionlessdata/shared_invite/zt-14x9bxnkm-2y~uQcmmrqarSP2kV39_Kg",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://join.slack.com/t/frictionlessdata/shared_invite/zt-14x9bxnkm-2y~uQcmmrqarSP2kV39_Kg"),a("OutboundLink")],1),a("br"),e._v("\n(We also have a Matrix mirror if you prefer Matrix: "),a("a",{attrs:{href:"https://matrix.to/#/#frictionless-data:matrix.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://matrix.to/#/#frictionless-data:matrix.org"),a("OutboundLink")],1),e._v(")")]),e._v(" "),a("p",[e._v("Finally, we’d like to share this list of resources that attendees shared during the calls:")]),e._v(" "),a("ul",[a("li",[e._v("Patrick J McGovern Data for Climate 2022 Accelerator: "),a("a",{attrs:{href:"https://www.mcgovern.org/foundation-awards-4-5m-including-new-accelerator-grants-to-advance-data-driven-climate-solutions/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://www.mcgovern.org/foundation-awards-4-5m-including-new-accelerator-grants-to-advance-data-driven-climate-solutions/"),a("OutboundLink")],1)]),e._v(" "),a("li",[e._v("Open Climate: "),a("a",{attrs:{href:"https://www.appropedia.org/OpenClimate",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://www.appropedia.org/OpenClimate"),a("OutboundLink")],1)]),e._v(" "),a("li",[e._v("Environmental Data and Governance Initiative: "),a("a",{attrs:{href:"https://envirodatagov.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://envirodatagov.org/"),a("OutboundLink")],1)]),e._v(" "),a("li",[e._v("Earth Science Information Partners: "),a("a",{attrs:{href:"https://www.esipfed.org/about",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://www.esipfed.org/about"),a("OutboundLink")],1),a("br"),e._v("\nCourse on environmental data journalism by School of Data Brazil: "),a("a",{attrs:{href:"https://escoladedados.org/courses/jornalismo-de-dados-ambientais/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://escoladedados.org/courses/jornalismo-de-dados-ambientais/"),a("OutboundLink")],1)]),e._v(" "),a("li",[e._v("Catalogue of environmental databases in Brazil by School of Data Brazil: "),a("a",{attrs:{href:"https://bit.ly/dados-ambientais",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://bit.ly/dados-ambientais"),a("OutboundLink")],1)]),e._v(" "),a("li",[e._v("A monthly meetup for small companies to share best practices (and data): "),a("a",{attrs:{href:"https://climatiq.io/blog/climate-action-net-zero-ambition-best-practices-for-sme",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://climatiq.io/blog/climate-action-net-zero-ambition-best-practices-for-sme"),a("OutboundLink")],1)]),e._v(" "),a("li",[e._v("Reddit Datasets: "),a("a",{attrs:{href:"https://www.reddit.com/r/datasets/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://www.reddit.com/r/datasets/"),a("OutboundLink")],1)]),e._v(" "),a("li",[e._v("Hardware information standard: "),a("a",{attrs:{href:"https://barbal.co/the-open-know-how-manifest-specification-version-1-0/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://barbal.co/the-open-know-how-manifest-specification-version-1-0/"),a("OutboundLink")],1)]),e._v(" "),a("li",[e._v("Catalyst Cooperative: "),a("a",{attrs:{href:"https://github.com/catalyst-cooperative/pudl",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/catalyst-cooperative/pudl"),a("OutboundLink")],1),e._v(" and "),a("a",{attrs:{href:"https://zenodo.org/communities/catalyst-cooperative/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://zenodo.org/communities/catalyst-cooperative/"),a("OutboundLink")],1)]),e._v(" "),a("li",[e._v("Research Data Alliance Agriculture: "),a("a",{attrs:{href:"https://www.rd-alliance.org/rda-disciplines/rda-and-agriculture",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://www.rd-alliance.org/rda-disciplines/rda-and-agriculture"),a("OutboundLink")],1)]),e._v(" "),a("li",[e._v("Open Climate Now!: "),a("a",{attrs:{href:"https://branch.climateaction.tech/issues/issue-2/open-climate-now/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://branch.climateaction.tech/issues/issue-2/open-climate-now/"),a("OutboundLink")],1)]),e._v(" "),a("li",[e._v("Metadata Game Changers: "),a("a",{attrs:{href:"https://metadatagamechangers.com",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://metadatagamechangers.com"),a("OutboundLink")],1)]),e._v(" "),a("li",[e._v("Excellent lecture by J McGlade bridging attitudes etc. to the data story and behaviour change effects: "),a("a",{attrs:{href:"https://www.youtube.com/watch?v=eIRlLlrnmBM&t=1561s",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://www.youtube.com/watch?v=eIRlLlrnmBM&t=1561s"),a("OutboundLink")],1)]),e._v(" "),a("li",[e._v("The Integrated-Assessment Modeling Community (IAMC) is developing a Python package “pyam” for scenario analysis & data visualization: "),a("a",{attrs:{href:"https://pyam-iamc.readthedocs.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://pyam-iamc.readthedocs.io"),a("OutboundLink")],1)]),e._v(" "),a("li",[e._v("IIASA is hosting numerous scenario ensemble databases, see "),a("a",{attrs:{href:"https://data.ece.iiasa.ac.at",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://data.ece.iiasa.ac.at"),a("OutboundLink")],1),e._v(", most importantly the scenario ensemble supporting the quantitative assessment in the IPCC 1.5°C Special Report (2018), and a similar database will be released in two months together with IPCC AR6 WG3")]),e._v(" "),a("li",[e._v("Letter to IEA by the openmod community, "),a("a",{attrs:{href:"https://forum.openmod.org/t/open-letter-to-iea-and-member-countries-requesting-open-data/2949",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://forum.openmod.org/t/open-letter-to-iea-and-member-countries-requesting-open-data/2949"),a("OutboundLink")],1)])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[155],{690:function(e,t,a){"use strict";a.r(t);var n=a(29),r=Object(n.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[e._v("During these past tumultuous years, it has been striking to witness the role that information has played in furthering suffering: misinformation, lack of data transparency, and closed technology have worsened the pandemic, increased political strife, and hurt climate policy. Building on these observations, the team at Open Knowledge Foundation are refocusing our energies on how we can come together to empower people, communities, and organisations to create and use open knowledge to solve the most urgent issues of our time, including climate change, inequality, and access to knowledge . Undaunted by these substantial challenges, we entered 2022 with enthusiasm for finding ways to work together, starting with climate data.")]),e._v(" "),a("p",[e._v("To start this year fresh and inspired, we convened two gatherings of climate researchers, activists, and organisations to brainstorm ways to collaborate to make open climate data more usable, accessible, and impactful. Over 30 experts attended the two sessions, from organisations around the world, and we identified and discussed many problems in the climate data space. We confirmed our initial theory that many of us are working siloed and that combining skills, knowledge and networks can result in a powerful alliance across tech communities, data experts and climate crisis activists.")]),e._v(" "),a("p",[e._v("Now, we want to share with you some common themes from these sessions and ask: how can we work together to solve these pressing climate issues?")]),e._v(" "),a("p",[e._v("A primary concern of attendees was "),a("strong",[e._v("the disconnect between how (and why) data is produced and how data can (and should) be used")]),e._v(". This disconnect shows up as frictions for data use: we know that much existing “open” data isn’t actually usable. During the call, many participants mentioned they frequently can’t find open data, and even when they can find it, they can’t easily access it. Even when they can access the data, they often can’t easily use it.")]),e._v(" "),a("p",[e._v("So why is it so hard to find, access, and use climate data? First, climate data is not particularly well standardised or curated, and data creators need better training in data management best practices. Another issue is that many climate data users don’t have technical training or knowledge required to clean messy data, greatly slowing down their research or policy work.")]),e._v(" "),a("h3",{attrs:{id:"how-will-the-open-knowledge-foundation-fix-the-identified-problems-skills-standards-and-community"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-will-the-open-knowledge-foundation-fix-the-identified-problems-skills-standards-and-community"}},[e._v("#")]),e._v(" How will the Open Knowledge Foundation fix the identified problems? Skills, standards and community.")]),e._v(" "),a("p",[e._v("An aim for this work will be to bridge the gaps between data creators and users. We plan to host several workshops in the future to work with both these groups, focusing on identifying both skills gaps and data gaps, then working towards capacity building.")]),e._v(" "),a("p",[e._v("Our goal with capacity building will be to give a data platform to those most affected by climate change. How do we make it easier for less technical or newer data users to effectively use climate data? Our future workshops will focus on training data creators and users with the "),a("a",{attrs:{href:"https://frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Open Knowledge Frictionless Data tooling"),a("OutboundLink")],1),e._v(" to better manage data, create higher quality data, and share data in impactful ways that will empower trained researchers and activists alike. For instance, the Frictionless toolbox can help data creators generate clean data that is easy to understand, share, and use, and the new Frictionless tool Livemark can help data consumers easily share climate data with impactful visualisations and narratives.")]),e._v(" "),a("p",[e._v("Another theme that emerged from the brainstorm sessions was the role data plays in generating knowledge versus the role knowledge plays in generating data, and how this interplay can be maximised to create change. For instance, "),a("strong",[e._v("we need to take a hard look at how “open” replicates cycles of inequalities")]),e._v(". Several people brought up the great work citizen scientists are doing for climate research, but how these efforts are rarely recognised by governments or other official research channels. So much vital data on local impacts of climate change are being lost as they aren’t being incorporated into official datasets. How do we make data more equitable, ensuring that those being most affected by climate change can use data to tell their stories?")]),e._v(" "),a("p",[e._v("We call on data organisations, climate researchers, and activists to join us in these efforts. How can we best work together to solve pressing climate change issues? Would you like to partner with us for workshops, or do you have other ideas for collaborations? Let us know! We would like to give our utmost thanks to the organisations that joined our brainstorming sessions for paving the way in this important work. To continue planning this work, we are creating a space to talk in our Frictionless Data community chat, and we invite all interested parties to join us. We are currently migrating our community from Discord to Slack. We encourage you to join the Slack channel, which will soon be populated with all Frictionless community members: "),a("a",{attrs:{href:"https://join.slack.com/t/frictionlessdata/shared_invite/zt-14x9bxnkm-2y~uQcmmrqarSP2kV39_Kg",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://join.slack.com/t/frictionlessdata/shared_invite/zt-14x9bxnkm-2y~uQcmmrqarSP2kV39_Kg"),a("OutboundLink")],1),a("br"),e._v("\n(We also have a Matrix mirror if you prefer Matrix: "),a("a",{attrs:{href:"https://matrix.to/#/#frictionless-data:matrix.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://matrix.to/#/#frictionless-data:matrix.org"),a("OutboundLink")],1),e._v(")")]),e._v(" "),a("p",[e._v("Finally, we’d like to share this list of resources that attendees shared during the calls:")]),e._v(" "),a("ul",[a("li",[e._v("Patrick J McGovern Data for Climate 2022 Accelerator: "),a("a",{attrs:{href:"https://www.mcgovern.org/foundation-awards-4-5m-including-new-accelerator-grants-to-advance-data-driven-climate-solutions/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://www.mcgovern.org/foundation-awards-4-5m-including-new-accelerator-grants-to-advance-data-driven-climate-solutions/"),a("OutboundLink")],1)]),e._v(" "),a("li",[e._v("Open Climate: "),a("a",{attrs:{href:"https://www.appropedia.org/OpenClimate",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://www.appropedia.org/OpenClimate"),a("OutboundLink")],1)]),e._v(" "),a("li",[e._v("Environmental Data and Governance Initiative: "),a("a",{attrs:{href:"https://envirodatagov.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://envirodatagov.org/"),a("OutboundLink")],1)]),e._v(" "),a("li",[e._v("Earth Science Information Partners: "),a("a",{attrs:{href:"https://www.esipfed.org/about",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://www.esipfed.org/about"),a("OutboundLink")],1),a("br"),e._v("\nCourse on environmental data journalism by School of Data Brazil: "),a("a",{attrs:{href:"https://escoladedados.org/courses/jornalismo-de-dados-ambientais/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://escoladedados.org/courses/jornalismo-de-dados-ambientais/"),a("OutboundLink")],1)]),e._v(" "),a("li",[e._v("Catalogue of environmental databases in Brazil by School of Data Brazil: "),a("a",{attrs:{href:"https://bit.ly/dados-ambientais",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://bit.ly/dados-ambientais"),a("OutboundLink")],1)]),e._v(" "),a("li",[e._v("A monthly meetup for small companies to share best practices (and data): "),a("a",{attrs:{href:"https://climatiq.io/blog/climate-action-net-zero-ambition-best-practices-for-sme",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://climatiq.io/blog/climate-action-net-zero-ambition-best-practices-for-sme"),a("OutboundLink")],1)]),e._v(" "),a("li",[e._v("Reddit Datasets: "),a("a",{attrs:{href:"https://www.reddit.com/r/datasets/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://www.reddit.com/r/datasets/"),a("OutboundLink")],1)]),e._v(" "),a("li",[e._v("Hardware information standard: "),a("a",{attrs:{href:"https://barbal.co/the-open-know-how-manifest-specification-version-1-0/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://barbal.co/the-open-know-how-manifest-specification-version-1-0/"),a("OutboundLink")],1)]),e._v(" "),a("li",[e._v("Catalyst Cooperative: "),a("a",{attrs:{href:"https://github.com/catalyst-cooperative/pudl",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/catalyst-cooperative/pudl"),a("OutboundLink")],1),e._v(" and "),a("a",{attrs:{href:"https://zenodo.org/communities/catalyst-cooperative/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://zenodo.org/communities/catalyst-cooperative/"),a("OutboundLink")],1)]),e._v(" "),a("li",[e._v("Research Data Alliance Agriculture: "),a("a",{attrs:{href:"https://www.rd-alliance.org/rda-disciplines/rda-and-agriculture",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://www.rd-alliance.org/rda-disciplines/rda-and-agriculture"),a("OutboundLink")],1)]),e._v(" "),a("li",[e._v("Open Climate Now!: "),a("a",{attrs:{href:"https://branch.climateaction.tech/issues/issue-2/open-climate-now/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://branch.climateaction.tech/issues/issue-2/open-climate-now/"),a("OutboundLink")],1)]),e._v(" "),a("li",[e._v("Metadata Game Changers: "),a("a",{attrs:{href:"https://metadatagamechangers.com",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://metadatagamechangers.com"),a("OutboundLink")],1)]),e._v(" "),a("li",[e._v("Excellent lecture by J McGlade bridging attitudes etc. to the data story and behaviour change effects: "),a("a",{attrs:{href:"https://www.youtube.com/watch?v=eIRlLlrnmBM&t=1561s",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://www.youtube.com/watch?v=eIRlLlrnmBM&t=1561s"),a("OutboundLink")],1)]),e._v(" "),a("li",[e._v("The Integrated-Assessment Modeling Community (IAMC) is developing a Python package “pyam” for scenario analysis & data visualization: "),a("a",{attrs:{href:"https://pyam-iamc.readthedocs.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://pyam-iamc.readthedocs.io"),a("OutboundLink")],1)]),e._v(" "),a("li",[e._v("IIASA is hosting numerous scenario ensemble databases, see "),a("a",{attrs:{href:"https://data.ece.iiasa.ac.at",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://data.ece.iiasa.ac.at"),a("OutboundLink")],1),e._v(", most importantly the scenario ensemble supporting the quantitative assessment in the IPCC 1.5°C Special Report (2018), and a similar database will be released in two months together with IPCC AR6 WG3")]),e._v(" "),a("li",[e._v("Letter to IEA by the openmod community, "),a("a",{attrs:{href:"https://forum.openmod.org/t/open-letter-to-iea-and-member-countries-requesting-open-data/2949",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://forum.openmod.org/t/open-letter-to-iea-and-member-countries-requesting-open-data/2949"),a("OutboundLink")],1)])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/156.5c3dc938.js b/assets/js/156.8334f792.js similarity index 98% rename from assets/js/156.5c3dc938.js rename to assets/js/156.8334f792.js index d89280ad7..630701e79 100644 --- a/assets/js/156.5c3dc938.js +++ b/assets/js/156.8334f792.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[156],{691:function(e,t,a){"use strict";a.r(t);var r=a(29),o=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[e._v("At our last community call on March 31"),a("sup",[e._v("st")]),e._v(", we had a discussion with Johan Richer from "),a("a",{attrs:{href:"https://www.multi.coop/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Multi"),a("OutboundLink")],1),e._v(" around his theory of portal vs catalogue.")]),e._v(" "),a("p",[e._v("The discussion started with a presentation of the latest catalogue prototype by "),a("a",{attrs:{href:"https://www.data.gouv.fr/fr/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Etalab"),a("OutboundLink")],1),e._v(" currently in development: "),a("a",{attrs:{href:"https://github.com/etalab/catalogage-donnees",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/etalab/catalogage-donnees"),a("OutboundLink")],1),e._v(". Data cataloguing has become a major component of open data policies in France, but there are issues related to the maintainability of the catalogue and the traceability of the data.")]),e._v(" "),a("p",[e._v("In the beginning the data producers were also the data publishers, and therefore the purpose of a portal was to catalogue, publish, and store the data. Recently the process became more complicated, and the cataloguing became a prerequisite to publication. Instead of publishing by default, data producers want to make sure that the data is clean before injecting it into the portal. This started a new workflow of internal data management, that the portals were not made for. So how can we restore the broken link between catalogue and portal? Johan thinks data lineage is key.")]),e._v(" "),a("p",[e._v("If you want to know more about it, you can go and have a look at Johan’s presentation "),a("a",{attrs:{href:"https://jailbreak.gitlab.io/investigation-catalogue/synthese.html#/3",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(" (in French, but "),a("a",{attrs:{href:"https://jailbreak-gitlab-io.translate.goog/investigation-catalogue/synthese.html?_x_tr_sl=fr&_x_tr_tl=en#/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here’s a shortcut to the Google translation"),a("OutboundLink")],1),e._v(" if you’d rather have it in English), or watch the recording:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/MvrMJhn4xMo",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),a("h1",{attrs:{id:"news-from-the-community"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#news-from-the-community"}},[e._v("#")]),e._v(" News from the community")]),e._v(" "),a("p",[e._v("Our community chat has moved from Discord to Slack! In the community survey we ran last year, many people suggested moving to Slack, and the terms of services are definitely better (ranking B vs E for Discord, according to "),a("a",{attrs:{href:"https://tosdr.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://tosdr.org/"),a("OutboundLink")],1),e._v(" ). We will also be able to organise the questions & answer better, and that will definitely be an added value for the community.")]),e._v(" "),a("p",[e._v("To join our community chat: "),a("a",{attrs:{href:"https://frictionlessdata.slack.com/messages/general",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://frictionlessdata.slack.com/messages/general"),a("OutboundLink")],1)]),e._v(" "),a("h1",{attrs:{id:"join-us-next-month"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[e._v("#")]),e._v(" Join us next month!")]),e._v(" "),a("p",[e._v("Next community call is on April 28"),a("sup",[e._v("th")]),e._v(". We are going to hear about open science practices at the Turing Way from former Frictionless Fellow Anne Lee Steele."),a("br"),e._v("\nYou can sign up for the call already "),a("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here:"),a("OutboundLink")],1)]),e._v(" "),a("p",[e._v("Do you want to share something with the community? Let us know when you sign up!")]),e._v(" "),a("h1",{attrs:{id:"call-recording"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call recording:")]),e._v(" "),a("p",[e._v("On a final note, here is the recording of the full call:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/CCa0g-hYSUg",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),a("p",[e._v("Join us on "),a("a",{attrs:{href:"https://frictionlessdata.slack.com/messages/general",target:"_blank",rel:"noopener noreferrer"}},[e._v("Slack"),a("OutboundLink")],1),e._v(" or "),a("a",{attrs:{href:"https://twitter.com/frictionlessd8a",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),a("OutboundLink")],1),e._v(" to say hi or ask any questions. See you there!")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[156],{689:function(e,t,a){"use strict";a.r(t);var r=a(29),o=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[e._v("At our last community call on March 31"),a("sup",[e._v("st")]),e._v(", we had a discussion with Johan Richer from "),a("a",{attrs:{href:"https://www.multi.coop/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Multi"),a("OutboundLink")],1),e._v(" around his theory of portal vs catalogue.")]),e._v(" "),a("p",[e._v("The discussion started with a presentation of the latest catalogue prototype by "),a("a",{attrs:{href:"https://www.data.gouv.fr/fr/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Etalab"),a("OutboundLink")],1),e._v(" currently in development: "),a("a",{attrs:{href:"https://github.com/etalab/catalogage-donnees",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/etalab/catalogage-donnees"),a("OutboundLink")],1),e._v(". Data cataloguing has become a major component of open data policies in France, but there are issues related to the maintainability of the catalogue and the traceability of the data.")]),e._v(" "),a("p",[e._v("In the beginning the data producers were also the data publishers, and therefore the purpose of a portal was to catalogue, publish, and store the data. Recently the process became more complicated, and the cataloguing became a prerequisite to publication. Instead of publishing by default, data producers want to make sure that the data is clean before injecting it into the portal. This started a new workflow of internal data management, that the portals were not made for. So how can we restore the broken link between catalogue and portal? Johan thinks data lineage is key.")]),e._v(" "),a("p",[e._v("If you want to know more about it, you can go and have a look at Johan’s presentation "),a("a",{attrs:{href:"https://jailbreak.gitlab.io/investigation-catalogue/synthese.html#/3",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(" (in French, but "),a("a",{attrs:{href:"https://jailbreak-gitlab-io.translate.goog/investigation-catalogue/synthese.html?_x_tr_sl=fr&_x_tr_tl=en#/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here’s a shortcut to the Google translation"),a("OutboundLink")],1),e._v(" if you’d rather have it in English), or watch the recording:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/MvrMJhn4xMo",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),a("h1",{attrs:{id:"news-from-the-community"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#news-from-the-community"}},[e._v("#")]),e._v(" News from the community")]),e._v(" "),a("p",[e._v("Our community chat has moved from Discord to Slack! In the community survey we ran last year, many people suggested moving to Slack, and the terms of services are definitely better (ranking B vs E for Discord, according to "),a("a",{attrs:{href:"https://tosdr.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://tosdr.org/"),a("OutboundLink")],1),e._v(" ). We will also be able to organise the questions & answer better, and that will definitely be an added value for the community.")]),e._v(" "),a("p",[e._v("To join our community chat: "),a("a",{attrs:{href:"https://frictionlessdata.slack.com/messages/general",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://frictionlessdata.slack.com/messages/general"),a("OutboundLink")],1)]),e._v(" "),a("h1",{attrs:{id:"join-us-next-month"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[e._v("#")]),e._v(" Join us next month!")]),e._v(" "),a("p",[e._v("Next community call is on April 28"),a("sup",[e._v("th")]),e._v(". We are going to hear about open science practices at the Turing Way from former Frictionless Fellow Anne Lee Steele."),a("br"),e._v("\nYou can sign up for the call already "),a("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here:"),a("OutboundLink")],1)]),e._v(" "),a("p",[e._v("Do you want to share something with the community? Let us know when you sign up!")]),e._v(" "),a("h1",{attrs:{id:"call-recording"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call recording:")]),e._v(" "),a("p",[e._v("On a final note, here is the recording of the full call:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/CCa0g-hYSUg",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),a("p",[e._v("Join us on "),a("a",{attrs:{href:"https://frictionlessdata.slack.com/messages/general",target:"_blank",rel:"noopener noreferrer"}},[e._v("Slack"),a("OutboundLink")],1),e._v(" or "),a("a",{attrs:{href:"https://twitter.com/frictionlessd8a",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),a("OutboundLink")],1),e._v(" to say hi or ask any questions. See you there!")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/157.1eeaf168.js b/assets/js/157.ea1df658.js similarity index 98% rename from assets/js/157.1eeaf168.js rename to assets/js/157.ea1df658.js index eb6e5d738..3c68a69fb 100644 --- a/assets/js/157.1eeaf168.js +++ b/assets/js/157.ea1df658.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[157],{696:function(e,t,o){"use strict";o.r(t);var r=o(29),a=Object(r.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("p",[e._v("At our last community call on April 28"),o("sup",[e._v("th")]),e._v(", we had a discussion around open science best practices and the Turing Way with Anne Lee Steele, who - you might remember, was part of the "),o("a",{attrs:{href:"https://frictionlessdata.io/blog/2020/09/01/hello-fellows-cohort2/",target:"_blank",rel:"noopener noreferrer"}},[e._v("second cohort of Frictionless Fellows"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[e._v("The Turing Way is an open source and community-led handbook for reproducible, ethical and collaborative research. It is composed of more than 240 pages created by ~300 researchers over the course of 3 years, written collaboratively via GitHub PRs - contrasting to the notion of single/small-authorship papers.")]),e._v(" "),o("p",[e._v("There is currently an effort to make the Turing way develop meta-practices that can be applied to other areas as well, one example is documentation.")]),e._v(" "),o("p",[e._v("A great outcome of the call was the proposal to have a closer cooperation between the Frictionless Data community and the Turing Way’s one, possibly developing a chapter for Open Infrastructures for research to contribute upstream. This chapter would set the context and provide a vision for how to evaluate tools and platforms with a Turing Way perspective on reproducibility, ethical alternatives and collaboration in practice. For more info about this proposal, check "),o("a",{attrs:{href:"https://github.com/alan-turing-institute/the-turing-way/issues/2337",target:"_blank",rel:"noopener noreferrer"}},[e._v("this issue"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[e._v("If you want to know more about the Turing Way, have a look at the "),o("a",{attrs:{href:"https://the-turing-way.netlify.app/welcome.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("project website"),o("OutboundLink")],1),e._v(". You can also check out the full recording of the call:")]),e._v(" "),o("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/-RyRFcMAGCE",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),o("h1",{attrs:{id:"news-from-the-community"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#news-from-the-community"}},[e._v("#")]),e._v(" News from the community")]),e._v(" "),o("ul",[o("li",[o("p",[e._v("You’re all invited to join the Frictionless Fellows for a free virtual workshop on Open Science best practices on May 25 at 2pm UTC!"),o("br"),e._v("\nIn this beginner-friendly workshop, Fellows will demonstrate how to use the Frictionless tools to make research data more understandable, usable, and open. You will learn how to use the Frictionless non-coding tools to manipulate metadata and schemas (and why that is important!) and how to validate data in a hands-on format. Learn more & sign up on the Fellows website: "),o("a",{attrs:{href:"https://fellows.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://fellows.frictionlessdata.io/"),o("OutboundLink")],1),e._v(".")])]),e._v(" "),o("li",[o("p",[e._v("Reminder that our community chat has moved to Slack. Join us "),o("a",{attrs:{href:"https://join.slack.com/t/frictionlessdata/shared_invite/zt-17kpbffnm-tRfDW_wJgOw8tJVLvZTrBg",target:"_blank",rel:"noopener noreferrer"}},[e._v("there"),o("OutboundLink")],1),e._v(". We now also have a fully operating "),o("a",{attrs:{href:"https://matrix.to/#/#frictionlessdata:matrix.okfn.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("Matrix bridge"),o("OutboundLink")],1),e._v(", so if you prefer you can join us from there as well.")])])]),e._v(" "),o("h1",{attrs:{id:"join-us-next-month"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[e._v("#")]),e._v(" Join us next month!")]),e._v(" "),o("p",[e._v("Next community call is on May 26"),o("sup",[e._v("th")]),e._v(". We are going to hear Nick Kellett from Deploy Solutions explain to us how to build citizen science and climate change solutions, using Frictionless.")]),e._v(" "),o("p",[e._v("You can sign up for the call already "),o("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here:"),o("OutboundLink")],1)]),e._v(" "),o("p",[e._v("Do you want to share something with the community? Let us know when you sign up.")]),e._v(" "),o("p",[e._v("Join us on "),o("a",{attrs:{href:"https://join.slack.com/t/frictionlessdata/shared_invite/zt-17kpbffnm-tRfDW_wJgOw8tJVLvZTrBg",target:"_blank",rel:"noopener noreferrer"}},[e._v("Slack"),o("OutboundLink")],1),e._v(" (also via "),o("a",{attrs:{href:"https://matrix.to/#/#frictionlessdata:matrix.okfn.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("Matrix"),o("OutboundLink")],1),e._v(") or "),o("a",{attrs:{href:"https://twitter.com/frictionlessd8a",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),o("OutboundLink")],1),e._v(" to say hi or ask any questions. See you there!")])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[157],{691:function(e,t,o){"use strict";o.r(t);var r=o(29),a=Object(r.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("p",[e._v("At our last community call on April 28"),o("sup",[e._v("th")]),e._v(", we had a discussion around open science best practices and the Turing Way with Anne Lee Steele, who - you might remember, was part of the "),o("a",{attrs:{href:"https://frictionlessdata.io/blog/2020/09/01/hello-fellows-cohort2/",target:"_blank",rel:"noopener noreferrer"}},[e._v("second cohort of Frictionless Fellows"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[e._v("The Turing Way is an open source and community-led handbook for reproducible, ethical and collaborative research. It is composed of more than 240 pages created by ~300 researchers over the course of 3 years, written collaboratively via GitHub PRs - contrasting to the notion of single/small-authorship papers.")]),e._v(" "),o("p",[e._v("There is currently an effort to make the Turing way develop meta-practices that can be applied to other areas as well, one example is documentation.")]),e._v(" "),o("p",[e._v("A great outcome of the call was the proposal to have a closer cooperation between the Frictionless Data community and the Turing Way’s one, possibly developing a chapter for Open Infrastructures for research to contribute upstream. This chapter would set the context and provide a vision for how to evaluate tools and platforms with a Turing Way perspective on reproducibility, ethical alternatives and collaboration in practice. For more info about this proposal, check "),o("a",{attrs:{href:"https://github.com/alan-turing-institute/the-turing-way/issues/2337",target:"_blank",rel:"noopener noreferrer"}},[e._v("this issue"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[e._v("If you want to know more about the Turing Way, have a look at the "),o("a",{attrs:{href:"https://the-turing-way.netlify.app/welcome.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("project website"),o("OutboundLink")],1),e._v(". You can also check out the full recording of the call:")]),e._v(" "),o("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/-RyRFcMAGCE",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),o("h1",{attrs:{id:"news-from-the-community"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#news-from-the-community"}},[e._v("#")]),e._v(" News from the community")]),e._v(" "),o("ul",[o("li",[o("p",[e._v("You’re all invited to join the Frictionless Fellows for a free virtual workshop on Open Science best practices on May 25 at 2pm UTC!"),o("br"),e._v("\nIn this beginner-friendly workshop, Fellows will demonstrate how to use the Frictionless tools to make research data more understandable, usable, and open. You will learn how to use the Frictionless non-coding tools to manipulate metadata and schemas (and why that is important!) and how to validate data in a hands-on format. Learn more & sign up on the Fellows website: "),o("a",{attrs:{href:"https://fellows.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://fellows.frictionlessdata.io/"),o("OutboundLink")],1),e._v(".")])]),e._v(" "),o("li",[o("p",[e._v("Reminder that our community chat has moved to Slack. Join us "),o("a",{attrs:{href:"https://join.slack.com/t/frictionlessdata/shared_invite/zt-17kpbffnm-tRfDW_wJgOw8tJVLvZTrBg",target:"_blank",rel:"noopener noreferrer"}},[e._v("there"),o("OutboundLink")],1),e._v(". We now also have a fully operating "),o("a",{attrs:{href:"https://matrix.to/#/#frictionlessdata:matrix.okfn.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("Matrix bridge"),o("OutboundLink")],1),e._v(", so if you prefer you can join us from there as well.")])])]),e._v(" "),o("h1",{attrs:{id:"join-us-next-month"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[e._v("#")]),e._v(" Join us next month!")]),e._v(" "),o("p",[e._v("Next community call is on May 26"),o("sup",[e._v("th")]),e._v(". We are going to hear Nick Kellett from Deploy Solutions explain to us how to build citizen science and climate change solutions, using Frictionless.")]),e._v(" "),o("p",[e._v("You can sign up for the call already "),o("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here:"),o("OutboundLink")],1)]),e._v(" "),o("p",[e._v("Do you want to share something with the community? Let us know when you sign up.")]),e._v(" "),o("p",[e._v("Join us on "),o("a",{attrs:{href:"https://join.slack.com/t/frictionlessdata/shared_invite/zt-17kpbffnm-tRfDW_wJgOw8tJVLvZTrBg",target:"_blank",rel:"noopener noreferrer"}},[e._v("Slack"),o("OutboundLink")],1),e._v(" (also via "),o("a",{attrs:{href:"https://matrix.to/#/#frictionlessdata:matrix.okfn.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("Matrix"),o("OutboundLink")],1),e._v(") or "),o("a",{attrs:{href:"https://twitter.com/frictionlessd8a",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),o("OutboundLink")],1),e._v(" to say hi or ask any questions. See you there!")])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/16.ed5807b6.js b/assets/js/16.b332d969.js similarity index 98% rename from assets/js/16.ed5807b6.js rename to assets/js/16.b332d969.js index e6a26fc95..7ef1faaba 100644 --- a/assets/js/16.ed5807b6.js +++ b/assets/js/16.b332d969.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[16],{527:function(e,t,a){e.exports=a.p+"assets/img/IMG_20230627_110531.dd426282.jpg"},528:function(e,t,a){e.exports=a.p+"assets/img/20230419_145928.f2d541cc.jpg"},529:function(e,t,a){e.exports=a.p+"assets/img/PXL_20230419_174710396.4df11ee7.jpg"},530:function(e,t,a){e.exports=a.p+"assets/img/IMG20230420143511.3025f94e.jpg"},714:function(e,t,a){"use strict";a.r(t);var n=a(29),r=Object(n.a)({},(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[n("p",[e._v("On April 19, 20 we attended csv,conf,v7, the best community conference for datamakers from all around the world! It was two days of fantastic talks, llamas (of course!), and above all, vibrant community encounters. We met long term friends, community members, and made new meaningful connections. Our tech lead Evgeny Karev gave a talk on April 19th to present the beta version of the Frictionless Application, making it easier for non-coders to use all the Frictionless resources, helping them improve the quality of their data. Whether you’re a data scientist, researcher, or citizen analyst, the Frictionless Application empowers you to effortlessly describe, validate, extract, and transform data, all in one user-friendly environment. If you want to have a look at the presentation of the Frictionless Application by Evgeny Karev, you can watch it "),n("a",{attrs:{href:"https://youtu.be/hk1PoedLOY4",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),n("OutboundLink")],1),e._v(".")]),e._v(" "),n("p",[n("img",{attrs:{src:a(527),alt:"Evgeny Karev presenting the Frictionless Application"}})]),e._v(" "),n("p",[e._v("Also, we can’t help but feel a sense of pride that Frictionless Data got mentioned in three different talks:")]),e._v(" "),n("p",[n("strong",[e._v("Miller: A Swiss-Army Chainsaw for CSV and More by John Kerl:")]),n("br"),e._v("\nJohn Kerl took the stage to introduce Miller, a powerful tool that simplifies working with CSV and other data formats. In his talk, he acknowledged the synergy between Miller and Frictionless Data. He highlighted how Frictionless Data’s specifications and tooling provided a solid foundation for Miller’s capabilities, enabling users to effortlessly manipulate and analyse CSV files. The collaboration between Miller and Frictionless Data is a testament to the community’s commitment to making data workflows smoother and more efficient."),n("br"),e._v("\nYou can watch (unfortunately) only parts of the recordings "),n("a",{attrs:{href:"https://youtu.be/G0_rFYz6rJg",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),n("OutboundLink")],1),e._v(".")]),e._v(" "),n("p",[n("img",{attrs:{src:a(528),alt:"Miller"}})]),e._v(" "),n("p",[n("strong",[e._v("Integrating Data Sources and Publishing Open Data with FastELT & Airflow by Augusto Herrmann:")]),n("br"),e._v("\nAugusto Herrmann, who is part of our community and whom you probably have met at one of our monthly calls, gave a talk on integrating data sources and publishing open data using FastELT and Airflow. During his presentation, Augusto emphasised the crucial role of Frictionless Data in ensuring data quality and interoperability. By implementing Frictionless Data’s specifications and tooling, he showcased how FastELT and Airflow can seamlessly process, validate, and transform data, simplifying the data integration process and making open data publishing a breeze."),n("br"),e._v("\nWatch the recording of Augusto’s talk "),n("a",{attrs:{href:"https://youtu.be/u42NrUAui8Y",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),n("OutboundLink")],1),e._v(".")]),e._v(" "),n("p",[n("img",{attrs:{src:a(529),alt:"FastELT"}})]),e._v(" "),n("p",[n("strong",[e._v("Defining The Turing Way by Malvika Sharan, Melissa Black, and Esther Plomp:")]),n("br"),e._v("\nMalvika Sharan, Melissa Black, and Esther Plomp discussed The Turing Way, an initiative aimed at providing reproducible, ethical, and inclusive research practices. In their talk, Frictionless Data was acknowledged as a useful tool to achieve these goals. By adopting Frictionless Data’s principles and tools, researchers can ensure data integrity, enhance collaboration, and promote openness in their work."),n("br"),e._v("\nWatch the recording of the talk "),n("a",{attrs:{href:"https://youtu.be/pT6W0sQJtyY",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),n("OutboundLink")],1),e._v(". And if you are interested in knowing more about the Turing Way, go and "),n("a",{attrs:{href:"https://frictionlessdata.io/blog/2022/05/05/april-community-call/",target:"_blank",rel:"noopener noreferrer"}},[e._v("have a look at the recap blog"),n("OutboundLink")],1),e._v(" of the community call of April last year, with Turing Way’s community manager Anne Steele.")]),e._v(" "),n("p",[n("img",{attrs:{src:a(530),alt:"Defining the Turing Way"}})])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[16],{527:function(e,t,a){e.exports=a.p+"assets/img/IMG_20230627_110531.dd426282.jpg"},528:function(e,t,a){e.exports=a.p+"assets/img/20230419_145928.f2d541cc.jpg"},529:function(e,t,a){e.exports=a.p+"assets/img/PXL_20230419_174710396.4df11ee7.jpg"},530:function(e,t,a){e.exports=a.p+"assets/img/IMG20230420143511.3025f94e.jpg"},711:function(e,t,a){"use strict";a.r(t);var n=a(29),r=Object(n.a)({},(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[n("p",[e._v("On April 19, 20 we attended csv,conf,v7, the best community conference for datamakers from all around the world! It was two days of fantastic talks, llamas (of course!), and above all, vibrant community encounters. We met long term friends, community members, and made new meaningful connections. Our tech lead Evgeny Karev gave a talk on April 19th to present the beta version of the Frictionless Application, making it easier for non-coders to use all the Frictionless resources, helping them improve the quality of their data. Whether you’re a data scientist, researcher, or citizen analyst, the Frictionless Application empowers you to effortlessly describe, validate, extract, and transform data, all in one user-friendly environment. If you want to have a look at the presentation of the Frictionless Application by Evgeny Karev, you can watch it "),n("a",{attrs:{href:"https://youtu.be/hk1PoedLOY4",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),n("OutboundLink")],1),e._v(".")]),e._v(" "),n("p",[n("img",{attrs:{src:a(527),alt:"Evgeny Karev presenting the Frictionless Application"}})]),e._v(" "),n("p",[e._v("Also, we can’t help but feel a sense of pride that Frictionless Data got mentioned in three different talks:")]),e._v(" "),n("p",[n("strong",[e._v("Miller: A Swiss-Army Chainsaw for CSV and More by John Kerl:")]),n("br"),e._v("\nJohn Kerl took the stage to introduce Miller, a powerful tool that simplifies working with CSV and other data formats. In his talk, he acknowledged the synergy between Miller and Frictionless Data. He highlighted how Frictionless Data’s specifications and tooling provided a solid foundation for Miller’s capabilities, enabling users to effortlessly manipulate and analyse CSV files. The collaboration between Miller and Frictionless Data is a testament to the community’s commitment to making data workflows smoother and more efficient."),n("br"),e._v("\nYou can watch (unfortunately) only parts of the recordings "),n("a",{attrs:{href:"https://youtu.be/G0_rFYz6rJg",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),n("OutboundLink")],1),e._v(".")]),e._v(" "),n("p",[n("img",{attrs:{src:a(528),alt:"Miller"}})]),e._v(" "),n("p",[n("strong",[e._v("Integrating Data Sources and Publishing Open Data with FastELT & Airflow by Augusto Herrmann:")]),n("br"),e._v("\nAugusto Herrmann, who is part of our community and whom you probably have met at one of our monthly calls, gave a talk on integrating data sources and publishing open data using FastELT and Airflow. During his presentation, Augusto emphasised the crucial role of Frictionless Data in ensuring data quality and interoperability. By implementing Frictionless Data’s specifications and tooling, he showcased how FastELT and Airflow can seamlessly process, validate, and transform data, simplifying the data integration process and making open data publishing a breeze."),n("br"),e._v("\nWatch the recording of Augusto’s talk "),n("a",{attrs:{href:"https://youtu.be/u42NrUAui8Y",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),n("OutboundLink")],1),e._v(".")]),e._v(" "),n("p",[n("img",{attrs:{src:a(529),alt:"FastELT"}})]),e._v(" "),n("p",[n("strong",[e._v("Defining The Turing Way by Malvika Sharan, Melissa Black, and Esther Plomp:")]),n("br"),e._v("\nMalvika Sharan, Melissa Black, and Esther Plomp discussed The Turing Way, an initiative aimed at providing reproducible, ethical, and inclusive research practices. In their talk, Frictionless Data was acknowledged as a useful tool to achieve these goals. By adopting Frictionless Data’s principles and tools, researchers can ensure data integrity, enhance collaboration, and promote openness in their work."),n("br"),e._v("\nWatch the recording of the talk "),n("a",{attrs:{href:"https://youtu.be/pT6W0sQJtyY",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),n("OutboundLink")],1),e._v(". And if you are interested in knowing more about the Turing Way, go and "),n("a",{attrs:{href:"https://frictionlessdata.io/blog/2022/05/05/april-community-call/",target:"_blank",rel:"noopener noreferrer"}},[e._v("have a look at the recap blog"),n("OutboundLink")],1),e._v(" of the community call of April last year, with Turing Way’s community manager Anne Steele.")]),e._v(" "),n("p",[n("img",{attrs:{src:a(530),alt:"Defining the Turing Way"}})])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/160.2fcf45e2.js b/assets/js/160.2b0d632a.js similarity index 98% rename from assets/js/160.2fcf45e2.js rename to assets/js/160.2b0d632a.js index e9b8949b3..c4480611f 100644 --- a/assets/js/160.2fcf45e2.js +++ b/assets/js/160.2b0d632a.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[160],{695:function(e,t,o){"use strict";o.r(t);var r=o(29),n=Object(r.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("p",[e._v("On June 30"),o("sup",[e._v("th")]),e._v(" we had a very special community call. Instead of a project presentation this time we had the chance to meet the 3rd cohort of "),o("a",{attrs:{href:"http://fellows.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Frictionless Fellows"),o("OutboundLink")],1),e._v(" and hear about their reproducibility and open science journey.")]),e._v(" "),o("p",[e._v("The fellows are a group of early career researchers interested in learning about open science and data management by using the Frictionless Data tools in their own research projects. Melvin Adhiambo, Lindsay Gypin, Kevin Kidambasi, Victoria Stanley, and Guo-Qiang Zhang are almost at the end of their nine months fellowship. During the past nine months they have learnt open science principles and how to discuss them (especially with colleagues who are not convinced yet!). They also learnt data management skills, and how to correctly use metadata and data schemas. Besides using the Frictionless Data browser tools, there was also a coding component to the fellowship, as they used the Frictionless Python tools as well.")]),e._v(" "),o("p",[e._v("The Fellows also ran workshops and wrote great blog posts during the last nine months. You can read them "),o("a",{attrs:{href:"http://fellows.frictionlessdata.io/blog",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[e._v("If you are interested in knowing more about the fellows’ research field and what being a Frictionless Data Fellow meant for them, go and watch the full recording of the call:")]),e._v(" "),o("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/KAkUGU1BSeo",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),o("h1",{attrs:{id:"join-us-next-month"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[e._v("#")]),e._v(" Join us next month!")]),e._v(" "),o("p",[e._v("Next community call is on July 28"),o("sup",[e._v("th")]),e._v(". Join us to hear David Raznick telling us about "),o("a",{attrs:{href:"https://flatterer.opendata.coop/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Flatterer"),o("OutboundLink")],1),e._v(", a new tool that helps convert JSON into tabular data.")]),e._v(" "),o("p",[e._v("You can sign up for the call already "),o("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here."),o("OutboundLink")],1)]),e._v(" "),o("p",[e._v("Do you want to share something with the community? Let us know when you sign up.")]),e._v(" "),o("p",[e._v("Would you like to present at one of the next community calls? Please fill out "),o("a",{attrs:{href:"https://forms.gle/AWpbxyiGESNSUFK2A",target:"_blank",rel:"noopener noreferrer"}},[e._v("this form"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[e._v("Join our community on "),o("a",{attrs:{href:"https://join.slack.com/t/frictionlessdata/shared_invite/zt-17kpbffnm-tRfDW_wJgOw8tJVLvZTrBg",target:"_blank",rel:"noopener noreferrer"}},[e._v("Slack"),o("OutboundLink")],1),e._v(" (also via "),o("a",{attrs:{href:"https://matrix.to/#/#frictionlessdata:matrix.okfn.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("Matrix"),o("OutboundLink")],1),e._v(") or "),o("a",{attrs:{href:"https://twitter.com/frictionlessd8a",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),o("OutboundLink")],1),e._v(". See you there!")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[160],{696:function(e,t,o){"use strict";o.r(t);var r=o(29),n=Object(r.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("p",[e._v("On June 30"),o("sup",[e._v("th")]),e._v(" we had a very special community call. Instead of a project presentation this time we had the chance to meet the 3rd cohort of "),o("a",{attrs:{href:"http://fellows.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Frictionless Fellows"),o("OutboundLink")],1),e._v(" and hear about their reproducibility and open science journey.")]),e._v(" "),o("p",[e._v("The fellows are a group of early career researchers interested in learning about open science and data management by using the Frictionless Data tools in their own research projects. Melvin Adhiambo, Lindsay Gypin, Kevin Kidambasi, Victoria Stanley, and Guo-Qiang Zhang are almost at the end of their nine months fellowship. During the past nine months they have learnt open science principles and how to discuss them (especially with colleagues who are not convinced yet!). They also learnt data management skills, and how to correctly use metadata and data schemas. Besides using the Frictionless Data browser tools, there was also a coding component to the fellowship, as they used the Frictionless Python tools as well.")]),e._v(" "),o("p",[e._v("The Fellows also ran workshops and wrote great blog posts during the last nine months. You can read them "),o("a",{attrs:{href:"http://fellows.frictionlessdata.io/blog",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[e._v("If you are interested in knowing more about the fellows’ research field and what being a Frictionless Data Fellow meant for them, go and watch the full recording of the call:")]),e._v(" "),o("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/KAkUGU1BSeo",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),o("h1",{attrs:{id:"join-us-next-month"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[e._v("#")]),e._v(" Join us next month!")]),e._v(" "),o("p",[e._v("Next community call is on July 28"),o("sup",[e._v("th")]),e._v(". Join us to hear David Raznick telling us about "),o("a",{attrs:{href:"https://flatterer.opendata.coop/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Flatterer"),o("OutboundLink")],1),e._v(", a new tool that helps convert JSON into tabular data.")]),e._v(" "),o("p",[e._v("You can sign up for the call already "),o("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here."),o("OutboundLink")],1)]),e._v(" "),o("p",[e._v("Do you want to share something with the community? Let us know when you sign up.")]),e._v(" "),o("p",[e._v("Would you like to present at one of the next community calls? Please fill out "),o("a",{attrs:{href:"https://forms.gle/AWpbxyiGESNSUFK2A",target:"_blank",rel:"noopener noreferrer"}},[e._v("this form"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[e._v("Join our community on "),o("a",{attrs:{href:"https://join.slack.com/t/frictionlessdata/shared_invite/zt-17kpbffnm-tRfDW_wJgOw8tJVLvZTrBg",target:"_blank",rel:"noopener noreferrer"}},[e._v("Slack"),o("OutboundLink")],1),e._v(" (also via "),o("a",{attrs:{href:"https://matrix.to/#/#frictionlessdata:matrix.okfn.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("Matrix"),o("OutboundLink")],1),e._v(") or "),o("a",{attrs:{href:"https://twitter.com/frictionlessd8a",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),o("OutboundLink")],1),e._v(". See you there!")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/161.0c948627.js b/assets/js/161.37b24ce2.js similarity index 98% rename from assets/js/161.0c948627.js rename to assets/js/161.37b24ce2.js index 1b45bedea..4719e0fb5 100644 --- a/assets/js/161.0c948627.js +++ b/assets/js/161.37b24ce2.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[161],{697:function(e,a,t){"use strict";t.r(a);var n=t(29),s=Object(n.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("p",[e._v("Originally published on: "),t("a",{attrs:{href:"https://blog.okfn.org/2022/07/05/frictionless-planet-and-lacuna-fund-discuss-gaps-in-climate-datasets-for-machine-learning/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://blog.okfn.org/2022/07/05/frictionless-planet-and-lacuna-fund-discuss-gaps-in-climate-datasets-for-machine-learning/"),t("OutboundLink")],1)]),e._v(" "),t("p",[e._v("On 24 June we hosted a conversation with the Lacuna Fund about datasets for climate change where we heard all about the Lacuna Fund’s recently launched Request for Proposals around Datasets for Climate Applications. We were joined by climate data users and creators from around the globe. This conversation is a part of Open Knowledge Foundation’s recent work on building a Frictionless Planet by using open tools and design principles to tackle the world’s largest problems, including climate change.")]),e._v(" "),t("p",[e._v("A lacuna is a gap, a blank space or a missing part of an item. Today there are gaps in the datasets that are available to train and evaluate machine learning models. This is especially true when it comes to specific populations and geographies. The Lacuna Fund was created to support data scientists in closing those gaps in machine learning datasets needed to better understand and tackle urgent problems in their communities, like those linked to the climate crisis.")]),e._v(" "),t("p",[e._v("Lacuna Fund is currently accepting proposals for two climate tracks: "),t("a",{attrs:{href:"https://s31207.pcdn.co/wp-content/uploads/sites/11/2022/04/Climate-and-Energy-RFP-Final.pdf",target:"_blank",rel:"noopener noreferrer"}},[e._v("Climate & Energy"),t("OutboundLink")],1),e._v(" and "),t("a",{attrs:{href:"https://s31207.pcdn.co/wp-content/uploads/sites/11/2022/04/Climate-and-Health-RFP-Final.pdf",target:"_blank",rel:"noopener noreferrer"}},[e._v("Climate & Health"),t("OutboundLink")],1),e._v(". The first track is looking at the intersection between energy, climate, and green recovery, and the second focuses on health and strategies to mitigate the impact of the climate crisis. Proposals should focus on machine learning datasets, either collecting and annotating new data, annotating and releasing existing data, or expanding existing datasets and increasing usability. Lacuna Fund’s guiding principles include equity, ethics, and participatory approach, and those values are very important for this work. Accordingly, proposals should include a plan for data management and licencing, privacy, and how the data will be shared. The target audience for this call is data scientists, with a focus on under-represented communities in Africa, Asia, and Latin America.")]),e._v(" "),t("p",[e._v("During the call, we also discussed if participants have specific data gaps in their fields, like a lack of data on how extreme heat events affect human health. The response was a strong “Yes”! Participants described working in “data deserts” where there is often missing data, leading to less accurate machine learning algorithms. Another common issue is data quality and trust in data, especially from “official” sources. Tackling data transparency will be important for creating impactful climate policy. We’d like to ask you the same question: If your group could have access to one data set that would have a large impact on your work, what is that data set?")]),e._v(" "),t("ul",[t("li",[e._v("If you are interested in applying for the Lacuna Fund’s open requests for proposals (RFP), please check out these resources here:")]),e._v(" "),t("li",[e._v("Apply page: "),t("a",{attrs:{href:"https://lacunafund.org/apply/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://lacunafund.org/apply/"),t("OutboundLink")],1)]),e._v(" "),t("li",[e._v("Q&A (questions from potential applicants): "),t("a",{attrs:{href:"https://s31207.pcdn.co/wp-content/uploads/sites/11/2022/06/QA-Climate-2022.pdf",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://s31207.pcdn.co/wp-content/uploads/sites/11/2022/06/QA-Climate-2022.pdf"),t("OutboundLink")],1)]),e._v(" "),t("li",[e._v("RFP for Climate & Energy: "),t("a",{attrs:{href:"https://s31207.pcdn.co/wp-content/uploads/sites/11/2022/04/Climate-and-Energy-RFP-Final.pdf",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://s31207.pcdn.co/wp-content/uploads/sites/11/2022/04/Climate-and-Energy-RFP-Final.pdf"),t("OutboundLink")],1)]),e._v(" "),t("li",[e._v("RFP for Climate & Health: "),t("a",{attrs:{href:"https://s31207.pcdn.co/wp-content/uploads/sites/11/2022/04/Climate-and-Health-RFP-Final.pdf",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://s31207.pcdn.co/wp-content/uploads/sites/11/2022/04/Climate-and-Health-RFP-Final.pdf"),t("OutboundLink")],1)]),e._v(" "),t("li",[e._v("Applicant webinar recording: "),t("a",{attrs:{href:"https://vimeo.com/711365252",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://vimeo.com/711365252"),t("OutboundLink")],1)]),e._v(" "),t("li",[e._v("Proposals are due 17th July")])])])}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[161],{695:function(e,a,t){"use strict";t.r(a);var n=t(29),s=Object(n.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("p",[e._v("Originally published on: "),t("a",{attrs:{href:"https://blog.okfn.org/2022/07/05/frictionless-planet-and-lacuna-fund-discuss-gaps-in-climate-datasets-for-machine-learning/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://blog.okfn.org/2022/07/05/frictionless-planet-and-lacuna-fund-discuss-gaps-in-climate-datasets-for-machine-learning/"),t("OutboundLink")],1)]),e._v(" "),t("p",[e._v("On 24 June we hosted a conversation with the Lacuna Fund about datasets for climate change where we heard all about the Lacuna Fund’s recently launched Request for Proposals around Datasets for Climate Applications. We were joined by climate data users and creators from around the globe. This conversation is a part of Open Knowledge Foundation’s recent work on building a Frictionless Planet by using open tools and design principles to tackle the world’s largest problems, including climate change.")]),e._v(" "),t("p",[e._v("A lacuna is a gap, a blank space or a missing part of an item. Today there are gaps in the datasets that are available to train and evaluate machine learning models. This is especially true when it comes to specific populations and geographies. The Lacuna Fund was created to support data scientists in closing those gaps in machine learning datasets needed to better understand and tackle urgent problems in their communities, like those linked to the climate crisis.")]),e._v(" "),t("p",[e._v("Lacuna Fund is currently accepting proposals for two climate tracks: "),t("a",{attrs:{href:"https://s31207.pcdn.co/wp-content/uploads/sites/11/2022/04/Climate-and-Energy-RFP-Final.pdf",target:"_blank",rel:"noopener noreferrer"}},[e._v("Climate & Energy"),t("OutboundLink")],1),e._v(" and "),t("a",{attrs:{href:"https://s31207.pcdn.co/wp-content/uploads/sites/11/2022/04/Climate-and-Health-RFP-Final.pdf",target:"_blank",rel:"noopener noreferrer"}},[e._v("Climate & Health"),t("OutboundLink")],1),e._v(". The first track is looking at the intersection between energy, climate, and green recovery, and the second focuses on health and strategies to mitigate the impact of the climate crisis. Proposals should focus on machine learning datasets, either collecting and annotating new data, annotating and releasing existing data, or expanding existing datasets and increasing usability. Lacuna Fund’s guiding principles include equity, ethics, and participatory approach, and those values are very important for this work. Accordingly, proposals should include a plan for data management and licencing, privacy, and how the data will be shared. The target audience for this call is data scientists, with a focus on under-represented communities in Africa, Asia, and Latin America.")]),e._v(" "),t("p",[e._v("During the call, we also discussed if participants have specific data gaps in their fields, like a lack of data on how extreme heat events affect human health. The response was a strong “Yes”! Participants described working in “data deserts” where there is often missing data, leading to less accurate machine learning algorithms. Another common issue is data quality and trust in data, especially from “official” sources. Tackling data transparency will be important for creating impactful climate policy. We’d like to ask you the same question: If your group could have access to one data set that would have a large impact on your work, what is that data set?")]),e._v(" "),t("ul",[t("li",[e._v("If you are interested in applying for the Lacuna Fund’s open requests for proposals (RFP), please check out these resources here:")]),e._v(" "),t("li",[e._v("Apply page: "),t("a",{attrs:{href:"https://lacunafund.org/apply/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://lacunafund.org/apply/"),t("OutboundLink")],1)]),e._v(" "),t("li",[e._v("Q&A (questions from potential applicants): "),t("a",{attrs:{href:"https://s31207.pcdn.co/wp-content/uploads/sites/11/2022/06/QA-Climate-2022.pdf",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://s31207.pcdn.co/wp-content/uploads/sites/11/2022/06/QA-Climate-2022.pdf"),t("OutboundLink")],1)]),e._v(" "),t("li",[e._v("RFP for Climate & Energy: "),t("a",{attrs:{href:"https://s31207.pcdn.co/wp-content/uploads/sites/11/2022/04/Climate-and-Energy-RFP-Final.pdf",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://s31207.pcdn.co/wp-content/uploads/sites/11/2022/04/Climate-and-Energy-RFP-Final.pdf"),t("OutboundLink")],1)]),e._v(" "),t("li",[e._v("RFP for Climate & Health: "),t("a",{attrs:{href:"https://s31207.pcdn.co/wp-content/uploads/sites/11/2022/04/Climate-and-Health-RFP-Final.pdf",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://s31207.pcdn.co/wp-content/uploads/sites/11/2022/04/Climate-and-Health-RFP-Final.pdf"),t("OutboundLink")],1)]),e._v(" "),t("li",[e._v("Applicant webinar recording: "),t("a",{attrs:{href:"https://vimeo.com/711365252",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://vimeo.com/711365252"),t("OutboundLink")],1)]),e._v(" "),t("li",[e._v("Proposals are due 17th July")])])])}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/163.1b796da3.js b/assets/js/163.7d659e7a.js similarity index 98% rename from assets/js/163.1b796da3.js rename to assets/js/163.7d659e7a.js index 805b6d024..1e0ed983c 100644 --- a/assets/js/163.1b796da3.js +++ b/assets/js/163.7d659e7a.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[163],{699:function(e,t,o){"use strict";o.r(t);var a=o(29),n=Object(a.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("p",[e._v("Dear Frictionless community,")]),e._v(" "),o("p",[e._v("I’m writing to let you all know that this is my final week working on Frictionless Data with Open Knowledge Foundation. It has been a true pleasure to get to interact with you all over the last four years! Rest assured that Frictionless Data is in good hands with the team at Open Knowledge (Evgeny, Sara, Shashi, Edgar, and the rest of the OKF tech team).")]),e._v(" "),o("p",[e._v("What’s next for me? I’m still staying in the data space, moving to product at data.world (did you know they export data as datapackages?)! Maybe you’ll see me presenting a demo at an upcoming Frictionless community call 😉")]),e._v(" "),o("p",[e._v("If you’ll allow me to reminisce for a few minutes, here are some of my favourite Frictionless memories from my time working on this project:")]),e._v(" "),o("p",[o("strong",[e._v("The Frictionless Hackathon:")]),e._v(" In October 2021, we hosted the first-ever Frictionless Hackathon (virtually of course), and it was so cool to see all the projects and contributors from around the world! You can read all about it in "),o("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/10/13/hackathon-wrap/",target:"_blank",rel:"noopener noreferrer"}},[e._v("the summary blog here"),o("OutboundLink")],1),e._v(". Should we do another Hackathon? Let Sara know what you think! (Special shout-out to Oleg who set up the Hackathon software and inspired the entire event!)")]),e._v(" "),o("p",[o("strong",[e._v("Pilot collaborations")]),e._v(": We started our first Reproducible Research pilot collaboration with the Biological and Chemical Oceanographic Data Management Office (BCO-DMO) team in 2019, and learned so much from this implementation! This resulted in a new data processing pipeline for BCO-DMO data managers that used Frictionless to reproducibly clean and document data. This work ultimately led to the creation of the Frictionless Framework. You can check out all the other "),o("a",{attrs:{href:"https://frictionlessdata.io/adoption/#pilot-collaborations",target:"_blank",rel:"noopener noreferrer"}},[e._v("Pilots on the Adoption page"),o("OutboundLink")],1),e._v(" too.")]),e._v(" "),o("p",[o("strong",[e._v("Fellows")]),e._v(": Getting to mentor and teach 17 Fellows was truly a spectacular experience. These current (and future) leaders in open science and open scholarship are people to keep an eye on – they are brilliant! You can read all about their experience as Fellows on "),o("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("their blog"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[o("strong",[e._v("The Frictionless Team at OKF")]),e._v(": I’ve been very lucky to get to work with the best team while being at OKF! Many of you already know how helpful and smart my colleagues are, but in case you don’t know, I will tell you! Evgeny has been carefully leading the technical development of Frictionless with a clear vision, making my job easy and fun. Sara has transformed how the community feels and works, which is no small feat! Shashi and Edgar have only been working on the project for less than a year, but their contributions to the code base and to help answer questions have already made a big impact! I will miss working with these excellent humans, and all of you in the community that have made Frictionless a special place!")]),e._v(" "),o("p",[e._v("Thank you all for being a part of the Frictionless community and for working with me in the past! I wish you all the best, and maybe I will see some of you in Buenos Aires in April for "),o("a",{attrs:{href:"https://csvconf.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("csv,conf,v7"),o("OutboundLink")],1),e._v("?")]),e._v(" "),o("p",[e._v("Cheers!")]),e._v(" "),o("p",[e._v("– "),o("a",{attrs:{href:"https://lwinfree.github.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Lilly"),o("OutboundLink")],1)])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[163],{701:function(e,t,o){"use strict";o.r(t);var a=o(29),n=Object(a.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("p",[e._v("Dear Frictionless community,")]),e._v(" "),o("p",[e._v("I’m writing to let you all know that this is my final week working on Frictionless Data with Open Knowledge Foundation. It has been a true pleasure to get to interact with you all over the last four years! Rest assured that Frictionless Data is in good hands with the team at Open Knowledge (Evgeny, Sara, Shashi, Edgar, and the rest of the OKF tech team).")]),e._v(" "),o("p",[e._v("What’s next for me? I’m still staying in the data space, moving to product at data.world (did you know they export data as datapackages?)! Maybe you’ll see me presenting a demo at an upcoming Frictionless community call 😉")]),e._v(" "),o("p",[e._v("If you’ll allow me to reminisce for a few minutes, here are some of my favourite Frictionless memories from my time working on this project:")]),e._v(" "),o("p",[o("strong",[e._v("The Frictionless Hackathon:")]),e._v(" In October 2021, we hosted the first-ever Frictionless Hackathon (virtually of course), and it was so cool to see all the projects and contributors from around the world! You can read all about it in "),o("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/10/13/hackathon-wrap/",target:"_blank",rel:"noopener noreferrer"}},[e._v("the summary blog here"),o("OutboundLink")],1),e._v(". Should we do another Hackathon? Let Sara know what you think! (Special shout-out to Oleg who set up the Hackathon software and inspired the entire event!)")]),e._v(" "),o("p",[o("strong",[e._v("Pilot collaborations")]),e._v(": We started our first Reproducible Research pilot collaboration with the Biological and Chemical Oceanographic Data Management Office (BCO-DMO) team in 2019, and learned so much from this implementation! This resulted in a new data processing pipeline for BCO-DMO data managers that used Frictionless to reproducibly clean and document data. This work ultimately led to the creation of the Frictionless Framework. You can check out all the other "),o("a",{attrs:{href:"https://frictionlessdata.io/adoption/#pilot-collaborations",target:"_blank",rel:"noopener noreferrer"}},[e._v("Pilots on the Adoption page"),o("OutboundLink")],1),e._v(" too.")]),e._v(" "),o("p",[o("strong",[e._v("Fellows")]),e._v(": Getting to mentor and teach 17 Fellows was truly a spectacular experience. These current (and future) leaders in open science and open scholarship are people to keep an eye on – they are brilliant! You can read all about their experience as Fellows on "),o("a",{attrs:{href:"https://fellows.frictionlessdata.io/blog/",target:"_blank",rel:"noopener noreferrer"}},[e._v("their blog"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[o("strong",[e._v("The Frictionless Team at OKF")]),e._v(": I’ve been very lucky to get to work with the best team while being at OKF! Many of you already know how helpful and smart my colleagues are, but in case you don’t know, I will tell you! Evgeny has been carefully leading the technical development of Frictionless with a clear vision, making my job easy and fun. Sara has transformed how the community feels and works, which is no small feat! Shashi and Edgar have only been working on the project for less than a year, but their contributions to the code base and to help answer questions have already made a big impact! I will miss working with these excellent humans, and all of you in the community that have made Frictionless a special place!")]),e._v(" "),o("p",[e._v("Thank you all for being a part of the Frictionless community and for working with me in the past! I wish you all the best, and maybe I will see some of you in Buenos Aires in April for "),o("a",{attrs:{href:"https://csvconf.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("csv,conf,v7"),o("OutboundLink")],1),e._v("?")]),e._v(" "),o("p",[e._v("Cheers!")]),e._v(" "),o("p",[e._v("– "),o("a",{attrs:{href:"https://lwinfree.github.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Lilly"),o("OutboundLink")],1)])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/164.08735e57.js b/assets/js/164.98393809.js similarity index 98% rename from assets/js/164.08735e57.js rename to assets/js/164.98393809.js index aaf874d7b..64e8fb313 100644 --- a/assets/js/164.08735e57.js +++ b/assets/js/164.98393809.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[164],{702:function(e,t,a){"use strict";a.r(t);var r=a(29),o=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[e._v("On the last community call on July 28"),a("sup",[e._v("th")]),e._v(", we heard David Raznick (an ex OKFer, now working at "),a("a",{attrs:{href:"https://opendataservices.coop/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Open Data Services"),a("OutboundLink")],1),e._v(") presenting Flatterer, a tool he developed to convert structured JSON data into tabular data, using Frictionless Data specifications.")]),e._v(" "),a("p",[e._v("David has been working with many different open data standards functioning with deeply nested JSON. To make the data in standard formats more human readable, users often flatten JSON files with flattening tools, but the result they get are very large spreadsheets, which can be difficult to work with.")]),e._v(" "),a("p",[e._v("Flattening tools are also often used to unflatten tabular data in JSON. That way, the data, initially written in a more human readable format, can then be used according to the standards. Unfortunately the result is not optimal, the output of flattening tools is often not user-friendly and the user would probably still need to tweak it by hand, for example modifying headers’ names and/or the way tables are joined together.")]),e._v(" "),a("p",[e._v("Flatterer aims at making these processes easier and faster. It can convert in the blink of an eye your JSON file in the tabular format of your choice: csv, xlsx, parquet, postgres and sqlite. Flatterer will convert your JSON file into a main table, with keys to link one-to-many tables to their parents. That way the data is tidy and easier to work with.")]),e._v(" "),a("p",[e._v("If you are interested in knowing more about Flatterer, have a look at David’s presentation and demo:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/Hi9tDGfteoA",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),a("p",[e._v("You can also read more about the project here: "),a("a",{attrs:{href:"https://flatterer.opendata.coop/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://flatterer.opendata.coop/"),a("OutboundLink")],1),e._v(", or have a look at "),a("a",{attrs:{href:"https://deepnote.com/@david-raznick/Flatterer-Demo-15678671-ca7f-40a0-aed5-6004190d2611",target:"_blank",rel:"noopener noreferrer"}},[e._v("the project documentation"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h1",{attrs:{id:"join-us-next-month"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[e._v("#")]),e._v(" Join us next month!")]),e._v(" "),a("p",[e._v("Next community call is on August 25"),a("sup",[e._v("th")]),e._v(". Frictionless Data developer Shashi Gharti will discuss with the community a tool she would like to add to the Frictionless Framework. Stay tuned to know more!")]),e._v(" "),a("p",[e._v("You can sign up for the call already "),a("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("Do you want to share something with the community? Let us know when you sign up.")]),e._v(" "),a("p",[e._v("Would you like to present at one of the next community calls? Please fill out "),a("a",{attrs:{href:"https://forms.gle/AWpbxyiGESNSUFK2A",target:"_blank",rel:"noopener noreferrer"}},[e._v("this form"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("Join our community on "),a("a",{attrs:{href:"https://join.slack.com/t/frictionlessdata/shared_invite/zt-17kpbffnm-tRfDW_wJgOw8tJVLvZTrBg",target:"_blank",rel:"noopener noreferrer"}},[e._v("Slack"),a("OutboundLink")],1),e._v(" (also via "),a("a",{attrs:{href:"https://matrix.to/#/#frictionlessdata:matrix.okfn.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("Matrix"),a("OutboundLink")],1),e._v(") or "),a("a",{attrs:{href:"https://twitter.com/frictionlessd8a",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),a("OutboundLink")],1),e._v(". See you there!")]),e._v(" "),a("h1",{attrs:{id:"call-recording"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call Recording")]),e._v(" "),a("p",[e._v("On a final note, here is the recording of the full call:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/hfGT6vAjjwU",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}})])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[164],{699:function(e,t,a){"use strict";a.r(t);var r=a(29),o=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[e._v("On the last community call on July 28"),a("sup",[e._v("th")]),e._v(", we heard David Raznick (an ex OKFer, now working at "),a("a",{attrs:{href:"https://opendataservices.coop/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Open Data Services"),a("OutboundLink")],1),e._v(") presenting Flatterer, a tool he developed to convert structured JSON data into tabular data, using Frictionless Data specifications.")]),e._v(" "),a("p",[e._v("David has been working with many different open data standards functioning with deeply nested JSON. To make the data in standard formats more human readable, users often flatten JSON files with flattening tools, but the result they get are very large spreadsheets, which can be difficult to work with.")]),e._v(" "),a("p",[e._v("Flattening tools are also often used to unflatten tabular data in JSON. That way, the data, initially written in a more human readable format, can then be used according to the standards. Unfortunately the result is not optimal, the output of flattening tools is often not user-friendly and the user would probably still need to tweak it by hand, for example modifying headers’ names and/or the way tables are joined together.")]),e._v(" "),a("p",[e._v("Flatterer aims at making these processes easier and faster. It can convert in the blink of an eye your JSON file in the tabular format of your choice: csv, xlsx, parquet, postgres and sqlite. Flatterer will convert your JSON file into a main table, with keys to link one-to-many tables to their parents. That way the data is tidy and easier to work with.")]),e._v(" "),a("p",[e._v("If you are interested in knowing more about Flatterer, have a look at David’s presentation and demo:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/Hi9tDGfteoA",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),a("p",[e._v("You can also read more about the project here: "),a("a",{attrs:{href:"https://flatterer.opendata.coop/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://flatterer.opendata.coop/"),a("OutboundLink")],1),e._v(", or have a look at "),a("a",{attrs:{href:"https://deepnote.com/@david-raznick/Flatterer-Demo-15678671-ca7f-40a0-aed5-6004190d2611",target:"_blank",rel:"noopener noreferrer"}},[e._v("the project documentation"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h1",{attrs:{id:"join-us-next-month"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[e._v("#")]),e._v(" Join us next month!")]),e._v(" "),a("p",[e._v("Next community call is on August 25"),a("sup",[e._v("th")]),e._v(". Frictionless Data developer Shashi Gharti will discuss with the community a tool she would like to add to the Frictionless Framework. Stay tuned to know more!")]),e._v(" "),a("p",[e._v("You can sign up for the call already "),a("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("Do you want to share something with the community? Let us know when you sign up.")]),e._v(" "),a("p",[e._v("Would you like to present at one of the next community calls? Please fill out "),a("a",{attrs:{href:"https://forms.gle/AWpbxyiGESNSUFK2A",target:"_blank",rel:"noopener noreferrer"}},[e._v("this form"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("Join our community on "),a("a",{attrs:{href:"https://join.slack.com/t/frictionlessdata/shared_invite/zt-17kpbffnm-tRfDW_wJgOw8tJVLvZTrBg",target:"_blank",rel:"noopener noreferrer"}},[e._v("Slack"),a("OutboundLink")],1),e._v(" (also via "),a("a",{attrs:{href:"https://matrix.to/#/#frictionlessdata:matrix.okfn.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("Matrix"),a("OutboundLink")],1),e._v(") or "),a("a",{attrs:{href:"https://twitter.com/frictionlessd8a",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),a("OutboundLink")],1),e._v(". See you there!")]),e._v(" "),a("h1",{attrs:{id:"call-recording"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call Recording")]),e._v(" "),a("p",[e._v("On a final note, here is the recording of the full call:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/hfGT6vAjjwU",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}})])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/165.56161c6a.js b/assets/js/165.b4fade48.js similarity index 99% rename from assets/js/165.56161c6a.js rename to assets/js/165.b4fade48.js index c4c622f5a..b70f682df 100644 --- a/assets/js/165.56161c6a.js +++ b/assets/js/165.b4fade48.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[165],{700:function(t,e,a){"use strict";a.r(e);var r=a(29),s=Object(r.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("p",[t._v("We’re releasing a first beta of Firctionless Framework (v5)!"),a("br"),t._v("\nSince the initial Frictionless Framework release we’d been collecting feedback and analyzing both high-level users’ needs and bug reports to identify shortcomings and areas that can be improved in the next version for the framework. Once that process had been done we started working on a new v5 with a goal to make the framework more bullet-proof, easy to maintain and simplify user interface. Today, this version is almost stable and ready to be published. Let’s go through the main improvements we have made:")]),t._v(" "),a("h1",{attrs:{id:"improved-metadata"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#improved-metadata"}},[t._v("#")]),t._v(" Improved Metadata")]),t._v(" "),a("p",[t._v("This year we started working on the Frictionless Application, at the same time, we were thinking about next steps for the "),a("a",{attrs:{href:"https://specs.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Frictionless Standards"),a("OutboundLink")],1),t._v(". For both we need well-defined and an easy-to-understand metadata model. Partially it’s already published as standards like Table Schema and partially it’s going to be published as standards like File Dialect and possibly validation/transform metadata.")]),t._v(" "),a("h2",{attrs:{id:"dialect"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#dialect"}},[t._v("#")]),t._v(" Dialect")]),t._v(" "),a("p",[t._v("In v4 of the framework we had Control/Dialect/Layout concepts to describe resource details related to different formats and schemes, as well as tabular details like header rows. In v5 it’s merged into the only one concept called Dialect which is going to be standardised as a File Dialect spec. Here is an example:")]),t._v(" "),a("h4",{attrs:{id:"yaml"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#yaml"}},[t._v("#")]),t._v(" YAML")]),t._v(" "),a("div",{staticClass:"language-r extra-class"},[a("pre",{pre:!0,attrs:{class:"language-r"}},[a("code",[t._v("header"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" true\nheaderRows"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\ncommentChar"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'#'")]),t._v("\ncsv"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n delimiter"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("';'")]),t._v("\n")])])]),a("p",[t._v("A dialect descriptor can be saved and reused within a resource. Technically, it’s possible to provide different schemes and formats settings within one Dialect (e.g. for CSV and Excel) so it’s possible to create e.g. one re-usable dialect for a data package. A legacy CSV Dialect spec is supported and will be supported forever so it’s possible to provide CSV properties on the root level:")]),t._v(" "),a("h4",{attrs:{id:"yaml-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#yaml-2"}},[t._v("#")]),t._v(" YAML")]),t._v(" "),a("div",{staticClass:"language-r extra-class"},[a("pre",{pre:!0,attrs:{class:"language-r"}},[a("code",[t._v("header"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" true\ndelimiter"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("';'")]),t._v("\n")])])]),a("p",[t._v("For performance and codebase maintainability reasons some marginal Layout features have been removed completely such as "),a("code",[t._v("skip/pick/limit/offsetFields/etc")]),t._v(". It’s possible to achieve the same results using the Pipeline concept as a part of the transformation workflow.")]),t._v(" "),a("p",[t._v("Read an article about "),a("a",{attrs:{href:"https://framework.frictionlessdata.io/docs/framework/dialect.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("Dialect Class"),a("OutboundLink")],1),t._v(" for more information.")]),t._v(" "),a("h2",{attrs:{id:"checklist"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#checklist"}},[t._v("#")]),t._v(" Checklist")]),t._v(" "),a("p",[t._v("Checklist is a new concept introduced in v5. It’s basically a collection of validation steps and a few other settings to make “validation rules” sharable. For example:")]),t._v(" "),a("h4",{attrs:{id:"yaml-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#yaml-3"}},[t._v("#")]),t._v(" YAML")]),t._v(" "),a("div",{staticClass:"language-r extra-class"},[a("pre",{pre:!0,attrs:{class:"language-r"}},[a("code",[t._v("checks"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" type"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" ascii"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("value\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" type"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" row_constraint\n formula"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" id "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("\nskipErrors"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" duplicate"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("label\n")])])]),a("p",[t._v("Having and sharing this checklist it’s possible to tune data quality requirements for some data file or set of data files. This concept will provide an ability for creating data quality “libraries” within projects or domains. We can use a checklist for validation:")]),t._v(" "),a("h4",{attrs:{id:"cli"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cli"}},[t._v("#")]),t._v(" CLI")]),t._v(" "),a("div",{staticClass:"language-r extra-class"},[a("pre",{pre:!0,attrs:{class:"language-r"}},[a("code",[t._v("frictionless validate table1.csv "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("checklist checklist.yaml\nfrictionless validate table2.csv "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("checklist checklist.yaml\n")])])]),a("p",[t._v("Here is a list of another changes:")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("From (v4)")]),t._v(" "),a("th",[t._v("To (v5)")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[t._v("Check(descriptor)")]),t._v(" "),a("td",[t._v("Check.from_descriptor(descriptor)")])]),t._v(" "),a("tr",[a("td",[t._v("check.code")]),t._v(" "),a("td",[t._v("check.type")])])])]),t._v(" "),a("p",[t._v("Read an article about "),a("a",{attrs:{href:"https://framework.frictionlessdata.io/docs/framework/checklist.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("Checklist Class"),a("OutboundLink")],1),t._v(" for more information.")]),t._v(" "),a("h2",{attrs:{id:"pipeline"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pipeline"}},[t._v("#")]),t._v(" Pipeline")]),t._v(" "),a("p",[t._v("In v4 Pipeline was a complex concept similar to validation Inquiry. We reworked it for v5 to be a lightweight set of validation steps that can be applied to a data resource or a data package. For example:")]),t._v(" "),a("h4",{attrs:{id:"yaml-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#yaml-4"}},[t._v("#")]),t._v(" YAML")]),t._v(" "),a("div",{staticClass:"language-r extra-class"},[a("pre",{pre:!0,attrs:{class:"language-r"}},[a("code",[t._v("steps"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" type"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" table"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("normalize\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" type"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" cell"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("set\n fieldName"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" version\n value"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" v5\n")])])]),a("p",[t._v("Similar to the Checklist concept, Pipeline is a reusable (data-abstract) object that can be saved to a descriptor and used in some complex data workflow:")]),t._v(" "),a("h4",{attrs:{id:"cli-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cli-2"}},[t._v("#")]),t._v(" CLI")]),t._v(" "),a("div",{staticClass:"language-r extra-class"},[a("pre",{pre:!0,attrs:{class:"language-r"}},[a("code",[t._v("frictionless transform table1.csv "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("pipeline pipeline.yaml\nfrictionless transform table2.csv "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("pipeline pipeline.yaml\n")])])]),a("p",[t._v("Here is another list of changes:")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("From (v4)")]),t._v(" "),a("th",[t._v("To (v5)")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[t._v("Step(descriptor)")]),t._v(" "),a("td",[t._v("Step.from_descriptor(descriptor)")])]),t._v(" "),a("tr",[a("td",[t._v("step.code")]),t._v(" "),a("td",[t._v("step.type")])])])]),t._v(" "),a("p",[t._v("Read an article about "),a("a",{attrs:{href:"https://framework.frictionlessdata.io/docs/framework/pipeline.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("Pipeline Class"),a("OutboundLink")],1),t._v(" for more information.")]),t._v(" "),a("h2",{attrs:{id:"resource"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#resource"}},[t._v("#")]),t._v(" Resource")]),t._v(" "),a("p",[t._v("There are no changes in the Resource related to the standards although currently by default instead of "),a("code",[t._v("profile")]),t._v(" the "),a("code",[t._v("type")]),t._v(" property will be used to mark a resource as a table. It can be changed using the "),a("code",[t._v("--standards v1")]),t._v(" flag.")]),t._v(" "),a("p",[t._v("It’s now possible to set Checklist and Pipeline as a Resource property similar to Dialect and Schema:")]),t._v(" "),a("h4",{attrs:{id:"yaml-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#yaml-5"}},[t._v("#")]),t._v(" YAML")]),t._v(" "),a("div",{staticClass:"language-r extra-class"},[a("pre",{pre:!0,attrs:{class:"language-r"}},[a("code",[t._v("path"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" table.csv\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# ...")]),t._v("\nchecklist"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n checks"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" type"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" ascii"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("value\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" type"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" row_constraint\n formula"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" id "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("\npipeline"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" pipeline.yaml\n steps"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" type"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" table"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("normalize\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" type"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" cell"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("set\n fieldName"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" version\n value"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" v5\n")])])]),a("p",[t._v("Or using dereference:")]),t._v(" "),a("h4",{attrs:{id:"yaml-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#yaml-6"}},[t._v("#")]),t._v(" YAML")]),t._v(" "),a("div",{staticClass:"language-r extra-class"},[a("pre",{pre:!0,attrs:{class:"language-r"}},[a("code",[t._v("path"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" table.csv\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# ...")]),t._v("\nchecklist"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" checklist.yaml\npipeline"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" pipeline.yaml\n")])])]),a("p",[t._v("In this case the validation/transformation will use it by default providing an ability to ship validation rules and transformation pipelines within resources and packages. This is an important development for data publishers who want to define what they consider to be valid for their datasets as well as sharing raw data with a cleaning pipeline steps:")]),t._v(" "),a("h4",{attrs:{id:"cli-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cli-3"}},[t._v("#")]),t._v(" CLI")]),t._v(" "),a("div",{staticClass:"language-r extra-class"},[a("pre",{pre:!0,attrs:{class:"language-r"}},[a("code",[t._v("frictionless validate resource.yaml "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# will use the checklist above")]),t._v("\nfrictionless transform resource.yaml "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# will use the pipeline above")]),t._v("\n")])])]),a("p",[t._v("There are minor changes in the "),a("code",[t._v("stats")]),t._v(" property. Now it uses named keys to simplify hash distinction (md5/sha256 are calculated by default and it’s not possible to change for performance reasons as it was in v4):")]),t._v(" "),a("h4",{attrs:{id:"python"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#python"}},[t._v("#")]),t._v(" Python")]),t._v(" "),a("div",{staticClass:"language-r extra-class"},[a("pre",{pre:!0,attrs:{class:"language-r"}},[a("code",[t._v("from frictionless import describe\n\nresource "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" describe"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'table.csv'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" stats"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("True"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nprint"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("resource.stats"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("div",{staticClass:"language-r extra-class"},[a("pre",{pre:!0,attrs:{class:"language-r"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'md5'")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'6c2c61dd9b0e9c6876139a449ed87933'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'sha256'")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'a1fd6c5ff3494f697874deeb07f69f8667e903dd94a7bc062dd57550cea26da8'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'bytes'")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("30")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'fields'")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'rows'")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v("Here is a list of another changes:")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("From (v4)")]),t._v(" "),a("th",[t._v("To (v5)")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[t._v("for row in resource:")]),t._v(" "),a("td",[t._v("for row in resource.row_stream")])])])]),t._v(" "),a("p",[t._v("Read an article about "),a("a",{attrs:{href:"https://framework.frictionlessdata.io/docs/framework/resource.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("Resource Class"),a("OutboundLink")],1),t._v(" for more information.")]),t._v(" "),a("h2",{attrs:{id:"package"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#package"}},[t._v("#")]),t._v(" Package")]),t._v(" "),a("p",[t._v("There are no changes in the Package related to the standards although it’s now possible to use resource dereference:")]),t._v(" "),a("h4",{attrs:{id:"yaml-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#yaml-7"}},[t._v("#")]),t._v(" YAML")]),t._v(" "),a("div",{staticClass:"language-r extra-class"},[a("pre",{pre:!0,attrs:{class:"language-r"}},[a("code",[t._v("name"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" package\nresources"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" resource1.yaml\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" resource2.yaml\n")])])]),a("p",[t._v("Read an article about "),a("a",{attrs:{href:"https://framework.frictionlessdata.io/docs/framework/package.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("Package Class"),a("OutboundLink")],1),t._v(" for more information.")]),t._v(" "),a("h2",{attrs:{id:"catalog"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#catalog"}},[t._v("#")]),t._v(" Catalog")]),t._v(" "),a("p",[t._v("Catalog is a new concept that is a collection of data packages that can be written inline or using dereference:")]),t._v(" "),a("h4",{attrs:{id:"yaml-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#yaml-8"}},[t._v("#")]),t._v(" YAML")]),t._v(" "),a("div",{staticClass:"language-r extra-class"},[a("pre",{pre:!0,attrs:{class:"language-r"}},[a("code",[t._v("name"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" catalog\npackages"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" package1.yaml\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" package2.yaml\n")])])]),a("p",[t._v("Read an article about "),a("a",{attrs:{href:"https://framework.frictionlessdata.io/docs/framework/catalog.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("Catalog Class"),a("OutboundLink")],1),t._v(" for more information.")]),t._v(" "),a("h2",{attrs:{id:"detector"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#detector"}},[t._v("#")]),t._v(" Detector")]),t._v(" "),a("p",[t._v("Detector is now a metadata class (it wasn’t in v4) so it can be saved and shared as other metadata classes:")]),t._v(" "),a("h4",{attrs:{id:"python-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#python-2"}},[t._v("#")]),t._v(" Python")]),t._v(" "),a("div",{staticClass:"language-r extra-class"},[a("pre",{pre:!0,attrs:{class:"language-r"}},[a("code",[t._v("from frictionless import Detector\n\ndetector "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" Detector"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("sample_size"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1000")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nprint"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("detector"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("div",{staticClass:"language-r extra-class"},[a("pre",{pre:!0,attrs:{class:"language-r"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'sampleSize'")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1000")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v("Read an article about "),a("a",{attrs:{href:"https://framework.frictionlessdata.io/docs/framework/detector.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("Detector Class"),a("OutboundLink")],1),t._v(" for more information.")]),t._v(" "),a("h2",{attrs:{id:"inquiry"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#inquiry"}},[t._v("#")]),t._v(" Inquiry")]),t._v(" "),a("p",[t._v("There are few changes in the Inquiry concept which is known for using in the "),a("a",{attrs:{href:"https://repository.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Frictionless Repository"),a("OutboundLink")],1),t._v(" project:")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("From (v4)")]),t._v(" "),a("th",[t._v("To (v5)")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[t._v("inquiryTask.source")]),t._v(" "),a("td",[t._v("inquiryTask.path")])]),t._v(" "),a("tr",[a("td",[t._v("inquiryTask.source")]),t._v(" "),a("td",[t._v("inquiryTask.resource")])]),t._v(" "),a("tr",[a("td",[t._v("inquiryTask.source")]),t._v(" "),a("td",[t._v("inquiryTask.package")])])])]),t._v(" "),a("p",[t._v("Read an article about "),a("a",{attrs:{href:"https://framework.frictionlessdata.io/docs/framework/inquiry.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("Inquiry Class"),a("OutboundLink")],1),t._v(" for more information.")]),t._v(" "),a("h2",{attrs:{id:"report"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#report"}},[t._v("#")]),t._v(" Report")]),t._v(" "),a("p",[t._v("The Report concept has been significantly simplified by removing the "),a("code",[t._v("resource")]),t._v(" property from "),a("code",[t._v("reportTask")]),t._v(". It’s been replaced by "),a("code",[t._v("name/type/place/labels")]),t._v(" properties. Also "),a("code",[t._v("report.time")]),t._v(" is now "),a("code",[t._v("report.stats.seconds")]),t._v(". The "),a("code",[t._v("report/reportTask.warnings: List[str]")]),t._v(" have been added to provide non-error information like reached limits:")]),t._v(" "),a("h4",{attrs:{id:"cli-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cli-4"}},[t._v("#")]),t._v(" CLI")]),t._v(" "),a("div",{staticClass:"language-r extra-class"},[a("pre",{pre:!0,attrs:{class:"language-r"}},[a("code",[t._v("frictionless validate table.csv "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("yaml\n")])])]),a("div",{staticClass:"language-r extra-class"},[a("pre",{pre:!0,attrs:{class:"language-r"}},[a("code",[t._v("valid"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" true\nstats"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n tasks"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("\n warnings"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n errors"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n seconds"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0.091")]),t._v("\nwarnings"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\nerrors"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\ntasks"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" valid"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" true\n name"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" table\n type"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" table\n place"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" table.csv\n labels"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" id\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" name\n stats"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n md5"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v("c2c61dd9b0e9c6876139a449ed87933\n sha256"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" a1fd6c5ff3494f697874deeb07f69f8667e903dd94a7bc062dd57550cea26da8\n bytes"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("30")]),t._v("\n fields"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v("\n rows"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v("\n warnings"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n errors"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n seconds"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0.091")]),t._v("\n warnings"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n errors"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n")])])]),a("table",[a("thead",[a("tr",[a("th",[t._v("From (v4)")]),t._v(" "),a("th",[t._v("To (v5)")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[t._v("report.time")]),t._v(" "),a("td",[t._v("report.stats.seconds")])]),t._v(" "),a("tr",[a("td",[t._v("reportTask.time")]),t._v(" "),a("td",[t._v("reportTask.stats.seconds")])]),t._v(" "),a("tr",[a("td",[a("a",{attrs:{href:"http://reportTask.resource.name",target:"_blank",rel:"noopener noreferrer"}},[t._v("reportTask.resource.name"),a("OutboundLink")],1)]),t._v(" "),a("td",[a("a",{attrs:{href:"http://reportTask.name",target:"_blank",rel:"noopener noreferrer"}},[t._v("reportTask.name"),a("OutboundLink")],1)])]),t._v(" "),a("tr",[a("td",[t._v("reportTask.resource.profile")]),t._v(" "),a("td",[t._v("reportTask.type")])]),t._v(" "),a("tr",[a("td",[t._v("reportTask.resource.path")]),t._v(" "),a("td",[t._v("reportTask.place")])]),t._v(" "),a("tr",[a("td",[t._v("reportTask.resource.schema")]),t._v(" "),a("td",[t._v("reportTask.labels")])])])]),t._v(" "),a("p",[t._v("Read an article about "),a("a",{attrs:{href:"https://framework.frictionlessdata.io/docs/framework/report.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("Report Class"),a("OutboundLink")],1),t._v(" for more information.")]),t._v(" "),a("h2",{attrs:{id:"schema"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#schema"}},[t._v("#")]),t._v(" Schema")]),t._v(" "),a("p",[t._v("Changes in the Schema class:")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("From (v4)")]),t._v(" "),a("th",[t._v("To (v5)")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[t._v("Schema(descriptor)")]),t._v(" "),a("td",[t._v("Schema.from_descriptor(descriptor)")])])])]),t._v(" "),a("h2",{attrs:{id:"error"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error"}},[t._v("#")]),t._v(" Error")]),t._v(" "),a("p",[t._v("There are a few changes in the Error data structure:")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("From (v4)")]),t._v(" "),a("th",[t._v("To (v5)")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[t._v("error.code")]),t._v(" "),a("td",[t._v("error.type")])]),t._v(" "),a("tr",[a("td",[a("a",{attrs:{href:"http://error.name",target:"_blank",rel:"noopener noreferrer"}},[t._v("error.name"),a("OutboundLink")],1)]),t._v(" "),a("td",[t._v("error.title")])]),t._v(" "),a("tr",[a("td",[t._v("error.rowPosition")]),t._v(" "),a("td",[t._v("error.rowNumber")])]),t._v(" "),a("tr",[a("td",[t._v("error.fieldPosition")]),t._v(" "),a("td",[t._v("error.fieldNumber")])])])]),t._v(" "),a("h2",{attrs:{id:"types"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#types"}},[t._v("#")]),t._v(" Types")]),t._v(" "),a("p",[t._v("Note that all the metadata entities that have multiple implementations in v5 are based on a unified "),a("code",[t._v("type")]),t._v(" model. It means that they use the type property to provide type information:")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("From (v4)")]),t._v(" "),a("th",[t._v("To (v5)")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[t._v("resource.profile")]),t._v(" "),a("td",[t._v("resource.type")])]),t._v(" "),a("tr",[a("td",[t._v("check.code")]),t._v(" "),a("td",[t._v("check.type")])]),t._v(" "),a("tr",[a("td",[t._v("control.code")]),t._v(" "),a("td",[t._v("control.type")])]),t._v(" "),a("tr",[a("td",[t._v("error.code")]),t._v(" "),a("td",[t._v("error.type")])]),t._v(" "),a("tr",[a("td",[t._v("field.type")]),t._v(" "),a("td",[t._v("field.type")])]),t._v(" "),a("tr",[a("td",[t._v("step.type")]),t._v(" "),a("td",[t._v("step.type")])])])]),t._v(" "),a("p",[t._v("The new v5 version still supports old notation in descriptors for backward-compatibility.")]),t._v(" "),a("h1",{attrs:{id:"improved-model"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#improved-model"}},[t._v("#")]),t._v(" Improved Model")]),t._v(" "),a("p",[t._v("It’s been many years that Frictionless were mixing declarative metadata and object model for historical reasons. Since the first implementation of "),a("code",[t._v("datapackage")]),t._v(" library we used different approaches to sync internal state to provide both interfaces descriptor and object model. In Frictionless Framework v4 this technique had been taken to a really sophisticated level with special observables dictionary classes. It was quite smart and nice-to-use for quick prototyping in REPL but it was really hard to maintain and error-prone.")]),t._v(" "),a("p",[t._v("In Framework v5 we finally decided to follow the “right way” for handling this problem and split descriptors and object model completely.")]),t._v(" "),a("h2",{attrs:{id:"descriptors"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#descriptors"}},[t._v("#")]),t._v(" Descriptors")]),t._v(" "),a("p",[t._v("In the Frictionless World we deal with a lot of declarative metadata descriptors such as packages, schemas, pipelines, etc. Nothing changes in v5 regarding this. So for example here is a Table Schema:")]),t._v(" "),a("h4",{attrs:{id:"yaml-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#yaml-9"}},[t._v("#")]),t._v(" YAML")]),t._v(" "),a("div",{staticClass:"language-r extra-class"},[a("pre",{pre:!0,attrs:{class:"language-r"}},[a("code",[t._v("fields"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" name"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" id\n type"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" integer\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" name"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" name\n type"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" string\n")])])]),a("h2",{attrs:{id:"object-model"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#object-model"}},[t._v("#")]),t._v(" Object Model")]),t._v(" "),a("p",[t._v("The difference comes here we we create a metadata instance based on this descriptor. In v4 all the metadata classes were a subclasses of the dict class providing a mix between a descriptor and object model for state management. In v5 there is a clear boundary between descriptor and object model. All the state are managed as it should be in a normal Python class using class attributes:")]),t._v(" "),a("h4",{attrs:{id:"python-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#python-3"}},[t._v("#")]),t._v(" Python")]),t._v(" "),a("div",{staticClass:"language-r extra-class"},[a("pre",{pre:!0,attrs:{class:"language-r"}},[a("code",[t._v("from frictionless import Schema\n\nschema "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" Schema.from_descriptor"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'schema.yaml'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Here we deal with a proper object model")]),t._v("\ndescriptor "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" schema.to_descriptor"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Here we export it back to be a descriptor")]),t._v("\n")])])]),a("p",[t._v("There are a few important traits of the new model:")]),t._v(" "),a("p",[t._v("it’s not possible to create a metadata instance from an invalid descriptor"),a("br"),t._v("\nit’s almost always guaranteed that a metadata instance is valid"),a("br"),t._v("\nit’s not possible to mix dicts and classes in methods like "),a("code",[t._v("package.add_resource")]),a("br"),t._v("\nit’s not possible to export an invalid descriptor"),a("br"),t._v("\nThis separation might make one to add a few additional lines of code, but it gives us much less fragile programs in the end. It’s especially important for software integrators who want to be sure that they write working code. At the same time, for quick prototyping and discovery Frictionless still provides high-level actions like "),a("code",[t._v("validate")]),t._v(" function that are more forgiving regarding user input.")]),t._v(" "),a("h2",{attrs:{id:"static-typing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#static-typing"}},[t._v("#")]),t._v(" Static Typing")]),t._v(" "),a("p",[t._v("One of the most important consequences of “fixing” state management in Frictionless is our new ability to provide static typing for the framework codebase. This work is in progress but we have already added a lot of types and it successfully pass "),a("code",[t._v("pyright")]),t._v(" validation. We highly recommend enabling "),a("code",[t._v("pyright")]),t._v(" in your IDE to see all the type problems in-advance:")]),t._v(" "),a("p",[a("img",{attrs:{src:"https://user-images.githubusercontent.com/74717970/187296542-9ee89ed3-999e-44b3-b3e4-32f1df125f4e.png",alt:"type-error"}})]),t._v(" "),a("h1",{attrs:{id:"livemark-docs"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#livemark-docs"}},[t._v("#")]),t._v(" Livemark Docs")]),t._v(" "),a("p",[t._v("We’re happy to announce that we’re finally ready to drop a JavaScript dependency for the docs generation as we migrated it to Livemark. Moreover, Livemark’s ability to execute scripts inside the documentation and other nifty features like simple Tabs or a reference generator will save us hours and hours for writing better docs.")]),t._v(" "),a("h2",{attrs:{id:"script-execution"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#script-execution"}},[t._v("#")]),t._v(" Script Execution")]),t._v(" "),a("p",[a("img",{attrs:{src:"https://user-images.githubusercontent.com/74717970/187296761-09eb95c9-7245-4d75-8753-8b1bee635f62.png",alt:"livemark-1"}})]),t._v(" "),a("h2",{attrs:{id:"reference-generation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reference-generation"}},[t._v("#")]),t._v(" Reference Generation")]),t._v(" "),a("p",[a("img",{attrs:{src:"https://user-images.githubusercontent.com/74717970/187296860-cb2cc587-c518-47c1-9534-0c1d3f57e552.png",alt:"livemark-2"}})]),t._v(" "),a("h2",{attrs:{id:"happy-contributors"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#happy-contributors"}},[t._v("#")]),t._v(" Happy Contributors")]),t._v(" "),a("p",[t._v("We hope that Livemark docs writing experience will make our contributors happier and allow to grow our community of Frictionless Authors and Users. Let’s chat in our "),a("a",{attrs:{href:"https://join.slack.com/t/frictionlessdata/shared_invite/zt-17kpbffnm-tRfDW_wJgOw8tJVLvZTrBg",target:"_blank",rel:"noopener noreferrer"}},[t._v("Slack"),a("OutboundLink")],1),t._v(" if you have questions or just want to say hi.")]),t._v(" "),a("p",[t._v("Read "),a("a",{attrs:{href:"https://framework.frictionlessdata.io/blog/2022/08-22-frictionless-framework-v5.html#:~:text=Read-,Livemark%20Docs,-for%20more%20information",target:"_blank",rel:"noopener noreferrer"}},[t._v("Livemark Docs"),a("OutboundLink")],1),t._v(" for more information.")])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[165],{697:function(t,e,a){"use strict";a.r(e);var r=a(29),s=Object(r.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("p",[t._v("We’re releasing a first beta of Firctionless Framework (v5)!"),a("br"),t._v("\nSince the initial Frictionless Framework release we’d been collecting feedback and analyzing both high-level users’ needs and bug reports to identify shortcomings and areas that can be improved in the next version for the framework. Once that process had been done we started working on a new v5 with a goal to make the framework more bullet-proof, easy to maintain and simplify user interface. Today, this version is almost stable and ready to be published. Let’s go through the main improvements we have made:")]),t._v(" "),a("h1",{attrs:{id:"improved-metadata"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#improved-metadata"}},[t._v("#")]),t._v(" Improved Metadata")]),t._v(" "),a("p",[t._v("This year we started working on the Frictionless Application, at the same time, we were thinking about next steps for the "),a("a",{attrs:{href:"https://specs.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Frictionless Standards"),a("OutboundLink")],1),t._v(". For both we need well-defined and an easy-to-understand metadata model. Partially it’s already published as standards like Table Schema and partially it’s going to be published as standards like File Dialect and possibly validation/transform metadata.")]),t._v(" "),a("h2",{attrs:{id:"dialect"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#dialect"}},[t._v("#")]),t._v(" Dialect")]),t._v(" "),a("p",[t._v("In v4 of the framework we had Control/Dialect/Layout concepts to describe resource details related to different formats and schemes, as well as tabular details like header rows. In v5 it’s merged into the only one concept called Dialect which is going to be standardised as a File Dialect spec. Here is an example:")]),t._v(" "),a("h4",{attrs:{id:"yaml"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#yaml"}},[t._v("#")]),t._v(" YAML")]),t._v(" "),a("div",{staticClass:"language-r extra-class"},[a("pre",{pre:!0,attrs:{class:"language-r"}},[a("code",[t._v("header"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" true\nheaderRows"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\ncommentChar"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'#'")]),t._v("\ncsv"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n delimiter"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("';'")]),t._v("\n")])])]),a("p",[t._v("A dialect descriptor can be saved and reused within a resource. Technically, it’s possible to provide different schemes and formats settings within one Dialect (e.g. for CSV and Excel) so it’s possible to create e.g. one re-usable dialect for a data package. A legacy CSV Dialect spec is supported and will be supported forever so it’s possible to provide CSV properties on the root level:")]),t._v(" "),a("h4",{attrs:{id:"yaml-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#yaml-2"}},[t._v("#")]),t._v(" YAML")]),t._v(" "),a("div",{staticClass:"language-r extra-class"},[a("pre",{pre:!0,attrs:{class:"language-r"}},[a("code",[t._v("header"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" true\ndelimiter"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("';'")]),t._v("\n")])])]),a("p",[t._v("For performance and codebase maintainability reasons some marginal Layout features have been removed completely such as "),a("code",[t._v("skip/pick/limit/offsetFields/etc")]),t._v(". It’s possible to achieve the same results using the Pipeline concept as a part of the transformation workflow.")]),t._v(" "),a("p",[t._v("Read an article about "),a("a",{attrs:{href:"https://framework.frictionlessdata.io/docs/framework/dialect.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("Dialect Class"),a("OutboundLink")],1),t._v(" for more information.")]),t._v(" "),a("h2",{attrs:{id:"checklist"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#checklist"}},[t._v("#")]),t._v(" Checklist")]),t._v(" "),a("p",[t._v("Checklist is a new concept introduced in v5. It’s basically a collection of validation steps and a few other settings to make “validation rules” sharable. For example:")]),t._v(" "),a("h4",{attrs:{id:"yaml-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#yaml-3"}},[t._v("#")]),t._v(" YAML")]),t._v(" "),a("div",{staticClass:"language-r extra-class"},[a("pre",{pre:!0,attrs:{class:"language-r"}},[a("code",[t._v("checks"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" type"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" ascii"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("value\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" type"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" row_constraint\n formula"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" id "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("\nskipErrors"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" duplicate"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("label\n")])])]),a("p",[t._v("Having and sharing this checklist it’s possible to tune data quality requirements for some data file or set of data files. This concept will provide an ability for creating data quality “libraries” within projects or domains. We can use a checklist for validation:")]),t._v(" "),a("h4",{attrs:{id:"cli"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cli"}},[t._v("#")]),t._v(" CLI")]),t._v(" "),a("div",{staticClass:"language-r extra-class"},[a("pre",{pre:!0,attrs:{class:"language-r"}},[a("code",[t._v("frictionless validate table1.csv "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("checklist checklist.yaml\nfrictionless validate table2.csv "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("checklist checklist.yaml\n")])])]),a("p",[t._v("Here is a list of another changes:")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("From (v4)")]),t._v(" "),a("th",[t._v("To (v5)")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[t._v("Check(descriptor)")]),t._v(" "),a("td",[t._v("Check.from_descriptor(descriptor)")])]),t._v(" "),a("tr",[a("td",[t._v("check.code")]),t._v(" "),a("td",[t._v("check.type")])])])]),t._v(" "),a("p",[t._v("Read an article about "),a("a",{attrs:{href:"https://framework.frictionlessdata.io/docs/framework/checklist.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("Checklist Class"),a("OutboundLink")],1),t._v(" for more information.")]),t._v(" "),a("h2",{attrs:{id:"pipeline"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pipeline"}},[t._v("#")]),t._v(" Pipeline")]),t._v(" "),a("p",[t._v("In v4 Pipeline was a complex concept similar to validation Inquiry. We reworked it for v5 to be a lightweight set of validation steps that can be applied to a data resource or a data package. For example:")]),t._v(" "),a("h4",{attrs:{id:"yaml-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#yaml-4"}},[t._v("#")]),t._v(" YAML")]),t._v(" "),a("div",{staticClass:"language-r extra-class"},[a("pre",{pre:!0,attrs:{class:"language-r"}},[a("code",[t._v("steps"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" type"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" table"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("normalize\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" type"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" cell"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("set\n fieldName"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" version\n value"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" v5\n")])])]),a("p",[t._v("Similar to the Checklist concept, Pipeline is a reusable (data-abstract) object that can be saved to a descriptor and used in some complex data workflow:")]),t._v(" "),a("h4",{attrs:{id:"cli-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cli-2"}},[t._v("#")]),t._v(" CLI")]),t._v(" "),a("div",{staticClass:"language-r extra-class"},[a("pre",{pre:!0,attrs:{class:"language-r"}},[a("code",[t._v("frictionless transform table1.csv "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("pipeline pipeline.yaml\nfrictionless transform table2.csv "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("pipeline pipeline.yaml\n")])])]),a("p",[t._v("Here is another list of changes:")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("From (v4)")]),t._v(" "),a("th",[t._v("To (v5)")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[t._v("Step(descriptor)")]),t._v(" "),a("td",[t._v("Step.from_descriptor(descriptor)")])]),t._v(" "),a("tr",[a("td",[t._v("step.code")]),t._v(" "),a("td",[t._v("step.type")])])])]),t._v(" "),a("p",[t._v("Read an article about "),a("a",{attrs:{href:"https://framework.frictionlessdata.io/docs/framework/pipeline.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("Pipeline Class"),a("OutboundLink")],1),t._v(" for more information.")]),t._v(" "),a("h2",{attrs:{id:"resource"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#resource"}},[t._v("#")]),t._v(" Resource")]),t._v(" "),a("p",[t._v("There are no changes in the Resource related to the standards although currently by default instead of "),a("code",[t._v("profile")]),t._v(" the "),a("code",[t._v("type")]),t._v(" property will be used to mark a resource as a table. It can be changed using the "),a("code",[t._v("--standards v1")]),t._v(" flag.")]),t._v(" "),a("p",[t._v("It’s now possible to set Checklist and Pipeline as a Resource property similar to Dialect and Schema:")]),t._v(" "),a("h4",{attrs:{id:"yaml-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#yaml-5"}},[t._v("#")]),t._v(" YAML")]),t._v(" "),a("div",{staticClass:"language-r extra-class"},[a("pre",{pre:!0,attrs:{class:"language-r"}},[a("code",[t._v("path"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" table.csv\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# ...")]),t._v("\nchecklist"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n checks"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" type"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" ascii"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("value\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" type"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" row_constraint\n formula"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" id "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("\npipeline"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" pipeline.yaml\n steps"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" type"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" table"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("normalize\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" type"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" cell"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("set\n fieldName"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" version\n value"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" v5\n")])])]),a("p",[t._v("Or using dereference:")]),t._v(" "),a("h4",{attrs:{id:"yaml-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#yaml-6"}},[t._v("#")]),t._v(" YAML")]),t._v(" "),a("div",{staticClass:"language-r extra-class"},[a("pre",{pre:!0,attrs:{class:"language-r"}},[a("code",[t._v("path"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" table.csv\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# ...")]),t._v("\nchecklist"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" checklist.yaml\npipeline"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" pipeline.yaml\n")])])]),a("p",[t._v("In this case the validation/transformation will use it by default providing an ability to ship validation rules and transformation pipelines within resources and packages. This is an important development for data publishers who want to define what they consider to be valid for their datasets as well as sharing raw data with a cleaning pipeline steps:")]),t._v(" "),a("h4",{attrs:{id:"cli-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cli-3"}},[t._v("#")]),t._v(" CLI")]),t._v(" "),a("div",{staticClass:"language-r extra-class"},[a("pre",{pre:!0,attrs:{class:"language-r"}},[a("code",[t._v("frictionless validate resource.yaml "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# will use the checklist above")]),t._v("\nfrictionless transform resource.yaml "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# will use the pipeline above")]),t._v("\n")])])]),a("p",[t._v("There are minor changes in the "),a("code",[t._v("stats")]),t._v(" property. Now it uses named keys to simplify hash distinction (md5/sha256 are calculated by default and it’s not possible to change for performance reasons as it was in v4):")]),t._v(" "),a("h4",{attrs:{id:"python"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#python"}},[t._v("#")]),t._v(" Python")]),t._v(" "),a("div",{staticClass:"language-r extra-class"},[a("pre",{pre:!0,attrs:{class:"language-r"}},[a("code",[t._v("from frictionless import describe\n\nresource "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" describe"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'table.csv'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" stats"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("True"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nprint"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("resource.stats"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("div",{staticClass:"language-r extra-class"},[a("pre",{pre:!0,attrs:{class:"language-r"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'md5'")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'6c2c61dd9b0e9c6876139a449ed87933'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'sha256'")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'a1fd6c5ff3494f697874deeb07f69f8667e903dd94a7bc062dd57550cea26da8'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'bytes'")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("30")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'fields'")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'rows'")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v("Here is a list of another changes:")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("From (v4)")]),t._v(" "),a("th",[t._v("To (v5)")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[t._v("for row in resource:")]),t._v(" "),a("td",[t._v("for row in resource.row_stream")])])])]),t._v(" "),a("p",[t._v("Read an article about "),a("a",{attrs:{href:"https://framework.frictionlessdata.io/docs/framework/resource.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("Resource Class"),a("OutboundLink")],1),t._v(" for more information.")]),t._v(" "),a("h2",{attrs:{id:"package"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#package"}},[t._v("#")]),t._v(" Package")]),t._v(" "),a("p",[t._v("There are no changes in the Package related to the standards although it’s now possible to use resource dereference:")]),t._v(" "),a("h4",{attrs:{id:"yaml-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#yaml-7"}},[t._v("#")]),t._v(" YAML")]),t._v(" "),a("div",{staticClass:"language-r extra-class"},[a("pre",{pre:!0,attrs:{class:"language-r"}},[a("code",[t._v("name"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" package\nresources"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" resource1.yaml\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" resource2.yaml\n")])])]),a("p",[t._v("Read an article about "),a("a",{attrs:{href:"https://framework.frictionlessdata.io/docs/framework/package.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("Package Class"),a("OutboundLink")],1),t._v(" for more information.")]),t._v(" "),a("h2",{attrs:{id:"catalog"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#catalog"}},[t._v("#")]),t._v(" Catalog")]),t._v(" "),a("p",[t._v("Catalog is a new concept that is a collection of data packages that can be written inline or using dereference:")]),t._v(" "),a("h4",{attrs:{id:"yaml-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#yaml-8"}},[t._v("#")]),t._v(" YAML")]),t._v(" "),a("div",{staticClass:"language-r extra-class"},[a("pre",{pre:!0,attrs:{class:"language-r"}},[a("code",[t._v("name"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" catalog\npackages"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" package1.yaml\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" package2.yaml\n")])])]),a("p",[t._v("Read an article about "),a("a",{attrs:{href:"https://framework.frictionlessdata.io/docs/framework/catalog.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("Catalog Class"),a("OutboundLink")],1),t._v(" for more information.")]),t._v(" "),a("h2",{attrs:{id:"detector"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#detector"}},[t._v("#")]),t._v(" Detector")]),t._v(" "),a("p",[t._v("Detector is now a metadata class (it wasn’t in v4) so it can be saved and shared as other metadata classes:")]),t._v(" "),a("h4",{attrs:{id:"python-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#python-2"}},[t._v("#")]),t._v(" Python")]),t._v(" "),a("div",{staticClass:"language-r extra-class"},[a("pre",{pre:!0,attrs:{class:"language-r"}},[a("code",[t._v("from frictionless import Detector\n\ndetector "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" Detector"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("sample_size"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1000")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nprint"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("detector"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("div",{staticClass:"language-r extra-class"},[a("pre",{pre:!0,attrs:{class:"language-r"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'sampleSize'")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1000")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v("Read an article about "),a("a",{attrs:{href:"https://framework.frictionlessdata.io/docs/framework/detector.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("Detector Class"),a("OutboundLink")],1),t._v(" for more information.")]),t._v(" "),a("h2",{attrs:{id:"inquiry"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#inquiry"}},[t._v("#")]),t._v(" Inquiry")]),t._v(" "),a("p",[t._v("There are few changes in the Inquiry concept which is known for using in the "),a("a",{attrs:{href:"https://repository.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Frictionless Repository"),a("OutboundLink")],1),t._v(" project:")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("From (v4)")]),t._v(" "),a("th",[t._v("To (v5)")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[t._v("inquiryTask.source")]),t._v(" "),a("td",[t._v("inquiryTask.path")])]),t._v(" "),a("tr",[a("td",[t._v("inquiryTask.source")]),t._v(" "),a("td",[t._v("inquiryTask.resource")])]),t._v(" "),a("tr",[a("td",[t._v("inquiryTask.source")]),t._v(" "),a("td",[t._v("inquiryTask.package")])])])]),t._v(" "),a("p",[t._v("Read an article about "),a("a",{attrs:{href:"https://framework.frictionlessdata.io/docs/framework/inquiry.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("Inquiry Class"),a("OutboundLink")],1),t._v(" for more information.")]),t._v(" "),a("h2",{attrs:{id:"report"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#report"}},[t._v("#")]),t._v(" Report")]),t._v(" "),a("p",[t._v("The Report concept has been significantly simplified by removing the "),a("code",[t._v("resource")]),t._v(" property from "),a("code",[t._v("reportTask")]),t._v(". It’s been replaced by "),a("code",[t._v("name/type/place/labels")]),t._v(" properties. Also "),a("code",[t._v("report.time")]),t._v(" is now "),a("code",[t._v("report.stats.seconds")]),t._v(". The "),a("code",[t._v("report/reportTask.warnings: List[str]")]),t._v(" have been added to provide non-error information like reached limits:")]),t._v(" "),a("h4",{attrs:{id:"cli-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cli-4"}},[t._v("#")]),t._v(" CLI")]),t._v(" "),a("div",{staticClass:"language-r extra-class"},[a("pre",{pre:!0,attrs:{class:"language-r"}},[a("code",[t._v("frictionless validate table.csv "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("yaml\n")])])]),a("div",{staticClass:"language-r extra-class"},[a("pre",{pre:!0,attrs:{class:"language-r"}},[a("code",[t._v("valid"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" true\nstats"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n tasks"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("\n warnings"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n errors"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n seconds"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0.091")]),t._v("\nwarnings"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\nerrors"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\ntasks"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" valid"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" true\n name"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" table\n type"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" table\n place"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" table.csv\n labels"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" id\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" name\n stats"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n md5"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v("c2c61dd9b0e9c6876139a449ed87933\n sha256"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" a1fd6c5ff3494f697874deeb07f69f8667e903dd94a7bc062dd57550cea26da8\n bytes"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("30")]),t._v("\n fields"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v("\n rows"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v("\n warnings"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n errors"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n seconds"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0.091")]),t._v("\n warnings"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n errors"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n")])])]),a("table",[a("thead",[a("tr",[a("th",[t._v("From (v4)")]),t._v(" "),a("th",[t._v("To (v5)")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[t._v("report.time")]),t._v(" "),a("td",[t._v("report.stats.seconds")])]),t._v(" "),a("tr",[a("td",[t._v("reportTask.time")]),t._v(" "),a("td",[t._v("reportTask.stats.seconds")])]),t._v(" "),a("tr",[a("td",[a("a",{attrs:{href:"http://reportTask.resource.name",target:"_blank",rel:"noopener noreferrer"}},[t._v("reportTask.resource.name"),a("OutboundLink")],1)]),t._v(" "),a("td",[a("a",{attrs:{href:"http://reportTask.name",target:"_blank",rel:"noopener noreferrer"}},[t._v("reportTask.name"),a("OutboundLink")],1)])]),t._v(" "),a("tr",[a("td",[t._v("reportTask.resource.profile")]),t._v(" "),a("td",[t._v("reportTask.type")])]),t._v(" "),a("tr",[a("td",[t._v("reportTask.resource.path")]),t._v(" "),a("td",[t._v("reportTask.place")])]),t._v(" "),a("tr",[a("td",[t._v("reportTask.resource.schema")]),t._v(" "),a("td",[t._v("reportTask.labels")])])])]),t._v(" "),a("p",[t._v("Read an article about "),a("a",{attrs:{href:"https://framework.frictionlessdata.io/docs/framework/report.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("Report Class"),a("OutboundLink")],1),t._v(" for more information.")]),t._v(" "),a("h2",{attrs:{id:"schema"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#schema"}},[t._v("#")]),t._v(" Schema")]),t._v(" "),a("p",[t._v("Changes in the Schema class:")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("From (v4)")]),t._v(" "),a("th",[t._v("To (v5)")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[t._v("Schema(descriptor)")]),t._v(" "),a("td",[t._v("Schema.from_descriptor(descriptor)")])])])]),t._v(" "),a("h2",{attrs:{id:"error"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error"}},[t._v("#")]),t._v(" Error")]),t._v(" "),a("p",[t._v("There are a few changes in the Error data structure:")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("From (v4)")]),t._v(" "),a("th",[t._v("To (v5)")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[t._v("error.code")]),t._v(" "),a("td",[t._v("error.type")])]),t._v(" "),a("tr",[a("td",[a("a",{attrs:{href:"http://error.name",target:"_blank",rel:"noopener noreferrer"}},[t._v("error.name"),a("OutboundLink")],1)]),t._v(" "),a("td",[t._v("error.title")])]),t._v(" "),a("tr",[a("td",[t._v("error.rowPosition")]),t._v(" "),a("td",[t._v("error.rowNumber")])]),t._v(" "),a("tr",[a("td",[t._v("error.fieldPosition")]),t._v(" "),a("td",[t._v("error.fieldNumber")])])])]),t._v(" "),a("h2",{attrs:{id:"types"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#types"}},[t._v("#")]),t._v(" Types")]),t._v(" "),a("p",[t._v("Note that all the metadata entities that have multiple implementations in v5 are based on a unified "),a("code",[t._v("type")]),t._v(" model. It means that they use the type property to provide type information:")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("From (v4)")]),t._v(" "),a("th",[t._v("To (v5)")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[t._v("resource.profile")]),t._v(" "),a("td",[t._v("resource.type")])]),t._v(" "),a("tr",[a("td",[t._v("check.code")]),t._v(" "),a("td",[t._v("check.type")])]),t._v(" "),a("tr",[a("td",[t._v("control.code")]),t._v(" "),a("td",[t._v("control.type")])]),t._v(" "),a("tr",[a("td",[t._v("error.code")]),t._v(" "),a("td",[t._v("error.type")])]),t._v(" "),a("tr",[a("td",[t._v("field.type")]),t._v(" "),a("td",[t._v("field.type")])]),t._v(" "),a("tr",[a("td",[t._v("step.type")]),t._v(" "),a("td",[t._v("step.type")])])])]),t._v(" "),a("p",[t._v("The new v5 version still supports old notation in descriptors for backward-compatibility.")]),t._v(" "),a("h1",{attrs:{id:"improved-model"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#improved-model"}},[t._v("#")]),t._v(" Improved Model")]),t._v(" "),a("p",[t._v("It’s been many years that Frictionless were mixing declarative metadata and object model for historical reasons. Since the first implementation of "),a("code",[t._v("datapackage")]),t._v(" library we used different approaches to sync internal state to provide both interfaces descriptor and object model. In Frictionless Framework v4 this technique had been taken to a really sophisticated level with special observables dictionary classes. It was quite smart and nice-to-use for quick prototyping in REPL but it was really hard to maintain and error-prone.")]),t._v(" "),a("p",[t._v("In Framework v5 we finally decided to follow the “right way” for handling this problem and split descriptors and object model completely.")]),t._v(" "),a("h2",{attrs:{id:"descriptors"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#descriptors"}},[t._v("#")]),t._v(" Descriptors")]),t._v(" "),a("p",[t._v("In the Frictionless World we deal with a lot of declarative metadata descriptors such as packages, schemas, pipelines, etc. Nothing changes in v5 regarding this. So for example here is a Table Schema:")]),t._v(" "),a("h4",{attrs:{id:"yaml-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#yaml-9"}},[t._v("#")]),t._v(" YAML")]),t._v(" "),a("div",{staticClass:"language-r extra-class"},[a("pre",{pre:!0,attrs:{class:"language-r"}},[a("code",[t._v("fields"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" name"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" id\n type"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" integer\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" name"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" name\n type"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" string\n")])])]),a("h2",{attrs:{id:"object-model"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#object-model"}},[t._v("#")]),t._v(" Object Model")]),t._v(" "),a("p",[t._v("The difference comes here we we create a metadata instance based on this descriptor. In v4 all the metadata classes were a subclasses of the dict class providing a mix between a descriptor and object model for state management. In v5 there is a clear boundary between descriptor and object model. All the state are managed as it should be in a normal Python class using class attributes:")]),t._v(" "),a("h4",{attrs:{id:"python-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#python-3"}},[t._v("#")]),t._v(" Python")]),t._v(" "),a("div",{staticClass:"language-r extra-class"},[a("pre",{pre:!0,attrs:{class:"language-r"}},[a("code",[t._v("from frictionless import Schema\n\nschema "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" Schema.from_descriptor"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'schema.yaml'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Here we deal with a proper object model")]),t._v("\ndescriptor "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" schema.to_descriptor"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Here we export it back to be a descriptor")]),t._v("\n")])])]),a("p",[t._v("There are a few important traits of the new model:")]),t._v(" "),a("p",[t._v("it’s not possible to create a metadata instance from an invalid descriptor"),a("br"),t._v("\nit’s almost always guaranteed that a metadata instance is valid"),a("br"),t._v("\nit’s not possible to mix dicts and classes in methods like "),a("code",[t._v("package.add_resource")]),a("br"),t._v("\nit’s not possible to export an invalid descriptor"),a("br"),t._v("\nThis separation might make one to add a few additional lines of code, but it gives us much less fragile programs in the end. It’s especially important for software integrators who want to be sure that they write working code. At the same time, for quick prototyping and discovery Frictionless still provides high-level actions like "),a("code",[t._v("validate")]),t._v(" function that are more forgiving regarding user input.")]),t._v(" "),a("h2",{attrs:{id:"static-typing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#static-typing"}},[t._v("#")]),t._v(" Static Typing")]),t._v(" "),a("p",[t._v("One of the most important consequences of “fixing” state management in Frictionless is our new ability to provide static typing for the framework codebase. This work is in progress but we have already added a lot of types and it successfully pass "),a("code",[t._v("pyright")]),t._v(" validation. We highly recommend enabling "),a("code",[t._v("pyright")]),t._v(" in your IDE to see all the type problems in-advance:")]),t._v(" "),a("p",[a("img",{attrs:{src:"https://user-images.githubusercontent.com/74717970/187296542-9ee89ed3-999e-44b3-b3e4-32f1df125f4e.png",alt:"type-error"}})]),t._v(" "),a("h1",{attrs:{id:"livemark-docs"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#livemark-docs"}},[t._v("#")]),t._v(" Livemark Docs")]),t._v(" "),a("p",[t._v("We’re happy to announce that we’re finally ready to drop a JavaScript dependency for the docs generation as we migrated it to Livemark. Moreover, Livemark’s ability to execute scripts inside the documentation and other nifty features like simple Tabs or a reference generator will save us hours and hours for writing better docs.")]),t._v(" "),a("h2",{attrs:{id:"script-execution"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#script-execution"}},[t._v("#")]),t._v(" Script Execution")]),t._v(" "),a("p",[a("img",{attrs:{src:"https://user-images.githubusercontent.com/74717970/187296761-09eb95c9-7245-4d75-8753-8b1bee635f62.png",alt:"livemark-1"}})]),t._v(" "),a("h2",{attrs:{id:"reference-generation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reference-generation"}},[t._v("#")]),t._v(" Reference Generation")]),t._v(" "),a("p",[a("img",{attrs:{src:"https://user-images.githubusercontent.com/74717970/187296860-cb2cc587-c518-47c1-9534-0c1d3f57e552.png",alt:"livemark-2"}})]),t._v(" "),a("h2",{attrs:{id:"happy-contributors"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#happy-contributors"}},[t._v("#")]),t._v(" Happy Contributors")]),t._v(" "),a("p",[t._v("We hope that Livemark docs writing experience will make our contributors happier and allow to grow our community of Frictionless Authors and Users. Let’s chat in our "),a("a",{attrs:{href:"https://join.slack.com/t/frictionlessdata/shared_invite/zt-17kpbffnm-tRfDW_wJgOw8tJVLvZTrBg",target:"_blank",rel:"noopener noreferrer"}},[t._v("Slack"),a("OutboundLink")],1),t._v(" if you have questions or just want to say hi.")]),t._v(" "),a("p",[t._v("Read "),a("a",{attrs:{href:"https://framework.frictionlessdata.io/blog/2022/08-22-frictionless-framework-v5.html#:~:text=Read-,Livemark%20Docs,-for%20more%20information",target:"_blank",rel:"noopener noreferrer"}},[t._v("Livemark Docs"),a("OutboundLink")],1),t._v(" for more information.")])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/166.47347e73.js b/assets/js/166.97b54b92.js similarity index 98% rename from assets/js/166.47347e73.js rename to assets/js/166.97b54b92.js index a9706ceae..8f7572c04 100644 --- a/assets/js/166.47347e73.js +++ b/assets/js/166.97b54b92.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[166],{701:function(e,t,r){"use strict";r.r(t);var o=r(29),a=Object(o.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("p",[e._v("On the last community call on August 25"),r("sup",[e._v("th")]),e._v(", we had our very own Frictionless Data developer Shashi Gharti presenting to the community the new Frictionless GitHub integration, to read and write data packages from/to GitHub repositories.")]),e._v(" "),r("p",[e._v("Besides reading and writing packages, the integration also allows the creation of containers for data packages: the "),r("a",{attrs:{href:"https://framework.frictionlessdata.io/docs/framework/catalog.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("catalog"),r("OutboundLink")],1),e._v(", a list of packages from multiple repositories in GitHub. To select which repository you want to be in the catalog, you can use any GitHub qualifier.")]),e._v(" "),r("p",[e._v("The Frictionless GitHub integration is part of the beta release of "),r("a",{attrs:{href:"https://frictionlessdata.io/blog/2022/08/29/frictionless-framework-release/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Frictionless Framework version 5"),r("OutboundLink")],1),e._v(".")]),e._v(" "),r("p",[e._v("If you are interested in knowing more about the Frictionless GitHub integration, have a look at Shashi’s presentation and demo:")]),e._v(" "),r("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/gURZK9WDpp0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),r("p",[e._v("You can also check out "),r("a",{attrs:{href:"https://docs.google.com/presentation/d/1hhHEgEqzIkIpzCZ_FW-DjJtImxPI8jdi7Ck5OXiiDsM/edit?usp=sharing",target:"_blank",rel:"noopener noreferrer"}},[e._v("Shashi’s slides"),r("OutboundLink")],1),e._v(" or have a look at "),r("a",{attrs:{href:"https://framework.frictionlessdata.io/docs/portals/github.html#reference-portals.githubcontrol",target:"_blank",rel:"noopener noreferrer"}},[e._v("the project documentation"),r("OutboundLink")],1),e._v(". If you use the Frictionless Framework v5 and its GitHub integration, please let us know! And if you have any feedback, feel free to open an issue in the "),r("a",{attrs:{href:"https://github.com/frictionlessdata/framework",target:"_blank",rel:"noopener noreferrer"}},[e._v("repository"),r("OutboundLink")],1)]),e._v(" "),r("h1",{attrs:{id:"join-us-next-month"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[e._v("#")]),e._v(" Join us next month!")]),e._v(" "),r("p",[e._v("Next community call is on September 29"),r("sup",[e._v("th")]),e._v(". Frictionless Data lead developer Evgeny Karev will be presenting the Frictionless Framework version 5, so make sure not to miss it!")]),e._v(" "),r("p",[e._v("You can sign up for the call already "),r("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),r("OutboundLink")],1),e._v(".")]),e._v(" "),r("p",[e._v("Do you want to share something with the community? Let us know when you sign up.")]),e._v(" "),r("p",[e._v("Would you like to present at one of the next community calls? Please fill out "),r("a",{attrs:{href:"https://forms.gle/AWpbxyiGESNSUFK2A",target:"_blank",rel:"noopener noreferrer"}},[e._v("this form"),r("OutboundLink")],1),e._v(".")]),e._v(" "),r("p",[e._v("Join our community on "),r("a",{attrs:{href:"https://join.slack.com/t/frictionlessdata/shared_invite/zt-17kpbffnm-tRfDW_wJgOw8tJVLvZTrBg",target:"_blank",rel:"noopener noreferrer"}},[e._v("Slack"),r("OutboundLink")],1),e._v(" (also via "),r("a",{attrs:{href:"https://matrix.to/#/#frictionlessdata:matrix.okfn.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("Matrix"),r("OutboundLink")],1),e._v(") or "),r("a",{attrs:{href:"https://twitter.com/frictionlessd8a",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),r("OutboundLink")],1),e._v(". See you there!")]),e._v(" "),r("h1",{attrs:{id:"call-recording"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call Recording")]),e._v(" "),r("p",[e._v("On a final note, here is the recording of the full call:")]),e._v(" "),r("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/9_VwniN4JKE",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}})])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[166],{700:function(e,t,r){"use strict";r.r(t);var o=r(29),a=Object(o.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("p",[e._v("On the last community call on August 25"),r("sup",[e._v("th")]),e._v(", we had our very own Frictionless Data developer Shashi Gharti presenting to the community the new Frictionless GitHub integration, to read and write data packages from/to GitHub repositories.")]),e._v(" "),r("p",[e._v("Besides reading and writing packages, the integration also allows the creation of containers for data packages: the "),r("a",{attrs:{href:"https://framework.frictionlessdata.io/docs/framework/catalog.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("catalog"),r("OutboundLink")],1),e._v(", a list of packages from multiple repositories in GitHub. To select which repository you want to be in the catalog, you can use any GitHub qualifier.")]),e._v(" "),r("p",[e._v("The Frictionless GitHub integration is part of the beta release of "),r("a",{attrs:{href:"https://frictionlessdata.io/blog/2022/08/29/frictionless-framework-release/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Frictionless Framework version 5"),r("OutboundLink")],1),e._v(".")]),e._v(" "),r("p",[e._v("If you are interested in knowing more about the Frictionless GitHub integration, have a look at Shashi’s presentation and demo:")]),e._v(" "),r("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/gURZK9WDpp0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),r("p",[e._v("You can also check out "),r("a",{attrs:{href:"https://docs.google.com/presentation/d/1hhHEgEqzIkIpzCZ_FW-DjJtImxPI8jdi7Ck5OXiiDsM/edit?usp=sharing",target:"_blank",rel:"noopener noreferrer"}},[e._v("Shashi’s slides"),r("OutboundLink")],1),e._v(" or have a look at "),r("a",{attrs:{href:"https://framework.frictionlessdata.io/docs/portals/github.html#reference-portals.githubcontrol",target:"_blank",rel:"noopener noreferrer"}},[e._v("the project documentation"),r("OutboundLink")],1),e._v(". If you use the Frictionless Framework v5 and its GitHub integration, please let us know! And if you have any feedback, feel free to open an issue in the "),r("a",{attrs:{href:"https://github.com/frictionlessdata/framework",target:"_blank",rel:"noopener noreferrer"}},[e._v("repository"),r("OutboundLink")],1)]),e._v(" "),r("h1",{attrs:{id:"join-us-next-month"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[e._v("#")]),e._v(" Join us next month!")]),e._v(" "),r("p",[e._v("Next community call is on September 29"),r("sup",[e._v("th")]),e._v(". Frictionless Data lead developer Evgeny Karev will be presenting the Frictionless Framework version 5, so make sure not to miss it!")]),e._v(" "),r("p",[e._v("You can sign up for the call already "),r("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),r("OutboundLink")],1),e._v(".")]),e._v(" "),r("p",[e._v("Do you want to share something with the community? Let us know when you sign up.")]),e._v(" "),r("p",[e._v("Would you like to present at one of the next community calls? Please fill out "),r("a",{attrs:{href:"https://forms.gle/AWpbxyiGESNSUFK2A",target:"_blank",rel:"noopener noreferrer"}},[e._v("this form"),r("OutboundLink")],1),e._v(".")]),e._v(" "),r("p",[e._v("Join our community on "),r("a",{attrs:{href:"https://join.slack.com/t/frictionlessdata/shared_invite/zt-17kpbffnm-tRfDW_wJgOw8tJVLvZTrBg",target:"_blank",rel:"noopener noreferrer"}},[e._v("Slack"),r("OutboundLink")],1),e._v(" (also via "),r("a",{attrs:{href:"https://matrix.to/#/#frictionlessdata:matrix.okfn.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("Matrix"),r("OutboundLink")],1),e._v(") or "),r("a",{attrs:{href:"https://twitter.com/frictionlessd8a",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),r("OutboundLink")],1),e._v(". See you there!")]),e._v(" "),r("h1",{attrs:{id:"call-recording"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call Recording")]),e._v(" "),r("p",[e._v("On a final note, here is the recording of the full call:")]),e._v(" "),r("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/9_VwniN4JKE",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}})])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/167.e71c3cb9.js b/assets/js/167.88542d46.js similarity index 99% rename from assets/js/167.e71c3cb9.js rename to assets/js/167.88542d46.js index 670d8619b..839905a55 100644 --- a/assets/js/167.e71c3cb9.js +++ b/assets/js/167.88542d46.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[167],{704:function(e,t,o){"use strict";o.r(t);var r=o(29),a=Object(r.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("p",[e._v("On our last community call on October 27"),o("sup",[e._v("th")]),e._v(", we had our very own Frictionless Data developer Shashi Gharti presenting to the community the Frictionless Zenodo integration, to read and write data packages from and to Zenodo.")]),e._v(" "),o("p",[e._v("The integration is currently in development, but we decided to present this feature already in order to gather feedback from the community. It was a great idea because we got a lot of very useful inputs from all of you. Also how wonderful to see the community! We had really missed you all in the last two months, since we had to cancel the September call.")]),e._v(" "),o("p",[e._v("Back to Shashi’s presentation: what is Zenodo? For those of you who don’t know it, Zenodo is an open repository, allowing researchers to deposit papers, datasets, software, reports, etc.")]),e._v(" "),o("p",[e._v("Many members of our community are active users of Zenodo, and have asked for a plugin which would make it easier to use Frictionless Data and Zenodo together. Since our aim with Frictionless Data is to make data more easily shareable, transportable and interoperable, this feature made a lot of sense.")]),e._v(" "),o("p",[e._v("Similarly to "),o("a",{attrs:{href:"https://frictionlessdata.io/blog/2022/08/30/community-call-github-integration/",target:"_blank",rel:"noopener noreferrer"}},[e._v("the GitHub integration Shashi presented in August"),o("OutboundLink")],1),e._v(", the Zenodo integration will work with Frictionless-py v5, and has 3 different features to write data, read data and create a catalog from multiple Zenodo entries, searchable")]),e._v(" "),o("p",[e._v("If you are interested in knowing more about the feature, have a look at Shashi’s presentation and demo:")]),e._v(" "),o("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/KdblvfqIX7o",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),o("p",[e._v("You can also check out "),o("a",{attrs:{href:"https://docs.google.com/presentation/d/1dMvHCR9yE4BewzpQBaW4osKg--aQR7JX6fex0T17YYA/edit?usp=sharing",target:"_blank",rel:"noopener noreferrer"}},[e._v("Shashi’s slides"),o("OutboundLink")],1),e._v(". If you use the Frictionless Framework v5 and its Zenodo integration, please let us know! We would love to hear what you think. And if you have any feedback, feel free to open an issue in the "),o("a",{attrs:{href:"https://github.com/frictionlessdata/framework",target:"_blank",rel:"noopener noreferrer"}},[e._v("repository"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("h2",{attrs:{id:"other-news-from-the-community"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#other-news-from-the-community"}},[e._v("#")]),e._v(" Other news from the community")]),e._v(" "),o("ul",[o("li",[o("p",[e._v("We are co-organizing "),o("a",{attrs:{href:"https://csvconf.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("csv,conf v7"),o("OutboundLink")],1),e._v(" in Buenos Aires in April next year. csv,conf is a community event for datamakers from all around the world. Calls for proposals are open until November 25th. More info: "),o("a",{attrs:{href:"https://csvconf.com/about/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://csvconf.com/about/"),o("OutboundLink")],1)])]),e._v(" "),o("li",[o("p",[e._v("Peter Desmet is co-organising a conference on biodiversity data on November 9th, with a focus on camera trap data, for which he uses Frictionless Data standards as you may remember from his presentation at "),o("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/11/23/november-community-call/",target:"_blank",rel:"noopener noreferrer"}},[e._v("last year’s community call"),o("OutboundLink")],1),e._v(". More info: "),o("a",{attrs:{href:"https://www.gbif.org/event/f68927-b5c1-4ac8-a4ac-7d47645/exploring-camera-trap-data",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://www.gbif.org/event/f68927-b5c1-4ac8-a4ac-7d47645/exploring-camera-trap-data"),o("OutboundLink")],1)])]),e._v(" "),o("li",[o("p",[e._v("We published an article on the Frictionless Data standards, and we talked about some community projects too, like Libraries Hacked, "),o("a",{attrs:{href:"http://data.gov.fr",target:"_blank",rel:"noopener noreferrer"}},[e._v("data.gov.fr"),o("OutboundLink")],1),e._v(", "),o("a",{attrs:{href:"http://dados.gov.br",target:"_blank",rel:"noopener noreferrer"}},[e._v("dados.gov.br"),o("OutboundLink")],1),e._v(", and BCO-DMO. The article is part of Common Place, a space to discuss the digital infrastructures, cultures, and actions needed to distribute, constellate, and amplify knowledge for the public good. ​ Check it out: "),o("a",{attrs:{href:"https://commonplace.knowledgefutures.org/pub/8x7oeawa/release/1?readingCollection=10ba8b01",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://commonplace.knowledgefutures.org/pub/8x7oeawa/release/1?readingCollection=10ba8b01"),o("OutboundLink")],1)])])]),e._v(" "),o("h1",{attrs:{id:"join-us-next-month"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[e._v("#")]),e._v(" Join us next month!")]),e._v(" "),o("p",[e._v("Next community call is on December 1st (we are pushing it back one week because of the US Thanksgiving).")]),e._v(" "),o("p",[e._v("You can sign up for the call already "),o("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[e._v("Do you want to share something with the community? Let us know when you sign up.")]),e._v(" "),o("p",[e._v("Would you like to present at one of the next community calls? Please fill out "),o("a",{attrs:{href:"https://forms.gle/AWpbxyiGESNSUFK2A",target:"_blank",rel:"noopener noreferrer"}},[e._v("this form"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[e._v("Join our community on "),o("a",{attrs:{href:"https://join.slack.com/t/frictionlessdata/shared_invite/zt-17kpbffnm-tRfDW_wJgOw8tJVLvZTrBg",target:"_blank",rel:"noopener noreferrer"}},[e._v("Slack"),o("OutboundLink")],1),e._v(" (also via "),o("a",{attrs:{href:"https://matrix.to/#/#frictionlessdata:matrix.okfn.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("Matrix"),o("OutboundLink")],1),e._v(") or "),o("a",{attrs:{href:"https://twitter.com/frictionlessd8a",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),o("OutboundLink")],1),e._v(". See you there!")]),e._v(" "),o("h1",{attrs:{id:"call-recording"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call Recording")]),e._v(" "),o("p",[e._v("On a final note, here is the recording of the full call:")]),e._v(" "),o("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/woEiTllLp7A",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}})])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[167],{703:function(e,t,o){"use strict";o.r(t);var r=o(29),a=Object(r.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("p",[e._v("On our last community call on October 27"),o("sup",[e._v("th")]),e._v(", we had our very own Frictionless Data developer Shashi Gharti presenting to the community the Frictionless Zenodo integration, to read and write data packages from and to Zenodo.")]),e._v(" "),o("p",[e._v("The integration is currently in development, but we decided to present this feature already in order to gather feedback from the community. It was a great idea because we got a lot of very useful inputs from all of you. Also how wonderful to see the community! We had really missed you all in the last two months, since we had to cancel the September call.")]),e._v(" "),o("p",[e._v("Back to Shashi’s presentation: what is Zenodo? For those of you who don’t know it, Zenodo is an open repository, allowing researchers to deposit papers, datasets, software, reports, etc.")]),e._v(" "),o("p",[e._v("Many members of our community are active users of Zenodo, and have asked for a plugin which would make it easier to use Frictionless Data and Zenodo together. Since our aim with Frictionless Data is to make data more easily shareable, transportable and interoperable, this feature made a lot of sense.")]),e._v(" "),o("p",[e._v("Similarly to "),o("a",{attrs:{href:"https://frictionlessdata.io/blog/2022/08/30/community-call-github-integration/",target:"_blank",rel:"noopener noreferrer"}},[e._v("the GitHub integration Shashi presented in August"),o("OutboundLink")],1),e._v(", the Zenodo integration will work with Frictionless-py v5, and has 3 different features to write data, read data and create a catalog from multiple Zenodo entries, searchable")]),e._v(" "),o("p",[e._v("If you are interested in knowing more about the feature, have a look at Shashi’s presentation and demo:")]),e._v(" "),o("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/KdblvfqIX7o",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),e._v(" "),o("p",[e._v("You can also check out "),o("a",{attrs:{href:"https://docs.google.com/presentation/d/1dMvHCR9yE4BewzpQBaW4osKg--aQR7JX6fex0T17YYA/edit?usp=sharing",target:"_blank",rel:"noopener noreferrer"}},[e._v("Shashi’s slides"),o("OutboundLink")],1),e._v(". If you use the Frictionless Framework v5 and its Zenodo integration, please let us know! We would love to hear what you think. And if you have any feedback, feel free to open an issue in the "),o("a",{attrs:{href:"https://github.com/frictionlessdata/framework",target:"_blank",rel:"noopener noreferrer"}},[e._v("repository"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("h2",{attrs:{id:"other-news-from-the-community"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#other-news-from-the-community"}},[e._v("#")]),e._v(" Other news from the community")]),e._v(" "),o("ul",[o("li",[o("p",[e._v("We are co-organizing "),o("a",{attrs:{href:"https://csvconf.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("csv,conf v7"),o("OutboundLink")],1),e._v(" in Buenos Aires in April next year. csv,conf is a community event for datamakers from all around the world. Calls for proposals are open until November 25th. More info: "),o("a",{attrs:{href:"https://csvconf.com/about/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://csvconf.com/about/"),o("OutboundLink")],1)])]),e._v(" "),o("li",[o("p",[e._v("Peter Desmet is co-organising a conference on biodiversity data on November 9th, with a focus on camera trap data, for which he uses Frictionless Data standards as you may remember from his presentation at "),o("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/11/23/november-community-call/",target:"_blank",rel:"noopener noreferrer"}},[e._v("last year’s community call"),o("OutboundLink")],1),e._v(". More info: "),o("a",{attrs:{href:"https://www.gbif.org/event/f68927-b5c1-4ac8-a4ac-7d47645/exploring-camera-trap-data",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://www.gbif.org/event/f68927-b5c1-4ac8-a4ac-7d47645/exploring-camera-trap-data"),o("OutboundLink")],1)])]),e._v(" "),o("li",[o("p",[e._v("We published an article on the Frictionless Data standards, and we talked about some community projects too, like Libraries Hacked, "),o("a",{attrs:{href:"http://data.gov.fr",target:"_blank",rel:"noopener noreferrer"}},[e._v("data.gov.fr"),o("OutboundLink")],1),e._v(", "),o("a",{attrs:{href:"http://dados.gov.br",target:"_blank",rel:"noopener noreferrer"}},[e._v("dados.gov.br"),o("OutboundLink")],1),e._v(", and BCO-DMO. The article is part of Common Place, a space to discuss the digital infrastructures, cultures, and actions needed to distribute, constellate, and amplify knowledge for the public good. ​ Check it out: "),o("a",{attrs:{href:"https://commonplace.knowledgefutures.org/pub/8x7oeawa/release/1?readingCollection=10ba8b01",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://commonplace.knowledgefutures.org/pub/8x7oeawa/release/1?readingCollection=10ba8b01"),o("OutboundLink")],1)])])]),e._v(" "),o("h1",{attrs:{id:"join-us-next-month"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[e._v("#")]),e._v(" Join us next month!")]),e._v(" "),o("p",[e._v("Next community call is on December 1st (we are pushing it back one week because of the US Thanksgiving).")]),e._v(" "),o("p",[e._v("You can sign up for the call already "),o("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[e._v("Do you want to share something with the community? Let us know when you sign up.")]),e._v(" "),o("p",[e._v("Would you like to present at one of the next community calls? Please fill out "),o("a",{attrs:{href:"https://forms.gle/AWpbxyiGESNSUFK2A",target:"_blank",rel:"noopener noreferrer"}},[e._v("this form"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[e._v("Join our community on "),o("a",{attrs:{href:"https://join.slack.com/t/frictionlessdata/shared_invite/zt-17kpbffnm-tRfDW_wJgOw8tJVLvZTrBg",target:"_blank",rel:"noopener noreferrer"}},[e._v("Slack"),o("OutboundLink")],1),e._v(" (also via "),o("a",{attrs:{href:"https://matrix.to/#/#frictionlessdata:matrix.okfn.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("Matrix"),o("OutboundLink")],1),e._v(") or "),o("a",{attrs:{href:"https://twitter.com/frictionlessd8a",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),o("OutboundLink")],1),e._v(". See you there!")]),e._v(" "),o("h1",{attrs:{id:"call-recording"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call Recording")]),e._v(" "),o("p",[e._v("On a final note, here is the recording of the full call:")]),e._v(" "),o("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/woEiTllLp7A",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}})])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/168.3656c9c1.js b/assets/js/168.25ec96e6.js similarity index 98% rename from assets/js/168.3656c9c1.js rename to assets/js/168.25ec96e6.js index a42b4db7e..aeb54d7c2 100644 --- a/assets/js/168.3656c9c1.js +++ b/assets/js/168.25ec96e6.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[168],{706:function(t,e,a){"use strict";a.r(e);var r=a(29),o=Object(r.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("p",[t._v("On our last community call on December 1"),a("sup",[t._v("st")]),t._v(", we heard about the new Frictionless Data - CKAN integration from senior developer Edgar Zanella.")]),t._v(" "),a("p",[t._v("Being a much awaited and longterm requested integration from the community, there are several projects aiming at integrating Frictionless Data with CKAN:")]),t._v(" "),a("ol",[a("li",[a("strong",[t._v("Datapackager CKAN Extension")]),t._v(" - allowing the import of Data Packages directly to CKAN, and the export of any dataset in your portal as a Data Package")]),t._v(" "),a("li",[a("strong",[t._v("CKAN Validation Extension")]),t._v(" - providing all the Frictionless Framework validation functionalities to your CKAN portal")]),t._v(" "),a("li",[a("strong",[t._v("CKAN Data Portal")]),t._v(" supported by Frictionless Framework - providing an easy way to load Data Packages to and from your CKAN portal, using CKAN control")]),t._v(" "),a("li",[a("strong",[t._v("Frictionless CKAN Mapper")]),t._v(" - a small Python library working behind the scenes to convert datasets formats from CKAN to Frictionless Packages, and vice versa.")])]),t._v(" "),a("p",[t._v("Check out Edgar’s presentation to know more about these projects and to see them demoed:")]),t._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/ZvPTFYsIT9w",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),t._v(" "),a("p",[t._v("If you use any Frictionless Data - CKAN integration, please let us know! We would love to hear what you think.")]),t._v(" "),a("p",[t._v("Here are all the repos:")]),t._v(" "),a("ul",[a("li",[t._v("CKAN Datapackager Extension: "),a("a",{attrs:{href:"https://github.com/frictionlessdata/ckanext-datapackager",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/frictionlessdata/ckanext-datapackager"),a("OutboundLink")],1)]),t._v(" "),a("li",[t._v("CKAN Validation Extension: "),a("a",{attrs:{href:"https://github.com/frictionlessdata/ckanext-validation",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/frictionlessdata/ckanext-validation"),a("OutboundLink")],1)]),t._v(" "),a("li",[t._v("CKAN Data Portal (part of Frictionless Framework): "),a("a",{attrs:{href:"https://github.com/frictionlessdata/framework",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/frictionlessdata/framework"),a("OutboundLink")],1)]),t._v(" "),a("li",[t._v("Frictionless/CKAN Mapper: "),a("a",{attrs:{href:"https://github.com/frictionlessdata/frictionless-ckan-mapper",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/frictionlessdata/frictionless-ckan-mapper"),a("OutboundLink")],1)])]),t._v(" "),a("h1",{attrs:{id:"join-us-next-month"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[t._v("#")]),t._v(" Join us next month!")]),t._v(" "),a("p",[t._v("Next community call is on December 22nd, we don’t have any presentation scheduled yet, so if you have a cool project that you would like to show to the community, just let us know! You can just fill out "),a("a",{attrs:{href:"https://forms.gle/AWpbxyiGESNSUFK2A",target:"_blank",rel:"noopener noreferrer"}},[t._v("this form"),a("OutboundLink")],1),t._v(", or come and tell us on our community chat on "),a("a",{attrs:{href:"https://join.slack.com/t/frictionlessdata/shared_invite/zt-17kpbffnm-tRfDW_wJgOw8tJVLvZTrBg",target:"_blank",rel:"noopener noreferrer"}},[t._v("Slack"),a("OutboundLink")],1),t._v(" (also via "),a("a",{attrs:{href:"https://matrix.to/#/#frictionlessdata:matrix.okfn.org",target:"_blank",rel:"noopener noreferrer"}},[t._v("Matrix"),a("OutboundLink")],1),t._v("). See you there!")]),t._v(" "),a("p",[t._v("Also, you can sign up for the call already "),a("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[t._v("here"),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("p",[t._v("Do you want to share something with the community? Let us know when you sign up.")]),t._v(" "),a("h1",{attrs:{id:"call-recording"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[t._v("#")]),t._v(" Call Recording")]),t._v(" "),a("p",[t._v("On a final note, here is the recording of the full call:")]),t._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/aBSTRfoQhIU",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}})])}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[168],{705:function(t,e,a){"use strict";a.r(e);var r=a(29),o=Object(r.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("p",[t._v("On our last community call on December 1"),a("sup",[t._v("st")]),t._v(", we heard about the new Frictionless Data - CKAN integration from senior developer Edgar Zanella.")]),t._v(" "),a("p",[t._v("Being a much awaited and longterm requested integration from the community, there are several projects aiming at integrating Frictionless Data with CKAN:")]),t._v(" "),a("ol",[a("li",[a("strong",[t._v("Datapackager CKAN Extension")]),t._v(" - allowing the import of Data Packages directly to CKAN, and the export of any dataset in your portal as a Data Package")]),t._v(" "),a("li",[a("strong",[t._v("CKAN Validation Extension")]),t._v(" - providing all the Frictionless Framework validation functionalities to your CKAN portal")]),t._v(" "),a("li",[a("strong",[t._v("CKAN Data Portal")]),t._v(" supported by Frictionless Framework - providing an easy way to load Data Packages to and from your CKAN portal, using CKAN control")]),t._v(" "),a("li",[a("strong",[t._v("Frictionless CKAN Mapper")]),t._v(" - a small Python library working behind the scenes to convert datasets formats from CKAN to Frictionless Packages, and vice versa.")])]),t._v(" "),a("p",[t._v("Check out Edgar’s presentation to know more about these projects and to see them demoed:")]),t._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/ZvPTFYsIT9w",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),t._v(" "),a("p",[t._v("If you use any Frictionless Data - CKAN integration, please let us know! We would love to hear what you think.")]),t._v(" "),a("p",[t._v("Here are all the repos:")]),t._v(" "),a("ul",[a("li",[t._v("CKAN Datapackager Extension: "),a("a",{attrs:{href:"https://github.com/frictionlessdata/ckanext-datapackager",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/frictionlessdata/ckanext-datapackager"),a("OutboundLink")],1)]),t._v(" "),a("li",[t._v("CKAN Validation Extension: "),a("a",{attrs:{href:"https://github.com/frictionlessdata/ckanext-validation",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/frictionlessdata/ckanext-validation"),a("OutboundLink")],1)]),t._v(" "),a("li",[t._v("CKAN Data Portal (part of Frictionless Framework): "),a("a",{attrs:{href:"https://github.com/frictionlessdata/framework",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/frictionlessdata/framework"),a("OutboundLink")],1)]),t._v(" "),a("li",[t._v("Frictionless/CKAN Mapper: "),a("a",{attrs:{href:"https://github.com/frictionlessdata/frictionless-ckan-mapper",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/frictionlessdata/frictionless-ckan-mapper"),a("OutboundLink")],1)])]),t._v(" "),a("h1",{attrs:{id:"join-us-next-month"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[t._v("#")]),t._v(" Join us next month!")]),t._v(" "),a("p",[t._v("Next community call is on December 22nd, we don’t have any presentation scheduled yet, so if you have a cool project that you would like to show to the community, just let us know! You can just fill out "),a("a",{attrs:{href:"https://forms.gle/AWpbxyiGESNSUFK2A",target:"_blank",rel:"noopener noreferrer"}},[t._v("this form"),a("OutboundLink")],1),t._v(", or come and tell us on our community chat on "),a("a",{attrs:{href:"https://join.slack.com/t/frictionlessdata/shared_invite/zt-17kpbffnm-tRfDW_wJgOw8tJVLvZTrBg",target:"_blank",rel:"noopener noreferrer"}},[t._v("Slack"),a("OutboundLink")],1),t._v(" (also via "),a("a",{attrs:{href:"https://matrix.to/#/#frictionlessdata:matrix.okfn.org",target:"_blank",rel:"noopener noreferrer"}},[t._v("Matrix"),a("OutboundLink")],1),t._v("). See you there!")]),t._v(" "),a("p",[t._v("Also, you can sign up for the call already "),a("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[t._v("here"),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("p",[t._v("Do you want to share something with the community? Let us know when you sign up.")]),t._v(" "),a("h1",{attrs:{id:"call-recording"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[t._v("#")]),t._v(" Call Recording")]),t._v(" "),a("p",[t._v("On a final note, here is the recording of the full call:")]),t._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/aBSTRfoQhIU",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}})])}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/169.4cd6dd92.js b/assets/js/169.75839ea7.js similarity index 99% rename from assets/js/169.4cd6dd92.js rename to assets/js/169.75839ea7.js index 361852afa..bbe28ba66 100644 --- a/assets/js/169.4cd6dd92.js +++ b/assets/js/169.75839ea7.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[169],{707:function(e,t,a){"use strict";a.r(t);var r=a(29),o=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[e._v("On December 22"),a("sup",[e._v("nd")]),e._v(", for our last community call of the year, we had a nice discussion with Oleg Lavrovsky, an old friend of Open Knowledge Foundation, board member of the Swiss chapter, and valued member of the Frictionless Data community, about Data Package as a Service.")]),e._v(" "),a("p",[e._v("Oleg together with Thorben Westerhuys (remember his "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/03/29/february-virtual-hangout/#a-recap-from-our-march-community-call",target:"_blank",rel:"noopener noreferrer"}},[e._v("spatiotemporal covid 19 vaccination tracker he presented in March 2021"),a("OutboundLink")],1),e._v("?) already made a first attempt at this in 2019, as you can see in this "),a("a",{attrs:{href:"https://github.com/datalets/daats",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub repo here"),a("OutboundLink")],1),e._v(". The repository works as a template to create a quick API around your Frictionless Data Package. This solution is based on the "),a("a",{attrs:{href:"http://falconframework.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Falcon micro framework"),a("OutboundLink")],1),e._v(" and the "),a("a",{attrs:{href:"https://github.com/rgieseke/pandas-datapackage-reader",target:"_blank",rel:"noopener noreferrer"}},[e._v("Pandas Data Package Reader"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("More recently Edgar Zanella from the Frictionless Data core team also worked on an "),a("a",{attrs:{href:"https://github.com/aivuk/datapackage-api",target:"_blank",rel:"noopener noreferrer"}},[e._v("experimental solution"),a("OutboundLink")],1),e._v(", converting a Data Package to SQLite database and using "),a("a",{attrs:{href:"https://datasette.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Datasette"),a("OutboundLink")],1),e._v(" to have a "),a("a",{attrs:{href:"https://github.com/aivuk/datapackage-api/",target:"_blank",rel:"noopener noreferrer"}},[e._v("JSON API"),a("OutboundLink")],1),e._v(" over the data. The advantage of this solution is that the way of querying the data is going to be familiar for those that knows "),a("a",{attrs:{href:"https://docs.datasette.io/en/stable/sql_queries.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("SQL"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("Then in November 2022, during the GLAMhack 2022 in Mendrisio, an API for Frictionless Data Packages was needed again to be able to sort data and view it on a map. The end result was a "),a("a",{attrs:{href:"https://hack.glam.opendata.ch/project/177",target:"_blank",rel:"noopener noreferrer"}},[e._v("Living Herbarium app"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("So Oleg decided to pitch the idea of Frictionless Data Packages as services, as a challenge at the "),a("a",{attrs:{href:"https://hacknight.dinacon.ch/project/60",target:"_blank",rel:"noopener noreferrer"}},[e._v("DINAcon hacknights"),a("OutboundLink")],1),e._v(" in Bern. The challenge was not picked by anyone at the hackathon itself, but it sparked a conversation "),a("a",{attrs:{href:"https://frictionlessdata.slack.com/archives/C0369JLDJ1Z/p1668597797541189",target:"_blank",rel:"noopener noreferrer"}},[e._v("in our community chat"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("If you are also interested in joining the conversation, just get on the thread in the community chat. If you need a bit of context, you can of course rewatch Oleg’s presentation:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/n_neCrY02jg",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:""}}),e._v(" "),a("p",[e._v("It was also noted during the call that 2 other excellent ways to get a quick API for Frictionless Data Packages are:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("The "),a("a",{attrs:{href:"https://githubnext.com/projects/flat-data",target:"_blank",rel:"noopener noreferrer"}},[e._v("Flat Data project"),a("OutboundLink")],1),e._v(", developed on top of an idea by Simon Willison, allows (among other things) to have a quick API for your Data Package.")])]),e._v(" "),a("li",[a("p",[e._v("CKAN, since CKAN provides APIs. For example via "),a("a",{attrs:{href:"https://github.com/datalets/ckan-embed",target:"_blank",rel:"noopener noreferrer"}},[e._v("CKAN-embed"),a("OutboundLink")],1),e._v(", a widget for embedding live data searches from CKAN data portals into external websites.")])])]),e._v(" "),a("h1",{attrs:{id:"join-us-next-month"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[e._v("#")]),e._v(" Join us next month!")]),e._v(" "),a("p",[e._v("Next community call is on January 26"),a("sup",[e._v("th")]),e._v(" and we are going to hear about Frictionless Data and DCAT from Matteo Fortini.")]),e._v(" "),a("p",[e._v("You can sign up for the call already "),a("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(". Do you want to share something with the community? Let us know when you sign up.")]),e._v(" "),a("p",[e._v("And if you have a cool project that you would like to show to the community, please let us know! You can just fill out "),a("a",{attrs:{href:"https://forms.gle/AWpbxyiGESNSUFK2A",target:"_blank",rel:"noopener noreferrer"}},[e._v("this form"),a("OutboundLink")],1),e._v(", or come and tell us on our community chat on "),a("a",{attrs:{href:"https://join.slack.com/t/frictionlessdata/shared_invite/zt-17kpbffnm-tRfDW_wJgOw8tJVLvZTrBg",target:"_blank",rel:"noopener noreferrer"}},[e._v("Slack"),a("OutboundLink")],1),e._v(" (also via "),a("a",{attrs:{href:"https://matrix.to/#/#frictionlessdata:matrix.okfn.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("Matrix"),a("OutboundLink")],1),e._v("). See you there!")]),e._v(" "),a("h1",{attrs:{id:"call-recording"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call Recording")]),e._v(" "),a("p",[e._v("On a final note, here is the recording of the full call:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/hmr18OhY578",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:""}})])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[169],{706:function(e,t,a){"use strict";a.r(t);var r=a(29),o=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[e._v("On December 22"),a("sup",[e._v("nd")]),e._v(", for our last community call of the year, we had a nice discussion with Oleg Lavrovsky, an old friend of Open Knowledge Foundation, board member of the Swiss chapter, and valued member of the Frictionless Data community, about Data Package as a Service.")]),e._v(" "),a("p",[e._v("Oleg together with Thorben Westerhuys (remember his "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/03/29/february-virtual-hangout/#a-recap-from-our-march-community-call",target:"_blank",rel:"noopener noreferrer"}},[e._v("spatiotemporal covid 19 vaccination tracker he presented in March 2021"),a("OutboundLink")],1),e._v("?) already made a first attempt at this in 2019, as you can see in this "),a("a",{attrs:{href:"https://github.com/datalets/daats",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub repo here"),a("OutboundLink")],1),e._v(". The repository works as a template to create a quick API around your Frictionless Data Package. This solution is based on the "),a("a",{attrs:{href:"http://falconframework.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Falcon micro framework"),a("OutboundLink")],1),e._v(" and the "),a("a",{attrs:{href:"https://github.com/rgieseke/pandas-datapackage-reader",target:"_blank",rel:"noopener noreferrer"}},[e._v("Pandas Data Package Reader"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("More recently Edgar Zanella from the Frictionless Data core team also worked on an "),a("a",{attrs:{href:"https://github.com/aivuk/datapackage-api",target:"_blank",rel:"noopener noreferrer"}},[e._v("experimental solution"),a("OutboundLink")],1),e._v(", converting a Data Package to SQLite database and using "),a("a",{attrs:{href:"https://datasette.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Datasette"),a("OutboundLink")],1),e._v(" to have a "),a("a",{attrs:{href:"https://github.com/aivuk/datapackage-api/",target:"_blank",rel:"noopener noreferrer"}},[e._v("JSON API"),a("OutboundLink")],1),e._v(" over the data. The advantage of this solution is that the way of querying the data is going to be familiar for those that knows "),a("a",{attrs:{href:"https://docs.datasette.io/en/stable/sql_queries.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("SQL"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("Then in November 2022, during the GLAMhack 2022 in Mendrisio, an API for Frictionless Data Packages was needed again to be able to sort data and view it on a map. The end result was a "),a("a",{attrs:{href:"https://hack.glam.opendata.ch/project/177",target:"_blank",rel:"noopener noreferrer"}},[e._v("Living Herbarium app"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("So Oleg decided to pitch the idea of Frictionless Data Packages as services, as a challenge at the "),a("a",{attrs:{href:"https://hacknight.dinacon.ch/project/60",target:"_blank",rel:"noopener noreferrer"}},[e._v("DINAcon hacknights"),a("OutboundLink")],1),e._v(" in Bern. The challenge was not picked by anyone at the hackathon itself, but it sparked a conversation "),a("a",{attrs:{href:"https://frictionlessdata.slack.com/archives/C0369JLDJ1Z/p1668597797541189",target:"_blank",rel:"noopener noreferrer"}},[e._v("in our community chat"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("If you are also interested in joining the conversation, just get on the thread in the community chat. If you need a bit of context, you can of course rewatch Oleg’s presentation:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/n_neCrY02jg",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:""}}),e._v(" "),a("p",[e._v("It was also noted during the call that 2 other excellent ways to get a quick API for Frictionless Data Packages are:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("The "),a("a",{attrs:{href:"https://githubnext.com/projects/flat-data",target:"_blank",rel:"noopener noreferrer"}},[e._v("Flat Data project"),a("OutboundLink")],1),e._v(", developed on top of an idea by Simon Willison, allows (among other things) to have a quick API for your Data Package.")])]),e._v(" "),a("li",[a("p",[e._v("CKAN, since CKAN provides APIs. For example via "),a("a",{attrs:{href:"https://github.com/datalets/ckan-embed",target:"_blank",rel:"noopener noreferrer"}},[e._v("CKAN-embed"),a("OutboundLink")],1),e._v(", a widget for embedding live data searches from CKAN data portals into external websites.")])])]),e._v(" "),a("h1",{attrs:{id:"join-us-next-month"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[e._v("#")]),e._v(" Join us next month!")]),e._v(" "),a("p",[e._v("Next community call is on January 26"),a("sup",[e._v("th")]),e._v(" and we are going to hear about Frictionless Data and DCAT from Matteo Fortini.")]),e._v(" "),a("p",[e._v("You can sign up for the call already "),a("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(". Do you want to share something with the community? Let us know when you sign up.")]),e._v(" "),a("p",[e._v("And if you have a cool project that you would like to show to the community, please let us know! You can just fill out "),a("a",{attrs:{href:"https://forms.gle/AWpbxyiGESNSUFK2A",target:"_blank",rel:"noopener noreferrer"}},[e._v("this form"),a("OutboundLink")],1),e._v(", or come and tell us on our community chat on "),a("a",{attrs:{href:"https://join.slack.com/t/frictionlessdata/shared_invite/zt-17kpbffnm-tRfDW_wJgOw8tJVLvZTrBg",target:"_blank",rel:"noopener noreferrer"}},[e._v("Slack"),a("OutboundLink")],1),e._v(" (also via "),a("a",{attrs:{href:"https://matrix.to/#/#frictionlessdata:matrix.okfn.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("Matrix"),a("OutboundLink")],1),e._v("). See you there!")]),e._v(" "),a("h1",{attrs:{id:"call-recording"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call Recording")]),e._v(" "),a("p",[e._v("On a final note, here is the recording of the full call:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/hmr18OhY578",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:""}})])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/170.01e405fc.js b/assets/js/170.e11e2e40.js similarity index 98% rename from assets/js/170.01e405fc.js rename to assets/js/170.e11e2e40.js index df92ef5ea..00848a0d7 100644 --- a/assets/js/170.01e405fc.js +++ b/assets/js/170.e11e2e40.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[170],{708:function(e,t,a){"use strict";a.r(t);var o=a(29),r=Object(o.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[e._v("We are very excited to announce that we are going back to FOSDEM this year! Frictionless Data Technical Leader at Open Knowledge Foundation, Evgeny Karev, will give an overview of the main functionalities of the upcoming and much awaited Frictionless Application.")]),e._v(" "),a("p",[e._v("The talk will be featured in the Open Research Tools and Technology devroom, alongside other super interesting talks. Have a look at the schedule "),a("a",{attrs:{href:"https://fosdem.org/2023/schedule/track/open_research_tools_and_technology/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(" to know more. This devroom provides a place and time to discuss the issues related to the creation and usage of open research technologies, with the ambition to foster discussions between designers, developers and users, bridging multiple knowledge-based communities together, and with the broader FLOSS community.")]),e._v(" "),a("p",[e._v("While FOSDEM is going back to Brussels for a physical event this year, the decision was made to keep part of the programme online to allow a broader audience to join. The Frictionless Application overview will be online as well, so you can follow it and participate in the discussion from wherever you are, even if you are not in Brussels.")]),e._v(" "),a("p",[e._v("This will be our 4th year at FOSDEM, and we are very proud to have been part of the Open Research devroom since its creation 4 years ago. To celebrate this, let’s look back at some of the great moments we shared:")]),e._v(" "),a("p",[e._v("In 2020 Lilly Winfree presented on-site “Frictionless Data for Reproducible Research” (you can watch the video recording "),a("a",{attrs:{href:"https://www.youtube.com/watch?v=lFgZTfCZu5U&t=317s",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v("), a talk in which she discussed the technical ideas behind Frictionless Data for research, and showcased collaborative use cases, particularly the "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2020/02/10/frictionless-data-pipelines-for-open-ocean/",target:"_blank",rel:"noopener noreferrer"}},[e._v("BCO-DMO pilot"),a("OutboundLink")],1),e._v(", which was quite new at the time. Lilly showed how implementing Frictionless Data tooling into their data ingest pipelines allowed BCO-DMO to integrate disparate data while maintaining quality metadata in an easy to use interface. You can find all the info about this talk into the FOSDEM archive "),a("a",{attrs:{href:"https://archive.fosdem.org/2020/schedule/event/open_research_frictionless_data/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("In 2021, for the first online FOSDEM due to Covid 19, Carles Pina i Estany presented "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/01/18/schema-collaboration/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Schema-collaboration"),a("OutboundLink")],1),e._v(", an open tool for reproducible research that helps data managers and researchers to collaborate on documenting datasets, built using the Frictionless Data specifications and software. Schema-collaboration was developed during the 2020 Tool Fund. For the FOSDEM presentation Carles gave an overview of the tool and did a demo as well."),a("br"),e._v("\nFind all the info (including a video recording of the presentation) on the FOSDEM archive "),a("a",{attrs:{href:"https://archive.fosdem.org/2021/schedule/event/open_research_schema_collaboration/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("In 2022 our Technical Lead, Evgeny Karev, presented the newly released (at the time) "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/06/22/livemark/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Livemark"),a("OutboundLink")],1),e._v(", a tool to publish data articles with interactive tables, charts, and other elements very easily, without leaving a text editor."),a("br"),e._v("\nHave a look at the presentation and find all the information about it on the FOSDEM archive "),a("a",{attrs:{href:"https://archive.fosdem.org/2022/schedule/event/open_research_livemark/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("And what about this year? We wanted to release the Frictionless Application for FOSDEM, but we had to push that back a little bit. But as we said above, Evgeny is still giving "),a("a",{attrs:{href:"https://fosdem.org/2023/schedule/room/dresearch/",target:"_blank",rel:"noopener noreferrer"}},[e._v("an overview of the Application"),a("OutboundLink")],1),e._v(" and some of its main features, which you should definitely not miss! See you online on Saturday, and happy FOSDEM weekend to you all!")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[170],{707:function(e,t,a){"use strict";a.r(t);var o=a(29),r=Object(o.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[e._v("We are very excited to announce that we are going back to FOSDEM this year! Frictionless Data Technical Leader at Open Knowledge Foundation, Evgeny Karev, will give an overview of the main functionalities of the upcoming and much awaited Frictionless Application.")]),e._v(" "),a("p",[e._v("The talk will be featured in the Open Research Tools and Technology devroom, alongside other super interesting talks. Have a look at the schedule "),a("a",{attrs:{href:"https://fosdem.org/2023/schedule/track/open_research_tools_and_technology/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(" to know more. This devroom provides a place and time to discuss the issues related to the creation and usage of open research technologies, with the ambition to foster discussions between designers, developers and users, bridging multiple knowledge-based communities together, and with the broader FLOSS community.")]),e._v(" "),a("p",[e._v("While FOSDEM is going back to Brussels for a physical event this year, the decision was made to keep part of the programme online to allow a broader audience to join. The Frictionless Application overview will be online as well, so you can follow it and participate in the discussion from wherever you are, even if you are not in Brussels.")]),e._v(" "),a("p",[e._v("This will be our 4th year at FOSDEM, and we are very proud to have been part of the Open Research devroom since its creation 4 years ago. To celebrate this, let’s look back at some of the great moments we shared:")]),e._v(" "),a("p",[e._v("In 2020 Lilly Winfree presented on-site “Frictionless Data for Reproducible Research” (you can watch the video recording "),a("a",{attrs:{href:"https://www.youtube.com/watch?v=lFgZTfCZu5U&t=317s",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v("), a talk in which she discussed the technical ideas behind Frictionless Data for research, and showcased collaborative use cases, particularly the "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2020/02/10/frictionless-data-pipelines-for-open-ocean/",target:"_blank",rel:"noopener noreferrer"}},[e._v("BCO-DMO pilot"),a("OutboundLink")],1),e._v(", which was quite new at the time. Lilly showed how implementing Frictionless Data tooling into their data ingest pipelines allowed BCO-DMO to integrate disparate data while maintaining quality metadata in an easy to use interface. You can find all the info about this talk into the FOSDEM archive "),a("a",{attrs:{href:"https://archive.fosdem.org/2020/schedule/event/open_research_frictionless_data/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("In 2021, for the first online FOSDEM due to Covid 19, Carles Pina i Estany presented "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/01/18/schema-collaboration/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Schema-collaboration"),a("OutboundLink")],1),e._v(", an open tool for reproducible research that helps data managers and researchers to collaborate on documenting datasets, built using the Frictionless Data specifications and software. Schema-collaboration was developed during the 2020 Tool Fund. For the FOSDEM presentation Carles gave an overview of the tool and did a demo as well."),a("br"),e._v("\nFind all the info (including a video recording of the presentation) on the FOSDEM archive "),a("a",{attrs:{href:"https://archive.fosdem.org/2021/schedule/event/open_research_schema_collaboration/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("In 2022 our Technical Lead, Evgeny Karev, presented the newly released (at the time) "),a("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/06/22/livemark/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Livemark"),a("OutboundLink")],1),e._v(", a tool to publish data articles with interactive tables, charts, and other elements very easily, without leaving a text editor."),a("br"),e._v("\nHave a look at the presentation and find all the information about it on the FOSDEM archive "),a("a",{attrs:{href:"https://archive.fosdem.org/2022/schedule/event/open_research_livemark/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("And what about this year? We wanted to release the Frictionless Application for FOSDEM, but we had to push that back a little bit. But as we said above, Evgeny is still giving "),a("a",{attrs:{href:"https://fosdem.org/2023/schedule/room/dresearch/",target:"_blank",rel:"noopener noreferrer"}},[e._v("an overview of the Application"),a("OutboundLink")],1),e._v(" and some of its main features, which you should definitely not miss! See you online on Saturday, and happy FOSDEM weekend to you all!")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/171.462451b4.js b/assets/js/171.4e18d9c3.js similarity index 99% rename from assets/js/171.462451b4.js rename to assets/js/171.4e18d9c3.js index 46698379c..954d37337 100644 --- a/assets/js/171.462451b4.js +++ b/assets/js/171.4e18d9c3.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[171],{709:function(t,e,a){"use strict";a.r(e);var o=a(29),r=Object(o.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("p",[t._v("At our last community call on January 26"),a("sup",[t._v("th")]),t._v(", we had Matteo Fortini from the Italian National Department of Digital Transformation, who led a discussion about DCAT and Frictionless Data.")]),t._v(" "),a("p",[t._v("Open data is key to ensure transparency and accountability, understand the world, and have an economy of data. The open data publishing chain in Europe starts with distribution of datasets that go into a national catalogue, which is then harvested by an EU catalogue - all this enabled by metadata.")]),t._v(" "),a("p",[t._v("In practice, Matteo and his colleagues would publish the data (e.g. on the Next Generation EU funds, or on the National Population Registry) as Frictionless Data with DCAT metadata, a format that is mandatory to get into the EU catalogue.")]),t._v(" "),a("p",[t._v("The data is gathered on GitHub (a CKAN instance is sadly not available yet) through scripts that are run everyday. The data is published in both CSV and JSON format, with foreign keys to other tabular data (e.g. geographical data for municipalities) and Frictionless metadata to have a standard way to document all the different attributes of the data, to enforce constraints, and ensure data quality in general. On top of that there is the Italian DCAT_AP, and the mandatory attributes for metadata.")]),t._v(" "),a("p",[t._v("While DCAT is very useful to understand the content, the themes, and the licences, Frictionless Data goes down to attribute descriptions, data types and constraints. So what Matteo would like to have in the future is one type of metadata that would cover both the data description and attributes, and the catalogue information.")]),t._v(" "),a("p",[t._v("Some efforts were already made in the past by community members Augusto Herrman and Ayrton Bourne to map data packages to DCAT (as documented in this "),a("a",{attrs:{href:"https://github.com/frictionlessdata/frictionlessdata.io/issues/551",target:"_blank",rel:"noopener noreferrer"}},[t._v("issue"),a("OutboundLink")],1),t._v("). Now Matteo and his colleagues are actively looking for other people who would be interested in creating a working group about this, to try to get to some kind of shared standard.")]),t._v(" "),a("p",[t._v("Other community members present at the call shared their own experience with Frictionless and DCAT:.")]),t._v(" "),a("p",[t._v("The German State of Schleswig - Holstein shared "),a("a",{attrs:{href:"https://opendata.schleswig-holstein.de/dataset/marktplatz-autos-2023",target:"_blank",rel:"noopener noreferrer"}},[t._v("a very interesting example"),a("OutboundLink")],1),t._v(" from their portal. As they did not find a good way to attach the Frictionless Specification to the DCAT Distribution, they created a separate distribution for the Frictionless Tabular Data Resource. Switzerland took the same approach, linking the Frictionless Specification as a separate distribution, as you can see "),a("a",{attrs:{href:"https://opendata.swiss/de/dataset/vollzugsresultate-der-co2-emissionsvorschriften-fur-lieferwagen-und-leichte-sattelschlepper",target:"_blank",rel:"noopener noreferrer"}},[t._v("in this example"),a("OutboundLink")],1),t._v(". They are unsure about this approach though, as it seems to be a misuse of the DCAT Class.")]),t._v(" "),a("p",[t._v("To make Frictionless Data more interoperable with other semantic web standards, Dan Feder pointed out the idea to create RDF or JSON-LD Specification, something that had already been discussed in the past, as documented in "),a("a",{attrs:{href:"https://github.com/frictionlessdata/specs/issues/218",target:"_blank",rel:"noopener noreferrer"}},[t._v("this issue"),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("p",[t._v("Do you have anything to add to this? Are you interested in joining the open discussion? Let us know in our community chat on "),a("a",{attrs:{href:"https://join.slack.com/t/frictionlessdata/shared_invite/zt-17kpbffnm-tRfDW_wJgOw8tJVLvZTrBg",target:"_blank",rel:"noopener noreferrer"}},[t._v("Slack"),a("OutboundLink")],1),t._v(" or "),a("a",{attrs:{href:"https://matrix.to/#/#frictionlessdata:matrix.okfn.org",target:"_blank",rel:"noopener noreferrer"}},[t._v("Matrix"),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("p",[t._v("If you want to know more about Matteo’s presentation, here’s the recording:")]),t._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/sHHRT5ptqbg",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:""}}),t._v(" "),a("h1",{attrs:{id:"join-us-next-month"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[t._v("#")]),t._v(" Join us next month!")]),t._v(" "),a("p",[t._v("Next community call is on February 23"),a("sup",[t._v("rd")]),t._v(" and we are going to hear about the database curation software for the World Glacier Monitoring Service (WGMS) from Ethan Welty.")]),t._v(" "),a("p",[t._v("You can sign up for the call already "),a("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[t._v("here"),a("OutboundLink")],1),t._v(". Do you want to share something with the community? Let us know when you sign up.")]),t._v(" "),a("p",[t._v("And if you have a cool project that you would like to show to the community, please let us know! You can just fill out "),a("a",{attrs:{href:"https://forms.gle/AWpbxyiGESNSUFK2A",target:"_blank",rel:"noopener noreferrer"}},[t._v("this form"),a("OutboundLink")],1),t._v(", or come and tell us on our community chat.")]),t._v(" "),a("h1",{attrs:{id:"call-recording"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[t._v("#")]),t._v(" Call Recording")]),t._v(" "),a("p",[t._v("On a final note, here is the recording of the full call:")]),t._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/DTykNylDdsA",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:""}})])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[171],{708:function(t,e,a){"use strict";a.r(e);var o=a(29),r=Object(o.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("p",[t._v("At our last community call on January 26"),a("sup",[t._v("th")]),t._v(", we had Matteo Fortini from the Italian National Department of Digital Transformation, who led a discussion about DCAT and Frictionless Data.")]),t._v(" "),a("p",[t._v("Open data is key to ensure transparency and accountability, understand the world, and have an economy of data. The open data publishing chain in Europe starts with distribution of datasets that go into a national catalogue, which is then harvested by an EU catalogue - all this enabled by metadata.")]),t._v(" "),a("p",[t._v("In practice, Matteo and his colleagues would publish the data (e.g. on the Next Generation EU funds, or on the National Population Registry) as Frictionless Data with DCAT metadata, a format that is mandatory to get into the EU catalogue.")]),t._v(" "),a("p",[t._v("The data is gathered on GitHub (a CKAN instance is sadly not available yet) through scripts that are run everyday. The data is published in both CSV and JSON format, with foreign keys to other tabular data (e.g. geographical data for municipalities) and Frictionless metadata to have a standard way to document all the different attributes of the data, to enforce constraints, and ensure data quality in general. On top of that there is the Italian DCAT_AP, and the mandatory attributes for metadata.")]),t._v(" "),a("p",[t._v("While DCAT is very useful to understand the content, the themes, and the licences, Frictionless Data goes down to attribute descriptions, data types and constraints. So what Matteo would like to have in the future is one type of metadata that would cover both the data description and attributes, and the catalogue information.")]),t._v(" "),a("p",[t._v("Some efforts were already made in the past by community members Augusto Herrman and Ayrton Bourne to map data packages to DCAT (as documented in this "),a("a",{attrs:{href:"https://github.com/frictionlessdata/frictionlessdata.io/issues/551",target:"_blank",rel:"noopener noreferrer"}},[t._v("issue"),a("OutboundLink")],1),t._v("). Now Matteo and his colleagues are actively looking for other people who would be interested in creating a working group about this, to try to get to some kind of shared standard.")]),t._v(" "),a("p",[t._v("Other community members present at the call shared their own experience with Frictionless and DCAT:.")]),t._v(" "),a("p",[t._v("The German State of Schleswig - Holstein shared "),a("a",{attrs:{href:"https://opendata.schleswig-holstein.de/dataset/marktplatz-autos-2023",target:"_blank",rel:"noopener noreferrer"}},[t._v("a very interesting example"),a("OutboundLink")],1),t._v(" from their portal. As they did not find a good way to attach the Frictionless Specification to the DCAT Distribution, they created a separate distribution for the Frictionless Tabular Data Resource. Switzerland took the same approach, linking the Frictionless Specification as a separate distribution, as you can see "),a("a",{attrs:{href:"https://opendata.swiss/de/dataset/vollzugsresultate-der-co2-emissionsvorschriften-fur-lieferwagen-und-leichte-sattelschlepper",target:"_blank",rel:"noopener noreferrer"}},[t._v("in this example"),a("OutboundLink")],1),t._v(". They are unsure about this approach though, as it seems to be a misuse of the DCAT Class.")]),t._v(" "),a("p",[t._v("To make Frictionless Data more interoperable with other semantic web standards, Dan Feder pointed out the idea to create RDF or JSON-LD Specification, something that had already been discussed in the past, as documented in "),a("a",{attrs:{href:"https://github.com/frictionlessdata/specs/issues/218",target:"_blank",rel:"noopener noreferrer"}},[t._v("this issue"),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("p",[t._v("Do you have anything to add to this? Are you interested in joining the open discussion? Let us know in our community chat on "),a("a",{attrs:{href:"https://join.slack.com/t/frictionlessdata/shared_invite/zt-17kpbffnm-tRfDW_wJgOw8tJVLvZTrBg",target:"_blank",rel:"noopener noreferrer"}},[t._v("Slack"),a("OutboundLink")],1),t._v(" or "),a("a",{attrs:{href:"https://matrix.to/#/#frictionlessdata:matrix.okfn.org",target:"_blank",rel:"noopener noreferrer"}},[t._v("Matrix"),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("p",[t._v("If you want to know more about Matteo’s presentation, here’s the recording:")]),t._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/sHHRT5ptqbg",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:""}}),t._v(" "),a("h1",{attrs:{id:"join-us-next-month"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[t._v("#")]),t._v(" Join us next month!")]),t._v(" "),a("p",[t._v("Next community call is on February 23"),a("sup",[t._v("rd")]),t._v(" and we are going to hear about the database curation software for the World Glacier Monitoring Service (WGMS) from Ethan Welty.")]),t._v(" "),a("p",[t._v("You can sign up for the call already "),a("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[t._v("here"),a("OutboundLink")],1),t._v(". Do you want to share something with the community? Let us know when you sign up.")]),t._v(" "),a("p",[t._v("And if you have a cool project that you would like to show to the community, please let us know! You can just fill out "),a("a",{attrs:{href:"https://forms.gle/AWpbxyiGESNSUFK2A",target:"_blank",rel:"noopener noreferrer"}},[t._v("this form"),a("OutboundLink")],1),t._v(", or come and tell us on our community chat.")]),t._v(" "),a("h1",{attrs:{id:"call-recording"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[t._v("#")]),t._v(" Call Recording")]),t._v(" "),a("p",[t._v("On a final note, here is the recording of the full call:")]),t._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/DTykNylDdsA",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:""}})])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/172.5070cd58.js b/assets/js/172.58b01e7b.js similarity index 98% rename from assets/js/172.5070cd58.js rename to assets/js/172.58b01e7b.js index 6b633a3f3..39bc20580 100644 --- a/assets/js/172.5070cd58.js +++ b/assets/js/172.58b01e7b.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[172],{710:function(e,t,a){"use strict";a.r(t);var o=a(29),r=Object(o.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[e._v("At our last community call on February 28th, we heard about generating spreadsheet templates from Tabular Data Package metadata from Ethan Welty.")]),e._v(" "),a("p",[e._v("Ethan works for the "),a("a",{attrs:{href:"https://wgms.ch/",target:"_blank",rel:"noopener noreferrer"}},[e._v("World Glacier Monitoring Service (WGMS)"),a("OutboundLink")],1),e._v(", which maintains and curates a single longrunning dataset (with entries dating back to 1894!) combining both satellite measurements, and manual submissions of scientists from around the world who go out to glaciers and measure the mass changes on the ground.")]),e._v(" "),a("p",[e._v("One of their biggest challenges is that parts of the data are not machine-generated, but inserted by humans. It is therefore important to review the data submissions to try and catch any possible error. To do that, Ethan adopted the Frictionless Tabular Data Package approach, getting as much of the organisation logic and data management into a centralised metadata.")]),e._v(" "),a("p",[e._v("Plus, to help people doing their data entry, they have spreadsheet templates automatically generated. The file is built in markup language, and is generated from the validation pipeline (which works in a slightly different way than in Frictionless Data, as it scales to a much longer pipeline). The template generator, called "),a("em",[e._v("Tablecloth")]),e._v(", currently supports Excel - as it is what most people who work with the WGMS are comfortable using, and it is soon going to support Google Sheets too.")]),e._v(" "),a("p",[e._v("If you want to know more about "),a("em",[e._v("Tablecloth")]),e._v(" and are interested in having a look at the demo Ethan did on the call, go ahead and have a look at the recording of the presentation:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/79CrD5O96vk",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:""}}),e._v(" "),a("p",[e._v("You can also check out "),a("em",[e._v("Tablecloth")]),e._v(" on "),a("a",{attrs:{href:"https://github.com/ezwelty/tablecloth",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub"),a("OutboundLink")],1),e._v(" and "),a("a",{attrs:{href:"https://gitlab.com/wgms/",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitLab"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h1",{attrs:{id:"join-us-next-month"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[e._v("#")]),e._v(" Join us next month!")]),e._v(" "),a("p",[e._v("Next community call is on March 30"),a("sup",[e._v("th")]),e._v(" and guess what? We do not have any presentations scheduled yet! So this could be your moment to come and tell us about your project! If you are interested in doing so just fill out "),a("a",{attrs:{href:"https://forms.gle/AWpbxyiGESNSUFK2A",target:"_blank",rel:"noopener noreferrer"}},[e._v("this form"),a("OutboundLink")],1),e._v(", or come and tell us on our community chat.")]),e._v(" "),a("p",[e._v("You can sign up for the call already "),a("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(". Do you want to share something with the community? Let us know when you sign up.")]),e._v(" "),a("h1",{attrs:{id:"call-recording"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call Recording")]),e._v(" "),a("p",[e._v("On a final note, here is the recording of the full call:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/_k7NlWztGlc",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:""}})])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[172],{713:function(e,t,a){"use strict";a.r(t);var o=a(29),r=Object(o.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[e._v("At our last community call on February 28th, we heard about generating spreadsheet templates from Tabular Data Package metadata from Ethan Welty.")]),e._v(" "),a("p",[e._v("Ethan works for the "),a("a",{attrs:{href:"https://wgms.ch/",target:"_blank",rel:"noopener noreferrer"}},[e._v("World Glacier Monitoring Service (WGMS)"),a("OutboundLink")],1),e._v(", which maintains and curates a single longrunning dataset (with entries dating back to 1894!) combining both satellite measurements, and manual submissions of scientists from around the world who go out to glaciers and measure the mass changes on the ground.")]),e._v(" "),a("p",[e._v("One of their biggest challenges is that parts of the data are not machine-generated, but inserted by humans. It is therefore important to review the data submissions to try and catch any possible error. To do that, Ethan adopted the Frictionless Tabular Data Package approach, getting as much of the organisation logic and data management into a centralised metadata.")]),e._v(" "),a("p",[e._v("Plus, to help people doing their data entry, they have spreadsheet templates automatically generated. The file is built in markup language, and is generated from the validation pipeline (which works in a slightly different way than in Frictionless Data, as it scales to a much longer pipeline). The template generator, called "),a("em",[e._v("Tablecloth")]),e._v(", currently supports Excel - as it is what most people who work with the WGMS are comfortable using, and it is soon going to support Google Sheets too.")]),e._v(" "),a("p",[e._v("If you want to know more about "),a("em",[e._v("Tablecloth")]),e._v(" and are interested in having a look at the demo Ethan did on the call, go ahead and have a look at the recording of the presentation:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/79CrD5O96vk",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:""}}),e._v(" "),a("p",[e._v("You can also check out "),a("em",[e._v("Tablecloth")]),e._v(" on "),a("a",{attrs:{href:"https://github.com/ezwelty/tablecloth",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub"),a("OutboundLink")],1),e._v(" and "),a("a",{attrs:{href:"https://gitlab.com/wgms/",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitLab"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h1",{attrs:{id:"join-us-next-month"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[e._v("#")]),e._v(" Join us next month!")]),e._v(" "),a("p",[e._v("Next community call is on March 30"),a("sup",[e._v("th")]),e._v(" and guess what? We do not have any presentations scheduled yet! So this could be your moment to come and tell us about your project! If you are interested in doing so just fill out "),a("a",{attrs:{href:"https://forms.gle/AWpbxyiGESNSUFK2A",target:"_blank",rel:"noopener noreferrer"}},[e._v("this form"),a("OutboundLink")],1),e._v(", or come and tell us on our community chat.")]),e._v(" "),a("p",[e._v("You can sign up for the call already "),a("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(". Do you want to share something with the community? Let us know when you sign up.")]),e._v(" "),a("h1",{attrs:{id:"call-recording"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call Recording")]),e._v(" "),a("p",[e._v("On a final note, here is the recording of the full call:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/_k7NlWztGlc",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:""}})])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/173.b0954f8d.js b/assets/js/173.f03ca13d.js similarity index 98% rename from assets/js/173.b0954f8d.js rename to assets/js/173.f03ca13d.js index df03bd071..c27b6a0dd 100644 --- a/assets/js/173.b0954f8d.js +++ b/assets/js/173.f03ca13d.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[173],{711:function(e,t,a){"use strict";a.r(t);var o=a(29),r=Object(o.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[e._v("At our last community call on March 30"),a("sup",[e._v("th")]),e._v(", our very own Evgeny Karev - tech lead of the Frictionless Data project at "),a("a",{attrs:{href:"http://okfn.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Open Knowledge Foundation"),a("OutboundLink")],1),e._v(", presented the new Frictionless command line features.")]),e._v(" "),a("p",[e._v("The new commands have been developed as part of the effort of building recommended data workflows for different needs, and might be particularly useful for data wrangling and data exploration. Here they are:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("List")]),e._v(" function is a new command to quickly see lists of resources in a dataset.")]),e._v(" "),a("li",[a("strong",[e._v("Describe")]),e._v(", an old command actually, but that can be part of the exploration workflow as it infers Table Schemas for all tabular resources.")]),e._v(" "),a("li",[a("strong",[e._v("Extract")]),e._v(", also an old command, can be used to understand what kind of data is in the table, and get a preview of it.")]),e._v(" "),a("li",[a("strong",[e._v("Explore")]),e._v(", to use in combination with "),a("a",{attrs:{href:"https://www.visidata.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Visidata"),a("OutboundLink")],1),e._v(" to edit tables directly in the command line.")]),e._v(" "),a("li",[a("strong",[e._v("Query")]),e._v(" which will put a dataset into a SQLite database, with everything indexed, adding nice functionalities, like the possibility of saving queries as CSV files.")]),e._v(" "),a("li",[a("strong",[e._v("Script")]),e._v(" is a feature that allows dataset indexing and will create Pandas dataframes for you.")]),e._v(" "),a("li",[a("strong",[e._v("Convert")]),e._v(", a work-in-progress command that can be used to convert from one format to the other, something that was historically done with the Extract function in the Framework.")]),e._v(" "),a("li",[a("strong",[e._v("Publish")]),e._v(" is also a work-in-progress command, and you can use it to upload your dataset to a data portal (e.g. a CKAN instance) just providing an API key.")])]),e._v(" "),a("p",[e._v("To better understand how you can use all these new commands, have a look at Evgeny’s presentation and demo:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/yNYAGMcAGl4",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:""}}),e._v(" "),a("h1",{attrs:{id:"join-us-next-month"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[e._v("#")]),e._v(" Join us next month!")]),e._v(" "),a("p",[e._v("Next community call is on April 27"),a("sup",[e._v("th")]),e._v(". Keith Hughitt will share with us his ideas on how to improve support for non-tabular data, a proposed abstract data model, and a specification for describing the relationship between datasets.")]),e._v(" "),a("p",[e._v("Do you have something you would like to present to the community at one of the upcoming calls? Let us know via "),a("a",{attrs:{href:"https://forms.gle/AWpbxyiGESNSUFK2A",target:"_blank",rel:"noopener noreferrer"}},[e._v("this form"),a("OutboundLink")],1),e._v(", or come and tell us on our "),a("a",{attrs:{href:"https://join.slack.com/t/frictionlessdata/shared_invite/zt-17kpbffnm-tRfDW_wJgOw8tJVLvZTrBg",target:"_blank",rel:"noopener noreferrer"}},[e._v("community chat on Slack"),a("OutboundLink")],1),e._v("(also accessible via a "),a("a",{attrs:{href:"https://matrix.to/#/#frictionlessdata:matrix.okfn.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("Matrix bridge"),a("OutboundLink")],1),e._v(" if you prefer to use an open protocol) .")]),e._v(" "),a("p",[e._v("You can sign up for the call already "),a("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(". Do you want to share something with the community? Let us know when you sign up.")]),e._v(" "),a("h1",{attrs:{id:"call-recording"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call Recording")]),e._v(" "),a("p",[e._v("On a final note, here is the recording of the full call, including the short presentation and community discussion on the project governance:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/vgeXcDd5KEE",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:""}})])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[173],{709:function(e,t,a){"use strict";a.r(t);var o=a(29),r=Object(o.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[e._v("At our last community call on March 30"),a("sup",[e._v("th")]),e._v(", our very own Evgeny Karev - tech lead of the Frictionless Data project at "),a("a",{attrs:{href:"http://okfn.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Open Knowledge Foundation"),a("OutboundLink")],1),e._v(", presented the new Frictionless command line features.")]),e._v(" "),a("p",[e._v("The new commands have been developed as part of the effort of building recommended data workflows for different needs, and might be particularly useful for data wrangling and data exploration. Here they are:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("List")]),e._v(" function is a new command to quickly see lists of resources in a dataset.")]),e._v(" "),a("li",[a("strong",[e._v("Describe")]),e._v(", an old command actually, but that can be part of the exploration workflow as it infers Table Schemas for all tabular resources.")]),e._v(" "),a("li",[a("strong",[e._v("Extract")]),e._v(", also an old command, can be used to understand what kind of data is in the table, and get a preview of it.")]),e._v(" "),a("li",[a("strong",[e._v("Explore")]),e._v(", to use in combination with "),a("a",{attrs:{href:"https://www.visidata.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Visidata"),a("OutboundLink")],1),e._v(" to edit tables directly in the command line.")]),e._v(" "),a("li",[a("strong",[e._v("Query")]),e._v(" which will put a dataset into a SQLite database, with everything indexed, adding nice functionalities, like the possibility of saving queries as CSV files.")]),e._v(" "),a("li",[a("strong",[e._v("Script")]),e._v(" is a feature that allows dataset indexing and will create Pandas dataframes for you.")]),e._v(" "),a("li",[a("strong",[e._v("Convert")]),e._v(", a work-in-progress command that can be used to convert from one format to the other, something that was historically done with the Extract function in the Framework.")]),e._v(" "),a("li",[a("strong",[e._v("Publish")]),e._v(" is also a work-in-progress command, and you can use it to upload your dataset to a data portal (e.g. a CKAN instance) just providing an API key.")])]),e._v(" "),a("p",[e._v("To better understand how you can use all these new commands, have a look at Evgeny’s presentation and demo:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/yNYAGMcAGl4",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:""}}),e._v(" "),a("h1",{attrs:{id:"join-us-next-month"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[e._v("#")]),e._v(" Join us next month!")]),e._v(" "),a("p",[e._v("Next community call is on April 27"),a("sup",[e._v("th")]),e._v(". Keith Hughitt will share with us his ideas on how to improve support for non-tabular data, a proposed abstract data model, and a specification for describing the relationship between datasets.")]),e._v(" "),a("p",[e._v("Do you have something you would like to present to the community at one of the upcoming calls? Let us know via "),a("a",{attrs:{href:"https://forms.gle/AWpbxyiGESNSUFK2A",target:"_blank",rel:"noopener noreferrer"}},[e._v("this form"),a("OutboundLink")],1),e._v(", or come and tell us on our "),a("a",{attrs:{href:"https://join.slack.com/t/frictionlessdata/shared_invite/zt-17kpbffnm-tRfDW_wJgOw8tJVLvZTrBg",target:"_blank",rel:"noopener noreferrer"}},[e._v("community chat on Slack"),a("OutboundLink")],1),e._v("(also accessible via a "),a("a",{attrs:{href:"https://matrix.to/#/#frictionlessdata:matrix.okfn.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("Matrix bridge"),a("OutboundLink")],1),e._v(" if you prefer to use an open protocol) .")]),e._v(" "),a("p",[e._v("You can sign up for the call already "),a("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(". Do you want to share something with the community? Let us know when you sign up.")]),e._v(" "),a("h1",{attrs:{id:"call-recording"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call Recording")]),e._v(" "),a("p",[e._v("On a final note, here is the recording of the full call, including the short presentation and community discussion on the project governance:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/vgeXcDd5KEE",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:""}})])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/174.8372bc5f.js b/assets/js/174.f9d7ef54.js similarity index 98% rename from assets/js/174.8372bc5f.js rename to assets/js/174.f9d7ef54.js index b05edb591..708b827eb 100644 --- a/assets/js/174.8372bc5f.js +++ b/assets/js/174.f9d7ef54.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[174],{713:function(e,t,o){"use strict";o.r(t);var a=o(29),n=Object(a.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("p",[e._v("At our last community call on April 27"),o("sup",[e._v("th")]),e._v(" Keith Hughitt presented his ideas on how we can improve support for non-tabular data, and on how we could build a specification for describing the relationship between datasets. It took me some time to write this recap blog, because some of the reflections that Keith shared with us resonated very much with some of the thinking we have been doing at Open Knowledge Foundation around governance. I had explained during the "),o("a",{attrs:{href:"https://frictionlessdata.io/blog/2023/04/06/march-community-call/",target:"_blank",rel:"noopener noreferrer"}},[e._v("March community call"),o("OutboundLink")],1),e._v(" that the governance of the specs has been recently unblocked, and we are starting to think about how to get to v2. It was actually Keith who urged me to do that presentation to clarify the project governance (and I am so glad he did!).")]),e._v(" "),o("p",[e._v("Keith’s main goals are pretty clear: 1. He wants datasets to be soft contained and well defined enough to be combinable with minimal effort. Datasets should function like lego blocks, which is the way Frictionless Data works too. 2. He wants transparency on how the data is processed and communicated, as this is key to reproducibility.")]),e._v(" "),o("p",[e._v("At the moment the Frictionless Data specs have a strong focus on tabular data, and Keith would like to extend that same kind of support to other types of data as well. Having some kind of common spec would be very useful for all those who work with more than one type of data, and he feels something can be done to make that work easier.")]),e._v(" "),o("h3",{attrs:{id:"so-what-does-keith-have-in-mind"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#so-what-does-keith-have-in-mind"}},[e._v("#")]),e._v(" So what does Keith have in mind?")]),e._v(" "),o("p",[e._v("He argues that we should separate the description of structure (data types) and domain (fields that are included in one discipline). This is easy to achieve because Frictionless is modular by design.")]),e._v(" "),o("p",[e._v("We should take some intentional action to design a high-level model, so that even if we leave it to community members to build domain-specific specs, the core Frictionless team at Open Knowledge Foundation would oversee that they all still have a common core data model which allows all the different extensions to interact easily.")]),e._v(" "),o("p",[e._v("Keith suggests using a mix-in approach, where the domain-specific schema would be made by combining specs (data type/structure + data domain). This would make sense to avoid redundancy in the code structure.")]),e._v(" "),o("p",[e._v("It would be important to have a working group with representatives from different disciplines, and working in different capacities, to build together this common data model in a way that really fits the needs of everyone (or at least find some minimal common ground). This is exactly the direction we would like the project to move forward. We are working on it, so stay tuned!")]),e._v(" "),o("p",[e._v("Meanwhile, if you want to know more about Keith’s ideas, you can watch the recording of his presentation:")]),e._v(" "),o("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/UhRYtkYDHsM",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:""}}),e._v(" "),o("h1",{attrs:{id:"join-us-next-month"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[e._v("#")]),e._v(" Join us next month!")]),e._v(" "),o("p",[e._v("Next community call is on May 25"),o("sup",[e._v("th")]),e._v(".")]),e._v(" "),o("p",[e._v("Do you have something you would like to present to the community at one of the upcoming calls? Let us know via "),o("a",{attrs:{href:"https://forms.gle/AWpbxyiGESNSUFK2A",target:"_blank",rel:"noopener noreferrer"}},[e._v("this form"),o("OutboundLink")],1),e._v(", or come and tell us on our "),o("a",{attrs:{href:"https://join.slack.com/t/frictionlessdata/shared_invite/zt-17kpbffnm-tRfDW_wJgOw8tJVLvZTrBg",target:"_blank",rel:"noopener noreferrer"}},[e._v("community chat on Slack"),o("OutboundLink")],1),e._v("(also accessible via a "),o("a",{attrs:{href:"https://matrix.to/#/#frictionlessdata:matrix.okfn.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("Matrix bridge"),o("OutboundLink")],1),e._v(" if you prefer to use an open protocol) .")]),e._v(" "),o("p",[e._v("You can sign up for the call already "),o("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(". Do you want to share something with the community? Let us know when you sign up.")]),e._v(" "),o("h1",{attrs:{id:"call-recording"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call Recording")]),e._v(" "),o("p",[e._v("On a final note, here is the recording of the full call:")]),e._v(" "),o("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/qL3uBfer1sA",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:""}})])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[174],{710:function(e,t,o){"use strict";o.r(t);var a=o(29),n=Object(a.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("p",[e._v("At our last community call on April 27"),o("sup",[e._v("th")]),e._v(" Keith Hughitt presented his ideas on how we can improve support for non-tabular data, and on how we could build a specification for describing the relationship between datasets. It took me some time to write this recap blog, because some of the reflections that Keith shared with us resonated very much with some of the thinking we have been doing at Open Knowledge Foundation around governance. I had explained during the "),o("a",{attrs:{href:"https://frictionlessdata.io/blog/2023/04/06/march-community-call/",target:"_blank",rel:"noopener noreferrer"}},[e._v("March community call"),o("OutboundLink")],1),e._v(" that the governance of the specs has been recently unblocked, and we are starting to think about how to get to v2. It was actually Keith who urged me to do that presentation to clarify the project governance (and I am so glad he did!).")]),e._v(" "),o("p",[e._v("Keith’s main goals are pretty clear: 1. He wants datasets to be soft contained and well defined enough to be combinable with minimal effort. Datasets should function like lego blocks, which is the way Frictionless Data works too. 2. He wants transparency on how the data is processed and communicated, as this is key to reproducibility.")]),e._v(" "),o("p",[e._v("At the moment the Frictionless Data specs have a strong focus on tabular data, and Keith would like to extend that same kind of support to other types of data as well. Having some kind of common spec would be very useful for all those who work with more than one type of data, and he feels something can be done to make that work easier.")]),e._v(" "),o("h3",{attrs:{id:"so-what-does-keith-have-in-mind"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#so-what-does-keith-have-in-mind"}},[e._v("#")]),e._v(" So what does Keith have in mind?")]),e._v(" "),o("p",[e._v("He argues that we should separate the description of structure (data types) and domain (fields that are included in one discipline). This is easy to achieve because Frictionless is modular by design.")]),e._v(" "),o("p",[e._v("We should take some intentional action to design a high-level model, so that even if we leave it to community members to build domain-specific specs, the core Frictionless team at Open Knowledge Foundation would oversee that they all still have a common core data model which allows all the different extensions to interact easily.")]),e._v(" "),o("p",[e._v("Keith suggests using a mix-in approach, where the domain-specific schema would be made by combining specs (data type/structure + data domain). This would make sense to avoid redundancy in the code structure.")]),e._v(" "),o("p",[e._v("It would be important to have a working group with representatives from different disciplines, and working in different capacities, to build together this common data model in a way that really fits the needs of everyone (or at least find some minimal common ground). This is exactly the direction we would like the project to move forward. We are working on it, so stay tuned!")]),e._v(" "),o("p",[e._v("Meanwhile, if you want to know more about Keith’s ideas, you can watch the recording of his presentation:")]),e._v(" "),o("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/UhRYtkYDHsM",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:""}}),e._v(" "),o("h1",{attrs:{id:"join-us-next-month"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[e._v("#")]),e._v(" Join us next month!")]),e._v(" "),o("p",[e._v("Next community call is on May 25"),o("sup",[e._v("th")]),e._v(".")]),e._v(" "),o("p",[e._v("Do you have something you would like to present to the community at one of the upcoming calls? Let us know via "),o("a",{attrs:{href:"https://forms.gle/AWpbxyiGESNSUFK2A",target:"_blank",rel:"noopener noreferrer"}},[e._v("this form"),o("OutboundLink")],1),e._v(", or come and tell us on our "),o("a",{attrs:{href:"https://join.slack.com/t/frictionlessdata/shared_invite/zt-17kpbffnm-tRfDW_wJgOw8tJVLvZTrBg",target:"_blank",rel:"noopener noreferrer"}},[e._v("community chat on Slack"),o("OutboundLink")],1),e._v("(also accessible via a "),o("a",{attrs:{href:"https://matrix.to/#/#frictionlessdata:matrix.okfn.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("Matrix bridge"),o("OutboundLink")],1),e._v(" if you prefer to use an open protocol) .")]),e._v(" "),o("p",[e._v("You can sign up for the call already "),o("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(". Do you want to share something with the community? Let us know when you sign up.")]),e._v(" "),o("h1",{attrs:{id:"call-recording"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call Recording")]),e._v(" "),o("p",[e._v("On a final note, here is the recording of the full call:")]),e._v(" "),o("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/qL3uBfer1sA",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:""}})])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/175.b7a38070.js b/assets/js/175.7478e44c.js similarity index 98% rename from assets/js/175.b7a38070.js rename to assets/js/175.7478e44c.js index 28f4df966..151ea7bea 100644 --- a/assets/js/175.b7a38070.js +++ b/assets/js/175.7478e44c.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[175],{712:function(e,t,a){"use strict";a.r(t);var o=a(29),r=Object(o.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[e._v("At our last community call on May 25"),a("sup",[e._v("th")]),e._v(" Augusto Herrmann presented FastETL, a free and open source software library for Apache Airflow that makes it easier to integrate heterogeneous data sources and to publish open data (e.g. to CKAN data portals) using Apache Airflow.")]),e._v(" "),a("p",[e._v("Augusto told us how the data engineering team at the Secretariat for Management and Innovation in the Brazilian federal government has been using FastETL in combination with the Frictionless Framework, and Tabular Data Packages for processing data pipelines and to publish open data.")]),e._v(" "),a("p",[e._v("Augusto and his team have developed FastETL, among other things, to be able to periodically synchronise data sources in the data lake, publish open data on open data portals, and be notified about publications in the official gazette.")]),e._v(" "),a("p",[e._v("Some of the things that you can do with FastETL are:")]),e._v(" "),a("ul",[a("li",[e._v("Full or incremental replication of tables in SQL Server, and Postgres databases (and MySQL sources).")]),e._v(" "),a("li",[e._v("Load data from GSheets and from spreadsheets on Samba/Windows networks.")]),e._v(" "),a("li",[e._v("Extract CSVs from SQL.")]),e._v(" "),a("li",[e._v("Query the Brazilian National Official Gazette’s API, and get a notification when there is a new publication in the Official Gazette.")]),e._v(" "),a("li",[e._v("Use CKAN or "),a("a",{attrs:{href:"http://dados.gov.br",target:"_blank",rel:"noopener noreferrer"}},[e._v("dados.gov.br"),a("OutboundLink")],1),e._v("’s API to update dataset metadata.")]),e._v(" "),a("li",[e._v("Use Frictionless Tabular Data Packages to write data dictionaries in OpenDocument Text format.")])]),e._v(" "),a("p",[e._v("Would you like to know more? You can have a look at Augusto’s slides on "),a("a",{attrs:{href:"https://herrmann.tech/slide-decks/2023/05/integrating-data-sources-and-publishing-open-data-with-fastetl-airflow-and-frictionless",target:"_blank",rel:"noopener noreferrer"}},[e._v("his website here"),a("OutboundLink")],1),e._v(", or check out the "),a("a",{attrs:{href:"https://github.com/gestaogovbr/FastETL",target:"_blank",rel:"noopener noreferrer"}},[e._v("FastETL GitHub Repository"),a("OutboundLink")],1),e._v("."),a("br"),e._v("\nAnd if you want to better understand how to use FastETL, have a look at Augusto’s presentation, with some great data pipeline examples:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/Z8bo6cyd-gw",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:""}}),e._v(" "),a("h1",{attrs:{id:"join-us-next-month"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[e._v("#")]),e._v(" Join us next month!")]),e._v(" "),a("p",[e._v("Next community call is on June 29"),a("sup",[e._v("th")]),e._v(", and it will be a hands-on session on strange datasets and how to describe them! Jesper Zedlitz from the German federal state of Schleswig-Holstein will be bringing one. Let us know if you would also like to bring a dataset to this call, by emailing Sara Petti sara.petti[at]"),a("a",{attrs:{href:"http://okfn.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("okfn.org"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("Do you have something you would like to present to the community at one of the upcoming calls? Let us know via "),a("a",{attrs:{href:"https://forms.gle/AWpbxyiGESNSUFK2A",target:"_blank",rel:"noopener noreferrer"}},[e._v("this form"),a("OutboundLink")],1),e._v(", or come and tell us on our "),a("a",{attrs:{href:"https://join.slack.com/t/frictionlessdata/shared_invite/zt-17kpbffnm-tRfDW_wJgOw8tJVLvZTrBg",target:"_blank",rel:"noopener noreferrer"}},[e._v("community chat on Slack"),a("OutboundLink")],1),e._v(" (also accessible via a "),a("a",{attrs:{href:"https://matrix.to/#/#frictionlessdata:matrix.okfn.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("Matrix bridge"),a("OutboundLink")],1),e._v(" if you prefer to use an open protocol) .")]),e._v(" "),a("p",[e._v("You can sign up for the call already "),a("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(". Do you want to share something with the community? Let us know when you sign up.")]),e._v(" "),a("h1",{attrs:{id:"call-recording"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call Recording")]),e._v(" "),a("p",[e._v("On a final note, here is the recording of the full call:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/Z8bo6cyd-gw",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:""}})])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[175],{714:function(e,t,a){"use strict";a.r(t);var o=a(29),r=Object(o.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("p",[e._v("At our last community call on May 25"),a("sup",[e._v("th")]),e._v(" Augusto Herrmann presented FastETL, a free and open source software library for Apache Airflow that makes it easier to integrate heterogeneous data sources and to publish open data (e.g. to CKAN data portals) using Apache Airflow.")]),e._v(" "),a("p",[e._v("Augusto told us how the data engineering team at the Secretariat for Management and Innovation in the Brazilian federal government has been using FastETL in combination with the Frictionless Framework, and Tabular Data Packages for processing data pipelines and to publish open data.")]),e._v(" "),a("p",[e._v("Augusto and his team have developed FastETL, among other things, to be able to periodically synchronise data sources in the data lake, publish open data on open data portals, and be notified about publications in the official gazette.")]),e._v(" "),a("p",[e._v("Some of the things that you can do with FastETL are:")]),e._v(" "),a("ul",[a("li",[e._v("Full or incremental replication of tables in SQL Server, and Postgres databases (and MySQL sources).")]),e._v(" "),a("li",[e._v("Load data from GSheets and from spreadsheets on Samba/Windows networks.")]),e._v(" "),a("li",[e._v("Extract CSVs from SQL.")]),e._v(" "),a("li",[e._v("Query the Brazilian National Official Gazette’s API, and get a notification when there is a new publication in the Official Gazette.")]),e._v(" "),a("li",[e._v("Use CKAN or "),a("a",{attrs:{href:"http://dados.gov.br",target:"_blank",rel:"noopener noreferrer"}},[e._v("dados.gov.br"),a("OutboundLink")],1),e._v("’s API to update dataset metadata.")]),e._v(" "),a("li",[e._v("Use Frictionless Tabular Data Packages to write data dictionaries in OpenDocument Text format.")])]),e._v(" "),a("p",[e._v("Would you like to know more? You can have a look at Augusto’s slides on "),a("a",{attrs:{href:"https://herrmann.tech/slide-decks/2023/05/integrating-data-sources-and-publishing-open-data-with-fastetl-airflow-and-frictionless",target:"_blank",rel:"noopener noreferrer"}},[e._v("his website here"),a("OutboundLink")],1),e._v(", or check out the "),a("a",{attrs:{href:"https://github.com/gestaogovbr/FastETL",target:"_blank",rel:"noopener noreferrer"}},[e._v("FastETL GitHub Repository"),a("OutboundLink")],1),e._v("."),a("br"),e._v("\nAnd if you want to better understand how to use FastETL, have a look at Augusto’s presentation, with some great data pipeline examples:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/Z8bo6cyd-gw",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:""}}),e._v(" "),a("h1",{attrs:{id:"join-us-next-month"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-us-next-month"}},[e._v("#")]),e._v(" Join us next month!")]),e._v(" "),a("p",[e._v("Next community call is on June 29"),a("sup",[e._v("th")]),e._v(", and it will be a hands-on session on strange datasets and how to describe them! Jesper Zedlitz from the German federal state of Schleswig-Holstein will be bringing one. Let us know if you would also like to bring a dataset to this call, by emailing Sara Petti sara.petti[at]"),a("a",{attrs:{href:"http://okfn.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("okfn.org"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("Do you have something you would like to present to the community at one of the upcoming calls? Let us know via "),a("a",{attrs:{href:"https://forms.gle/AWpbxyiGESNSUFK2A",target:"_blank",rel:"noopener noreferrer"}},[e._v("this form"),a("OutboundLink")],1),e._v(", or come and tell us on our "),a("a",{attrs:{href:"https://join.slack.com/t/frictionlessdata/shared_invite/zt-17kpbffnm-tRfDW_wJgOw8tJVLvZTrBg",target:"_blank",rel:"noopener noreferrer"}},[e._v("community chat on Slack"),a("OutboundLink")],1),e._v(" (also accessible via a "),a("a",{attrs:{href:"https://matrix.to/#/#frictionlessdata:matrix.okfn.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("Matrix bridge"),a("OutboundLink")],1),e._v(" if you prefer to use an open protocol) .")]),e._v(" "),a("p",[e._v("You can sign up for the call already "),a("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(". Do you want to share something with the community? Let us know when you sign up.")]),e._v(" "),a("h1",{attrs:{id:"call-recording"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call Recording")]),e._v(" "),a("p",[e._v("On a final note, here is the recording of the full call:")]),e._v(" "),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/Z8bo6cyd-gw",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:""}})])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/176.74021178.js b/assets/js/176.40f5264f.js similarity index 98% rename from assets/js/176.74021178.js rename to assets/js/176.40f5264f.js index 0d78cdf55..2ae854a3a 100644 --- a/assets/js/176.74021178.js +++ b/assets/js/176.40f5264f.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[176],{715:function(e,t,o){"use strict";o.r(t);var a=o(29),n=Object(a.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("p",[e._v("On June 29"),o("sup",[e._v("th")]),e._v(" we had our last monthly call, and it was kind of a special one! Instead of the usual project presentation, we had a hands-on session on strange datasets and how to describe them.")]),e._v(" "),o("p",[e._v("Our community member Jesper Zedlitz comes regularly across very weird datasets in his day-to-day work, and had asked in the May community call, whether it was possible to bring some of them to the call and check them out together with the community to try to make sense of them all together. This turned out to be an excellent idea for a fun call!")]),e._v(" "),o("p",[e._v("So what kind of problems is Jesper encountering?")]),e._v(" "),o("ul",[o("li",[o("p",[e._v("Sometimes we have extra information on the dataset, the licence, etc. at the beginning and comments at the end of the csv, so some rows need to be ignored. This is easy to do for the top part of the dataset, but it’s harder for the bottom part. Something we will definitely need to think about for the next iteration of the Frictionless specs, for example by giving the possibility to have a “headline row”, or something like that. This was a common problem for other community members too.")])]),e._v(" "),o("li",[o("p",[e._v("Sometimes we don’t have any information at all: Jesper showed us some CSVs without any headerlines, where it’s up to you to figure out what kind of data is in there.")])]),e._v(" "),o("li",[o("p",[e._v("The dialect (e.g. weird delimiters) and character encoding are sometimes tricky too, but that’s already easy to manage with the Frictionless specs.")])])]),e._v(" "),o("p",[e._v("Do you want to know more about the strange datasets that Jesper has shown us during the call? Then you should watch the full recording of the call:")]),e._v(" "),o("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/WekfG2AZ-Dc",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:""}}),e._v(" "),o("h1",{attrs:{id:"join-us-in-august"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#join-us-in-august"}},[e._v("#")]),e._v(" Join us in August!")]),e._v(" "),o("p",[e._v("Exceptionally we won’t have any community call in July, so see you all on August 31"),o("sup",[e._v("st")]),e._v("!")]),e._v(" "),o("p",[e._v("Do you have something you would like to present to the community at one of the upcoming calls? Let us know via "),o("a",{attrs:{href:"https://forms.gle/AWpbxyiGESNSUFK2A",target:"_blank",rel:"noopener noreferrer"}},[e._v("this form"),o("OutboundLink")],1),e._v(", or come and tell us on our "),o("a",{attrs:{href:"https://join.slack.com/t/frictionlessdata/shared_invite/zt-17kpbffnm-tRfDW_wJgOw8tJVLvZTrBg",target:"_blank",rel:"noopener noreferrer"}},[e._v("community chat on Slack"),o("OutboundLink")],1),e._v("(also accessible via a "),o("a",{attrs:{href:"https://matrix.to/#/#frictionlessdata:matrix.okfn.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("Matrix bridge"),o("OutboundLink")],1),e._v(" if you prefer to use an open protocol) .")]),e._v(" "),o("p",[e._v("You can sign up for the call already "),o("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(". Do you want to share something with the community? Let us know when you sign up.")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[176],{712:function(e,t,o){"use strict";o.r(t);var a=o(29),n=Object(a.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("p",[e._v("On June 29"),o("sup",[e._v("th")]),e._v(" we had our last monthly call, and it was kind of a special one! Instead of the usual project presentation, we had a hands-on session on strange datasets and how to describe them.")]),e._v(" "),o("p",[e._v("Our community member Jesper Zedlitz comes regularly across very weird datasets in his day-to-day work, and had asked in the May community call, whether it was possible to bring some of them to the call and check them out together with the community to try to make sense of them all together. This turned out to be an excellent idea for a fun call!")]),e._v(" "),o("p",[e._v("So what kind of problems is Jesper encountering?")]),e._v(" "),o("ul",[o("li",[o("p",[e._v("Sometimes we have extra information on the dataset, the licence, etc. at the beginning and comments at the end of the csv, so some rows need to be ignored. This is easy to do for the top part of the dataset, but it’s harder for the bottom part. Something we will definitely need to think about for the next iteration of the Frictionless specs, for example by giving the possibility to have a “headline row”, or something like that. This was a common problem for other community members too.")])]),e._v(" "),o("li",[o("p",[e._v("Sometimes we don’t have any information at all: Jesper showed us some CSVs without any headerlines, where it’s up to you to figure out what kind of data is in there.")])]),e._v(" "),o("li",[o("p",[e._v("The dialect (e.g. weird delimiters) and character encoding are sometimes tricky too, but that’s already easy to manage with the Frictionless specs.")])])]),e._v(" "),o("p",[e._v("Do you want to know more about the strange datasets that Jesper has shown us during the call? Then you should watch the full recording of the call:")]),e._v(" "),o("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/WekfG2AZ-Dc",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:""}}),e._v(" "),o("h1",{attrs:{id:"join-us-in-august"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#join-us-in-august"}},[e._v("#")]),e._v(" Join us in August!")]),e._v(" "),o("p",[e._v("Exceptionally we won’t have any community call in July, so see you all on August 31"),o("sup",[e._v("st")]),e._v("!")]),e._v(" "),o("p",[e._v("Do you have something you would like to present to the community at one of the upcoming calls? Let us know via "),o("a",{attrs:{href:"https://forms.gle/AWpbxyiGESNSUFK2A",target:"_blank",rel:"noopener noreferrer"}},[e._v("this form"),o("OutboundLink")],1),e._v(", or come and tell us on our "),o("a",{attrs:{href:"https://join.slack.com/t/frictionlessdata/shared_invite/zt-17kpbffnm-tRfDW_wJgOw8tJVLvZTrBg",target:"_blank",rel:"noopener noreferrer"}},[e._v("community chat on Slack"),o("OutboundLink")],1),e._v("(also accessible via a "),o("a",{attrs:{href:"https://matrix.to/#/#frictionlessdata:matrix.okfn.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("Matrix bridge"),o("OutboundLink")],1),e._v(" if you prefer to use an open protocol) .")]),e._v(" "),o("p",[e._v("You can sign up for the call already "),o("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(". Do you want to share something with the community? Let us know when you sign up.")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/177.584bad6b.js b/assets/js/177.6c30d8b5.js similarity index 98% rename from assets/js/177.584bad6b.js rename to assets/js/177.6c30d8b5.js index e56951c49..1cbade261 100644 --- a/assets/js/177.584bad6b.js +++ b/assets/js/177.6c30d8b5.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[177],{716:function(e,t,o){"use strict";o.r(t);var a=o(29),r=Object(a.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("p",[e._v("After 2 long months of absence, our monthly community call was finally back on September 28"),o("sup",[e._v("th")]),e._v(", with some very exciting news! Our Tech Lead Evgeny Karev presented the work that has absorbed so much of his and Shashi Gharti’s time in the last months: the Frictionless no-code application "),o("a",{attrs:{href:"https://opendataeditor.okfn.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Open Data Editor"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[e._v("The problem that inspired this new tool is that still today there is no easy tool to manage and publish data for those who don’t have technical skills. The new Open Data Editor offers the possibility to access all Frictionless functionalities without having to write one single line of code, nor open your shell. Like most Frictionless products, Open Data Editor focuses on tabular data, and it can easily open big files because it uses the "),o("code",[e._v("database")]),e._v(" under the hood (similarly to CKAN). You can use it to edit metadata, and declare some rules for opening that you can share with your collaborators, making your data more reproducible.")]),e._v(" "),o("p",[e._v("You can use it to create data visualisation with VegaLite, but Open Data Editor has also an AI support, which you can use to create charts for you, in case you don’t know how to use the VegaLite specifications. You can also publish data stories, and much much more! Check out Evgeny’s presentation to see all the great features of the Open Data Editor:")]),e._v(" "),o("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/a0IyJPSmJyY?si=xOfI7YmS4EsVcKlp",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:""}}),e._v(" "),o("p",[e._v("The application is still a work in progress, but if you would like to try it out that’s of course absolutely possible, and we would love it if you could give us feedback, so please let us know if you spot anything weird. To make the experience smoother, we have a detailed "),o("a",{attrs:{href:"https://opendataeditor.okfn.org/documentation/getting-started/",target:"_blank",rel:"noopener noreferrer"}},[e._v("documentation website"),o("OutboundLink")],1),e._v(" you can consult.")]),e._v(" "),o("h1",{attrs:{id:"join-us-in-october"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#join-us-in-october"}},[e._v("#")]),e._v(" Join us in October!")]),e._v(" "),o("p",[e._v("Next community call is on October 26"),o("sup",[e._v("th")]),e._v(", join us to hear exciting news about the "),o("a",{attrs:{href:"https://specs.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Frictionless specs"),o("OutboundLink")],1),e._v(" update!")]),e._v(" "),o("p",[e._v("Do you have something you would like to present to the community at one of the upcoming calls? Let us know via "),o("a",{attrs:{href:"https://forms.gle/AWpbxyiGESNSUFK2A",target:"_blank",rel:"noopener noreferrer"}},[e._v("this form"),o("OutboundLink")],1),e._v(", or come and tell us on our "),o("a",{attrs:{href:"https://join.slack.com/t/frictionlessdata/shared_invite/zt-17kpbffnm-tRfDW_wJgOw8tJVLvZTrBg",target:"_blank",rel:"noopener noreferrer"}},[e._v("community chat on Slack"),o("OutboundLink")],1),e._v("(also accessible via a "),o("a",{attrs:{href:"https://matrix.to/#/#frictionlessdata:matrix.okfn.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("Matrix bridge"),o("OutboundLink")],1),e._v(" if you prefer to use an open protocol) .")]),e._v(" "),o("p",[e._v("You can sign up for the call already "),o("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(". Do you want to share something with the community? Let us know when you sign up.")]),e._v(" "),o("h1",{attrs:{id:"call-recording"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call Recording")]),e._v(" "),o("p",[e._v("On a final note, here is the recording of the full call:")]),e._v(" "),o("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/kxB7NZiXF4A?si=5tb2LrJFJaChP-dR",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:""}})])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[177],{715:function(e,t,o){"use strict";o.r(t);var a=o(29),r=Object(a.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("p",[e._v("After 2 long months of absence, our monthly community call was finally back on September 28"),o("sup",[e._v("th")]),e._v(", with some very exciting news! Our Tech Lead Evgeny Karev presented the work that has absorbed so much of his and Shashi Gharti’s time in the last months: the Frictionless no-code application "),o("a",{attrs:{href:"https://opendataeditor.okfn.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Open Data Editor"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[e._v("The problem that inspired this new tool is that still today there is no easy tool to manage and publish data for those who don’t have technical skills. The new Open Data Editor offers the possibility to access all Frictionless functionalities without having to write one single line of code, nor open your shell. Like most Frictionless products, Open Data Editor focuses on tabular data, and it can easily open big files because it uses the "),o("code",[e._v("database")]),e._v(" under the hood (similarly to CKAN). You can use it to edit metadata, and declare some rules for opening that you can share with your collaborators, making your data more reproducible.")]),e._v(" "),o("p",[e._v("You can use it to create data visualisation with VegaLite, but Open Data Editor has also an AI support, which you can use to create charts for you, in case you don’t know how to use the VegaLite specifications. You can also publish data stories, and much much more! Check out Evgeny’s presentation to see all the great features of the Open Data Editor:")]),e._v(" "),o("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/a0IyJPSmJyY?si=xOfI7YmS4EsVcKlp",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:""}}),e._v(" "),o("p",[e._v("The application is still a work in progress, but if you would like to try it out that’s of course absolutely possible, and we would love it if you could give us feedback, so please let us know if you spot anything weird. To make the experience smoother, we have a detailed "),o("a",{attrs:{href:"https://opendataeditor.okfn.org/documentation/getting-started/",target:"_blank",rel:"noopener noreferrer"}},[e._v("documentation website"),o("OutboundLink")],1),e._v(" you can consult.")]),e._v(" "),o("h1",{attrs:{id:"join-us-in-october"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#join-us-in-october"}},[e._v("#")]),e._v(" Join us in October!")]),e._v(" "),o("p",[e._v("Next community call is on October 26"),o("sup",[e._v("th")]),e._v(", join us to hear exciting news about the "),o("a",{attrs:{href:"https://specs.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Frictionless specs"),o("OutboundLink")],1),e._v(" update!")]),e._v(" "),o("p",[e._v("Do you have something you would like to present to the community at one of the upcoming calls? Let us know via "),o("a",{attrs:{href:"https://forms.gle/AWpbxyiGESNSUFK2A",target:"_blank",rel:"noopener noreferrer"}},[e._v("this form"),o("OutboundLink")],1),e._v(", or come and tell us on our "),o("a",{attrs:{href:"https://join.slack.com/t/frictionlessdata/shared_invite/zt-17kpbffnm-tRfDW_wJgOw8tJVLvZTrBg",target:"_blank",rel:"noopener noreferrer"}},[e._v("community chat on Slack"),o("OutboundLink")],1),e._v("(also accessible via a "),o("a",{attrs:{href:"https://matrix.to/#/#frictionlessdata:matrix.okfn.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("Matrix bridge"),o("OutboundLink")],1),e._v(" if you prefer to use an open protocol) .")]),e._v(" "),o("p",[e._v("You can sign up for the call already "),o("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(". Do you want to share something with the community? Let us know when you sign up.")]),e._v(" "),o("h1",{attrs:{id:"call-recording"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call Recording")]),e._v(" "),o("p",[e._v("On a final note, here is the recording of the full call:")]),e._v(" "),o("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/kxB7NZiXF4A?si=5tb2LrJFJaChP-dR",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:""}})])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/178.06d66cf4.js b/assets/js/178.06d66cf4.js new file mode 100644 index 000000000..4848abe93 --- /dev/null +++ b/assets/js/178.06d66cf4.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[178],{718:function(e,t,o){"use strict";o.r(t);var a=o(29),r=Object(a.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("p",[e._v("On our last community call on October 25"),o("sup",[e._v("th")]),e._v(", we started discussing with the community the Frictionless specs update. Thanks to the generous support of "),o("a",{attrs:{href:"https://nlnet.nl/",target:"_blank",rel:"noopener noreferrer"}},[e._v("NLnet"),o("OutboundLink")],1),e._v(", the Frictionless core team, together with a working group composed of members of the community, will be focusing on this for the coming months.")]),e._v(" "),o("h2",{attrs:{id:"what-is-this-update-all-about"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#what-is-this-update-all-about"}},[e._v("#")]),e._v(" What is this update all about?")]),e._v(" "),o("p",[e._v("Our main goal is really to make the current Frictionless specs a finished product. We have a list of GitHub issues that we will use as a starting point for this iteration, but we would like to follow decisions made by the working group.")]),e._v(" "),o("p",[e._v("Please note, there will be no breaking changes (we can hear your sigh of relief!).")]),e._v(" "),o("p",[e._v("As a next step, "),o("strong",[e._v("we will write a separate blog that will serve as a reference for the overarching goals and roadmap of the project.")])]),e._v(" "),o("p",[e._v("The core Frictionless team at Open Knowledge Foundation will also draft a governance model to apply to the review process and how things get merged. Ideally we would like to test and build a new governance model that would delegate more decisions to the community, and that would then stay in place beyond the v2 release, to improve the project sustainability.")]),e._v(" "),o("p",[e._v("Another key goal is to increase diversity to get better representation when we think about things. We have a couple of ideas in mind, but we welcome any suggestion you may have.")]),e._v(" "),o("h1",{attrs:{id:"join-us-in-november"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#join-us-in-november"}},[e._v("#")]),e._v(" Join us in November!")]),e._v(" "),o("p",[e._v("Next community call is on November 30"),o("sup",[e._v("th")]),e._v(", join us to hear all the exciting news about the "),o("a",{attrs:{href:"https://specs.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Frictionless specs"),o("OutboundLink")],1),e._v(" update!")]),e._v(" "),o("p",[e._v("Do you have something you would like to present to the community at one of the upcoming calls? Let us know via "),o("a",{attrs:{href:"https://forms.gle/AWpbxyiGESNSUFK2A",target:"_blank",rel:"noopener noreferrer"}},[e._v("this form"),o("OutboundLink")],1),e._v(", or come and tell us on our "),o("a",{attrs:{href:"https://join.slack.com/t/frictionlessdata/shared_invite/zt-17kpbffnm-tRfDW_wJgOw8tJVLvZTrBg",target:"_blank",rel:"noopener noreferrer"}},[e._v("community chat on Slack"),o("OutboundLink")],1),e._v("(also accessible via a "),o("a",{attrs:{href:"https://matrix.to/#/#frictionlessdata:matrix.okfn.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("Matrix bridge"),o("OutboundLink")],1),e._v(" if you prefer to use an open protocol).")]),e._v(" "),o("p",[e._v("You can sign up for the call already "),o("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(". Do you want to share something with the community? Let us know when you sign up.")]),e._v(" "),o("h1",{attrs:{id:"call-recording"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call Recording")]),e._v(" "),o("p",[e._v("Here is the recording of the full call:")]),e._v(" "),o("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/NVMZT19hlw0?si=wrFfKStzBFWNE4mI",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:""}}),e._v(" "),o("h1",{attrs:{id:"thank-you"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#thank-you"}},[e._v("#")]),e._v(" Thank you")]),e._v(" "),o("p",[e._v("On a final note, we would like to thank all community members who joined the call and who keep all these discussions alive, and those who manifested their interest in joining the specs working group. Without you, all of this would not be possible.")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/178.149c7a47.js b/assets/js/179.317db339.js similarity index 99% rename from assets/js/178.149c7a47.js rename to assets/js/179.317db339.js index 13799ed72..1264026c5 100644 --- a/assets/js/178.149c7a47.js +++ b/assets/js/179.317db339.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[178],{718:function(e,t,i){"use strict";i.r(t);var a=i(29),n=Object(a.a)({},(function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[i("p",[e._v("We are very pleased to announce that thanks to the generous support of "),i("a",{attrs:{href:"https://nlnet.nl/",target:"_blank",rel:"noopener noreferrer"}},[e._v("NLnet"),i("OutboundLink")],1),e._v(" we have kickstarted the "),i("a",{attrs:{href:"https://specs.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Frictionless specifications"),i("OutboundLink")],1),e._v(" update.")]),e._v(" "),i("p",[e._v("After a first discussion with the community in "),i("a",{attrs:{href:"https://frictionlessdata.io/blog/2023/11/06/community-call/",target:"_blank",rel:"noopener noreferrer"}},[e._v("the last call"),i("OutboundLink")],1),e._v(", we are setting up a working group to help us with the v2 release.")]),e._v(" "),i("p",[e._v("Taking into account the group’s concerns about the shortness of the initial timeline we proposed, we were able to work out an extension of the initial time frame until mid-2024. We are now aiming at "),i("strong",[e._v("releasing the v2 of the Frictionless specs by June 2024")]),e._v(".")]),e._v(" "),i("h1",{attrs:{id:"goal"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#goal"}},[e._v("#")]),e._v(" Goal")]),e._v(" "),i("p",[i("strong",[e._v("Our overarching goal is to make the Frictionless specs")]),e._v(", namely the Data Package, Data Resource, File Dialect, and Table Schema standards, "),i("strong",[e._v("a finished product")]),e._v(", establishing a sustainable mechanism for future maintenance extension.")]),e._v(" "),i("p",[e._v("The modular approach will of course still be the cornerstone of the Frictionless specs v2, and we won’t introduce any breaking changes.")]),e._v(" "),i("h2",{attrs:{id:"additional-deliverables"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#additional-deliverables"}},[e._v("#")]),e._v(" Additional deliverables:")]),e._v(" "),i("ul",[i("li",[i("p",[e._v("Together with the working group, we will start a reference collection of data types we want the v2 to support in a GitHub issue.")])]),e._v(" "),i("li",[i("p",[e._v("We will work with leading data publishing portals, namely CKAN and Zenodo, to provide native Data Package export integration.")])]),e._v(" "),i("li",[i("p",[e._v("The Frictionless core team at OKFN, will work on a new small Python library, a metadata mapper, with the objective of making it simpler to create standard extensions, and being able to use it in the data publishing systems integrations (Zenodo/CKAN/etc).")])]),e._v(" "),i("li",[i("p",[e._v("A new website and new documentation will be published, with improved technical language and better accessibility.")])])]),e._v(" "),i("h1",{attrs:{id:"roadmap"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#roadmap"}},[e._v("#")]),e._v(" Roadmap")]),e._v(" "),i("p",[e._v("The project roadmap will be mainly guided by the list of issues submitted by the community throughout the years, and collected "),i("a",{attrs:{href:"https://github.com/frictionlessdata/specs/milestone/6",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),i("OutboundLink")],1),e._v(".")]),e._v(" "),i("h1",{attrs:{id:"social-aspect"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#social-aspect"}},[e._v("#")]),e._v(" Social Aspect")]),e._v(" "),i("p",[e._v("We will hold "),i("strong",[e._v("monthly update calls")]),e._v(" for the working group, which are of course not compulsory, and which will be open to the broader community too. In parallel "),i("strong",[e._v("we will work asynchronously with the working group, using a review model")]),e._v(" for any changes in the specifications themselves.")]),e._v(" "),i("h1",{attrs:{id:"decision-making"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#decision-making"}},[e._v("#")]),e._v(" Decision-making")]),e._v(" "),i("p",[e._v("For every GitHub issue on the specs submitted by the community throughout the years, the Frictionless core team or any working group member will propose a recommended action to the working group. The action proposed will be "),i("strong",[e._v("accepted if consensus with the working group is reached")]),e._v(", meaning we have arrived at a decision, or at least a compromise, that everyone can live with.")]),e._v(" "),i("p",[e._v("The working group will be invited to share their view in a devoted GitHub issue. If a broader conversation is needed, the proposal discussion can be elevated to the monthly call for deliberation. The working group will be given a reasonable amount of time to review the proposed action.")]),e._v(" "),i("p",[i("strong",[e._v("Consensus is reached and the issue is closed if at least ⅔ of the working group members participate in the discussion and express their favourable opinion")]),e._v(". In case of serious and explicitly stated concerns, working group members who are core library investors (at the moment: OKFN, INBO, Datopian) may veto a proposed action.")]),e._v(" "),i("p",[e._v("The community manager at OKFN will reach out to working group members who did not participate in the discussion to make sure their opinion is also captured. We want to ensure that reminders of your participation are handled with care. You can expect a gentle and considerate approach, such as receiving an email once every two weeks highlighting any issues where your vote is pending. Our goal is to keep you informed without causing any unnecessary inconvenience, so you can feel confident and at ease with the process")]),e._v(" "),i("p",[e._v("Decision-making on the technical maintenance of the specs will be centralised by OKFN.")]),e._v(" "),i("h1",{attrs:{id:"diversity"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#diversity"}},[e._v("#")]),e._v(" Diversity")]),e._v(" "),i("p",[e._v("Leveraging diversity is an opportunity that we must embrace for the benefits it brings. Extensive research consistently demonstrates that diverse participation leads to better outcomes and more resilient technologies — diverse communities are unequivocally stronger communities.")]),e._v(" "),i("p",[e._v("We acknowledge the need for greater diversity in our community, and we understand that fostering diversity, equity, and inclusion requires substantial effort. We cannot underestimate the challenges before us. Confronting the deep-rooted and centuries-old racist components of our system is a huge challenge, and we understand that achieving racial equity is a continual journey with no predefined endpoint.")]),e._v(" "),i("p",[e._v("Our mission is to build equity within our community, fostering inclusion and amplifying diversity across all aspects of the Frictionless project. For our specs update, we are proactively encouraging every member of the community involved in the working group to identify and invite candidates interested in contributing to the update work, with a particular emphasis on enhancing the diversity of our group.")]),e._v(" "),i("p",[e._v("We welcome contributors from diverse backgrounds, recognising that individuals with varied experiences bring forth new and innovative ideas that help create an inclusive and welcoming ecosystem. Our goal is to create an inclusive and friendly environment based on mutual respect and exchange, ensuring that no one feels isolated, and everyone is motivated to actively contribute to the project’s development.")]),e._v(" "),i("p",[e._v("Acknowledging the ethical imperative, we understand that recruiting individuals into a community historically designed to exclude them is neither ethical nor effective without adequate support. We therefore prioritise transparency with new community members, providing a "),i("a",{attrs:{href:"https://frictionlessdata.io/work-with-us/contribute/",target:"_blank",rel:"noopener noreferrer"}},[e._v("contributor’s guide"),i("OutboundLink")],1),e._v(", a "),i("a",{attrs:{href:"https://frictionlessdata.io/development/roadmap/",target:"_blank",rel:"noopener noreferrer"}},[e._v("published roadmap"),i("OutboundLink")],1),e._v(", and comprehensive documentation to ensure clarity and support throughout their engagement. Our "),i("a",{attrs:{href:"https://frictionlessdata.io/work-with-us/code-of-conduct/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Code of Conduct"),i("OutboundLink")],1),e._v(" applies to all activities linked to the Frictionless Data project, and it is enforced by our community manager. As part of this project, we will make it a priority to enhance the accessibility of our documentation and website, aiming to make them as inclusive as possible.")]),e._v(" "),i("p",[e._v("We welcome any other suggestions that would help us enhance diversity, equity, and inclusion in our work. Please let us know if you have a good idea to share!")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[179],{716:function(e,t,i){"use strict";i.r(t);var a=i(29),n=Object(a.a)({},(function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[i("p",[e._v("We are very pleased to announce that thanks to the generous support of "),i("a",{attrs:{href:"https://nlnet.nl/",target:"_blank",rel:"noopener noreferrer"}},[e._v("NLnet"),i("OutboundLink")],1),e._v(" we have kickstarted the "),i("a",{attrs:{href:"https://specs.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Frictionless specifications"),i("OutboundLink")],1),e._v(" update.")]),e._v(" "),i("p",[e._v("After a first discussion with the community in "),i("a",{attrs:{href:"https://frictionlessdata.io/blog/2023/11/06/community-call/",target:"_blank",rel:"noopener noreferrer"}},[e._v("the last call"),i("OutboundLink")],1),e._v(", we are setting up a working group to help us with the v2 release.")]),e._v(" "),i("p",[e._v("Taking into account the group’s concerns about the shortness of the initial timeline we proposed, we were able to work out an extension of the initial time frame until mid-2024. We are now aiming at "),i("strong",[e._v("releasing the v2 of the Frictionless specs by June 2024")]),e._v(".")]),e._v(" "),i("h1",{attrs:{id:"goal"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#goal"}},[e._v("#")]),e._v(" Goal")]),e._v(" "),i("p",[i("strong",[e._v("Our overarching goal is to make the Frictionless specs")]),e._v(", namely the Data Package, Data Resource, File Dialect, and Table Schema standards, "),i("strong",[e._v("a finished product")]),e._v(", establishing a sustainable mechanism for future maintenance extension.")]),e._v(" "),i("p",[e._v("The modular approach will of course still be the cornerstone of the Frictionless specs v2, and we won’t introduce any breaking changes.")]),e._v(" "),i("h2",{attrs:{id:"additional-deliverables"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#additional-deliverables"}},[e._v("#")]),e._v(" Additional deliverables:")]),e._v(" "),i("ul",[i("li",[i("p",[e._v("Together with the working group, we will start a reference collection of data types we want the v2 to support in a GitHub issue.")])]),e._v(" "),i("li",[i("p",[e._v("We will work with leading data publishing portals, namely CKAN and Zenodo, to provide native Data Package export integration.")])]),e._v(" "),i("li",[i("p",[e._v("The Frictionless core team at OKFN, will work on a new small Python library, a metadata mapper, with the objective of making it simpler to create standard extensions, and being able to use it in the data publishing systems integrations (Zenodo/CKAN/etc).")])]),e._v(" "),i("li",[i("p",[e._v("A new website and new documentation will be published, with improved technical language and better accessibility.")])])]),e._v(" "),i("h1",{attrs:{id:"roadmap"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#roadmap"}},[e._v("#")]),e._v(" Roadmap")]),e._v(" "),i("p",[e._v("The project roadmap will be mainly guided by the list of issues submitted by the community throughout the years, and collected "),i("a",{attrs:{href:"https://github.com/frictionlessdata/specs/milestone/6",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),i("OutboundLink")],1),e._v(".")]),e._v(" "),i("h1",{attrs:{id:"social-aspect"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#social-aspect"}},[e._v("#")]),e._v(" Social Aspect")]),e._v(" "),i("p",[e._v("We will hold "),i("strong",[e._v("monthly update calls")]),e._v(" for the working group, which are of course not compulsory, and which will be open to the broader community too. In parallel "),i("strong",[e._v("we will work asynchronously with the working group, using a review model")]),e._v(" for any changes in the specifications themselves.")]),e._v(" "),i("h1",{attrs:{id:"decision-making"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#decision-making"}},[e._v("#")]),e._v(" Decision-making")]),e._v(" "),i("p",[e._v("For every GitHub issue on the specs submitted by the community throughout the years, the Frictionless core team or any working group member will propose a recommended action to the working group. The action proposed will be "),i("strong",[e._v("accepted if consensus with the working group is reached")]),e._v(", meaning we have arrived at a decision, or at least a compromise, that everyone can live with.")]),e._v(" "),i("p",[e._v("The working group will be invited to share their view in a devoted GitHub issue. If a broader conversation is needed, the proposal discussion can be elevated to the monthly call for deliberation. The working group will be given a reasonable amount of time to review the proposed action.")]),e._v(" "),i("p",[i("strong",[e._v("Consensus is reached and the issue is closed if at least ⅔ of the working group members participate in the discussion and express their favourable opinion")]),e._v(". In case of serious and explicitly stated concerns, working group members who are core library investors (at the moment: OKFN, INBO, Datopian) may veto a proposed action.")]),e._v(" "),i("p",[e._v("The community manager at OKFN will reach out to working group members who did not participate in the discussion to make sure their opinion is also captured. We want to ensure that reminders of your participation are handled with care. You can expect a gentle and considerate approach, such as receiving an email once every two weeks highlighting any issues where your vote is pending. Our goal is to keep you informed without causing any unnecessary inconvenience, so you can feel confident and at ease with the process")]),e._v(" "),i("p",[e._v("Decision-making on the technical maintenance of the specs will be centralised by OKFN.")]),e._v(" "),i("h1",{attrs:{id:"diversity"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#diversity"}},[e._v("#")]),e._v(" Diversity")]),e._v(" "),i("p",[e._v("Leveraging diversity is an opportunity that we must embrace for the benefits it brings. Extensive research consistently demonstrates that diverse participation leads to better outcomes and more resilient technologies — diverse communities are unequivocally stronger communities.")]),e._v(" "),i("p",[e._v("We acknowledge the need for greater diversity in our community, and we understand that fostering diversity, equity, and inclusion requires substantial effort. We cannot underestimate the challenges before us. Confronting the deep-rooted and centuries-old racist components of our system is a huge challenge, and we understand that achieving racial equity is a continual journey with no predefined endpoint.")]),e._v(" "),i("p",[e._v("Our mission is to build equity within our community, fostering inclusion and amplifying diversity across all aspects of the Frictionless project. For our specs update, we are proactively encouraging every member of the community involved in the working group to identify and invite candidates interested in contributing to the update work, with a particular emphasis on enhancing the diversity of our group.")]),e._v(" "),i("p",[e._v("We welcome contributors from diverse backgrounds, recognising that individuals with varied experiences bring forth new and innovative ideas that help create an inclusive and welcoming ecosystem. Our goal is to create an inclusive and friendly environment based on mutual respect and exchange, ensuring that no one feels isolated, and everyone is motivated to actively contribute to the project’s development.")]),e._v(" "),i("p",[e._v("Acknowledging the ethical imperative, we understand that recruiting individuals into a community historically designed to exclude them is neither ethical nor effective without adequate support. We therefore prioritise transparency with new community members, providing a "),i("a",{attrs:{href:"https://frictionlessdata.io/work-with-us/contribute/",target:"_blank",rel:"noopener noreferrer"}},[e._v("contributor’s guide"),i("OutboundLink")],1),e._v(", a "),i("a",{attrs:{href:"https://frictionlessdata.io/development/roadmap/",target:"_blank",rel:"noopener noreferrer"}},[e._v("published roadmap"),i("OutboundLink")],1),e._v(", and comprehensive documentation to ensure clarity and support throughout their engagement. Our "),i("a",{attrs:{href:"https://frictionlessdata.io/work-with-us/code-of-conduct/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Code of Conduct"),i("OutboundLink")],1),e._v(" applies to all activities linked to the Frictionless Data project, and it is enforced by our community manager. As part of this project, we will make it a priority to enhance the accessibility of our documentation and website, aiming to make them as inclusive as possible.")]),e._v(" "),i("p",[e._v("We welcome any other suggestions that would help us enhance diversity, equity, and inclusion in our work. Please let us know if you have a good idea to share!")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/179.58fc53fb.js b/assets/js/180.6275d8bc.js similarity index 99% rename from assets/js/179.58fc53fb.js rename to assets/js/180.6275d8bc.js index 3f07fc97f..12924c079 100644 --- a/assets/js/179.58fc53fb.js +++ b/assets/js/180.6275d8bc.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[179],{717:function(e,t,o){"use strict";o.r(t);var a=o(29),n=Object(a.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("p",[e._v("On our last community call was on November 30"),o("sup",[e._v("th")]),e._v(", we continued discussing the Frictionless Specs update with community members. As a reminder, thanks to the generous support of "),o("a",{attrs:{href:"https://nlnet.nl/",target:"_blank",rel:"noopener noreferrer"}},[e._v("NLnet"),o("OutboundLink")],1),e._v(", the Frictionless core team at Open Knowledge Foundation, together with a working group composed of members of the community, is now working on a v2 of the Specs. Read the "),o("a",{attrs:{href:"https://frictionlessdata.io/blog/2023/11/15/frictionless-specs-update/",target:"_blank",rel:"noopener noreferrer"}},[e._v("announcement blog"),o("OutboundLink")],1),e._v(" to know more about it.")]),e._v(" "),o("h2",{attrs:{id:"ideas-that-were-shared"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#ideas-that-were-shared"}},[e._v("#")]),e._v(" Ideas that were shared")]),e._v(" "),o("p",[e._v("First of all, as captured in the last call, we took into account the group’s concerns about the shortness of the initial timeline we proposed, we were able to work out an extension of the initial time frame until mid-2024. We are now aiming at "),o("strong",[e._v("releasing v2 of the Frictionless specs by June 2024")]),e._v(".")]),e._v(" "),o("p",[e._v("The Specs update was officially "),o("a",{attrs:{href:"https://github.com/frictionlessdata/specs/issues/854",target:"_blank",rel:"noopener noreferrer"}},[e._v("announced on GitHub"),o("OutboundLink")],1),e._v(" and a GitHub team was set up. If you are interested in joining let us know. Getting involved is very low-barrier, you just need to subscribe to the GitHub issues to receive all the updates.")]),e._v(" "),o("p",[e._v("As outlined in the announcement blog, we want to "),o("strong",[e._v("put some extra effort into diversifying our group")]),e._v(", as we think that more diversity could definitely benefit our group, especially at a time in which we are rethinking parts of it. Our community is super collaborative in that sense, and new people who would be interested in standards development have been invited to join.")]),e._v(" "),o("p",[e._v("To make sure we are capturing as many branches of knowledge as possible, an idea that was brought up is to perform a quick analysis of Zenodo’s datasets by field to figure out the distribution across different fields, and see how our distribution within the working group compares to that, to understand where our gaps are.")]),e._v(" "),o("p",[e._v("We also acknowledge that the Frictionless Data project has a steep learning curve. As a community, we often operate with a developer mindset, employing specialised terminology without enough explanations. That’s why, our commitment to fostering diversity must begin with "),o("strong",[e._v("ensuring that all our documentation is accessible")]),e._v(". Achieving this goal is within reach if we all took time to review the documentation to make sure it is accessible to the broader audience possible, including beginners, and ensuring its overall coherence. We did "),o("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/04/14/new-data-documentation-portal/#so-what-s-new",target:"_blank",rel:"noopener noreferrer"}},[e._v("a big documentation review with the community in the past"),o("OutboundLink")],1),e._v(", and it was a great success.")]),e._v(" "),o("p",[e._v("An essential component for achieving this objective is the "),o("strong",[e._v("development of clear onboarding materials")]),e._v(" that are easy to understand. Leveraging existing resources, such as "),o("a",{attrs:{href:"https://fellows.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Frictionless Fellows’ materials"),o("OutboundLink")],1),e._v(", can serve as a foundation for building a comprehensive knowledge base. We must also prioritise the creation of additional tutorials for any kind of audience, including those with limited programming skills, and those who primarily conduct data curation in Microsoft Excel. In that sense, our current focus is on empowering individuals with lower to no programming skills, particularly as we continue to develop the "),o("a",{attrs:{href:"https://blog.okfn.org/2023/10/04/introducing-open-data-editor-beta-towards-a-no-code-data-app-for-everyone/#:~:text=Frictionless%20Data%20has%20long%20been,management%2C%20validation%2C%20and%20sharing.",target:"_blank",rel:"noopener noreferrer"}},[e._v("Open Data Editor"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[e._v("Ideally, we would like to "),o("strong",[e._v("organise outreach events too")]),e._v(", hands on activities with people working with data, to see how Frictionless tooling could benefit their data workflow.")]),e._v(" "),o("p",[e._v("Of course, "),o("strong",[e._v("the release of v2 is not the end point for this effort.")])]),e._v(" "),o("p",[e._v("Under the NLnet grant, we will build a new website dedicated to Data Package (to be online soon), with a better narrative, making it easier for newcomers to understand (e.g. how to use Frictionless specs with Excel). The "),o("a",{attrs:{href:"https://specs.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("current Specs website"),o("OutboundLink")],1),e._v(" will be kept to document the v1 of the standards.")]),e._v(" "),o("h2",{attrs:{id:"immediate-next-steps"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#immediate-next-steps"}},[e._v("#")]),e._v(" Immediate next steps")]),e._v(" "),o("ul",[o("li",[o("p",[e._v("We will update the contributions guide.")])]),e._v(" "),o("li",[o("p",[e._v("In December, due to holidays and limited capacity of people, we will focus on low-hanging fruits. Of course anyone who would like to start working on an issue is very welcome to do so. If you are part of the working group you have the right permission to push PRs, so please go ahead.")])]),e._v(" "),o("li",[o("p",[e._v("We will try to simplify JSON schemas and the way extensions are generated. The Frictionless modular approach will be of course kept. Our aim is to be as technology agnostic and no-code as possible.")])]),e._v(" "),o("li",[o("p",[e._v("We will keep Specs and tooling implementing them clearly separated.")])])]),e._v(" "),o("h2",{attrs:{id:"how-to-participate"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#how-to-participate"}},[e._v("#")]),e._v(" How to participate?")]),e._v(" "),o("p",[e._v("Go and have a look at the "),o("a",{attrs:{href:"https://github.com/frictionlessdata/specs/milestone/6",target:"_blank",rel:"noopener noreferrer"}},[e._v("issue queue on GitHub"),o("OutboundLink")],1),e._v(", and feel free to jump on any of the issue to propose a solution / start a discussion.")]),e._v(" "),o("p",[e._v("Note that the v2 milestone is just an estimation to understand the scope of this release. We tried to carve out what we thought it was important to discuss about or take into consideration, but we don’t need to action every single issue on the list.")]),e._v(" "),o("h1",{attrs:{id:"announcements"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#announcements"}},[e._v("#")]),e._v(" Announcements")]),e._v(" "),o("p",[e._v("We are co-hosting the Open Research Devroom at "),o("a",{attrs:{href:"https://fosdem.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("FOSDEM 2024"),o("OutboundLink")],1),e._v(" again this year. We are looking for developers & users of free libre open source technology for scientific research, investigative journalism, data journalism, activism, OSINT."),o("br"),e._v("\nCall for Participation is open until December 10th, we strongly encourage you to apply!")]),e._v(" "),o("p",[e._v("For those who cannot make it to Brussels on February 3rd, we are going to host an online session the week after.")]),e._v(" "),o("p",[e._v("More info: "),o("a",{attrs:{href:"https://research-fosdem.github.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://research-fosdem.github.io/"),o("OutboundLink")],1)]),e._v(" "),o("h1",{attrs:{id:"join-us-in-janaury"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#join-us-in-janaury"}},[e._v("#")]),e._v(" Join us in Janaury!")]),e._v(" "),o("p",[e._v("Next community call is on January 25"),o("sup",[e._v("th")]),e._v(", join us to hear all the exciting news about the "),o("a",{attrs:{href:"https://specs.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Frictionless specs"),o("OutboundLink")],1),e._v(" update!")]),e._v(" "),o("p",[e._v("Do you have something you would like to present to the community at one of the upcoming calls? Let us know via "),o("a",{attrs:{href:"https://forms.gle/AWpbxyiGESNSUFK2A",target:"_blank",rel:"noopener noreferrer"}},[e._v("this form"),o("OutboundLink")],1),e._v(", or come and tell us on our "),o("a",{attrs:{href:"https://join.slack.com/t/frictionlessdata/shared_invite/zt-17kpbffnm-tRfDW_wJgOw8tJVLvZTrBg",target:"_blank",rel:"noopener noreferrer"}},[e._v("community chat on Slack"),o("OutboundLink")],1),e._v("(also accessible via a "),o("a",{attrs:{href:"https://matrix.to/#/#frictionlessdata:matrix.okfn.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("Matrix bridge"),o("OutboundLink")],1),e._v(" if you prefer to use an open protocol).")]),e._v(" "),o("p",[e._v("You can sign up for the call already "),o("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(". Do you want to share something with the community? Let us know when you sign up.")]),e._v(" "),o("h1",{attrs:{id:"call-recording"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call Recording")]),e._v(" "),o("p",[e._v("Here is the recording of the full call:")]),e._v(" "),o("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/MKFuLqyc414?si=BGEiBzaHRXHQXaJJ",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:""}}),e._v(" "),o("h1",{attrs:{id:"thank-you"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#thank-you"}},[e._v("#")]),e._v(" Thank you")]),e._v(" "),o("p",[e._v("On a final note, we would like to thank all community members that joined the call and that keep all these discussions alive, and those who manifested their interest in joining the specs working group. Without you, all of this would not be possible.")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[180],{717:function(e,t,o){"use strict";o.r(t);var a=o(29),n=Object(a.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("p",[e._v("On our last community call was on November 30"),o("sup",[e._v("th")]),e._v(", we continued discussing the Frictionless Specs update with community members. As a reminder, thanks to the generous support of "),o("a",{attrs:{href:"https://nlnet.nl/",target:"_blank",rel:"noopener noreferrer"}},[e._v("NLnet"),o("OutboundLink")],1),e._v(", the Frictionless core team at Open Knowledge Foundation, together with a working group composed of members of the community, is now working on a v2 of the Specs. Read the "),o("a",{attrs:{href:"https://frictionlessdata.io/blog/2023/11/15/frictionless-specs-update/",target:"_blank",rel:"noopener noreferrer"}},[e._v("announcement blog"),o("OutboundLink")],1),e._v(" to know more about it.")]),e._v(" "),o("h2",{attrs:{id:"ideas-that-were-shared"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#ideas-that-were-shared"}},[e._v("#")]),e._v(" Ideas that were shared")]),e._v(" "),o("p",[e._v("First of all, as captured in the last call, we took into account the group’s concerns about the shortness of the initial timeline we proposed, we were able to work out an extension of the initial time frame until mid-2024. We are now aiming at "),o("strong",[e._v("releasing v2 of the Frictionless specs by June 2024")]),e._v(".")]),e._v(" "),o("p",[e._v("The Specs update was officially "),o("a",{attrs:{href:"https://github.com/frictionlessdata/specs/issues/854",target:"_blank",rel:"noopener noreferrer"}},[e._v("announced on GitHub"),o("OutboundLink")],1),e._v(" and a GitHub team was set up. If you are interested in joining let us know. Getting involved is very low-barrier, you just need to subscribe to the GitHub issues to receive all the updates.")]),e._v(" "),o("p",[e._v("As outlined in the announcement blog, we want to "),o("strong",[e._v("put some extra effort into diversifying our group")]),e._v(", as we think that more diversity could definitely benefit our group, especially at a time in which we are rethinking parts of it. Our community is super collaborative in that sense, and new people who would be interested in standards development have been invited to join.")]),e._v(" "),o("p",[e._v("To make sure we are capturing as many branches of knowledge as possible, an idea that was brought up is to perform a quick analysis of Zenodo’s datasets by field to figure out the distribution across different fields, and see how our distribution within the working group compares to that, to understand where our gaps are.")]),e._v(" "),o("p",[e._v("We also acknowledge that the Frictionless Data project has a steep learning curve. As a community, we often operate with a developer mindset, employing specialised terminology without enough explanations. That’s why, our commitment to fostering diversity must begin with "),o("strong",[e._v("ensuring that all our documentation is accessible")]),e._v(". Achieving this goal is within reach if we all took time to review the documentation to make sure it is accessible to the broader audience possible, including beginners, and ensuring its overall coherence. We did "),o("a",{attrs:{href:"https://frictionlessdata.io/blog/2021/04/14/new-data-documentation-portal/#so-what-s-new",target:"_blank",rel:"noopener noreferrer"}},[e._v("a big documentation review with the community in the past"),o("OutboundLink")],1),e._v(", and it was a great success.")]),e._v(" "),o("p",[e._v("An essential component for achieving this objective is the "),o("strong",[e._v("development of clear onboarding materials")]),e._v(" that are easy to understand. Leveraging existing resources, such as "),o("a",{attrs:{href:"https://fellows.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Frictionless Fellows’ materials"),o("OutboundLink")],1),e._v(", can serve as a foundation for building a comprehensive knowledge base. We must also prioritise the creation of additional tutorials for any kind of audience, including those with limited programming skills, and those who primarily conduct data curation in Microsoft Excel. In that sense, our current focus is on empowering individuals with lower to no programming skills, particularly as we continue to develop the "),o("a",{attrs:{href:"https://blog.okfn.org/2023/10/04/introducing-open-data-editor-beta-towards-a-no-code-data-app-for-everyone/#:~:text=Frictionless%20Data%20has%20long%20been,management%2C%20validation%2C%20and%20sharing.",target:"_blank",rel:"noopener noreferrer"}},[e._v("Open Data Editor"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[e._v("Ideally, we would like to "),o("strong",[e._v("organise outreach events too")]),e._v(", hands on activities with people working with data, to see how Frictionless tooling could benefit their data workflow.")]),e._v(" "),o("p",[e._v("Of course, "),o("strong",[e._v("the release of v2 is not the end point for this effort.")])]),e._v(" "),o("p",[e._v("Under the NLnet grant, we will build a new website dedicated to Data Package (to be online soon), with a better narrative, making it easier for newcomers to understand (e.g. how to use Frictionless specs with Excel). The "),o("a",{attrs:{href:"https://specs.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("current Specs website"),o("OutboundLink")],1),e._v(" will be kept to document the v1 of the standards.")]),e._v(" "),o("h2",{attrs:{id:"immediate-next-steps"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#immediate-next-steps"}},[e._v("#")]),e._v(" Immediate next steps")]),e._v(" "),o("ul",[o("li",[o("p",[e._v("We will update the contributions guide.")])]),e._v(" "),o("li",[o("p",[e._v("In December, due to holidays and limited capacity of people, we will focus on low-hanging fruits. Of course anyone who would like to start working on an issue is very welcome to do so. If you are part of the working group you have the right permission to push PRs, so please go ahead.")])]),e._v(" "),o("li",[o("p",[e._v("We will try to simplify JSON schemas and the way extensions are generated. The Frictionless modular approach will be of course kept. Our aim is to be as technology agnostic and no-code as possible.")])]),e._v(" "),o("li",[o("p",[e._v("We will keep Specs and tooling implementing them clearly separated.")])])]),e._v(" "),o("h2",{attrs:{id:"how-to-participate"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#how-to-participate"}},[e._v("#")]),e._v(" How to participate?")]),e._v(" "),o("p",[e._v("Go and have a look at the "),o("a",{attrs:{href:"https://github.com/frictionlessdata/specs/milestone/6",target:"_blank",rel:"noopener noreferrer"}},[e._v("issue queue on GitHub"),o("OutboundLink")],1),e._v(", and feel free to jump on any of the issue to propose a solution / start a discussion.")]),e._v(" "),o("p",[e._v("Note that the v2 milestone is just an estimation to understand the scope of this release. We tried to carve out what we thought it was important to discuss about or take into consideration, but we don’t need to action every single issue on the list.")]),e._v(" "),o("h1",{attrs:{id:"announcements"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#announcements"}},[e._v("#")]),e._v(" Announcements")]),e._v(" "),o("p",[e._v("We are co-hosting the Open Research Devroom at "),o("a",{attrs:{href:"https://fosdem.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("FOSDEM 2024"),o("OutboundLink")],1),e._v(" again this year. We are looking for developers & users of free libre open source technology for scientific research, investigative journalism, data journalism, activism, OSINT."),o("br"),e._v("\nCall for Participation is open until December 10th, we strongly encourage you to apply!")]),e._v(" "),o("p",[e._v("For those who cannot make it to Brussels on February 3rd, we are going to host an online session the week after.")]),e._v(" "),o("p",[e._v("More info: "),o("a",{attrs:{href:"https://research-fosdem.github.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://research-fosdem.github.io/"),o("OutboundLink")],1)]),e._v(" "),o("h1",{attrs:{id:"join-us-in-janaury"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#join-us-in-janaury"}},[e._v("#")]),e._v(" Join us in Janaury!")]),e._v(" "),o("p",[e._v("Next community call is on January 25"),o("sup",[e._v("th")]),e._v(", join us to hear all the exciting news about the "),o("a",{attrs:{href:"https://specs.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Frictionless specs"),o("OutboundLink")],1),e._v(" update!")]),e._v(" "),o("p",[e._v("Do you have something you would like to present to the community at one of the upcoming calls? Let us know via "),o("a",{attrs:{href:"https://forms.gle/AWpbxyiGESNSUFK2A",target:"_blank",rel:"noopener noreferrer"}},[e._v("this form"),o("OutboundLink")],1),e._v(", or come and tell us on our "),o("a",{attrs:{href:"https://join.slack.com/t/frictionlessdata/shared_invite/zt-17kpbffnm-tRfDW_wJgOw8tJVLvZTrBg",target:"_blank",rel:"noopener noreferrer"}},[e._v("community chat on Slack"),o("OutboundLink")],1),e._v("(also accessible via a "),o("a",{attrs:{href:"https://matrix.to/#/#frictionlessdata:matrix.okfn.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("Matrix bridge"),o("OutboundLink")],1),e._v(" if you prefer to use an open protocol).")]),e._v(" "),o("p",[e._v("You can sign up for the call already "),o("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSeuNCopxXauMkrWvF6VHqOyHMcy54SfNDOseVXfWRQZWkvqjQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(". Do you want to share something with the community? Let us know when you sign up.")]),e._v(" "),o("h1",{attrs:{id:"call-recording"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#call-recording"}},[e._v("#")]),e._v(" Call Recording")]),e._v(" "),o("p",[e._v("Here is the recording of the full call:")]),e._v(" "),o("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/MKFuLqyc414?si=BGEiBzaHRXHQXaJJ",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:""}}),e._v(" "),o("h1",{attrs:{id:"thank-you"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#thank-you"}},[e._v("#")]),e._v(" Thank you")]),e._v(" "),o("p",[e._v("On a final note, we would like to thank all community members that joined the call and that keep all these discussions alive, and those who manifested their interest in joining the specs working group. Without you, all of this would not be possible.")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/180.4a6640af.js b/assets/js/181.64d8c28d.js similarity index 88% rename from assets/js/180.4a6640af.js rename to assets/js/181.64d8c28d.js index d610fae33..68612989c 100644 --- a/assets/js/180.4a6640af.js +++ b/assets/js/181.64d8c28d.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[180],{721:function(t,s,e){"use strict";e.r(s);var r=e(29),i=Object(r.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"frictionless-architecture"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#frictionless-architecture"}},[this._v("#")]),this._v(" Frictionless Architecture")]),this._v(" "),s("p",[s("img",{attrs:{src:"/img/structure.png",alt:"Design"}})])])}),[],!1,null,null,null);s.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[181],{720:function(t,s,e){"use strict";e.r(s);var r=e(29),i=Object(r.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"frictionless-architecture"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#frictionless-architecture"}},[this._v("#")]),this._v(" Frictionless Architecture")]),this._v(" "),s("p",[s("img",{attrs:{src:"/img/structure.png",alt:"Design"}})])])}),[],!1,null,null,null);s.default=i.exports}}]); \ No newline at end of file diff --git a/assets/js/181.a8a2deb5.js b/assets/js/182.9e260667.js similarity index 99% rename from assets/js/181.a8a2deb5.js rename to assets/js/182.9e260667.js index 082314282..130379707 100644 --- a/assets/js/181.a8a2deb5.js +++ b/assets/js/182.9e260667.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[181],{720:function(e,s,t){"use strict";t.r(s);var r=t(29),o=Object(r.a)({},(function(){var e=this,s=e.$createElement,t=e._self._c||s;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"frictionless-process"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#frictionless-process"}},[e._v("#")]),e._v(" Frictionless Process")]),e._v(" "),t("p",[e._v("This document proposes a process to work on the technical side of the Frictionless Data project. The goal - have things manageable for a minimal price.")]),e._v(" "),t("h2",{attrs:{id:"project"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#project"}},[e._v("#")]),e._v(" Project")]),e._v(" "),t("p",[e._v("The specific of the project is a huge amount of components and actors (repositories, issues, contributors etc). The process should be effective in handling this specific.")]),e._v(" "),t("h2",{attrs:{id:"process"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#process"}},[e._v("#")]),e._v(" Process")]),e._v(" "),t("p",[e._v("The main idea to focus on getting things done and reduce the price of maintaining the process instead of trying to fully mimic some popular methodologies. We use different ideas from different methodologies.")]),e._v(" "),t("h2",{attrs:{id:"roles"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#roles"}},[e._v("#")]),e._v(" Roles")]),e._v(" "),t("ul",[t("li",[e._v("Product Owner (PO)")]),e._v(" "),t("li",[e._v("Product Manager (PM)")]),e._v(" "),t("li",[e._v("Developer Advocate (DA)")]),e._v(" "),t("li",[e._v("Technical Lead (TL)")]),e._v(" "),t("li",[e._v("Senior Developer (SD)")]),e._v(" "),t("li",[e._v("Junior Developer (JD)")])]),e._v(" "),t("h2",{attrs:{id:"board"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#board"}},[e._v("#")]),e._v(" Board")]),e._v(" "),t("p",[e._v("We use a kanban board located at "),t("a",{attrs:{href:"https://github.com/orgs/frictionlessdata/projects/2?fullscreen=true",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/orgs/frictionlessdata/projects/2?fullscreen=true"),t("OutboundLink")],1),e._v(" to work on the project. The board has following columns (ordered by issue stage):")]),e._v(" "),t("ul",[t("li",[e._v("Backlog - unprocessed issues without labels and processed issues with labels")]),e._v(" "),t("li",[e._v("Priority - prioritized issues planned for the next iterations (estimated and assigned)")]),e._v(" "),t("li",[e._v("Current - current iteration issues promoted on iteration planning (estimated and assigned)")]),e._v(" "),t("li",[e._v("Review - issues under review process")]),e._v(" "),t("li",[e._v("Done - completed issues")])]),e._v(" "),t("h2",{attrs:{id:"workflow"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#workflow"}},[e._v("#")]),e._v(" Workflow")]),e._v(" "),t("p",[e._v("The work on the project is a live process splitted into 2 weeks iterations between iteration plannings (including retrospection):")]),e._v(" "),t("ul",[t("li",[e._v("Inside an iteration assigned persons work on their current issues and subset of roles do issues processing and prioritizing")]),e._v(" "),t("li",[e._v("During the iteration planning the team moves issues from the Priority column to the Current column and assign persons. Instead of issue estimations assigned person approves amount of work for the current iteration as a high-level estimation.")])]),e._v(" "),t("h2",{attrs:{id:"milestones"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#milestones"}},[e._v("#")]),e._v(" Milestones")]),e._v(" "),t("p",[e._v("As milestones we use concrete achievements e.g. from our roadmap. It could be tools or spec versions like “spec-v1”. We don’t use the workflow related milestones like “current” of “backlog” managing it via the board labeling system.")]),e._v(" "),t("h2",{attrs:{id:"labels"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#labels"}},[e._v("#")]),e._v(" Labels")]),e._v(" "),t("p",[e._v("Aside internal waffle labels and helpers labels like “question” etc we use core color-coded labels based on SemVer. The main point of processing issues from Inbox to Backlog is to add one of this labels because we need to plan releases, breaking announces etc:")]),e._v(" "),t("p",[t("img",{attrs:{src:"https://cloud.githubusercontent.com/assets/557395/17673693/f6391676-632a-11e6-9971-945623b68e16.png",alt:"labels"}})]),e._v(" "),t("h2",{attrs:{id:"assignments"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#assignments"}},[e._v("#")]),e._v(" Assignments")]),e._v(" "),t("p",[e._v("Every issue in the Current column should be assigned to some person with meaning “this person should do some work on this issue to unblock it”. Assigned person should re-assign an issue for a current blocker. It provides a good real-time overview of the project.")]),e._v(" "),t("h2",{attrs:{id:"analysis"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#analysis"}},[e._v("#")]),e._v(" Analysis")]),e._v(" "),t("p",[e._v("After planning it’s highly recommended for an assigned person to write a short plan of how to solve the issue (could be a list of steps) and ask someone to check. This work could be done on some previous stages by subset of roles.")]),e._v(" "),t("h2",{attrs:{id:"branching"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#branching"}},[e._v("#")]),e._v(" Branching")]),e._v(" "),t("p",[e._v("We use Git Flow with some simplifications (see OKI coding standards). Master branch should always be “green” on tests and new features/fixes should go from pull requests. Direct committing to master could be allowed by subset of roles in some cases.")]),e._v(" "),t("h2",{attrs:{id:"pull-requests"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#pull-requests"}},[e._v("#")]),e._v(" Pull Requests")]),e._v(" "),t("p",[e._v("A pull request should be visually merged on the board to the corresponding issue using “It fixes #issue-number” sentence in the pull request description (initial comment). If there is no corresponding issue for the pull request it should be handled as an issue with labeling etc.")]),e._v(" "),t("h2",{attrs:{id:"reviews"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#reviews"}},[e._v("#")]),e._v(" Reviews")]),e._v(" "),t("p",[e._v("After sending a pull request the author should assign the pull request to another person “asking” for a code review. After the review code should be merged to the codebase by the pull request author (or person having enough rights).")]),e._v(" "),t("h2",{attrs:{id:"documentation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#documentation"}},[e._v("#")]),e._v(" Documentation")]),e._v(" "),t("p",[e._v("By default documentation for a tool should be written in "),t("a",{attrs:{href:"http://README.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("README.md"),t("OutboundLink")],1),e._v(" not using additional files and folders. It should be clean and well-structured. API should be documented in the code as docstrings. We compile project level docs automatically.")]),e._v(" "),t("h2",{attrs:{id:"testings"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#testings"}},[e._v("#")]),e._v(" Testings")]),e._v(" "),t("p",[e._v("Tests should be written using OKI coding standards. Start write tests from top (match high-level requirements) to bottom (if needed). The most high-level tests are implemented as testsuites on project level (integration tests between different tools).")]),e._v(" "),t("h2",{attrs:{id:"releasing"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#releasing"}},[e._v("#")]),e._v(" Releasing")]),e._v(" "),t("p",[e._v("We use SemVer for versioning and Github Actions for testing and releasing/deployments. We prefer short release cycle (features and fixes could be released immediately). Releases should be configured using tags based on package examples workflow provided by OKI.")]),e._v(" "),t("p",[e._v("The release process:")]),e._v(" "),t("ul",[t("li",[e._v("merge changes to the main branch on GitHub\n"),t("ul",[t("li",[e._v("use “Squash and Merge”")]),e._v(" "),t("li",[e._v("use clean commit message")])])]),e._v(" "),t("li",[e._v("pull the changes locally")]),e._v(" "),t("li",[e._v("update the software version according to SemVer rules\n"),t("ul",[t("li",[e._v("in Python projets we use "),t("code",[e._v("/assets/VERSION")])]),e._v(" "),t("li",[e._v("in JavaScript projects we use standard "),t("code",[e._v("package.json")])])])]),e._v(" "),t("li",[e._v("update a CHANGELOG file adding info about new feature or important changes")]),e._v(" "),t("li",[e._v("run "),t("code",[e._v("main release")]),e._v(" (it will release automatically)")])]),e._v(" "),t("h2",{attrs:{id:"references"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#references"}},[e._v("#")]),e._v(" References")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://github.com/okfn/coding-standards",target:"_blank",rel:"noopener noreferrer"}},[e._v("Open Knowledge International Coding Standards"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://mui.com/versions/#versioning-strategy",target:"_blank",rel:"noopener noreferrer"}},[e._v("MUI Versioning Strategy"),t("OutboundLink")],1)])])])}),[],!1,null,null,null);s.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[182],{721:function(e,s,t){"use strict";t.r(s);var r=t(29),o=Object(r.a)({},(function(){var e=this,s=e.$createElement,t=e._self._c||s;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"frictionless-process"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#frictionless-process"}},[e._v("#")]),e._v(" Frictionless Process")]),e._v(" "),t("p",[e._v("This document proposes a process to work on the technical side of the Frictionless Data project. The goal - have things manageable for a minimal price.")]),e._v(" "),t("h2",{attrs:{id:"project"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#project"}},[e._v("#")]),e._v(" Project")]),e._v(" "),t("p",[e._v("The specific of the project is a huge amount of components and actors (repositories, issues, contributors etc). The process should be effective in handling this specific.")]),e._v(" "),t("h2",{attrs:{id:"process"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#process"}},[e._v("#")]),e._v(" Process")]),e._v(" "),t("p",[e._v("The main idea to focus on getting things done and reduce the price of maintaining the process instead of trying to fully mimic some popular methodologies. We use different ideas from different methodologies.")]),e._v(" "),t("h2",{attrs:{id:"roles"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#roles"}},[e._v("#")]),e._v(" Roles")]),e._v(" "),t("ul",[t("li",[e._v("Product Owner (PO)")]),e._v(" "),t("li",[e._v("Product Manager (PM)")]),e._v(" "),t("li",[e._v("Developer Advocate (DA)")]),e._v(" "),t("li",[e._v("Technical Lead (TL)")]),e._v(" "),t("li",[e._v("Senior Developer (SD)")]),e._v(" "),t("li",[e._v("Junior Developer (JD)")])]),e._v(" "),t("h2",{attrs:{id:"board"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#board"}},[e._v("#")]),e._v(" Board")]),e._v(" "),t("p",[e._v("We use a kanban board located at "),t("a",{attrs:{href:"https://github.com/orgs/frictionlessdata/projects/2?fullscreen=true",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/orgs/frictionlessdata/projects/2?fullscreen=true"),t("OutboundLink")],1),e._v(" to work on the project. The board has following columns (ordered by issue stage):")]),e._v(" "),t("ul",[t("li",[e._v("Backlog - unprocessed issues without labels and processed issues with labels")]),e._v(" "),t("li",[e._v("Priority - prioritized issues planned for the next iterations (estimated and assigned)")]),e._v(" "),t("li",[e._v("Current - current iteration issues promoted on iteration planning (estimated and assigned)")]),e._v(" "),t("li",[e._v("Review - issues under review process")]),e._v(" "),t("li",[e._v("Done - completed issues")])]),e._v(" "),t("h2",{attrs:{id:"workflow"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#workflow"}},[e._v("#")]),e._v(" Workflow")]),e._v(" "),t("p",[e._v("The work on the project is a live process splitted into 2 weeks iterations between iteration plannings (including retrospection):")]),e._v(" "),t("ul",[t("li",[e._v("Inside an iteration assigned persons work on their current issues and subset of roles do issues processing and prioritizing")]),e._v(" "),t("li",[e._v("During the iteration planning the team moves issues from the Priority column to the Current column and assign persons. Instead of issue estimations assigned person approves amount of work for the current iteration as a high-level estimation.")])]),e._v(" "),t("h2",{attrs:{id:"milestones"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#milestones"}},[e._v("#")]),e._v(" Milestones")]),e._v(" "),t("p",[e._v("As milestones we use concrete achievements e.g. from our roadmap. It could be tools or spec versions like “spec-v1”. We don’t use the workflow related milestones like “current” of “backlog” managing it via the board labeling system.")]),e._v(" "),t("h2",{attrs:{id:"labels"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#labels"}},[e._v("#")]),e._v(" Labels")]),e._v(" "),t("p",[e._v("Aside internal waffle labels and helpers labels like “question” etc we use core color-coded labels based on SemVer. The main point of processing issues from Inbox to Backlog is to add one of this labels because we need to plan releases, breaking announces etc:")]),e._v(" "),t("p",[t("img",{attrs:{src:"https://cloud.githubusercontent.com/assets/557395/17673693/f6391676-632a-11e6-9971-945623b68e16.png",alt:"labels"}})]),e._v(" "),t("h2",{attrs:{id:"assignments"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#assignments"}},[e._v("#")]),e._v(" Assignments")]),e._v(" "),t("p",[e._v("Every issue in the Current column should be assigned to some person with meaning “this person should do some work on this issue to unblock it”. Assigned person should re-assign an issue for a current blocker. It provides a good real-time overview of the project.")]),e._v(" "),t("h2",{attrs:{id:"analysis"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#analysis"}},[e._v("#")]),e._v(" Analysis")]),e._v(" "),t("p",[e._v("After planning it’s highly recommended for an assigned person to write a short plan of how to solve the issue (could be a list of steps) and ask someone to check. This work could be done on some previous stages by subset of roles.")]),e._v(" "),t("h2",{attrs:{id:"branching"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#branching"}},[e._v("#")]),e._v(" Branching")]),e._v(" "),t("p",[e._v("We use Git Flow with some simplifications (see OKI coding standards). Master branch should always be “green” on tests and new features/fixes should go from pull requests. Direct committing to master could be allowed by subset of roles in some cases.")]),e._v(" "),t("h2",{attrs:{id:"pull-requests"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#pull-requests"}},[e._v("#")]),e._v(" Pull Requests")]),e._v(" "),t("p",[e._v("A pull request should be visually merged on the board to the corresponding issue using “It fixes #issue-number” sentence in the pull request description (initial comment). If there is no corresponding issue for the pull request it should be handled as an issue with labeling etc.")]),e._v(" "),t("h2",{attrs:{id:"reviews"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#reviews"}},[e._v("#")]),e._v(" Reviews")]),e._v(" "),t("p",[e._v("After sending a pull request the author should assign the pull request to another person “asking” for a code review. After the review code should be merged to the codebase by the pull request author (or person having enough rights).")]),e._v(" "),t("h2",{attrs:{id:"documentation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#documentation"}},[e._v("#")]),e._v(" Documentation")]),e._v(" "),t("p",[e._v("By default documentation for a tool should be written in "),t("a",{attrs:{href:"http://README.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("README.md"),t("OutboundLink")],1),e._v(" not using additional files and folders. It should be clean and well-structured. API should be documented in the code as docstrings. We compile project level docs automatically.")]),e._v(" "),t("h2",{attrs:{id:"testings"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#testings"}},[e._v("#")]),e._v(" Testings")]),e._v(" "),t("p",[e._v("Tests should be written using OKI coding standards. Start write tests from top (match high-level requirements) to bottom (if needed). The most high-level tests are implemented as testsuites on project level (integration tests between different tools).")]),e._v(" "),t("h2",{attrs:{id:"releasing"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#releasing"}},[e._v("#")]),e._v(" Releasing")]),e._v(" "),t("p",[e._v("We use SemVer for versioning and Github Actions for testing and releasing/deployments. We prefer short release cycle (features and fixes could be released immediately). Releases should be configured using tags based on package examples workflow provided by OKI.")]),e._v(" "),t("p",[e._v("The release process:")]),e._v(" "),t("ul",[t("li",[e._v("merge changes to the main branch on GitHub\n"),t("ul",[t("li",[e._v("use “Squash and Merge”")]),e._v(" "),t("li",[e._v("use clean commit message")])])]),e._v(" "),t("li",[e._v("pull the changes locally")]),e._v(" "),t("li",[e._v("update the software version according to SemVer rules\n"),t("ul",[t("li",[e._v("in Python projets we use "),t("code",[e._v("/assets/VERSION")])]),e._v(" "),t("li",[e._v("in JavaScript projects we use standard "),t("code",[e._v("package.json")])])])]),e._v(" "),t("li",[e._v("update a CHANGELOG file adding info about new feature or important changes")]),e._v(" "),t("li",[e._v("run "),t("code",[e._v("main release")]),e._v(" (it will release automatically)")])]),e._v(" "),t("h2",{attrs:{id:"references"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#references"}},[e._v("#")]),e._v(" References")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://github.com/okfn/coding-standards",target:"_blank",rel:"noopener noreferrer"}},[e._v("Open Knowledge International Coding Standards"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://mui.com/versions/#versioning-strategy",target:"_blank",rel:"noopener noreferrer"}},[e._v("MUI Versioning Strategy"),t("OutboundLink")],1)])])])}),[],!1,null,null,null);s.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/182.53220a84.js b/assets/js/183.216c87f7.js similarity index 98% rename from assets/js/182.53220a84.js rename to assets/js/183.216c87f7.js index dff9b26ff..749caae42 100644 --- a/assets/js/182.53220a84.js +++ b/assets/js/183.216c87f7.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[182],{722:function(e,a,r){"use strict";r.r(a);var o=r(29),t=Object(o.a)({},(function(){var e=this,a=e.$createElement,r=e._self._c||a;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h1",{attrs:{id:"junte-se-a-comunidade-de-frictionless-data-para-dois-dias-de-hackathon-virtual-em-7-e-8-de-outubro"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#junte-se-a-comunidade-de-frictionless-data-para-dois-dias-de-hackathon-virtual-em-7-e-8-de-outubro"}},[e._v("#")]),e._v(" Junte-se à comunidade de Frictionless Data para dois dias de Hackathon virtual em 7 e 8 de Outubro!")]),e._v(" "),r("blockquote",[r("p",[e._v("As inscrições já estão abertas no formulário: "),r("a",{attrs:{href:"https://forms.gle/ZhrVfSBrNy2UPRZc9",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://forms.gle/ZhrVfSBrNy2UPRZc9"),r("OutboundLink")],1)])]),e._v(" "),r("h2",{attrs:{id:"o-que-e-um-hackathon"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#o-que-e-um-hackathon"}},[e._v("#")]),e._v(" O que é um hackathon?")]),e._v(" "),r("p",[e._v("Você irá trabalhar com um grupo de outros usuários do Frictionless para criar novos protótipos baseados no código aberto do projeto. Por exemplo: usar a nova ferramenta "),r("a",{attrs:{href:"https://livemark.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Livemark"),r("OutboundLink")],1),e._v(" para criar sites de storytelling de dados ou o "),r("a",{attrs:{href:"https://components.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("React Components"),r("OutboundLink")],1),e._v(" para adicionar a camada de validação de dados da sua aplicação.")]),e._v(" "),r("h2",{attrs:{id:"quem-pode-participar-deste-hackathon"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#quem-pode-participar-deste-hackathon"}},[e._v("#")]),e._v(" Quem pode participar deste hackathon?")]),e._v(" "),r("p",[e._v("Nós estamos buscando contribuições de todos os tamanhos e níveis de habilidades! Algumas habilidades que você poderá trazer incluem: programação em Python (ou outras linguagens também!), escrever documentação, gestão de projetos, design, muitas ideias e muito entusiasmo! Você estará em um time para que vocês possam aprender e ajudar uns aos outros. Você não precisa ser familiarizado com o Frictionless ainda - poderá aprender durante o evento.")]),e._v(" "),r("h2",{attrs:{id:"por-que-eu-deveria-participar"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#por-que-eu-deveria-participar"}},[e._v("#")]),e._v(" Por que eu deveria participar?")]),e._v(" "),r("p",[e._v("Em primeiro lugar, porque vai ser divertido! Você conhecerá outros usuários do Frictionless e aprenderá algo novo. Esta também é uma oportunidade em que você terá o suporte contínuo da principal equipe do Frictionless para ajudar a realizar seu protótipo. Além disso, haverá prêmios (detalhes em breve).")]),e._v(" "),r("h2",{attrs:{id:"quando-o-hackathon-ocorrera"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#quando-o-hackathon-ocorrera"}},[e._v("#")]),e._v(" Quando o hackathon ocorrerá?")]),e._v(" "),r("p",[e._v("O hackathon será virtual e ocorrerá de 7 a 8 de outubro. O evento terá início de madrugada em 7 de outubro e terminará de tarde em 8 de outubro no horário brasileiro (os horários exatos serão anunciados em breve). Isso permitirá que pessoas de todo o mundo participem em um período que seja bom para elas. Estaremos usando Github e Zoom para coordenar e trabalhar virtualmente. As equipes serão capazes de se formar desde antes para que possam se organizar e estarem prontos quando a hora chegar.")]),e._v(" "),r("h2",{attrs:{id:"quero-me-inscrever"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#quero-me-inscrever"}},[e._v("#")]),e._v(" Quero me inscrever!")]),e._v(" "),r("p",[e._v("Use "),r("a",{attrs:{href:"https://forms.gle/ZhrVfSBrNy2UPRZc9",target:"_blank",rel:"noopener noreferrer"}},[e._v("este formulário"),r("OutboundLink")],1),e._v(" para se registrar. O evento será gratuito e também teremos algumas bolsas para participantes que, de outra forma, não poderiam comparecer. Inscreva-se para uma bolsa de U$ 300 usando este "),r("a",{attrs:{href:"https://forms.gle/jwxVYjDYs31t1YmKA",target:"_blank",rel:"noopener noreferrer"}},[e._v("formulário de bolsa"),r("OutboundLink")],1)]),e._v(" "),r("h2",{attrs:{id:"quais-projetos-estarao-no-hackathon"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#quais-projetos-estarao-no-hackathon"}},[e._v("#")]),e._v(" Quais projetos estarão no Hackathon?")]),e._v(" "),r("p",[e._v("Os projetos vão desde um plug-in GeoJSON para frictionless-py, à código Python para trabalhar com Datapackages em CKAN, à criação de um site estático para listar todos os conjuntos de dados Frictionless no GitHub até à criação de novos tutoriais para código Frictionless."),r("br"),e._v("\nTodos os projetos serão adicionados ao painel do evento em "),r("a",{attrs:{href:"https://frictionless-hackathon.herokuapp.com/event/1#top",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://frictionless-hackathon.herokuapp.com/event/1#top"),r("OutboundLink")],1),e._v(", mantido por "),r("a",{attrs:{href:"https://dribdat.cc/",target:"_blank",rel:"noopener noreferrer"}},[e._v("DribDat"),r("OutboundLink")],1),e._v("."),r("br"),e._v("\nInteressado em trabalhar em seu próprio projeto? Envia-nos um email!")]),e._v(" "),r("h2",{attrs:{id:"eu-tenho-duvidas"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#eu-tenho-duvidas"}},[e._v("#")]),e._v(" Eu tenho dúvidas…")]),e._v(" "),r("p",[e._v("Envie um e-mail para "),r("a",{attrs:{href:"mailto:frictionlessdata@okfn.org"}},[e._v("frictionlessdata@okfn.org")]),e._v(" se você tiver dúvidas ou quiser apoiar o Hackathon.")])])}),[],!1,null,null,null);a.default=t.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[183],{723:function(e,a,r){"use strict";r.r(a);var o=r(29),t=Object(o.a)({},(function(){var e=this,a=e.$createElement,r=e._self._c||a;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h1",{attrs:{id:"junte-se-a-comunidade-de-frictionless-data-para-dois-dias-de-hackathon-virtual-em-7-e-8-de-outubro"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#junte-se-a-comunidade-de-frictionless-data-para-dois-dias-de-hackathon-virtual-em-7-e-8-de-outubro"}},[e._v("#")]),e._v(" Junte-se à comunidade de Frictionless Data para dois dias de Hackathon virtual em 7 e 8 de Outubro!")]),e._v(" "),r("blockquote",[r("p",[e._v("As inscrições já estão abertas no formulário: "),r("a",{attrs:{href:"https://forms.gle/ZhrVfSBrNy2UPRZc9",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://forms.gle/ZhrVfSBrNy2UPRZc9"),r("OutboundLink")],1)])]),e._v(" "),r("h2",{attrs:{id:"o-que-e-um-hackathon"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#o-que-e-um-hackathon"}},[e._v("#")]),e._v(" O que é um hackathon?")]),e._v(" "),r("p",[e._v("Você irá trabalhar com um grupo de outros usuários do Frictionless para criar novos protótipos baseados no código aberto do projeto. Por exemplo: usar a nova ferramenta "),r("a",{attrs:{href:"https://livemark.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Livemark"),r("OutboundLink")],1),e._v(" para criar sites de storytelling de dados ou o "),r("a",{attrs:{href:"https://components.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("React Components"),r("OutboundLink")],1),e._v(" para adicionar a camada de validação de dados da sua aplicação.")]),e._v(" "),r("h2",{attrs:{id:"quem-pode-participar-deste-hackathon"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#quem-pode-participar-deste-hackathon"}},[e._v("#")]),e._v(" Quem pode participar deste hackathon?")]),e._v(" "),r("p",[e._v("Nós estamos buscando contribuições de todos os tamanhos e níveis de habilidades! Algumas habilidades que você poderá trazer incluem: programação em Python (ou outras linguagens também!), escrever documentação, gestão de projetos, design, muitas ideias e muito entusiasmo! Você estará em um time para que vocês possam aprender e ajudar uns aos outros. Você não precisa ser familiarizado com o Frictionless ainda - poderá aprender durante o evento.")]),e._v(" "),r("h2",{attrs:{id:"por-que-eu-deveria-participar"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#por-que-eu-deveria-participar"}},[e._v("#")]),e._v(" Por que eu deveria participar?")]),e._v(" "),r("p",[e._v("Em primeiro lugar, porque vai ser divertido! Você conhecerá outros usuários do Frictionless e aprenderá algo novo. Esta também é uma oportunidade em que você terá o suporte contínuo da principal equipe do Frictionless para ajudar a realizar seu protótipo. Além disso, haverá prêmios (detalhes em breve).")]),e._v(" "),r("h2",{attrs:{id:"quando-o-hackathon-ocorrera"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#quando-o-hackathon-ocorrera"}},[e._v("#")]),e._v(" Quando o hackathon ocorrerá?")]),e._v(" "),r("p",[e._v("O hackathon será virtual e ocorrerá de 7 a 8 de outubro. O evento terá início de madrugada em 7 de outubro e terminará de tarde em 8 de outubro no horário brasileiro (os horários exatos serão anunciados em breve). Isso permitirá que pessoas de todo o mundo participem em um período que seja bom para elas. Estaremos usando Github e Zoom para coordenar e trabalhar virtualmente. As equipes serão capazes de se formar desde antes para que possam se organizar e estarem prontos quando a hora chegar.")]),e._v(" "),r("h2",{attrs:{id:"quero-me-inscrever"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#quero-me-inscrever"}},[e._v("#")]),e._v(" Quero me inscrever!")]),e._v(" "),r("p",[e._v("Use "),r("a",{attrs:{href:"https://forms.gle/ZhrVfSBrNy2UPRZc9",target:"_blank",rel:"noopener noreferrer"}},[e._v("este formulário"),r("OutboundLink")],1),e._v(" para se registrar. O evento será gratuito e também teremos algumas bolsas para participantes que, de outra forma, não poderiam comparecer. Inscreva-se para uma bolsa de U$ 300 usando este "),r("a",{attrs:{href:"https://forms.gle/jwxVYjDYs31t1YmKA",target:"_blank",rel:"noopener noreferrer"}},[e._v("formulário de bolsa"),r("OutboundLink")],1)]),e._v(" "),r("h2",{attrs:{id:"quais-projetos-estarao-no-hackathon"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#quais-projetos-estarao-no-hackathon"}},[e._v("#")]),e._v(" Quais projetos estarão no Hackathon?")]),e._v(" "),r("p",[e._v("Os projetos vão desde um plug-in GeoJSON para frictionless-py, à código Python para trabalhar com Datapackages em CKAN, à criação de um site estático para listar todos os conjuntos de dados Frictionless no GitHub até à criação de novos tutoriais para código Frictionless."),r("br"),e._v("\nTodos os projetos serão adicionados ao painel do evento em "),r("a",{attrs:{href:"https://frictionless-hackathon.herokuapp.com/event/1#top",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://frictionless-hackathon.herokuapp.com/event/1#top"),r("OutboundLink")],1),e._v(", mantido por "),r("a",{attrs:{href:"https://dribdat.cc/",target:"_blank",rel:"noopener noreferrer"}},[e._v("DribDat"),r("OutboundLink")],1),e._v("."),r("br"),e._v("\nInteressado em trabalhar em seu próprio projeto? Envia-nos um email!")]),e._v(" "),r("h2",{attrs:{id:"eu-tenho-duvidas"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#eu-tenho-duvidas"}},[e._v("#")]),e._v(" Eu tenho dúvidas…")]),e._v(" "),r("p",[e._v("Envie um e-mail para "),r("a",{attrs:{href:"mailto:frictionlessdata@okfn.org"}},[e._v("frictionlessdata@okfn.org")]),e._v(" se você tiver dúvidas ou quiser apoiar o Hackathon.")])])}),[],!1,null,null,null);a.default=t.exports}}]); \ No newline at end of file diff --git a/assets/js/183.35379f02.js b/assets/js/184.3d950b5b.js similarity index 98% rename from assets/js/183.35379f02.js rename to assets/js/184.3d950b5b.js index becd16fac..b5ecedb2b 100644 --- a/assets/js/183.35379f02.js +++ b/assets/js/184.3d950b5b.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[183],{724:function(t,e,a){"use strict";a.r(e);var o=a(29),r=Object(o.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"join-the-frictionless-data-community-for-a-two-day-virtual-hackathon-on-7-8-october"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-the-frictionless-data-community-for-a-two-day-virtual-hackathon-on-7-8-october"}},[t._v("#")]),t._v(" Join the Frictionless Data community for a two-day virtual Hackathon on 7-8 October!")]),t._v(" "),a("blockquote",[a("p",[t._v("Registration is now open using this form: "),a("a",{attrs:{href:"https://forms.gle/ZhrVfSBrNy2UPRZc9",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://forms.gle/ZhrVfSBrNy2UPRZc9"),a("OutboundLink")],1)])]),t._v(" "),a("blockquote",[a("p",[t._v("See the Participation Guide at the bottom for more info!")])]),t._v(" "),a("h2",{attrs:{id:"what-s-a-hackathon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-s-a-hackathon"}},[t._v("#")]),t._v(" What’s a hackathon?")]),t._v(" "),a("p",[t._v("You’ll work within a group of other Frictionless users to create new project prototypes based on existing Frictionless open source code. For example, use the new "),a("a",{attrs:{href:"https://livemark.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Livemark"),a("OutboundLink")],1),t._v(" tool to create websites that display data-driven storytelling, or use Frictionless React "),a("a",{attrs:{href:"https://components.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Components"),a("OutboundLink")],1),t._v(" to add data validation to your application.")]),t._v(" "),a("h2",{attrs:{id:"who-should-participate-in-this-hackathon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#who-should-participate-in-this-hackathon"}},[t._v("#")]),t._v(" Who should participate in this hackathon?")]),t._v(" "),a("p",[t._v("We’re looking for contributions of all sizes and skill levels! Some skills that you would bring include: coding in Python (other languages supported too!), writing documentation, project management, having ideas, design skills, and general enthusiasm! You’ll be in a team, so you can learn from each other and help each other. You don’t have to be familiar with Frictionless yet - you can learn that during the event.")]),t._v(" "),a("h2",{attrs:{id:"why-should-i-participate"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#why-should-i-participate"}},[t._v("#")]),t._v(" Why should I participate?")]),t._v(" "),a("p",[t._v("First of all, it will be fun! You’ll meet other Frictionless users and learn something new. This is also an opportunity where you’ll have the uninterrupted support of the Frictionless core team to help you realize your prototype. Also, there will be prizes (details to be announced later).")]),t._v(" "),a("h2",{attrs:{id:"when-will-the-hackathon-occur"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#when-will-the-hackathon-occur"}},[t._v("#")]),t._v(" When will the hackathon occur?")]),t._v(" "),a("p",[t._v("The hackathon will be virtual and occur on 7-8 October. The event will start at 9am CEST on 7 October, and will end at 6pm CEST on 8 October. This will allow people from around the world to participate during a time that works for them. We will be using Github and Zoom to coordinate and work virtually. Teams will be able to form before the event occurs so you can start coordinating early and hit the ground running.")]),t._v(" "),a("h2",{attrs:{id:"sign-me-up"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sign-me-up"}},[t._v("#")]),t._v(" Sign me up!")]),t._v(" "),a("p",[t._v("Use "),a("a",{attrs:{href:"https://forms.gle/ZhrVfSBrNy2UPRZc9",target:"_blank",rel:"noopener noreferrer"}},[t._v("this form"),a("OutboundLink")],1),t._v(" to register. The event will be free, and we will also have some scholarships for attendees that would otherwise be unable to attend. Apply for a $300 scholarship using this "),a("a",{attrs:{href:"https://forms.gle/jwxVYjDYs31t1YmKA",target:"_blank",rel:"noopener noreferrer"}},[t._v("scholarship form"),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("h2",{attrs:{id:"what-projects-will-be-at-the-hackathon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-projects-will-be-at-the-hackathon"}},[t._v("#")]),t._v(" What projects will be at the Hackathon?")]),t._v(" "),a("p",[t._v("Projects will range from a GeoJSON Plugin for frictionless-py, to Python code to work with Datapackages in CKAN, to creating a static site to list all the Frictionless datasets on GitHub, to creating new tutorials for Frictionless code."),a("br"),t._v("\nAll of the projects will be added to the event dashboard at "),a("a",{attrs:{href:"https://frictionless-hackathon.herokuapp.com/event/1#top",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://frictionless-hackathon.herokuapp.com/event/1#top"),a("OutboundLink")],1),t._v(", powered by "),a("a",{attrs:{href:"https://dribdat.cc/",target:"_blank",rel:"noopener noreferrer"}},[t._v("DribDat"),a("OutboundLink")],1),t._v("."),a("br"),t._v("\nInterested in working on your own project? Email us!")]),t._v(" "),a("h2",{attrs:{id:"i-have-questions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#i-have-questions"}},[t._v("#")]),t._v(" I have questions…")]),t._v(" "),a("p",[t._v("Please email us at "),a("a",{attrs:{href:"mailto:frictionlessdata@okfn.org"}},[t._v("frictionlessdata@okfn.org")]),t._v(" if you have questions or would like to support the Hackathon.")]),t._v(" "),a("h1",{attrs:{id:"participation-guide"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#participation-guide"}},[t._v("#")]),t._v(" Participation Guide")]),t._v(" "),a("p",[t._v("("),a("a",{attrs:{href:"https://docs.google.com/document/d/e/2PACX-1vReWY9N26SbveoCM7Ra4wEry8k7a5rCa3UzpBijfU_mmyME58DRDKmu0QUmx75mif4367IZdtLijFzO/pub",target:"_blank",rel:"noopener noreferrer"}},[t._v("Here is a link to the Guide"),a("OutboundLink")],1),t._v(")")]),t._v(" "),a("iframe",{attrs:{width:"730",height:"500",src:"https://docs.google.com/document/d/e/2PACX-1vReWY9N26SbveoCM7Ra4wEry8k7a5rCa3UzpBijfU_mmyME58DRDKmu0QUmx75mif4367IZdtLijFzO/pub?embedded=true"}})])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[184],{724:function(t,e,a){"use strict";a.r(e);var o=a(29),r=Object(o.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"join-the-frictionless-data-community-for-a-two-day-virtual-hackathon-on-7-8-october"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-the-frictionless-data-community-for-a-two-day-virtual-hackathon-on-7-8-october"}},[t._v("#")]),t._v(" Join the Frictionless Data community for a two-day virtual Hackathon on 7-8 October!")]),t._v(" "),a("blockquote",[a("p",[t._v("Registration is now open using this form: "),a("a",{attrs:{href:"https://forms.gle/ZhrVfSBrNy2UPRZc9",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://forms.gle/ZhrVfSBrNy2UPRZc9"),a("OutboundLink")],1)])]),t._v(" "),a("blockquote",[a("p",[t._v("See the Participation Guide at the bottom for more info!")])]),t._v(" "),a("h2",{attrs:{id:"what-s-a-hackathon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-s-a-hackathon"}},[t._v("#")]),t._v(" What’s a hackathon?")]),t._v(" "),a("p",[t._v("You’ll work within a group of other Frictionless users to create new project prototypes based on existing Frictionless open source code. For example, use the new "),a("a",{attrs:{href:"https://livemark.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Livemark"),a("OutboundLink")],1),t._v(" tool to create websites that display data-driven storytelling, or use Frictionless React "),a("a",{attrs:{href:"https://components.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Components"),a("OutboundLink")],1),t._v(" to add data validation to your application.")]),t._v(" "),a("h2",{attrs:{id:"who-should-participate-in-this-hackathon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#who-should-participate-in-this-hackathon"}},[t._v("#")]),t._v(" Who should participate in this hackathon?")]),t._v(" "),a("p",[t._v("We’re looking for contributions of all sizes and skill levels! Some skills that you would bring include: coding in Python (other languages supported too!), writing documentation, project management, having ideas, design skills, and general enthusiasm! You’ll be in a team, so you can learn from each other and help each other. You don’t have to be familiar with Frictionless yet - you can learn that during the event.")]),t._v(" "),a("h2",{attrs:{id:"why-should-i-participate"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#why-should-i-participate"}},[t._v("#")]),t._v(" Why should I participate?")]),t._v(" "),a("p",[t._v("First of all, it will be fun! You’ll meet other Frictionless users and learn something new. This is also an opportunity where you’ll have the uninterrupted support of the Frictionless core team to help you realize your prototype. Also, there will be prizes (details to be announced later).")]),t._v(" "),a("h2",{attrs:{id:"when-will-the-hackathon-occur"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#when-will-the-hackathon-occur"}},[t._v("#")]),t._v(" When will the hackathon occur?")]),t._v(" "),a("p",[t._v("The hackathon will be virtual and occur on 7-8 October. The event will start at 9am CEST on 7 October, and will end at 6pm CEST on 8 October. This will allow people from around the world to participate during a time that works for them. We will be using Github and Zoom to coordinate and work virtually. Teams will be able to form before the event occurs so you can start coordinating early and hit the ground running.")]),t._v(" "),a("h2",{attrs:{id:"sign-me-up"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sign-me-up"}},[t._v("#")]),t._v(" Sign me up!")]),t._v(" "),a("p",[t._v("Use "),a("a",{attrs:{href:"https://forms.gle/ZhrVfSBrNy2UPRZc9",target:"_blank",rel:"noopener noreferrer"}},[t._v("this form"),a("OutboundLink")],1),t._v(" to register. The event will be free, and we will also have some scholarships for attendees that would otherwise be unable to attend. Apply for a $300 scholarship using this "),a("a",{attrs:{href:"https://forms.gle/jwxVYjDYs31t1YmKA",target:"_blank",rel:"noopener noreferrer"}},[t._v("scholarship form"),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("h2",{attrs:{id:"what-projects-will-be-at-the-hackathon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-projects-will-be-at-the-hackathon"}},[t._v("#")]),t._v(" What projects will be at the Hackathon?")]),t._v(" "),a("p",[t._v("Projects will range from a GeoJSON Plugin for frictionless-py, to Python code to work with Datapackages in CKAN, to creating a static site to list all the Frictionless datasets on GitHub, to creating new tutorials for Frictionless code."),a("br"),t._v("\nAll of the projects will be added to the event dashboard at "),a("a",{attrs:{href:"https://frictionless-hackathon.herokuapp.com/event/1#top",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://frictionless-hackathon.herokuapp.com/event/1#top"),a("OutboundLink")],1),t._v(", powered by "),a("a",{attrs:{href:"https://dribdat.cc/",target:"_blank",rel:"noopener noreferrer"}},[t._v("DribDat"),a("OutboundLink")],1),t._v("."),a("br"),t._v("\nInterested in working on your own project? Email us!")]),t._v(" "),a("h2",{attrs:{id:"i-have-questions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#i-have-questions"}},[t._v("#")]),t._v(" I have questions…")]),t._v(" "),a("p",[t._v("Please email us at "),a("a",{attrs:{href:"mailto:frictionlessdata@okfn.org"}},[t._v("frictionlessdata@okfn.org")]),t._v(" if you have questions or would like to support the Hackathon.")]),t._v(" "),a("h1",{attrs:{id:"participation-guide"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#participation-guide"}},[t._v("#")]),t._v(" Participation Guide")]),t._v(" "),a("p",[t._v("("),a("a",{attrs:{href:"https://docs.google.com/document/d/e/2PACX-1vReWY9N26SbveoCM7Ra4wEry8k7a5rCa3UzpBijfU_mmyME58DRDKmu0QUmx75mif4367IZdtLijFzO/pub",target:"_blank",rel:"noopener noreferrer"}},[t._v("Here is a link to the Guide"),a("OutboundLink")],1),t._v(")")]),t._v(" "),a("iframe",{attrs:{width:"730",height:"500",src:"https://docs.google.com/document/d/e/2PACX-1vReWY9N26SbveoCM7Ra4wEry8k7a5rCa3UzpBijfU_mmyME58DRDKmu0QUmx75mif4367IZdtLijFzO/pub?embedded=true"}})])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/184.0b3ac47e.js b/assets/js/185.bf2ed6d3.js similarity index 99% rename from assets/js/184.0b3ac47e.js rename to assets/js/185.bf2ed6d3.js index ca37fc669..06d2978a6 100644 --- a/assets/js/184.0b3ac47e.js +++ b/assets/js/185.bf2ed6d3.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[184],{725:function(t,a,e){"use strict";e.r(a);var r=e(29),s=Object(r.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"frictionless-data"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#frictionless-data"}},[t._v("#")]),t._v(" Frictionless Data")]),t._v(" "),e("p",[e("big",[e("strong",[t._v("Get a quick introduction to Frictionless in “5 minutes”.")])])],1),t._v(" "),e("p",[t._v("Frictionless Data is a progressive open-source framework for building data infrastructure – data management, data integration, data flows, etc. It includes various data standards and provides software to work with data.")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("This introduction assumes some basic knowledge about data. If you are new to working with data we recommend starting with the first module, “What is Data?”, at "),e("a",{attrs:{href:"https://schoolofdata.org/",target:"_blank",rel:"noopener noreferrer"}},[t._v("School of Data"),e("OutboundLink")],1),t._v(".")])]),t._v(" "),e("h2",{attrs:{id:"why-frictionless"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#why-frictionless"}},[t._v("#")]),t._v(" Why Frictionless?")]),t._v(" "),e("p",[t._v("The Frictionless Data project aims to make it easier to work with data - by reducing common data workflow issues (what we call "),e("em",[t._v("friction")]),t._v("). Frictionless Data consists of two main parts, software and standards.")]),t._v(" "),e("p",[e("img",{attrs:{src:"/img/introduction/structure.png",alt:"Structure"}})]),t._v(" "),e("h3",{attrs:{id:"frictionless-software"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#frictionless-software"}},[t._v("#")]),t._v(" Frictionless Software")]),t._v(" "),e("p",[t._v("The software is based on a suite of data standards that have been designed to make it easy to describe data structure and content so that data is more interoperable, easier to understand, and quicker to use. There are several aspects to the Frictionless software, including two high-level data frameworks (for Python and JavaScript), 10 low-level libraries for other languages, like R, and also visual interfaces and applications. You can read more about how to use the software (and find documentation) on the "),e("a",{attrs:{href:"/projects"}},[t._v("projects")]),t._v(" page.")]),t._v(" "),e("p",[t._v("For example, here is a validation report created by the "),e("a",{attrs:{href:"https://repository.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Frictionless Repository"),e("OutboundLink")],1),t._v(" software. Data validation is one of the main focuses of Frictionless Data and this is a good visual representation of how the project might help to reveal common problems working with data.")]),t._v(" "),e("p",[e("img",{attrs:{src:"/img/introduction/report.png",alt:"Report"}})]),t._v(" "),e("h3",{attrs:{id:"frictionless-standards"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#frictionless-standards"}},[t._v("#")]),t._v(" Frictionless Standards")]),t._v(" "),e("p",[t._v("The Standards (aka Specifications) help to describe data. The core specification is called a "),e("strong",[t._v("Data Package")]),t._v(", which is a simple container format used to describe and package a collection of data files. The format provides a contract for data interoperability that supports frictionless delivery, installation and management of data.")]),t._v(" "),e("p",[t._v("A Data Package can contain any kind of data. At the same time, Data Packages can be specialized and enriched for specific types of data so there are, for example, Tabular Data Packages for tabular data, Geo Data Packages for geo data, etc.")]),t._v(" "),e("p",[t._v("To learn more about Data Packages and the other specifications, check out the "),e("a",{attrs:{href:"/projects"}},[t._v("projects")]),t._v(" page or watch this video to learn more about the motivation behind packaging data.")]),t._v(" "),e("iframe",{attrs:{width:"730",height:"400",src:"https://www.youtube.com/embed/lWHKVXxuci0",frameborder:"0",allow:"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),t._v(" "),e("h2",{attrs:{id:"how-can-i-use-frictionless"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#how-can-i-use-frictionless"}},[t._v("#")]),t._v(" How can I use Frictionless?")]),t._v(" "),e("p",[t._v("You can use Frictionless to describe your data (add metadata and schemas), validate your data, and transform your data. You can also write custom data standards based on the Frictionless specifications. For example, you can use Frictionless to:")]),t._v(" "),e("ul",[e("li",[t._v("easily add metadata to your data before you publish it.")]),t._v(" "),e("li",[t._v("quickly validate your data to check the data quality before you share it.")]),t._v(" "),e("li",[t._v("build a declarative pipeline to clean and process data before analyzing it.")])]),t._v(" "),e("p",[t._v("Usually, new users start by trying out the software. The software gives you an ability to work with Frictionless using visual interfaces or programming languages.")]),t._v(" "),e("p",[t._v("As a new user you might not need to dive too deeply into the standards as our software incapsulates its concepts. On the other hand, once you feel comfortable with Frictionless Software you might start reading Frictionless Standards to get a better understanding of the things happening under the hood or to start creating your metadata descriptors more proficiently.")]),t._v(" "),e("h2",{attrs:{id:"who-uses-frictionless"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#who-uses-frictionless"}},[t._v("#")]),t._v(" Who uses Frictionless?")]),t._v(" "),e("p",[t._v("The Frictionless Data project has a very diverse audience, ranging from climate scientists, to humanities researchers, to government data centers.")]),t._v(" "),e("p",[e("img",{attrs:{src:"/img/introduction/audience.png",alt:"Audience"}})]),t._v(" "),e("p",[t._v("During our project development we have had various collaborations with institutions and individuals. We keep track of our "),e("a",{attrs:{href:"/tag/pilot"}},[t._v("Pilots")]),t._v(" and "),e("a",{attrs:{href:"/tag/case-studies"}},[t._v("Case Studies")]),t._v(" with blog posts, and we welcome our community to share their experiences using our standards and software. Generally speaking, you can apply Frictionless in almost every field where you work with data. Your Frictionless use case could range from a simple data table validation to writing complex data pipelines.")]),t._v(" "),e("h2",{attrs:{id:"ready-for-more"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ready-for-more"}},[t._v("#")]),t._v(" Ready for more?")]),t._v(" "),e("p",[t._v("As a next step, we recommend you start using one of our "),e("a",{attrs:{href:"/projects"}},[t._v("Software")]),t._v(" projects, get known our "),e("a",{attrs:{href:"/projects"}},[t._v("Standards")]),t._v(" or read about other user experience in "),e("a",{attrs:{href:"/tag/pilot"}},[t._v("Pilots")]),t._v(" and "),e("a",{attrs:{href:"/tag/case-studies"}},[t._v("Case Studies")]),t._v(" sections. Also, we welcome you to reach out on "),e("a",{attrs:{href:"https://join.slack.com/t/frictionlessdata/shared_invite/zt-17kpbffnm-tRfDW_wJgOw8tJVLvZTrBg",target:"_blank",rel:"noopener noreferrer"}},[t._v("Slack"),e("OutboundLink")],1),t._v(" or "),e("a",{attrs:{href:"https://matrix.to/#/#frictionlessdata:matrix.okfn.org",target:"_blank",rel:"noopener noreferrer"}},[t._v("Matrix"),e("OutboundLink")],1),t._v(" to say hi or ask questions!")])])}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[185],{725:function(t,a,e){"use strict";e.r(a);var r=e(29),s=Object(r.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"frictionless-data"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#frictionless-data"}},[t._v("#")]),t._v(" Frictionless Data")]),t._v(" "),e("p",[e("big",[e("strong",[t._v("Get a quick introduction to Frictionless in “5 minutes”.")])])],1),t._v(" "),e("p",[t._v("Frictionless Data is a progressive open-source framework for building data infrastructure – data management, data integration, data flows, etc. It includes various data standards and provides software to work with data.")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("This introduction assumes some basic knowledge about data. If you are new to working with data we recommend starting with the first module, “What is Data?”, at "),e("a",{attrs:{href:"https://schoolofdata.org/",target:"_blank",rel:"noopener noreferrer"}},[t._v("School of Data"),e("OutboundLink")],1),t._v(".")])]),t._v(" "),e("h2",{attrs:{id:"why-frictionless"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#why-frictionless"}},[t._v("#")]),t._v(" Why Frictionless?")]),t._v(" "),e("p",[t._v("The Frictionless Data project aims to make it easier to work with data - by reducing common data workflow issues (what we call "),e("em",[t._v("friction")]),t._v("). Frictionless Data consists of two main parts, software and standards.")]),t._v(" "),e("p",[e("img",{attrs:{src:"/img/introduction/structure.png",alt:"Structure"}})]),t._v(" "),e("h3",{attrs:{id:"frictionless-software"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#frictionless-software"}},[t._v("#")]),t._v(" Frictionless Software")]),t._v(" "),e("p",[t._v("The software is based on a suite of data standards that have been designed to make it easy to describe data structure and content so that data is more interoperable, easier to understand, and quicker to use. There are several aspects to the Frictionless software, including two high-level data frameworks (for Python and JavaScript), 10 low-level libraries for other languages, like R, and also visual interfaces and applications. You can read more about how to use the software (and find documentation) on the "),e("a",{attrs:{href:"/projects"}},[t._v("projects")]),t._v(" page.")]),t._v(" "),e("p",[t._v("For example, here is a validation report created by the "),e("a",{attrs:{href:"https://repository.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Frictionless Repository"),e("OutboundLink")],1),t._v(" software. Data validation is one of the main focuses of Frictionless Data and this is a good visual representation of how the project might help to reveal common problems working with data.")]),t._v(" "),e("p",[e("img",{attrs:{src:"/img/introduction/report.png",alt:"Report"}})]),t._v(" "),e("h3",{attrs:{id:"frictionless-standards"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#frictionless-standards"}},[t._v("#")]),t._v(" Frictionless Standards")]),t._v(" "),e("p",[t._v("The Standards (aka Specifications) help to describe data. The core specification is called a "),e("strong",[t._v("Data Package")]),t._v(", which is a simple container format used to describe and package a collection of data files. The format provides a contract for data interoperability that supports frictionless delivery, installation and management of data.")]),t._v(" "),e("p",[t._v("A Data Package can contain any kind of data. At the same time, Data Packages can be specialized and enriched for specific types of data so there are, for example, Tabular Data Packages for tabular data, Geo Data Packages for geo data, etc.")]),t._v(" "),e("p",[t._v("To learn more about Data Packages and the other specifications, check out the "),e("a",{attrs:{href:"/projects"}},[t._v("projects")]),t._v(" page or watch this video to learn more about the motivation behind packaging data.")]),t._v(" "),e("iframe",{attrs:{width:"730",height:"400",src:"https://www.youtube.com/embed/lWHKVXxuci0",frameborder:"0",allow:"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""}}),t._v(" "),e("h2",{attrs:{id:"how-can-i-use-frictionless"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#how-can-i-use-frictionless"}},[t._v("#")]),t._v(" How can I use Frictionless?")]),t._v(" "),e("p",[t._v("You can use Frictionless to describe your data (add metadata and schemas), validate your data, and transform your data. You can also write custom data standards based on the Frictionless specifications. For example, you can use Frictionless to:")]),t._v(" "),e("ul",[e("li",[t._v("easily add metadata to your data before you publish it.")]),t._v(" "),e("li",[t._v("quickly validate your data to check the data quality before you share it.")]),t._v(" "),e("li",[t._v("build a declarative pipeline to clean and process data before analyzing it.")])]),t._v(" "),e("p",[t._v("Usually, new users start by trying out the software. The software gives you an ability to work with Frictionless using visual interfaces or programming languages.")]),t._v(" "),e("p",[t._v("As a new user you might not need to dive too deeply into the standards as our software incapsulates its concepts. On the other hand, once you feel comfortable with Frictionless Software you might start reading Frictionless Standards to get a better understanding of the things happening under the hood or to start creating your metadata descriptors more proficiently.")]),t._v(" "),e("h2",{attrs:{id:"who-uses-frictionless"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#who-uses-frictionless"}},[t._v("#")]),t._v(" Who uses Frictionless?")]),t._v(" "),e("p",[t._v("The Frictionless Data project has a very diverse audience, ranging from climate scientists, to humanities researchers, to government data centers.")]),t._v(" "),e("p",[e("img",{attrs:{src:"/img/introduction/audience.png",alt:"Audience"}})]),t._v(" "),e("p",[t._v("During our project development we have had various collaborations with institutions and individuals. We keep track of our "),e("a",{attrs:{href:"/tag/pilot"}},[t._v("Pilots")]),t._v(" and "),e("a",{attrs:{href:"/tag/case-studies"}},[t._v("Case Studies")]),t._v(" with blog posts, and we welcome our community to share their experiences using our standards and software. Generally speaking, you can apply Frictionless in almost every field where you work with data. Your Frictionless use case could range from a simple data table validation to writing complex data pipelines.")]),t._v(" "),e("h2",{attrs:{id:"ready-for-more"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ready-for-more"}},[t._v("#")]),t._v(" Ready for more?")]),t._v(" "),e("p",[t._v("As a next step, we recommend you start using one of our "),e("a",{attrs:{href:"/projects"}},[t._v("Software")]),t._v(" projects, get known our "),e("a",{attrs:{href:"/projects"}},[t._v("Standards")]),t._v(" or read about other user experience in "),e("a",{attrs:{href:"/tag/pilot"}},[t._v("Pilots")]),t._v(" and "),e("a",{attrs:{href:"/tag/case-studies"}},[t._v("Case Studies")]),t._v(" sections. Also, we welcome you to reach out on "),e("a",{attrs:{href:"https://join.slack.com/t/frictionlessdata/shared_invite/zt-17kpbffnm-tRfDW_wJgOw8tJVLvZTrBg",target:"_blank",rel:"noopener noreferrer"}},[t._v("Slack"),e("OutboundLink")],1),t._v(" or "),e("a",{attrs:{href:"https://matrix.to/#/#frictionlessdata:matrix.okfn.org",target:"_blank",rel:"noopener noreferrer"}},[t._v("Matrix"),e("OutboundLink")],1),t._v(" to say hi or ask questions!")])])}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/185.e28478e7.js b/assets/js/186.49582628.js similarity index 99% rename from assets/js/185.e28478e7.js rename to assets/js/186.49582628.js index 3bb33c64f..dd5ae1db4 100644 --- a/assets/js/185.e28478e7.js +++ b/assets/js/186.49582628.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[185],{726:function(a,t,e){"use strict";e.r(t);var r=e(29),i=Object(r.a)({},(function(){var a=this,t=a.$createElement,e=a._self._c||t;return e("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[e("h1",{attrs:{id:"frictionless-projects"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#frictionless-projects"}},[a._v("#")]),a._v(" Frictionless Projects")]),a._v(" "),e("p",[e("big",[e("strong",[a._v("Open source projects for working with data.")])])],1),a._v(" "),e("p",[a._v("The Frictionless Data project provides a rich set of open source projects for working with data. There are tools, a visual application, and software for many programming platforms.")]),a._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[a._v("TIP")]),a._v(" "),e("p",[a._v("This document is an overview of the Frictionless Projects - for more in-depth information, please click on one of the projects below and you will be redirected to a corresponding documentation portal.")])]),a._v(" "),e("h2",{attrs:{id:"software-and-standards"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#software-and-standards"}},[a._v("#")]),a._v(" Software and Standards")]),a._v(" "),e("p",[a._v("It’s a list of core Frictionless Projects developed by the core Frictionless Team:")]),a._v(" "),e("div",{staticClass:"main-section black-text"},[e("div",{staticClass:"features flex flex-row flex-wrap py-4"},[e("div",{staticClass:"w-full md:w-1/3 feature flex justify-center"},[e("div",{staticClass:"px-8 text-center"},[e("a",{attrs:{href:"https://application.frictionlessdata.io/",target:"_blank"}},[e("img",{staticStyle:{width:"200px",border:"dashed 1px #555",padding:"10px","border-radius":"10px"},attrs:{src:"/img/software/components.png"}}),a._v(" "),e("h3",[a._v("Frictionless Application")])]),a._v(" "),e("p",[a._v("Data management application for Browser and Desktop for working with tabular data.")])])]),a._v(" "),e("div",{staticClass:"w-full md:w-1/3 feature flex justify-center"},[e("div",{staticClass:"px-8 text-center"},[e("a",{attrs:{href:"https://framework.frictionlessdata.io",target:"_blank"}},[e("img",{staticStyle:{width:"200px",border:"dashed 1px #555",padding:"10px","border-radius":"10px"},attrs:{src:"/img/software/framework.png"}}),a._v(" "),e("h3",[a._v("Frictionless Framework")])]),a._v(" "),e("p",[a._v("Python framework to describe, extract, validate, and transform tabular data.")])])]),a._v(" "),e("div",{staticClass:"w-full md:w-1/3 feature flex justify-center"},[e("div",{staticClass:"px-8 text-center"},[e("a",{attrs:{href:"https://livemark.frictionlessdata.io",target:"_blank"}},[e("img",{staticStyle:{width:"200px",border:"dashed 1px #555",padding:"10px","border-radius":"10px"},attrs:{src:"/img/software/livemark.png"}}),a._v(" "),e("h3",[a._v("Livemark")])]),a._v(" "),e("p",[a._v("Static site generator that extends Markdown with charts, tables, scripts, and more.")])])]),a._v(" "),e("div",{staticClass:"w-full md:w-1/3 feature flex justify-center"},[e("div",{staticClass:"px-8 text-center"},[e("a",{attrs:{href:"https://repository.frictionlessdata.io",target:"_blank"}},[e("img",{staticStyle:{width:"200px",border:"dashed 1px #555",padding:"10px","border-radius":"10px"},attrs:{src:"/img/software/repository.png"}}),a._v(" "),e("h3",[a._v("Frictionless Repository")])]),a._v(" "),e("p",[a._v("Github Action allowing you to validate tabular data on every commit to your repository.")])])]),a._v(" "),e("div",{staticClass:"w-full md:w-1/3 feature flex justify-center"},[e("div",{staticClass:"px-8 text-center"},[e("a",{attrs:{href:"https://specs.frictionlessdata.io",target:"_blank"}},[e("img",{staticStyle:{width:"200px",border:"dashed 1px #555",padding:"10px","border-radius":"10px"},attrs:{src:"/img/software/libraries.png"}}),a._v(" "),e("h3",[a._v("Frictionless Standards")])]),a._v(" "),e("p",[a._v("Lightweight yet comprehensive data standards as Data Package and Table Schema.")])])]),a._v(" "),e("div",{staticClass:"w-full md:w-1/3 feature flex justify-center"},[e("div",{staticClass:"px-8 text-center"},[e("a",{attrs:{href:"https://datahub.io/",target:"_blank"}},[e("img",{staticStyle:{width:"200px",border:"dashed 1px #555",padding:"10px","border-radius":"10px"},attrs:{src:"/img/software/datahub.png"}}),a._v(" "),e("h3",[a._v("Datahub")])]),a._v(" "),e("p",[a._v("A web platform built on Frictionless Data that allows discovering, publishing, and sharing data.")])])])])]),a._v(" "),e("h2",{attrs:{id:"which-software-is-right-for-me"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#which-software-is-right-for-me"}},[a._v("#")]),a._v(" Which software is right for me?")]),a._v(" "),e("p",[a._v("Choosing the right tool for the job can be challenging. Here are our recommendations:")]),a._v(" "),e("h3",{attrs:{id:"visual-interfaces"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#visual-interfaces"}},[a._v("#")]),a._v(" Visual Interfaces")]),a._v(" "),e("p",[a._v("If you prefer to use a visual interface:")]),a._v(" "),e("ul",[e("li",[e("strong",[a._v("Frictionless Application (coming soon):")]),a._v(" We’re working on our brand-new Frictionless Application that will be released in 2021. Until then, you can use "),e("a",{attrs:{href:"https://create.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[a._v("Data Package Creator"),e("OutboundLink")],1),a._v(" to create and edit data packages and "),e("a",{attrs:{href:"http://try.goodtables.io/",target:"_blank",rel:"noopener noreferrer"}},[a._v("Goodtables On-Demand"),e("OutboundLink")],1),a._v(" for data validation.")]),a._v(" "),e("li",[e("strong",[a._v("Frictionless Repository:")]),a._v(" For ensuring the quality of your data on Github, Frictionless provides "),e("a",{attrs:{href:"https://repository.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[a._v("Frictionless Repository"),e("OutboundLink")],1),a._v(". This creates visual quality reports and validation statuses on Github everytime you commit your data.")]),a._v(" "),e("li",[e("strong",[a._v("Datahub:")]),a._v(" For discovering, publishing, and sharing data we have "),e("a",{attrs:{href:"https://datahub.io/",target:"_blank",rel:"noopener noreferrer"}},[a._v("Datahub"),e("OutboundLink")],1),a._v(" which is built on Frictionless software. Using this software as a service, you can sign-in and find, share, and publish quality data.")])]),a._v(" "),e("h3",{attrs:{id:"command-line-interfaces"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#command-line-interfaces"}},[a._v("#")]),a._v(" Command-line Interfaces")]),a._v(" "),e("p",[a._v("If you like to write commands in the command-line interface:")]),a._v(" "),e("ul",[e("li",[e("strong",[a._v("Frictionless Framework:")]),a._v(" For describing, extracting, validating, and transforming data, Frictionless provides the "),e("a",{attrs:{href:"https://framework.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[a._v("Frictionless Framework’s"),e("OutboundLink")],1),a._v(" command-line interface. Using the “frictionless” command you can achieve many goals without needing to write Python code.")]),a._v(" "),e("li",[e("strong",[a._v("Livemark:")]),a._v(" For data journalists and technical writers we have a project called "),e("a",{attrs:{href:"https://livemark.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[a._v("Livemark"),e("OutboundLink")],1),a._v(". Using the “livemark” command in the CLI you can publish a website that incorporates Frictionless functions and is powered by markdown articles.")]),a._v(" "),e("li",[e("strong",[a._v("Datahub:")]),a._v(" Frictionless provides a command-line tool called "),e("a",{attrs:{href:"https://datahub.io/docs/features/data-cli",target:"_blank",rel:"noopener noreferrer"}},[a._v("Data"),e("OutboundLink")],1),a._v(" which is an important part of the Datahub project. The “data” command is available for a JavaScript environment and it helps you to interact with data stored on Datahub.")])]),a._v(" "),e("h3",{attrs:{id:"programming-languages"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#programming-languages"}},[a._v("#")]),a._v(" Programming Languages")]),a._v(" "),e("p",[a._v("If you want to use or write your own Frictionless code:")]),a._v(" "),e("ul",[e("li",[e("strong",[a._v("Frictionless Framework:")]),a._v(" For general data programming in Python, the "),e("a",{attrs:{href:"https://framework.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[a._v("Frictionless Framework"),e("OutboundLink")],1),a._v(" is the way to go. You can describe, extract, validate, and transform your data. It’s also possible to extend the framework by adding new validation checks, transformation steps, etc. In addition, there is a lightweight version of the framework written in "),e("a",{attrs:{href:"https://github.com/frictionlessdata/frictionless-js",target:"_blank",rel:"noopener noreferrer"}},[a._v("JavaScript"),e("OutboundLink")],1),a._v(".")]),a._v(" "),e("li",[e("strong",[a._v("Frictionless Universe:")]),a._v(" For Frictionless implementations in other languages like "),e("a",{attrs:{href:"https://github.com/frictionlessdata/frictionless-r",target:"_blank",rel:"noopener noreferrer"}},[a._v("R"),e("OutboundLink")],1),a._v(" or Java and visual components, we have "),e("RouterLink",{attrs:{to:"/universe/"}},[a._v("Frictionless Universe")]),a._v(". Each library provides metadata validation and editing along with other low-level data operations like reading or writing tabular files.")],1)]),a._v(" "),e("h2",{attrs:{id:"which-standard-is-right-for-me"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#which-standard-is-right-for-me"}},[a._v("#")]),a._v(" Which standard is right for me?")]),a._v(" "),e("p",[a._v("To help you pick a standard to use, we’ve categorized them according to how many files you are working with.")]),a._v(" "),e("h3",{attrs:{id:"collection-of-files"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#collection-of-files"}},[a._v("#")]),a._v(" Collection of Files")]),a._v(" "),e("p",[a._v("If you have more than one file:")]),a._v(" "),e("ul",[e("li",[e("strong",[a._v("Data Package")]),a._v(": Use a "),e("a",{attrs:{href:"https://specs.frictionlessdata.io/data-package/",target:"_blank",rel:"noopener noreferrer"}},[a._v("Data Package"),e("OutboundLink")],1),a._v(" for describing datasets of any file format. Data Package is a basic container format for describing a collection of data in a single “package”. It provides a basis for convenient delivery, installation and management of datasets.")]),a._v(" "),e("li",[e("strong",[a._v("Fiscal Data Package")]),a._v(": For fiscal data, use a "),e("a",{attrs:{href:"https://specs.frictionlessdata.io/fiscal-data-package/",target:"_blank",rel:"noopener noreferrer"}},[a._v("Fiscal Data Package"),e("OutboundLink")],1),a._v(". This lightweight and user-oriented format is for publishing and consuming fiscal data. It concerns with how fiscal data should be packaged and providing means for publishers to best convey the meaning of the data - so it can be optimally used by consumers.")])]),a._v(" "),e("h3",{attrs:{id:"individual-file"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#individual-file"}},[a._v("#")]),a._v(" Individual File")]),a._v(" "),e("p",[a._v("If you need to describe an individual file:")]),a._v(" "),e("ul",[e("li",[e("strong",[a._v("Data Resource")]),a._v(": Use "),e("a",{attrs:{href:"https://specs.frictionlessdata.io/data-resource/",target:"_blank",rel:"noopener noreferrer"}},[a._v("Data Resource"),e("OutboundLink")],1),a._v(" for describing individual files. Data Resource is a format to describe and package a single data resource of any file format, such as an individual table or file. It can also be extended for specific use cases.")]),a._v(" "),e("li",[e("strong",[a._v("Tabular Data Resource")]),a._v(": For tabular data, use the Data Resource extension called "),e("a",{attrs:{href:"https://specs.frictionlessdata.io/tabular-data-resource/",target:"_blank",rel:"noopener noreferrer"}},[a._v("Tabular Data Resource"),e("OutboundLink")],1),a._v(". Tabular Data Resource describes a single "),e("em",[a._v("tabular")]),a._v(" data resource such as a CSV file. It includes support for metadata and schemas to describe the data content and structure.")]),a._v(" "),e("li",[e("strong",[a._v("Table Schema")]),a._v(": To describe only the schema of a tabular data file, use "),e("a",{attrs:{href:"https://specs.frictionlessdata.io/table-schema/",target:"_blank",rel:"noopener noreferrer"}},[a._v("Table Schema"),e("OutboundLink")],1),a._v(". Table Schema is a format to declare a schema for tabular data. The schema is designed to be expressible in JSON. You can have a schema as independent metadata or use it with a Tabular Data Resource.")]),a._v(" "),e("li",[e("strong",[a._v("CSV Dialect")]),a._v(": To specify the CSV dialect within a schema, use "),e("a",{attrs:{href:"https://specs.frictionlessdata.io/csv-dialect/",target:"_blank",rel:"noopener noreferrer"}},[a._v("CSV Dialect"),e("OutboundLink")],1),a._v(". This defines a format to describe the various dialects of CSV files in a language agnostic manner. This is important because CSV files might be published in different forms, making it harder to read the data without errors. CSV Dialect can be used with a Tabular Data Resource to provide additional information.")])])])}),[],!1,null,null,null);t.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[186],{726:function(a,t,e){"use strict";e.r(t);var r=e(29),i=Object(r.a)({},(function(){var a=this,t=a.$createElement,e=a._self._c||t;return e("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[e("h1",{attrs:{id:"frictionless-projects"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#frictionless-projects"}},[a._v("#")]),a._v(" Frictionless Projects")]),a._v(" "),e("p",[e("big",[e("strong",[a._v("Open source projects for working with data.")])])],1),a._v(" "),e("p",[a._v("The Frictionless Data project provides a rich set of open source projects for working with data. There are tools, a visual application, and software for many programming platforms.")]),a._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[a._v("TIP")]),a._v(" "),e("p",[a._v("This document is an overview of the Frictionless Projects - for more in-depth information, please click on one of the projects below and you will be redirected to a corresponding documentation portal.")])]),a._v(" "),e("h2",{attrs:{id:"software-and-standards"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#software-and-standards"}},[a._v("#")]),a._v(" Software and Standards")]),a._v(" "),e("p",[a._v("It’s a list of core Frictionless Projects developed by the core Frictionless Team:")]),a._v(" "),e("div",{staticClass:"main-section black-text"},[e("div",{staticClass:"features flex flex-row flex-wrap py-4"},[e("div",{staticClass:"w-full md:w-1/3 feature flex justify-center"},[e("div",{staticClass:"px-8 text-center"},[e("a",{attrs:{href:"https://application.frictionlessdata.io/",target:"_blank"}},[e("img",{staticStyle:{width:"200px",border:"dashed 1px #555",padding:"10px","border-radius":"10px"},attrs:{src:"/img/software/components.png"}}),a._v(" "),e("h3",[a._v("Frictionless Application")])]),a._v(" "),e("p",[a._v("Data management application for Browser and Desktop for working with tabular data.")])])]),a._v(" "),e("div",{staticClass:"w-full md:w-1/3 feature flex justify-center"},[e("div",{staticClass:"px-8 text-center"},[e("a",{attrs:{href:"https://framework.frictionlessdata.io",target:"_blank"}},[e("img",{staticStyle:{width:"200px",border:"dashed 1px #555",padding:"10px","border-radius":"10px"},attrs:{src:"/img/software/framework.png"}}),a._v(" "),e("h3",[a._v("Frictionless Framework")])]),a._v(" "),e("p",[a._v("Python framework to describe, extract, validate, and transform tabular data.")])])]),a._v(" "),e("div",{staticClass:"w-full md:w-1/3 feature flex justify-center"},[e("div",{staticClass:"px-8 text-center"},[e("a",{attrs:{href:"https://livemark.frictionlessdata.io",target:"_blank"}},[e("img",{staticStyle:{width:"200px",border:"dashed 1px #555",padding:"10px","border-radius":"10px"},attrs:{src:"/img/software/livemark.png"}}),a._v(" "),e("h3",[a._v("Livemark")])]),a._v(" "),e("p",[a._v("Static site generator that extends Markdown with charts, tables, scripts, and more.")])])]),a._v(" "),e("div",{staticClass:"w-full md:w-1/3 feature flex justify-center"},[e("div",{staticClass:"px-8 text-center"},[e("a",{attrs:{href:"https://repository.frictionlessdata.io",target:"_blank"}},[e("img",{staticStyle:{width:"200px",border:"dashed 1px #555",padding:"10px","border-radius":"10px"},attrs:{src:"/img/software/repository.png"}}),a._v(" "),e("h3",[a._v("Frictionless Repository")])]),a._v(" "),e("p",[a._v("Github Action allowing you to validate tabular data on every commit to your repository.")])])]),a._v(" "),e("div",{staticClass:"w-full md:w-1/3 feature flex justify-center"},[e("div",{staticClass:"px-8 text-center"},[e("a",{attrs:{href:"https://specs.frictionlessdata.io",target:"_blank"}},[e("img",{staticStyle:{width:"200px",border:"dashed 1px #555",padding:"10px","border-radius":"10px"},attrs:{src:"/img/software/libraries.png"}}),a._v(" "),e("h3",[a._v("Frictionless Standards")])]),a._v(" "),e("p",[a._v("Lightweight yet comprehensive data standards as Data Package and Table Schema.")])])]),a._v(" "),e("div",{staticClass:"w-full md:w-1/3 feature flex justify-center"},[e("div",{staticClass:"px-8 text-center"},[e("a",{attrs:{href:"https://datahub.io/",target:"_blank"}},[e("img",{staticStyle:{width:"200px",border:"dashed 1px #555",padding:"10px","border-radius":"10px"},attrs:{src:"/img/software/datahub.png"}}),a._v(" "),e("h3",[a._v("Datahub")])]),a._v(" "),e("p",[a._v("A web platform built on Frictionless Data that allows discovering, publishing, and sharing data.")])])])])]),a._v(" "),e("h2",{attrs:{id:"which-software-is-right-for-me"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#which-software-is-right-for-me"}},[a._v("#")]),a._v(" Which software is right for me?")]),a._v(" "),e("p",[a._v("Choosing the right tool for the job can be challenging. Here are our recommendations:")]),a._v(" "),e("h3",{attrs:{id:"visual-interfaces"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#visual-interfaces"}},[a._v("#")]),a._v(" Visual Interfaces")]),a._v(" "),e("p",[a._v("If you prefer to use a visual interface:")]),a._v(" "),e("ul",[e("li",[e("strong",[a._v("Frictionless Application (coming soon):")]),a._v(" We’re working on our brand-new Frictionless Application that will be released in 2021. Until then, you can use "),e("a",{attrs:{href:"https://create.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[a._v("Data Package Creator"),e("OutboundLink")],1),a._v(" to create and edit data packages and "),e("a",{attrs:{href:"http://try.goodtables.io/",target:"_blank",rel:"noopener noreferrer"}},[a._v("Goodtables On-Demand"),e("OutboundLink")],1),a._v(" for data validation.")]),a._v(" "),e("li",[e("strong",[a._v("Frictionless Repository:")]),a._v(" For ensuring the quality of your data on Github, Frictionless provides "),e("a",{attrs:{href:"https://repository.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[a._v("Frictionless Repository"),e("OutboundLink")],1),a._v(". This creates visual quality reports and validation statuses on Github everytime you commit your data.")]),a._v(" "),e("li",[e("strong",[a._v("Datahub:")]),a._v(" For discovering, publishing, and sharing data we have "),e("a",{attrs:{href:"https://datahub.io/",target:"_blank",rel:"noopener noreferrer"}},[a._v("Datahub"),e("OutboundLink")],1),a._v(" which is built on Frictionless software. Using this software as a service, you can sign-in and find, share, and publish quality data.")])]),a._v(" "),e("h3",{attrs:{id:"command-line-interfaces"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#command-line-interfaces"}},[a._v("#")]),a._v(" Command-line Interfaces")]),a._v(" "),e("p",[a._v("If you like to write commands in the command-line interface:")]),a._v(" "),e("ul",[e("li",[e("strong",[a._v("Frictionless Framework:")]),a._v(" For describing, extracting, validating, and transforming data, Frictionless provides the "),e("a",{attrs:{href:"https://framework.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[a._v("Frictionless Framework’s"),e("OutboundLink")],1),a._v(" command-line interface. Using the “frictionless” command you can achieve many goals without needing to write Python code.")]),a._v(" "),e("li",[e("strong",[a._v("Livemark:")]),a._v(" For data journalists and technical writers we have a project called "),e("a",{attrs:{href:"https://livemark.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[a._v("Livemark"),e("OutboundLink")],1),a._v(". Using the “livemark” command in the CLI you can publish a website that incorporates Frictionless functions and is powered by markdown articles.")]),a._v(" "),e("li",[e("strong",[a._v("Datahub:")]),a._v(" Frictionless provides a command-line tool called "),e("a",{attrs:{href:"https://datahub.io/docs/features/data-cli",target:"_blank",rel:"noopener noreferrer"}},[a._v("Data"),e("OutboundLink")],1),a._v(" which is an important part of the Datahub project. The “data” command is available for a JavaScript environment and it helps you to interact with data stored on Datahub.")])]),a._v(" "),e("h3",{attrs:{id:"programming-languages"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#programming-languages"}},[a._v("#")]),a._v(" Programming Languages")]),a._v(" "),e("p",[a._v("If you want to use or write your own Frictionless code:")]),a._v(" "),e("ul",[e("li",[e("strong",[a._v("Frictionless Framework:")]),a._v(" For general data programming in Python, the "),e("a",{attrs:{href:"https://framework.frictionlessdata.io/",target:"_blank",rel:"noopener noreferrer"}},[a._v("Frictionless Framework"),e("OutboundLink")],1),a._v(" is the way to go. You can describe, extract, validate, and transform your data. It’s also possible to extend the framework by adding new validation checks, transformation steps, etc. In addition, there is a lightweight version of the framework written in "),e("a",{attrs:{href:"https://github.com/frictionlessdata/frictionless-js",target:"_blank",rel:"noopener noreferrer"}},[a._v("JavaScript"),e("OutboundLink")],1),a._v(".")]),a._v(" "),e("li",[e("strong",[a._v("Frictionless Universe:")]),a._v(" For Frictionless implementations in other languages like "),e("a",{attrs:{href:"https://github.com/frictionlessdata/frictionless-r",target:"_blank",rel:"noopener noreferrer"}},[a._v("R"),e("OutboundLink")],1),a._v(" or Java and visual components, we have "),e("RouterLink",{attrs:{to:"/universe/"}},[a._v("Frictionless Universe")]),a._v(". Each library provides metadata validation and editing along with other low-level data operations like reading or writing tabular files.")],1)]),a._v(" "),e("h2",{attrs:{id:"which-standard-is-right-for-me"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#which-standard-is-right-for-me"}},[a._v("#")]),a._v(" Which standard is right for me?")]),a._v(" "),e("p",[a._v("To help you pick a standard to use, we’ve categorized them according to how many files you are working with.")]),a._v(" "),e("h3",{attrs:{id:"collection-of-files"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#collection-of-files"}},[a._v("#")]),a._v(" Collection of Files")]),a._v(" "),e("p",[a._v("If you have more than one file:")]),a._v(" "),e("ul",[e("li",[e("strong",[a._v("Data Package")]),a._v(": Use a "),e("a",{attrs:{href:"https://specs.frictionlessdata.io/data-package/",target:"_blank",rel:"noopener noreferrer"}},[a._v("Data Package"),e("OutboundLink")],1),a._v(" for describing datasets of any file format. Data Package is a basic container format for describing a collection of data in a single “package”. It provides a basis for convenient delivery, installation and management of datasets.")]),a._v(" "),e("li",[e("strong",[a._v("Fiscal Data Package")]),a._v(": For fiscal data, use a "),e("a",{attrs:{href:"https://specs.frictionlessdata.io/fiscal-data-package/",target:"_blank",rel:"noopener noreferrer"}},[a._v("Fiscal Data Package"),e("OutboundLink")],1),a._v(". This lightweight and user-oriented format is for publishing and consuming fiscal data. It concerns with how fiscal data should be packaged and providing means for publishers to best convey the meaning of the data - so it can be optimally used by consumers.")])]),a._v(" "),e("h3",{attrs:{id:"individual-file"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#individual-file"}},[a._v("#")]),a._v(" Individual File")]),a._v(" "),e("p",[a._v("If you need to describe an individual file:")]),a._v(" "),e("ul",[e("li",[e("strong",[a._v("Data Resource")]),a._v(": Use "),e("a",{attrs:{href:"https://specs.frictionlessdata.io/data-resource/",target:"_blank",rel:"noopener noreferrer"}},[a._v("Data Resource"),e("OutboundLink")],1),a._v(" for describing individual files. Data Resource is a format to describe and package a single data resource of any file format, such as an individual table or file. It can also be extended for specific use cases.")]),a._v(" "),e("li",[e("strong",[a._v("Tabular Data Resource")]),a._v(": For tabular data, use the Data Resource extension called "),e("a",{attrs:{href:"https://specs.frictionlessdata.io/tabular-data-resource/",target:"_blank",rel:"noopener noreferrer"}},[a._v("Tabular Data Resource"),e("OutboundLink")],1),a._v(". Tabular Data Resource describes a single "),e("em",[a._v("tabular")]),a._v(" data resource such as a CSV file. It includes support for metadata and schemas to describe the data content and structure.")]),a._v(" "),e("li",[e("strong",[a._v("Table Schema")]),a._v(": To describe only the schema of a tabular data file, use "),e("a",{attrs:{href:"https://specs.frictionlessdata.io/table-schema/",target:"_blank",rel:"noopener noreferrer"}},[a._v("Table Schema"),e("OutboundLink")],1),a._v(". Table Schema is a format to declare a schema for tabular data. The schema is designed to be expressible in JSON. You can have a schema as independent metadata or use it with a Tabular Data Resource.")]),a._v(" "),e("li",[e("strong",[a._v("CSV Dialect")]),a._v(": To specify the CSV dialect within a schema, use "),e("a",{attrs:{href:"https://specs.frictionlessdata.io/csv-dialect/",target:"_blank",rel:"noopener noreferrer"}},[a._v("CSV Dialect"),e("OutboundLink")],1),a._v(". This defines a format to describe the various dialects of CSV files in a language agnostic manner. This is important because CSV files might be published in different forms, making it harder to read the data without errors. CSV Dialect can be used with a Tabular Data Resource to provide additional information.")])])])}),[],!1,null,null,null);t.default=i.exports}}]); \ No newline at end of file diff --git a/assets/js/186.bae39aa4.js b/assets/js/187.876491a8.js similarity index 99% rename from assets/js/186.bae39aa4.js rename to assets/js/187.876491a8.js index c4a11ba14..68b9eecb6 100644 --- a/assets/js/186.bae39aa4.js +++ b/assets/js/187.876491a8.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[186],{727:function(t,a,e){"use strict";e.r(a);var r=e(29),n=Object(r.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"frictionless-universe"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#frictionless-universe"}},[t._v("#")]),t._v(" Frictionless Universe")]),t._v(" "),e("p",[t._v("Community-driven projects based on Frictionless Software and Standards:")]),t._v(" "),e("h2",{attrs:{id:"visual"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#visual"}},[t._v("#")]),t._v(" Visual")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"https://github.com/qcif/data-curator",target:"_blank",rel:"noopener noreferrer"}},[t._v("Data Curator"),e("OutboundLink")],1)]),t._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/delimiter",target:"_blank",rel:"noopener noreferrer"}},[t._v("Delimiter"),e("OutboundLink")],1)])]),t._v(" "),e("h2",{attrs:{id:"python"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#python"}},[t._v("#")]),t._v(" Python")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/datapackage-py",target:"_blank",rel:"noopener noreferrer"}},[t._v("datapackage-py"),e("OutboundLink")],1)]),t._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/tableschema-py",target:"_blank",rel:"noopener noreferrer"}},[t._v("tableschema-py"),e("OutboundLink")],1)]),t._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/datapackage-pipelines",target:"_blank",rel:"noopener noreferrer"}},[t._v("datapackage-pipelines"),e("OutboundLink")],1)]),t._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/frictionless-ckan-mapper",target:"_blank",rel:"noopener noreferrer"}},[t._v("frictionless-ckan-mapper"),e("OutboundLink")],1)])]),t._v(" "),e("h2",{attrs:{id:"javascript"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#javascript"}},[t._v("#")]),t._v(" JavaScript")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/frictionless-js",target:"_blank",rel:"noopener noreferrer"}},[t._v("frictionless-js"),e("OutboundLink")],1)]),t._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/datapackage-js",target:"_blank",rel:"noopener noreferrer"}},[t._v("datapackage-js"),e("OutboundLink")],1)]),t._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/tableschema-js",target:"_blank",rel:"noopener noreferrer"}},[t._v("tableschema-js"),e("OutboundLink")],1)]),t._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/datapackage-render-js",target:"_blank",rel:"noopener noreferrer"}},[t._v("datapackage-render-js"),e("OutboundLink")],1)]),t._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/components",target:"_blank",rel:"noopener noreferrer"}},[t._v("frictionless-components"),e("OutboundLink")],1)])]),t._v(" "),e("h2",{attrs:{id:"r"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#r"}},[t._v("#")]),t._v(" R")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/frictionless-r",target:"_blank",rel:"noopener noreferrer"}},[t._v("frictionless-r"),e("OutboundLink")],1)]),t._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/datapackage-r",target:"_blank",rel:"noopener noreferrer"}},[t._v("datapackage-r"),e("OutboundLink")],1)]),t._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/tableschema-r",target:"_blank",rel:"noopener noreferrer"}},[t._v("tableschema-r"),e("OutboundLink")],1)])]),t._v(" "),e("h2",{attrs:{id:"ruby"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ruby"}},[t._v("#")]),t._v(" Ruby")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/datapackage-rb",target:"_blank",rel:"noopener noreferrer"}},[t._v("datapackage-rb"),e("OutboundLink")],1)]),t._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/tableschema-rb",target:"_blank",rel:"noopener noreferrer"}},[t._v("tableschema-rb"),e("OutboundLink")],1)])]),t._v(" "),e("h2",{attrs:{id:"php"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#php"}},[t._v("#")]),t._v(" PHP")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/datapackage-php",target:"_blank",rel:"noopener noreferrer"}},[t._v("datapackage-php"),e("OutboundLink")],1)]),t._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/tableschema-php",target:"_blank",rel:"noopener noreferrer"}},[t._v("tableschema-php"),e("OutboundLink")],1)])]),t._v(" "),e("h2",{attrs:{id:"java"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#java"}},[t._v("#")]),t._v(" Java")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/datapackage-java",target:"_blank",rel:"noopener noreferrer"}},[t._v("datapackage-java"),e("OutboundLink")],1)]),t._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/tableschema-java",target:"_blank",rel:"noopener noreferrer"}},[t._v("tableschema-java"),e("OutboundLink")],1)])]),t._v(" "),e("h2",{attrs:{id:"swift"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#swift"}},[t._v("#")]),t._v(" Swift")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/datapackage-swift",target:"_blank",rel:"noopener noreferrer"}},[t._v("datapackage-swift"),e("OutboundLink")],1)]),t._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/tableschema-swift",target:"_blank",rel:"noopener noreferrer"}},[t._v("tableschema-swift"),e("OutboundLink")],1)])]),t._v(" "),e("h2",{attrs:{id:"go"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#go"}},[t._v("#")]),t._v(" Go")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/datapackage-go",target:"_blank",rel:"noopener noreferrer"}},[t._v("datapackage-go"),e("OutboundLink")],1)]),t._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/tableschema-go",target:"_blank",rel:"noopener noreferrer"}},[t._v("tableschema-go"),e("OutboundLink")],1)])]),t._v(" "),e("h2",{attrs:{id:"julia"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#julia"}},[t._v("#")]),t._v(" Julia")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/datapackage.jl",target:"_blank",rel:"noopener noreferrer"}},[t._v("datapackage-jl"),e("OutboundLink")],1)]),t._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/tableschema.jl",target:"_blank",rel:"noopener noreferrer"}},[t._v("tableschema-jl"),e("OutboundLink")],1)])])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[187],{728:function(t,a,e){"use strict";e.r(a);var r=e(29),n=Object(r.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"frictionless-universe"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#frictionless-universe"}},[t._v("#")]),t._v(" Frictionless Universe")]),t._v(" "),e("p",[t._v("Community-driven projects based on Frictionless Software and Standards:")]),t._v(" "),e("h2",{attrs:{id:"visual"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#visual"}},[t._v("#")]),t._v(" Visual")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"https://github.com/qcif/data-curator",target:"_blank",rel:"noopener noreferrer"}},[t._v("Data Curator"),e("OutboundLink")],1)]),t._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/delimiter",target:"_blank",rel:"noopener noreferrer"}},[t._v("Delimiter"),e("OutboundLink")],1)])]),t._v(" "),e("h2",{attrs:{id:"python"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#python"}},[t._v("#")]),t._v(" Python")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/datapackage-py",target:"_blank",rel:"noopener noreferrer"}},[t._v("datapackage-py"),e("OutboundLink")],1)]),t._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/tableschema-py",target:"_blank",rel:"noopener noreferrer"}},[t._v("tableschema-py"),e("OutboundLink")],1)]),t._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/datapackage-pipelines",target:"_blank",rel:"noopener noreferrer"}},[t._v("datapackage-pipelines"),e("OutboundLink")],1)]),t._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/frictionless-ckan-mapper",target:"_blank",rel:"noopener noreferrer"}},[t._v("frictionless-ckan-mapper"),e("OutboundLink")],1)])]),t._v(" "),e("h2",{attrs:{id:"javascript"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#javascript"}},[t._v("#")]),t._v(" JavaScript")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/frictionless-js",target:"_blank",rel:"noopener noreferrer"}},[t._v("frictionless-js"),e("OutboundLink")],1)]),t._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/datapackage-js",target:"_blank",rel:"noopener noreferrer"}},[t._v("datapackage-js"),e("OutboundLink")],1)]),t._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/tableschema-js",target:"_blank",rel:"noopener noreferrer"}},[t._v("tableschema-js"),e("OutboundLink")],1)]),t._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/datapackage-render-js",target:"_blank",rel:"noopener noreferrer"}},[t._v("datapackage-render-js"),e("OutboundLink")],1)]),t._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/components",target:"_blank",rel:"noopener noreferrer"}},[t._v("frictionless-components"),e("OutboundLink")],1)])]),t._v(" "),e("h2",{attrs:{id:"r"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#r"}},[t._v("#")]),t._v(" R")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/frictionless-r",target:"_blank",rel:"noopener noreferrer"}},[t._v("frictionless-r"),e("OutboundLink")],1)]),t._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/datapackage-r",target:"_blank",rel:"noopener noreferrer"}},[t._v("datapackage-r"),e("OutboundLink")],1)]),t._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/tableschema-r",target:"_blank",rel:"noopener noreferrer"}},[t._v("tableschema-r"),e("OutboundLink")],1)])]),t._v(" "),e("h2",{attrs:{id:"ruby"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ruby"}},[t._v("#")]),t._v(" Ruby")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/datapackage-rb",target:"_blank",rel:"noopener noreferrer"}},[t._v("datapackage-rb"),e("OutboundLink")],1)]),t._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/tableschema-rb",target:"_blank",rel:"noopener noreferrer"}},[t._v("tableschema-rb"),e("OutboundLink")],1)])]),t._v(" "),e("h2",{attrs:{id:"php"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#php"}},[t._v("#")]),t._v(" PHP")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/datapackage-php",target:"_blank",rel:"noopener noreferrer"}},[t._v("datapackage-php"),e("OutboundLink")],1)]),t._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/tableschema-php",target:"_blank",rel:"noopener noreferrer"}},[t._v("tableschema-php"),e("OutboundLink")],1)])]),t._v(" "),e("h2",{attrs:{id:"java"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#java"}},[t._v("#")]),t._v(" Java")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/datapackage-java",target:"_blank",rel:"noopener noreferrer"}},[t._v("datapackage-java"),e("OutboundLink")],1)]),t._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/tableschema-java",target:"_blank",rel:"noopener noreferrer"}},[t._v("tableschema-java"),e("OutboundLink")],1)])]),t._v(" "),e("h2",{attrs:{id:"swift"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#swift"}},[t._v("#")]),t._v(" Swift")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/datapackage-swift",target:"_blank",rel:"noopener noreferrer"}},[t._v("datapackage-swift"),e("OutboundLink")],1)]),t._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/tableschema-swift",target:"_blank",rel:"noopener noreferrer"}},[t._v("tableschema-swift"),e("OutboundLink")],1)])]),t._v(" "),e("h2",{attrs:{id:"go"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#go"}},[t._v("#")]),t._v(" Go")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/datapackage-go",target:"_blank",rel:"noopener noreferrer"}},[t._v("datapackage-go"),e("OutboundLink")],1)]),t._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/tableschema-go",target:"_blank",rel:"noopener noreferrer"}},[t._v("tableschema-go"),e("OutboundLink")],1)])]),t._v(" "),e("h2",{attrs:{id:"julia"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#julia"}},[t._v("#")]),t._v(" Julia")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/datapackage.jl",target:"_blank",rel:"noopener noreferrer"}},[t._v("datapackage-jl"),e("OutboundLink")],1)]),t._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/frictionlessdata/tableschema.jl",target:"_blank",rel:"noopener noreferrer"}},[t._v("tableschema-jl"),e("OutboundLink")],1)])])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/187.17a2397b.js b/assets/js/188.b96e3c32.js similarity index 99% rename from assets/js/187.17a2397b.js rename to assets/js/188.b96e3c32.js index ff7bd31a6..7bf9cfddf 100644 --- a/assets/js/187.17a2397b.js +++ b/assets/js/188.b96e3c32.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[187],{729:function(e,t,o){"use strict";o.r(t);var a=o(29),i=Object(a.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"code-of-conduct"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#code-of-conduct"}},[e._v("#")]),e._v(" Code of Conduct")]),e._v(" "),o("h2",{attrs:{id:"introduction"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#introduction"}},[e._v("#")]),e._v(" Introduction")]),e._v(" "),o("p",[e._v("The goal of this Code of Conduct is to make explicit the type of participation that is expected, and the behaviour that is unacceptable. These guidelines are to be adhered to by all Frictionless Data team members, all partners on a given project, and all other participants.")]),e._v(" "),o("p",[e._v("This Code of Conduct applies to all the projects that Frictionless Data hosts/organises and describes the standards of behaviour that we expect all our partners to observe when taking part in our projects. We expect all voices to be welcomed at our events and strive to empower everyone to feel able to participate fully.")]),e._v(" "),o("h2",{attrs:{id:"this-code-is-applicable-to"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#this-code-is-applicable-to"}},[e._v("#")]),e._v(" This Code is applicable to")]),e._v(" "),o("ul",[o("li",[e._v("All public areas of participation, including but not limited to discussion forums, mailing lists, issue trackers, social media, and in-person venues such as conferences and workshops.")]),e._v(" "),o("li",[e._v("All private areas of participation, including but not limited to email and closed platforms such as Slack or Matrix.")]),e._v(" "),o("li",[e._v("Any project that Frictionless Data leads on or partners in.")])]),e._v(" "),o("h2",{attrs:{id:"what-we-expect"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#what-we-expect"}},[e._v("#")]),e._v(" What we expect")]),e._v(" "),o("p",[e._v("The following behaviours are expected from all project participants, including Frictionless Data core team members, project partners, and all other participants.")]),e._v(" "),o("ul",[o("li",[e._v("Lead by example by being considerate in your actions and decisions.")]),e._v(" "),o("li",[e._v("Be respectful in speech and action, especially in disagreement.")]),e._v(" "),o("li",[e._v("Refrain from demeaning, discriminatory, or harassing behaviour and speech.")]),e._v(" "),o("li",[e._v("We all make mistakes, and when we do, we take responsibility for them.")]),e._v(" "),o("li",[e._v("Be mindful of your fellow participants. If someone is in distress, or if someone is in violation of these guidelines, reach out.")])]),e._v(" "),o("h2",{attrs:{id:"what-we-find-unacceptable"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#what-we-find-unacceptable"}},[e._v("#")]),e._v(" What we find unacceptable")]),e._v(" "),o("p",[e._v("We do not tolerate harassment of participants at our events in any form. Harassment includes offensive verbal comments, deliberate intimidation, harassing photography or recording, inappropriate physical contact and unwanted sexual attention. Anything that makes someone feel uncomfortable could be deemed harassment. For more information and examples about what constitutes harassment, please refer to "),o("a",{attrs:{href:"https://www.opencon2018.org/code_of_conduct",target:"_blank",rel:"noopener noreferrer"}},[e._v("OpenCon’s Code of Conduct in Brief"),o("OutboundLink")],1),e._v(" and the "),o("a",{attrs:{href:"http://openhardware.science/gosh-2017/gosh-code-of-conduct/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gathering for Open Source Hardware’s examples of behaviour"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[e._v("This non-exhaustive list shows examples of behaviours that are unacceptable from all participants:")]),e._v(" "),o("ul",[o("li",[e._v("Violence and threats of violence.")]),e._v(" "),o("li",[e._v("Derogatory comments of any form, including related to gender and expression, sexual orientation, disability, mental illness, neuro(a)typicality, physical appearance, body size, race, religion, age, or socio-economic status.")]),e._v(" "),o("li",[e._v("Sexual images or behaviour.")]),e._v(" "),o("li",[e._v("Posting or threatening to post other people’s personally identifying information (“doxing”).")]),e._v(" "),o("li",[e._v("Deliberate misgendering or use of former names, or improper titles.")]),e._v(" "),o("li",[e._v("Inappropriate photography or recording.")]),e._v(" "),o("li",[e._v("Physical contact without affirmative consent.")]),e._v(" "),o("li",[e._v("Unwelcome sexual attention. This includes, sexualised comments or jokes; inappropriate touching, groping, and unwelcome sexual advances.")]),e._v(" "),o("li",[e._v("Deliberate intimidation, stalking or following (online or in person).")]),e._v(" "),o("li",[e._v("Sustained disruption of conference events, including talks and presentations.")]),e._v(" "),o("li",[e._v("Advocating for, or encouraging, any of the above behaviour.")])]),e._v(" "),o("h2",{attrs:{id:"consequences-of-unacceptable-behaviour"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#consequences-of-unacceptable-behaviour"}},[e._v("#")]),e._v(" Consequences of unacceptable behaviour")]),e._v(" "),o("p",[e._v("Unacceptable behaviour from any participant in any public or private forum around projects we are involved in, including those with decision-making authority, will not be tolerated.")]),e._v(" "),o("p",[e._v("Anyone asked to stop unacceptable behaviour is expected to comply immediately.")]),e._v(" "),o("p",[e._v("If a participant engages in unacceptable behaviour, any action deemed appropriate will be taken, up to and including a temporary ban, permanent expulsion from participatory forums, or reporting to local law enforcement for criminal offences.")]),e._v(" "),o("h2",{attrs:{id:"reporting"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#reporting"}},[e._v("#")]),e._v(" Reporting")]),e._v(" "),o("p",[e._v("If you are subject to, or witness, unacceptable behaviour, or have any other concerns, please email "),o("a",{attrs:{href:"mailto:frictionlessdata@okfn.org"}},[e._v("frictionlessdata@okfn.org")]),e._v(". We will handle all reports with discretion, and you can report anonymously if you wish using "),o("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSfoly-CZT9ZONcns4uG7BsoxGObRqgTlI6NdfvlYSCRVyy_QQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("this form"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[e._v("In your report, please do your best to include:")]),e._v(" "),o("p",[e._v("Your contact information (unless you wish to report anonymously)")]),e._v(" "),o("ul",[o("li",[e._v("Identifying information (e.g. names, nicknames, pseudonyms) of the participant who has violated the Code of Conduct")]),e._v(" "),o("li",[e._v("The behaviour that was in violation")]),e._v(" "),o("li",[e._v("The approximate time of the behaviour")]),e._v(" "),o("li",[e._v("If possible, where the Code of Conduct violation happened")]),e._v(" "),o("li",[e._v("The circumstances surrounding the incident")]),e._v(" "),o("li",[e._v("Other people involved in the incident")]),e._v(" "),o("li",[e._v("If you believe the incident is ongoing, please let us know")]),e._v(" "),o("li",[e._v("If there is a publicly available record (e.g. mailing list record), please include a link")]),e._v(" "),o("li",[e._v("Any additional helpful information")])]),e._v(" "),o("p",[e._v("We will fully investigate any reports, follow up with the reportee (unless it is an anonymous report), and we will work with the reportee (unless anonymous) to decide what action to take. If the complaint is about someone on the response team, that person will recuse themselves from handling the response.")]),e._v(" "),o("h2",{attrs:{id:"confidentiality"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#confidentiality"}},[e._v("#")]),e._v(" Confidentiality")]),e._v(" "),o("p",[e._v("All reports will be kept confidential. When we discuss incidents with people who are reported, we will anonymize details as much as we can to protect reporter privacy. In some cases we may determine that a public statement will need to be made. If that’s the case, the identities of all victims and reporters will remain confidential unless those individuals instruct us otherwise.")]),e._v(" "),o("h2",{attrs:{id:"license-and-attribution"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#license-and-attribution"}},[e._v("#")]),e._v(" License and attribution")]),e._v(" "),o("p",[e._v("This Code of Conduct is distributed under a "),o("a",{attrs:{href:"https://creativecommons.org/licenses/by-sa/4.0/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Creative Commons Attribution-ShareAlike license"),o("OutboundLink")],1),e._v(". It draws heavily on the "),o("a",{attrs:{href:"https://okfn.org/about/code-of-conduct/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Open Knowledge Foundation Code of Conduct"),o("OutboundLink")],1),e._v(", which is based on this "),o("a",{attrs:{href:"https://wiki.mozilla.org/Participation/Community_Gatherings/Brazil_2016/Code_of_Conduct",target:"_blank",rel:"noopener noreferrer"}},[e._v("Mozilla Code of Conduct"),o("OutboundLink")],1),e._v(", the School of Data Code of Conduct, and the "),o("a",{attrs:{href:"https://csvconf.com/coc/",target:"_blank",rel:"noopener noreferrer"}},[e._v("csv,conf Code of Conduct"),o("OutboundLink")],1),e._v(".")])])}),[],!1,null,null,null);t.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[188],{727:function(e,t,o){"use strict";o.r(t);var a=o(29),i=Object(a.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"code-of-conduct"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#code-of-conduct"}},[e._v("#")]),e._v(" Code of Conduct")]),e._v(" "),o("h2",{attrs:{id:"introduction"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#introduction"}},[e._v("#")]),e._v(" Introduction")]),e._v(" "),o("p",[e._v("The goal of this Code of Conduct is to make explicit the type of participation that is expected, and the behaviour that is unacceptable. These guidelines are to be adhered to by all Frictionless Data team members, all partners on a given project, and all other participants.")]),e._v(" "),o("p",[e._v("This Code of Conduct applies to all the projects that Frictionless Data hosts/organises and describes the standards of behaviour that we expect all our partners to observe when taking part in our projects. We expect all voices to be welcomed at our events and strive to empower everyone to feel able to participate fully.")]),e._v(" "),o("h2",{attrs:{id:"this-code-is-applicable-to"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#this-code-is-applicable-to"}},[e._v("#")]),e._v(" This Code is applicable to")]),e._v(" "),o("ul",[o("li",[e._v("All public areas of participation, including but not limited to discussion forums, mailing lists, issue trackers, social media, and in-person venues such as conferences and workshops.")]),e._v(" "),o("li",[e._v("All private areas of participation, including but not limited to email and closed platforms such as Slack or Matrix.")]),e._v(" "),o("li",[e._v("Any project that Frictionless Data leads on or partners in.")])]),e._v(" "),o("h2",{attrs:{id:"what-we-expect"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#what-we-expect"}},[e._v("#")]),e._v(" What we expect")]),e._v(" "),o("p",[e._v("The following behaviours are expected from all project participants, including Frictionless Data core team members, project partners, and all other participants.")]),e._v(" "),o("ul",[o("li",[e._v("Lead by example by being considerate in your actions and decisions.")]),e._v(" "),o("li",[e._v("Be respectful in speech and action, especially in disagreement.")]),e._v(" "),o("li",[e._v("Refrain from demeaning, discriminatory, or harassing behaviour and speech.")]),e._v(" "),o("li",[e._v("We all make mistakes, and when we do, we take responsibility for them.")]),e._v(" "),o("li",[e._v("Be mindful of your fellow participants. If someone is in distress, or if someone is in violation of these guidelines, reach out.")])]),e._v(" "),o("h2",{attrs:{id:"what-we-find-unacceptable"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#what-we-find-unacceptable"}},[e._v("#")]),e._v(" What we find unacceptable")]),e._v(" "),o("p",[e._v("We do not tolerate harassment of participants at our events in any form. Harassment includes offensive verbal comments, deliberate intimidation, harassing photography or recording, inappropriate physical contact and unwanted sexual attention. Anything that makes someone feel uncomfortable could be deemed harassment. For more information and examples about what constitutes harassment, please refer to "),o("a",{attrs:{href:"https://www.opencon2018.org/code_of_conduct",target:"_blank",rel:"noopener noreferrer"}},[e._v("OpenCon’s Code of Conduct in Brief"),o("OutboundLink")],1),e._v(" and the "),o("a",{attrs:{href:"http://openhardware.science/gosh-2017/gosh-code-of-conduct/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gathering for Open Source Hardware’s examples of behaviour"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[e._v("This non-exhaustive list shows examples of behaviours that are unacceptable from all participants:")]),e._v(" "),o("ul",[o("li",[e._v("Violence and threats of violence.")]),e._v(" "),o("li",[e._v("Derogatory comments of any form, including related to gender and expression, sexual orientation, disability, mental illness, neuro(a)typicality, physical appearance, body size, race, religion, age, or socio-economic status.")]),e._v(" "),o("li",[e._v("Sexual images or behaviour.")]),e._v(" "),o("li",[e._v("Posting or threatening to post other people’s personally identifying information (“doxing”).")]),e._v(" "),o("li",[e._v("Deliberate misgendering or use of former names, or improper titles.")]),e._v(" "),o("li",[e._v("Inappropriate photography or recording.")]),e._v(" "),o("li",[e._v("Physical contact without affirmative consent.")]),e._v(" "),o("li",[e._v("Unwelcome sexual attention. This includes, sexualised comments or jokes; inappropriate touching, groping, and unwelcome sexual advances.")]),e._v(" "),o("li",[e._v("Deliberate intimidation, stalking or following (online or in person).")]),e._v(" "),o("li",[e._v("Sustained disruption of conference events, including talks and presentations.")]),e._v(" "),o("li",[e._v("Advocating for, or encouraging, any of the above behaviour.")])]),e._v(" "),o("h2",{attrs:{id:"consequences-of-unacceptable-behaviour"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#consequences-of-unacceptable-behaviour"}},[e._v("#")]),e._v(" Consequences of unacceptable behaviour")]),e._v(" "),o("p",[e._v("Unacceptable behaviour from any participant in any public or private forum around projects we are involved in, including those with decision-making authority, will not be tolerated.")]),e._v(" "),o("p",[e._v("Anyone asked to stop unacceptable behaviour is expected to comply immediately.")]),e._v(" "),o("p",[e._v("If a participant engages in unacceptable behaviour, any action deemed appropriate will be taken, up to and including a temporary ban, permanent expulsion from participatory forums, or reporting to local law enforcement for criminal offences.")]),e._v(" "),o("h2",{attrs:{id:"reporting"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#reporting"}},[e._v("#")]),e._v(" Reporting")]),e._v(" "),o("p",[e._v("If you are subject to, or witness, unacceptable behaviour, or have any other concerns, please email "),o("a",{attrs:{href:"mailto:frictionlessdata@okfn.org"}},[e._v("frictionlessdata@okfn.org")]),e._v(". We will handle all reports with discretion, and you can report anonymously if you wish using "),o("a",{attrs:{href:"https://docs.google.com/forms/d/e/1FAIpQLSfoly-CZT9ZONcns4uG7BsoxGObRqgTlI6NdfvlYSCRVyy_QQ/viewform?usp=sf_link",target:"_blank",rel:"noopener noreferrer"}},[e._v("this form"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("p",[e._v("In your report, please do your best to include:")]),e._v(" "),o("p",[e._v("Your contact information (unless you wish to report anonymously)")]),e._v(" "),o("ul",[o("li",[e._v("Identifying information (e.g. names, nicknames, pseudonyms) of the participant who has violated the Code of Conduct")]),e._v(" "),o("li",[e._v("The behaviour that was in violation")]),e._v(" "),o("li",[e._v("The approximate time of the behaviour")]),e._v(" "),o("li",[e._v("If possible, where the Code of Conduct violation happened")]),e._v(" "),o("li",[e._v("The circumstances surrounding the incident")]),e._v(" "),o("li",[e._v("Other people involved in the incident")]),e._v(" "),o("li",[e._v("If you believe the incident is ongoing, please let us know")]),e._v(" "),o("li",[e._v("If there is a publicly available record (e.g. mailing list record), please include a link")]),e._v(" "),o("li",[e._v("Any additional helpful information")])]),e._v(" "),o("p",[e._v("We will fully investigate any reports, follow up with the reportee (unless it is an anonymous report), and we will work with the reportee (unless anonymous) to decide what action to take. If the complaint is about someone on the response team, that person will recuse themselves from handling the response.")]),e._v(" "),o("h2",{attrs:{id:"confidentiality"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#confidentiality"}},[e._v("#")]),e._v(" Confidentiality")]),e._v(" "),o("p",[e._v("All reports will be kept confidential. When we discuss incidents with people who are reported, we will anonymize details as much as we can to protect reporter privacy. In some cases we may determine that a public statement will need to be made. If that’s the case, the identities of all victims and reporters will remain confidential unless those individuals instruct us otherwise.")]),e._v(" "),o("h2",{attrs:{id:"license-and-attribution"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#license-and-attribution"}},[e._v("#")]),e._v(" License and attribution")]),e._v(" "),o("p",[e._v("This Code of Conduct is distributed under a "),o("a",{attrs:{href:"https://creativecommons.org/licenses/by-sa/4.0/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Creative Commons Attribution-ShareAlike license"),o("OutboundLink")],1),e._v(". It draws heavily on the "),o("a",{attrs:{href:"https://okfn.org/about/code-of-conduct/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Open Knowledge Foundation Code of Conduct"),o("OutboundLink")],1),e._v(", which is based on this "),o("a",{attrs:{href:"https://wiki.mozilla.org/Participation/Community_Gatherings/Brazil_2016/Code_of_Conduct",target:"_blank",rel:"noopener noreferrer"}},[e._v("Mozilla Code of Conduct"),o("OutboundLink")],1),e._v(", the School of Data Code of Conduct, and the "),o("a",{attrs:{href:"https://csvconf.com/coc/",target:"_blank",rel:"noopener noreferrer"}},[e._v("csv,conf Code of Conduct"),o("OutboundLink")],1),e._v(".")])])}),[],!1,null,null,null);t.default=i.exports}}]); \ No newline at end of file diff --git a/assets/js/188.0e434990.js b/assets/js/189.ae3316ec.js similarity index 98% rename from assets/js/188.0e434990.js rename to assets/js/189.ae3316ec.js index e713b0001..b4552b103 100644 --- a/assets/js/188.0e434990.js +++ b/assets/js/189.ae3316ec.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[188],{730:function(e,t,s){"use strict";s.r(t);var o=s(29),a=Object(o.a)({},(function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[s("h1",{attrs:{id:"contribute"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#contribute"}},[e._v("#")]),e._v(" Contribute")]),e._v(" "),s("h2",{attrs:{id:"introduction"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#introduction"}},[e._v("#")]),e._v(" Introduction")]),e._v(" "),s("p",[e._v("We welcome contributions – and you don’t have to be a software developer to get involved! The first step to becoming a Frictionless Data contributor is to become a Frictionless Data user. Please read the following guidelines, and feel free to reach out to us if you have any questions. Thanks for your interest in helping make Frictionless awesome!")]),e._v(" "),s("h2",{attrs:{id:"general-guidelines"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#general-guidelines"}},[e._v("#")]),e._v(" General Guidelines")]),e._v(" "),s("h3",{attrs:{id:"reporting-a-bug-or-issue"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#reporting-a-bug-or-issue"}},[e._v("#")]),e._v(" Reporting a bug or issue:")]),e._v(" "),s("p",[e._v("We use "),s("a",{attrs:{href:"https://github.com/frictionlessdata/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),s("OutboundLink")],1),e._v(" as a code and issues hosting platform. To report a bug or propose a new feature, please open an issue. For issues with a specific code repository, please open an issue in that specific repository’s tracker on GitHub. For example: "),s("a",{attrs:{href:"https://github.com/frictionlessdata/frictionless-py/issues",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/frictionlessdata/frictionless-py/issues"),s("OutboundLink")],1)]),e._v(" "),s("h3",{attrs:{id:"give-us-feedback-suggestions-propose-a-new-idea"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#give-us-feedback-suggestions-propose-a-new-idea"}},[e._v("#")]),e._v(" Give us feedback/suggestions/propose a new idea:")]),e._v(" "),s("p",[e._v("What if the issue is not a bug but a question? Please head to the "),s("a",{attrs:{href:"https://github.com/frictionlessdata/project/discussions",target:"_blank",rel:"noopener noreferrer"}},[e._v("discussion forum"),s("OutboundLink")],1),e._v(". This is an excellent place to give us thorough feedback about your experience as a whole. In the same way, you may participate in existing discussions and make your voice heard.")]),e._v(" "),s("h3",{attrs:{id:"pull-requests"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#pull-requests"}},[e._v("#")]),e._v(" Pull requests:")]),e._v(" "),s("p",[e._v("For pull requests, we ask that you initially create an issue and then create a pull requests linked to this issue. Look for issues with “help wanted” or “first-time contributor.” We welcome pull requests from anyone!")]),e._v(" "),s("h3",{attrs:{id:"specific-guidelines"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#specific-guidelines"}},[e._v("#")]),e._v(" Specific guidelines:")]),e._v(" "),s("p",[e._v("Each individual software project has more specific contribution guidelines that you can find in the README in the project’s repository. For example: "),s("a",{attrs:{href:"https://github.com/frictionlessdata/frictionless-js#developers",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/frictionlessdata/frictionless-js#developers"),s("OutboundLink")],1)]),e._v(" "),s("h2",{attrs:{id:"documentation"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#documentation"}},[e._v("#")]),e._v(" Documentation")]),e._v(" "),s("p",[e._v("Are you seeking to advocate and educate people in the data space? We always welcome contributions to our documentation! You can help improve our documentation by opening pull requests if you find typos, have ideas to improve the clarity of the document, or want to translate the text to a non-English language. You can also write tutorials (like this one: "),s("a",{attrs:{href:"https://colab.research.google.com/drive/12RmGajHamGP5wOoAhy8N7Gchn9TmVnG-",target:"_blank",rel:"noopener noreferrer"}},[e._v("Frictionless Describe and Extract Tutorial"),s("OutboundLink")],1),e._v("). Let us know if you would like to contribute or if you are interested but need some help!")]),e._v(" "),s("h2",{attrs:{id:"share-your-work-with-us"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#share-your-work-with-us"}},[e._v("#")]),e._v(" Share your work with us!")]),e._v(" "),s("p",[e._v("Are you using Frictionless with your data? Have you spoken at a conference about using Frictionless? We would love to hear about it! We also have opportunities for blog writing and presenting at our monthly community calls - "),s("a",{attrs:{href:"mailto:frictionlessdata@okfn.org"}},[e._v("contact us")]),e._v(" to learn more!")])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[189],{729:function(e,t,s){"use strict";s.r(t);var o=s(29),a=Object(o.a)({},(function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[s("h1",{attrs:{id:"contribute"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#contribute"}},[e._v("#")]),e._v(" Contribute")]),e._v(" "),s("h2",{attrs:{id:"introduction"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#introduction"}},[e._v("#")]),e._v(" Introduction")]),e._v(" "),s("p",[e._v("We welcome contributions – and you don’t have to be a software developer to get involved! The first step to becoming a Frictionless Data contributor is to become a Frictionless Data user. Please read the following guidelines, and feel free to reach out to us if you have any questions. Thanks for your interest in helping make Frictionless awesome!")]),e._v(" "),s("h2",{attrs:{id:"general-guidelines"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#general-guidelines"}},[e._v("#")]),e._v(" General Guidelines")]),e._v(" "),s("h3",{attrs:{id:"reporting-a-bug-or-issue"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#reporting-a-bug-or-issue"}},[e._v("#")]),e._v(" Reporting a bug or issue:")]),e._v(" "),s("p",[e._v("We use "),s("a",{attrs:{href:"https://github.com/frictionlessdata/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),s("OutboundLink")],1),e._v(" as a code and issues hosting platform. To report a bug or propose a new feature, please open an issue. For issues with a specific code repository, please open an issue in that specific repository’s tracker on GitHub. For example: "),s("a",{attrs:{href:"https://github.com/frictionlessdata/frictionless-py/issues",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/frictionlessdata/frictionless-py/issues"),s("OutboundLink")],1)]),e._v(" "),s("h3",{attrs:{id:"give-us-feedback-suggestions-propose-a-new-idea"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#give-us-feedback-suggestions-propose-a-new-idea"}},[e._v("#")]),e._v(" Give us feedback/suggestions/propose a new idea:")]),e._v(" "),s("p",[e._v("What if the issue is not a bug but a question? Please head to the "),s("a",{attrs:{href:"https://github.com/frictionlessdata/project/discussions",target:"_blank",rel:"noopener noreferrer"}},[e._v("discussion forum"),s("OutboundLink")],1),e._v(". This is an excellent place to give us thorough feedback about your experience as a whole. In the same way, you may participate in existing discussions and make your voice heard.")]),e._v(" "),s("h3",{attrs:{id:"pull-requests"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#pull-requests"}},[e._v("#")]),e._v(" Pull requests:")]),e._v(" "),s("p",[e._v("For pull requests, we ask that you initially create an issue and then create a pull requests linked to this issue. Look for issues with “help wanted” or “first-time contributor.” We welcome pull requests from anyone!")]),e._v(" "),s("h3",{attrs:{id:"specific-guidelines"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#specific-guidelines"}},[e._v("#")]),e._v(" Specific guidelines:")]),e._v(" "),s("p",[e._v("Each individual software project has more specific contribution guidelines that you can find in the README in the project’s repository. For example: "),s("a",{attrs:{href:"https://github.com/frictionlessdata/frictionless-js#developers",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/frictionlessdata/frictionless-js#developers"),s("OutboundLink")],1)]),e._v(" "),s("h2",{attrs:{id:"documentation"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#documentation"}},[e._v("#")]),e._v(" Documentation")]),e._v(" "),s("p",[e._v("Are you seeking to advocate and educate people in the data space? We always welcome contributions to our documentation! You can help improve our documentation by opening pull requests if you find typos, have ideas to improve the clarity of the document, or want to translate the text to a non-English language. You can also write tutorials (like this one: "),s("a",{attrs:{href:"https://colab.research.google.com/drive/12RmGajHamGP5wOoAhy8N7Gchn9TmVnG-",target:"_blank",rel:"noopener noreferrer"}},[e._v("Frictionless Describe and Extract Tutorial"),s("OutboundLink")],1),e._v("). Let us know if you would like to contribute or if you are interested but need some help!")]),e._v(" "),s("h2",{attrs:{id:"share-your-work-with-us"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#share-your-work-with-us"}},[e._v("#")]),e._v(" Share your work with us!")]),e._v(" "),s("p",[e._v("Are you using Frictionless with your data? Have you spoken at a conference about using Frictionless? We would love to hear about it! We also have opportunities for blog writing and presenting at our monthly community calls - "),s("a",{attrs:{href:"mailto:frictionlessdata@okfn.org"}},[e._v("contact us")]),e._v(" to learn more!")])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/189.2443dbd6.js b/assets/js/190.0a697834.js similarity index 96% rename from assets/js/189.2443dbd6.js rename to assets/js/190.0a697834.js index e6caf6a3c..4aa49cdd4 100644 --- a/assets/js/189.2443dbd6.js +++ b/assets/js/190.0a697834.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[189],{728:function(t,a,e){"use strict";e.r(a);var r=e(29),n=Object(r.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"events-calendar"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#events-calendar"}},[t._v("#")]),t._v(" Events Calendar")]),t._v(" "),e("h2",{attrs:{id:"introduction"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#introduction"}},[t._v("#")]),t._v(" Introduction")]),t._v(" "),e("p",[t._v("Frictionless Data calendar with a listing of our upcoming "),e("RouterLink",{attrs:{to:"/tag/events/"}},[t._v("events")]),t._v(" including webinars, virtual hangouts, etc.")],1),t._v(" "),e("h2",{attrs:{id:"frictionless-data-monthly-community-call"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#frictionless-data-monthly-community-call"}},[t._v("#")]),t._v(" Frictionless Data Monthly Community Call")]),t._v(" "),e("p",[t._v("Join the vibrant Frictionless Data community every last Thursday of the month on a call to hear about recent project developments! You can sign up here: "),e("a",{attrs:{href:"https://forms.gle/rtK7xZw5vrwouTE98",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://forms.gle/rtK7xZw5vrwouTE98"),e("OutboundLink")],1)]),t._v(" "),e("h2",{attrs:{id:"calendar"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#calendar"}},[t._v("#")]),t._v(" Calendar")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("You can add any upcoming event to your calendar by clicking on a specific event and "),e("strong",[t._v("selecting copy to my calendar.")])])]),t._v(" "),e("iframe",{staticStyle:{border:"solid 1px #777"},attrs:{src:"https://calendar.google.com/calendar/embed?height=700&wkst=1&bgcolor=%23EF6C00&ctz=Europe%2FRome&src=b2tmbi5vcmdfaDk3bm05ZDhxcG50cXExc2ZzcWZnbTNwdTBAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ&color=%23EF6C00",width:"740",height:"700",frameborder:"0",scrolling:"no"}})])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[190],{731:function(t,a,e){"use strict";e.r(a);var r=e(29),n=Object(r.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"events-calendar"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#events-calendar"}},[t._v("#")]),t._v(" Events Calendar")]),t._v(" "),e("h2",{attrs:{id:"introduction"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#introduction"}},[t._v("#")]),t._v(" Introduction")]),t._v(" "),e("p",[t._v("Frictionless Data calendar with a listing of our upcoming "),e("RouterLink",{attrs:{to:"/tag/events/"}},[t._v("events")]),t._v(" including webinars, virtual hangouts, etc.")],1),t._v(" "),e("h2",{attrs:{id:"frictionless-data-monthly-community-call"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#frictionless-data-monthly-community-call"}},[t._v("#")]),t._v(" Frictionless Data Monthly Community Call")]),t._v(" "),e("p",[t._v("Join the vibrant Frictionless Data community every last Thursday of the month on a call to hear about recent project developments! You can sign up here: "),e("a",{attrs:{href:"https://forms.gle/rtK7xZw5vrwouTE98",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://forms.gle/rtK7xZw5vrwouTE98"),e("OutboundLink")],1)]),t._v(" "),e("h2",{attrs:{id:"calendar"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#calendar"}},[t._v("#")]),t._v(" Calendar")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("You can add any upcoming event to your calendar by clicking on a specific event and "),e("strong",[t._v("selecting copy to my calendar.")])])]),t._v(" "),e("iframe",{staticStyle:{border:"solid 1px #777"},attrs:{src:"https://calendar.google.com/calendar/embed?height=700&wkst=1&bgcolor=%23EF6C00&ctz=Europe%2FRome&src=b2tmbi5vcmdfaDk3bm05ZDhxcG50cXExc2ZzcWZnbTNwdTBAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ&color=%23EF6C00",width:"740",height:"700",frameborder:"0",scrolling:"no"}})])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/190.ae5ee300.js b/assets/js/191.ae2db3ca.js similarity index 97% rename from assets/js/190.ae5ee300.js rename to assets/js/191.ae2db3ca.js index 5e881a492..c568b49c8 100644 --- a/assets/js/190.ae5ee300.js +++ b/assets/js/191.ae2db3ca.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[190],{731:function(t,a,o){"use strict";o.r(a);var e=o(29),r=Object(e.a)({},(function(){var t=this,a=t.$createElement,o=t._self._c||a;return o("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[o("h1",{attrs:{id:"need-help"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#need-help"}},[t._v("#")]),t._v(" Need Help?")]),t._v(" "),o("p",{staticClass:"font-light text-xl"},[t._v(" We're happy to provide support! Please reach out to us by using one of the following methods:")]),t._v(" "),o("h2",{attrs:{id:"community-support"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#community-support"}},[t._v("#")]),t._v(" Community Support")]),t._v(" "),o("p",[t._v("You can ask any questions in our "),o("a",{attrs:{href:"https://join.slack.com/t/frictionlessdata/shared_invite/zt-17kpbffnm-tRfDW_wJgOw8tJVLvZTrBg",target:"_blank",rel:"noopener noreferrer"}},[t._v("Slack Community Chat room"),o("OutboundLink")],1),t._v(" (the Chat room is also accessible via "),o("a",{attrs:{href:"https://matrix.to/#/#frictionlessdata:matrix.okfn.org",target:"_blank",rel:"noopener noreferrer"}},[t._v("Matrix"),o("OutboundLink")],1),t._v("). You can also start a thread in "),o("a",{attrs:{href:"https://github.com/frictionlessdata/project/discussions",target:"_blank",rel:"noopener noreferrer"}},[t._v("GitHub Discussions"),o("OutboundLink")],1),t._v(". Frictionless is a big community that consists of people having different expertise in different domains. Feel free to ask us any questions!")]),t._v(" "),o("h2",{attrs:{id:"school-of-data"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#school-of-data"}},[t._v("#")]),t._v(" School of Data")]),t._v(" "),o("p",[t._v("School of Data is a project overseen by the Open Knowledge Foundation consisting of a network of individuals and organizations working on empowering civil society organizations, journalists and citizens with skills they need to use data effectively. School of Data provides data literacy trainings and resources for learning how to work with data.")]),t._v(" "),o("p",[o("a",{attrs:{href:"https://schoolofdata.org",target:"_blank",rel:"noopener noreferrer"}},[t._v("School of Data"),o("OutboundLink")],1)]),t._v(" "),o("h2",{attrs:{id:"paid-support"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#paid-support"}},[t._v("#")]),t._v(" Paid Support")]),t._v(" "),o("p",[t._v("Professional, timely support is available on a paid basis from the creators of Frictionless Data at Datopian and Open Knowledge Foundation. Please get in touch via:")]),t._v(" "),o("p",[o("a",{attrs:{href:"http://datopian.com/contact",target:"_blank",rel:"noopener noreferrer"}},[t._v("Datopian"),o("OutboundLink")],1),o("br"),t._v("\nOpen Knowledge Foundation: "),o("a",{attrs:{href:"mailto:frictionlessdata@okfn.org"}},[t._v("frictionlessdata@okfn.org")])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[191],{730:function(t,a,o){"use strict";o.r(a);var e=o(29),r=Object(e.a)({},(function(){var t=this,a=t.$createElement,o=t._self._c||a;return o("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[o("h1",{attrs:{id:"need-help"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#need-help"}},[t._v("#")]),t._v(" Need Help?")]),t._v(" "),o("p",{staticClass:"font-light text-xl"},[t._v(" We're happy to provide support! Please reach out to us by using one of the following methods:")]),t._v(" "),o("h2",{attrs:{id:"community-support"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#community-support"}},[t._v("#")]),t._v(" Community Support")]),t._v(" "),o("p",[t._v("You can ask any questions in our "),o("a",{attrs:{href:"https://join.slack.com/t/frictionlessdata/shared_invite/zt-17kpbffnm-tRfDW_wJgOw8tJVLvZTrBg",target:"_blank",rel:"noopener noreferrer"}},[t._v("Slack Community Chat room"),o("OutboundLink")],1),t._v(" (the Chat room is also accessible via "),o("a",{attrs:{href:"https://matrix.to/#/#frictionlessdata:matrix.okfn.org",target:"_blank",rel:"noopener noreferrer"}},[t._v("Matrix"),o("OutboundLink")],1),t._v("). You can also start a thread in "),o("a",{attrs:{href:"https://github.com/frictionlessdata/project/discussions",target:"_blank",rel:"noopener noreferrer"}},[t._v("GitHub Discussions"),o("OutboundLink")],1),t._v(". Frictionless is a big community that consists of people having different expertise in different domains. Feel free to ask us any questions!")]),t._v(" "),o("h2",{attrs:{id:"school-of-data"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#school-of-data"}},[t._v("#")]),t._v(" School of Data")]),t._v(" "),o("p",[t._v("School of Data is a project overseen by the Open Knowledge Foundation consisting of a network of individuals and organizations working on empowering civil society organizations, journalists and citizens with skills they need to use data effectively. School of Data provides data literacy trainings and resources for learning how to work with data.")]),t._v(" "),o("p",[o("a",{attrs:{href:"https://schoolofdata.org",target:"_blank",rel:"noopener noreferrer"}},[t._v("School of Data"),o("OutboundLink")],1)]),t._v(" "),o("h2",{attrs:{id:"paid-support"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#paid-support"}},[t._v("#")]),t._v(" Paid Support")]),t._v(" "),o("p",[t._v("Professional, timely support is available on a paid basis from the creators of Frictionless Data at Datopian and Open Knowledge Foundation. Please get in touch via:")]),t._v(" "),o("p",[o("a",{attrs:{href:"http://datopian.com/contact",target:"_blank",rel:"noopener noreferrer"}},[t._v("Datopian"),o("OutboundLink")],1),o("br"),t._v("\nOpen Knowledge Foundation: "),o("a",{attrs:{href:"mailto:frictionlessdata@okfn.org"}},[t._v("frictionlessdata@okfn.org")])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/191.4341f1a2.js b/assets/js/192.51e1bb8f.js similarity index 99% rename from assets/js/191.4341f1a2.js rename to assets/js/192.51e1bb8f.js index ee7b915cc..e7f925adb 100644 --- a/assets/js/191.4341f1a2.js +++ b/assets/js/192.51e1bb8f.js @@ -1,4 +1,4 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[191],{544:function(t,e,n){(function(t){var n=Object.defineProperty,i=(t,e,i)=>(((t,e,i)=>{e in t?n(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i})(t,"symbol"!=typeof e?e+"":e,i),i);t.exports=function(){"use strict";"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;var n,r={exports:{}};(n=r).exports=function(){var t;function e(){return t.apply(null,arguments)}function i(t){return t instanceof Array||"[object Array]"===Object.prototype.toString.call(t)}function r(t){return null!=t&&"[object Object]"===Object.prototype.toString.call(t)}function a(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function s(t){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(t).length;for(var e in t)if(a(t,e))return;return 1}function o(t){return void 0===t}function l(t){return"number"==typeof t||"[object Number]"===Object.prototype.toString.call(t)}function c(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function h(t,e){for(var n=[],i=t.length,r=0;r>>0,i=0;iDt(t)?(a=t+1,e-Dt(t)):(a=t,e),{year:a,dayOfYear:n}}function It(t,e,n){var i,r,a=Mt(t.year(),e,n);return(a=Math.floor((t.dayOfYear()-a-1)/7)+1)<1?i=a+Ft(r=t.year()-1,e,n):a>Ft(t.year(),e,n)?(i=a-Ft(t.year(),e,n),r=t.year()+1):(r=t.year(),i=a),{week:i,year:r}}function Ft(t,e,n){var i=Mt(t,e,n);return e=Mt(t+1,e,n),(Dt(t)-i+e)/7}function Rt(t,e){return t.slice(e,7).concat(t.slice(0,e))}I("w",["ww",2],"wo","week"),I("W",["WW",2],"Wo","isoWeek"),P("week","w"),P("isoWeek","W"),U("week",5),U("isoWeek",5),dt("w",et),dt("ww",et,Q),dt("W",et),dt("WW",et,Q),_t(["w","ww","W","WW"],(function(t,e,n,i){e[i.substr(0,1)]=H(t)})),I("d",0,"do","day"),I("dd",0,0,(function(t){return this.localeData().weekdaysMin(this,t)})),I("ddd",0,0,(function(t){return this.localeData().weekdaysShort(this,t)})),I("dddd",0,0,(function(t){return this.localeData().weekdays(this,t)})),I("e",0,0,"weekday"),I("E",0,0,"isoWeekday"),P("day","d"),P("weekday","e"),P("isoWeekday","E"),U("day",11),U("weekday",11),U("isoWeekday",11),dt("d",et),dt("e",et),dt("E",et),dt("dd",(function(t,e){return e.weekdaysMinRegex(t)})),dt("ddd",(function(t,e){return e.weekdaysShortRegex(t)})),dt("dddd",(function(t,e){return e.weekdaysRegex(t)})),_t(["dd","ddd","dddd"],(function(t,e,n,i){null!=(i=n._locale.weekdaysParse(t,i,n._strict))?e.d=i:f(n).invalidWeekday=t})),_t(["d","e","E"],(function(t,e,n,i){e[i]=H(t)}));var $t="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Pt="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Yt="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),jt=ut,zt=ut,Ut=ut;function Wt(){function t(t,e){return e.length-t.length}for(var e,n,i,r=[],a=[],s=[],o=[],l=0;l<7;l++)i=d([2e3,1]).day(l),e=pt(this.weekdaysMin(i,"")),n=pt(this.weekdaysShort(i,"")),i=pt(this.weekdays(i,"")),r.push(e),a.push(n),s.push(i),o.push(e),o.push(n),o.push(i);r.sort(t),a.sort(t),s.sort(t),o.sort(t),this._weekdaysRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+r.join("|")+")","i")}function qt(){return this.hours()%12||12}function Ht(t,e){I(t,0,0,(function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)}))}function Vt(t,e){return e._meridiemParse}I("H",["HH",2],0,"hour"),I("h",["hh",2],0,qt),I("k",["kk",2],0,(function(){return this.hours()||24})),I("hmm",0,0,(function(){return""+qt.apply(this)+L(this.minutes(),2)})),I("hmmss",0,0,(function(){return""+qt.apply(this)+L(this.minutes(),2)+L(this.seconds(),2)})),I("Hmm",0,0,(function(){return""+this.hours()+L(this.minutes(),2)})),I("Hmmss",0,0,(function(){return""+this.hours()+L(this.minutes(),2)+L(this.seconds(),2)})),Ht("a",!0),Ht("A",!1),P("hour","h"),U("hour",13),dt("a",Vt),dt("A",Vt),dt("H",et),dt("h",et),dt("k",et),dt("HH",et,Q),dt("hh",et,Q),dt("kk",et,Q),dt("hmm",nt),dt("hmmss",it),dt("Hmm",nt),dt("Hmmss",it),bt(["H","HH"],3),bt(["k","kk"],(function(t,e,n){t=H(t),e[3]=24===t?0:t})),bt(["a","A"],(function(t,e,n){n._isPm=n._locale.isPM(t),n._meridiem=t})),bt(["h","hh"],(function(t,e,n){e[3]=H(t),f(n).bigHour=!0})),bt("hmm",(function(t,e,n){var i=t.length-2;e[3]=H(t.substr(0,i)),e[4]=H(t.substr(i)),f(n).bigHour=!0})),bt("hmmss",(function(t,e,n){var i=t.length-4,r=t.length-2;e[3]=H(t.substr(0,i)),e[4]=H(t.substr(i,2)),e[5]=H(t.substr(r)),f(n).bigHour=!0})),bt("Hmm",(function(t,e,n){var i=t.length-2;e[3]=H(t.substr(0,i)),e[4]=H(t.substr(i))})),bt("Hmmss",(function(t,e,n){var i=t.length-4,r=t.length-2;e[3]=H(t.substr(0,i)),e[4]=H(t.substr(i,2)),e[5]=H(t.substr(r))})),ut=V("Hours",!0);var Gt,Xt={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:vt,monthsShort:kt,week:{dow:0,doy:6},weekdays:$t,weekdaysMin:Yt,weekdaysShort:Pt,meridiemParse:/[ap]\.?m?\.?/i},Zt={},Qt={};function Kt(t){return t&&t.toLowerCase().replace("_","-")}function Jt(t){var e;if(void 0===Zt[t]&&n&&n.exports&&null!=t.match("^[^/\\\\]*$"))try{e=Gt._abbr,function(t){throw new Error('Could not dynamically require "'+t+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}("./locale/"+t),te(e)}catch(e){Zt[t]=null}return Zt[t]}function te(t,e){return t&&((e=o(e)?ne(t):ee(t,e))?Gt=e:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+t+" not found. Did you forget to load it?")),Gt._abbr}function ee(t,e){if(null===e)return delete Zt[t],null;var n,i=Xt;if(e.abbr=t,null!=Zt[t])C("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),i=Zt[t]._config;else if(null!=e.parentLocale)if(null!=Zt[e.parentLocale])i=Zt[e.parentLocale]._config;else{if(null==(n=Jt(e.parentLocale)))return Qt[e.parentLocale]||(Qt[e.parentLocale]=[]),Qt[e.parentLocale].push({name:t,config:e}),null;i=n._config}return Zt[t]=new A(S(i,e)),Qt[t]&&Qt[t].forEach((function(t){ee(t.name,t.config)})),te(t),Zt[t]}function ne(t){var e;if(!(t=t&&t._locale&&t._locale._abbr?t._locale._abbr:t))return Gt;if(!i(t)){if(e=Jt(t))return e;t=[t]}return function(t){for(var e,n,i,r,a=0;a=e&&function(t,e){for(var n=Math.min(t.length,e.length),i=0;i=e-1)break;e--}a++}return Gt}(t)}function ie(t){var e=t._a;return e&&-2===f(t).overflow&&(e=e[1]<0||11xt(e[0],e[1])?2:e[3]<0||24Ft(s,c,h)?f(r)._overflowWeeks=!0:null!=u?f(r)._overflowWeekday=!0:(d=Bt(s,o,l,c,h),r._a[0]=d.year,r._dayOfYear=d.dayOfYear)),null!=t._dayOfYear&&(a=pe(t._a[0],i[0]),(t._dayOfYear>Dt(a)||0===t._dayOfYear)&&(f(t)._overflowDayOfYear=!0),u=Nt(a,0,t._dayOfYear),t._a[1]=u.getUTCMonth(),t._a[2]=u.getUTCDate()),n=0;n<3&&null==t._a[n];++n)t._a[n]=p[n]=i[n];for(;n<7;n++)t._a[n]=p[n]=null==t._a[n]?2===n?1:0:t._a[n];24===t._a[3]&&0===t._a[4]&&0===t._a[5]&&0===t._a[6]&&(t._nextDay=!0,t._a[3]=0),t._d=(t._useUTC?Nt:Ot).apply(null,p),s=t._useUTC?t._d.getUTCDay():t._d.getDay(),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[3]=24),t._w&&void 0!==t._w.d&&t._w.d!==s&&(f(t).weekdayMismatch=!0)}}function ye(t){if(t._f===e.ISO_8601)de(t);else if(t._f===e.RFC_2822)fe(t);else{t._a=[],f(t).empty=!0;for(var n,i,r,s,o,l=""+t._i,c=l.length,h=0,u=R(t._f,t._locale).match(O)||[],d=u.length,p=0;pt.valueOf():t.valueOf()"}),Z.toJSON=function(){return this.isValid()?this.toISOString():null},Z.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},Z.unix=function(){return Math.floor(this.valueOf()/1e3)},Z.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},Z.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},Z.eraName=function(){for(var t,e=this.localeData().eras(),n=0,i=e.length;nthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},Z.isLocal=function(){return!!this.isValid()&&!this._isUTC},Z.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},Z.isUtc=Le,Z.isUTC=Le,Z.zoneAbbr=function(){return this._isUTC?"UTC":""},Z.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},Z.dates=w("dates accessor is deprecated. Use date instead.",at),Z.months=w("months accessor is deprecated. Use month instead",St),Z.years=w("years accessor is deprecated. Use year instead",Lt),Z.zone=w("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",(function(t,e){return null!=t?(this.utcOffset(t="string"!=typeof t?-t:t,e),this):-this.utcOffset()})),Z.isDSTShifted=w("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",(function(){if(!o(this._isDSTShifted))return this._isDSTShifted;var t,e={};return _(e,this),(e=me(e))._a?(t=(e._isUTC?d:_e)(e._a),this._isDSTShifted=this.isValid()&&0{},debug:(...t)=>{},info:(...t)=>{},warn:(...t)=>{},error:(...t)=>{},fatal:(...t)=>{}},l=function(t="fatal"){let e=s.fatal;"string"==typeof t?(t=t.toLowerCase())in s&&(e=s[t]):"number"==typeof t&&(e=t),o.trace=()=>{},o.debug=()=>{},o.info=()=>{},o.warn=()=>{},o.error=()=>{},o.fatal=()=>{},e<=s.fatal&&(o.fatal=console.error?console.error.bind(console,h("FATAL"),"color: orange"):console.log.bind(console,"",h("FATAL"))),e<=s.error&&(o.error=console.error?console.error.bind(console,h("ERROR"),"color: orange"):console.log.bind(console,"",h("ERROR"))),e<=s.warn&&(o.warn=console.warn?console.warn.bind(console,h("WARN"),"color: orange"):console.log.bind(console,"",h("WARN"))),e<=s.info&&(o.info=console.info?console.info.bind(console,h("INFO"),"color: lightblue"):console.log.bind(console,"",h("INFO"))),e<=s.debug&&(o.debug=console.debug?console.debug.bind(console,h("DEBUG"),"color: lightgreen"):console.log.bind(console,"",h("DEBUG"))),e<=s.trace&&(o.trace=console.debug?console.debug.bind(console,h("TRACE"),"color: lightgreen"):console.log.bind(console,"",h("TRACE")))},h=t=>`%c${a().format("ss.SSS")} : ${t} : `;var u={};Object.defineProperty(u,"__esModule",{value:!0});var d=u.sanitizeUrl=void 0,f=/^([^\w]*)(javascript|data|vbscript)/im,p=/&#(\w+)(^\w|;)?/g,g=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,y=/^([^:]+):/gm,m=[".","/"];function b(t,e){return null==t||null==e?NaN:te?1:t>=e?0:NaN}function _(t,e){return null==t||null==e?NaN:et?1:e>=t?0:NaN}function x(t){let e,n,i;function r(t,i,r=0,a=t.length){if(r>>1;n(t[e],i)<0?r=e+1:a=e}while(rb(t(e),n),i=(e,n)=>t(e)-n):(e=t===b||t===_?t:v,n=t,i=t),{left:r,center:function(t,e,n=0,a=t.length){const s=r(t,e,n,a-1);return s>n&&i(t[s-1],e)>-i(t[s],e)?s-1:s},right:function(t,i,r=0,a=t.length){if(r>>1;n(t[e],i)<=0?r=e+1:a=e}while(r-1}(n))return n;var i=n.match(y);if(!i)return n;var r=i[0];return f.test(r)?"about:blank":n};const k=x(b).right;x((function(t){return null===t?NaN:+t})).center;const w=k;class T extends Map{constructor(t,e=E){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:e}}),null!=t)for(const[e,n]of t)this.set(e,n)}get(t){return super.get(C(this,t))}has(t){return super.has(C(this,t))}set(t,e){return super.set(function({_intern:t,_key:e},n){const i=e(n);return t.has(i)?t.get(i):(t.set(i,n),n)}(this,t),e)}delete(t){return super.delete(function({_intern:t,_key:e},n){const i=e(n);return t.has(i)&&(n=t.get(i),t.delete(i)),n}(this,t))}}function C({_intern:t,_key:e},n){const i=e(n);return t.has(i)?t.get(i):n}function E(t){return null!==t&&"object"==typeof t?t.valueOf():t}var S=Math.sqrt(50),A=Math.sqrt(10),D=Math.sqrt(2);function L(t,e,n){var i=(e-t)/Math.max(0,n),r=Math.floor(Math.log(i)/Math.LN10),a=i/Math.pow(10,r);return r>=0?(a>=S?10:a>=A?5:a>=D?2:1)*Math.pow(10,r):-Math.pow(10,-r)/(a>=S?10:a>=A?5:a>=D?2:1)}function O(t,e,n){var i=Math.abs(e-t)/Math.max(0,n),r=Math.pow(10,Math.floor(Math.log(i)/Math.LN10)),a=i/r;return a>=S?r*=10:a>=A?r*=5:a>=D&&(r*=2),e=e)&&(n=e);else{let i=-1;for(let r of t)null!=(r=e(r,++i,t))&&(n=r)&&(n=r)}return n}function M(t,e){let n;if(void 0===e)for(const e of t)null!=e&&(n>e||void 0===n&&e>=e)&&(n=e);else{let i=-1;for(let r of t)null!=(r=e(r,++i,t))&&(n>r||void 0===n&&r>=r)&&(n=r)}return n}function B(t){return t}function I(t){return"translate("+t+",0)"}function F(t){return"translate(0,"+t+")"}function R(t){return e=>+t(e)}function $(t,e){return e=Math.max(0,t.bandwidth()-2*e)/2,t.round()&&(e=Math.round(e)),n=>+t(n)+e}function P(){return!this.__axis}function Y(t,e){var n=[],i=null,r=null,a=6,s=6,o=3,l="undefined"!=typeof window&&window.devicePixelRatio>1?0:.5,c=1===t||4===t?-1:1,h=4===t||2===t?"x":"y",u=1===t||3===t?I:F;function d(d){var f=null==i?e.ticks?e.ticks.apply(e,n):e.domain():i,p=null==r?e.tickFormat?e.tickFormat.apply(e,n):B:r,g=Math.max(a,0)+o,y=e.range(),m=+y[0]+l,b=+y[y.length-1]+l,_=(e.bandwidth?$:R)(e.copy(),l),x=d.selection?d.selection():d,v=x.selectAll(".domain").data([null]),k=x.selectAll(".tick").data(f,e).order(),w=k.exit(),T=k.enter().append("g").attr("class","tick"),C=k.select("line"),E=k.select("text");v=v.merge(v.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),k=k.merge(T),C=C.merge(T.append("line").attr("stroke","currentColor").attr(h+"2",c*a)),E=E.merge(T.append("text").attr("fill","currentColor").attr(h,c*g).attr("dy",1===t?"0em":3===t?"0.71em":"0.32em")),d!==x&&(v=v.transition(d),k=k.transition(d),C=C.transition(d),E=E.transition(d),w=w.transition(d).attr("opacity",1e-6).attr("transform",(function(t){return isFinite(t=_(t))?u(t+l):this.getAttribute("transform")})),T.attr("opacity",1e-6).attr("transform",(function(t){var e=this.parentNode.__axis;return u((e&&isFinite(e=e(t))?e:_(t))+l)}))),w.remove(),v.attr("d",4===t||2===t?s?"M"+c*s+","+m+"H"+l+"V"+b+"H"+c*s:"M"+l+","+m+"V"+b:s?"M"+m+","+c*s+"V"+l+"H"+b+"V"+c*s:"M"+m+","+l+"H"+b),k.attr("opacity",1).attr("transform",(function(t){return u(_(t)+l)})),C.attr(h+"2",c*a),E.attr(h,c*g).text(p),x.filter(P).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",2===t?"start":4===t?"end":"middle"),x.each((function(){this.__axis=_}))}return d.scale=function(t){return arguments.length?(e=t,d):e},d.ticks=function(){return n=Array.from(arguments),d},d.tickArguments=function(t){return arguments.length?(n=null==t?[]:Array.from(t),d):n.slice()},d.tickValues=function(t){return arguments.length?(i=null==t?null:Array.from(t),d):i&&i.slice()},d.tickFormat=function(t){return arguments.length?(r=t,d):r},d.tickSize=function(t){return arguments.length?(a=s=+t,d):a},d.tickSizeInner=function(t){return arguments.length?(a=+t,d):a},d.tickSizeOuter=function(t){return arguments.length?(s=+t,d):s},d.tickPadding=function(t){return arguments.length?(o=+t,d):o},d.offset=function(t){return arguments.length?(l=+t,d):l},d}var j={value:()=>{}};function z(){for(var t,e=0,n=arguments.length,i={};e=0&&(n=t.slice(i+1),t=t.slice(0,i)),t&&!e.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}}))}function q(t,e){for(var n,i=0,r=t.length;i0)for(var n,i,r=new Array(n),a=0;a=0&&"xmlns"!==(e=t.slice(0,n))&&(t=t.slice(n+1)),G.hasOwnProperty(e)?{space:G[e],local:t}:t}function Z(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===V&&e.documentElement.namespaceURI===V?e.createElement(t):e.createElementNS(n,t)}}function Q(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function K(t){var e=X(t);return(e.local?Q:Z)(e)}function J(){}function tt(t){return null==t?J:function(){return this.querySelector(t)}}function et(t){return null==t?[]:Array.isArray(t)?t:Array.from(t)}function nt(){return[]}function it(t){return null==t?nt:function(){return this.querySelectorAll(t)}}function rt(t){return function(){return this.matches(t)}}function at(t){return function(e){return e.matches(t)}}var st=Array.prototype.find;function ot(){return this.firstElementChild}var lt=Array.prototype.filter;function ct(){return Array.from(this.children)}function ht(t){return new Array(t.length)}function ut(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}function dt(t){return function(){return t}}function ft(t,e,n,i,r,a){for(var s,o=0,l=e.length,c=a.length;oe?1:t>=e?0:NaN}function bt(t){return function(){this.removeAttribute(t)}}function _t(t){return function(){this.removeAttributeNS(t.space,t.local)}}function xt(t,e){return function(){this.setAttribute(t,e)}}function vt(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function kt(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttribute(t):this.setAttribute(t,n)}}function wt(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}function Tt(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function Ct(t){return function(){this.style.removeProperty(t)}}function Et(t,e,n){return function(){this.style.setProperty(t,e,n)}}function St(t,e,n){return function(){var i=e.apply(this,arguments);null==i?this.style.removeProperty(t):this.style.setProperty(t,i,n)}}function At(t,e){return t.style.getPropertyValue(e)||Tt(t).getComputedStyle(t,null).getPropertyValue(e)}function Dt(t){return function(){delete this[t]}}function Lt(t,e){return function(){this[t]=e}}function Ot(t,e){return function(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}}function Nt(t){return t.trim().split(/^|\s+/)}function Mt(t){return t.classList||new Bt(t)}function Bt(t){this._node=t,this._names=Nt(t.getAttribute("class")||"")}function It(t,e){for(var n=Mt(t),i=-1,r=e.length;++i=0&&(e=t.slice(n+1),t=t.slice(0,n)),{type:t,name:e}}))}function Jt(t){return function(){var e=this.__on;if(e){for(var n,i=0,r=-1,a=e.length;i=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var re=[null];function ae(t,e){this._groups=t,this._parents=e}function se(){return new ae([[document.documentElement]],re)}function oe(t){return"string"==typeof t?new ae([[document.querySelector(t)]],[document.documentElement]):new ae([[t]],re)}function le(t){return"string"==typeof t?new ae([document.querySelectorAll(t)],[document.documentElement]):new ae([et(t)],re)}function ce(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function he(t,e){var n=Object.create(t.prototype);for(var i in e)n[i]=e[i];return n}function ue(){}ae.prototype=se.prototype={constructor:ae,select:function(t){"function"!=typeof t&&(t=tt(t));for(var e=this._groups,n=e.length,i=new Array(n),r=0;r=v&&(v=x+1);!(_=y[v])&&++v=0;)(i=r[a])&&(s&&4^i.compareDocumentPosition(s)&&s.parentNode.insertBefore(i,s),s=i);return this},sort:function(t){function e(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}t||(t=mt);for(var n=this._groups,i=n.length,r=new Array(i),a=0;a1?this.each((null==e?Ct:"function"==typeof e?St:Et)(t,e,null==n?"":n)):At(this.node(),t)},property:function(t,e){return arguments.length>1?this.each((null==e?Dt:"function"==typeof e?Ot:Lt)(t,e)):this.node()[t]},classed:function(t,e){var n=Nt(t+"");if(arguments.length<2){for(var i=Mt(this.node()),r=-1,a=n.length;++r>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===n?Se(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===n?Se(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=ye.exec(t))?new Le(e[1],e[2],e[3],1):(e=me.exec(t))?new Le(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=be.exec(t))?Se(e[1],e[2],e[3],e[4]):(e=_e.exec(t))?Se(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=xe.exec(t))?Fe(e[1],e[2]/100,e[3]/100,1):(e=ve.exec(t))?Fe(e[1],e[2]/100,e[3]/100,e[4]):ke.hasOwnProperty(t)?Ee(ke[t]):"transparent"===t?new Le(NaN,NaN,NaN,0):null}function Ee(t){return new Le(t>>16&255,t>>8&255,255&t,1)}function Se(t,e,n,i){return i<=0&&(t=e=n=NaN),new Le(t,e,n,i)}function Ae(t){return t instanceof ue||(t=Ce(t)),t?new Le((t=t.rgb()).r,t.g,t.b,t.opacity):new Le}function De(t,e,n,i){return 1===arguments.length?Ae(t):new Le(t,e,n,null==i?1:i)}function Le(t,e,n,i){this.r=+t,this.g=+e,this.b=+n,this.opacity=+i}function Oe(){return`#${Ie(this.r)}${Ie(this.g)}${Ie(this.b)}`}function Ne(){const t=Me(this.opacity);return`${1===t?"rgb(":"rgba("}${Be(this.r)}, ${Be(this.g)}, ${Be(this.b)}${1===t?")":`, ${t})`}`}function Me(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Be(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function Ie(t){return((t=Be(t))<16?"0":"")+t.toString(16)}function Fe(t,e,n,i){return i<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new $e(t,e,n,i)}function Re(t){if(t instanceof $e)return new $e(t.h,t.s,t.l,t.opacity);if(t instanceof ue||(t=Ce(t)),!t)return new $e;if(t instanceof $e)return t;var e=(t=t.rgb()).r/255,n=t.g/255,i=t.b/255,r=Math.min(e,n,i),a=Math.max(e,n,i),s=NaN,o=a-r,l=(a+r)/2;return o?(s=e===a?(n-i)/o+6*(n0&&l<1?0:s,new $e(s,o,l,t.opacity)}function $e(t,e,n,i){this.h=+t,this.s=+e,this.l=+n,this.opacity=+i}function Pe(t){return(t=(t||0)%360)<0?t+360:t}function Ye(t){return Math.max(0,Math.min(1,t||0))}function je(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}ce(ue,Ce,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:we,formatHex:we,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return Re(this).formatHsl()},formatRgb:Te,toString:Te}),ce(Le,De,he(ue,{brighter(t){return t=null==t?1/.7:Math.pow(1/.7,t),new Le(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=null==t?.7:Math.pow(.7,t),new Le(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new Le(Be(this.r),Be(this.g),Be(this.b),Me(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Oe,formatHex:Oe,formatHex8:function(){return`#${Ie(this.r)}${Ie(this.g)}${Ie(this.b)}${Ie(255*(isNaN(this.opacity)?1:this.opacity))}`},formatRgb:Ne,toString:Ne})),ce($e,(function(t,e,n,i){return 1===arguments.length?Re(t):new $e(t,e,n,null==i?1:i)}),he(ue,{brighter(t){return t=null==t?1/.7:Math.pow(1/.7,t),new $e(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=null==t?.7:Math.pow(.7,t),new $e(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,i=n+(n<.5?n:1-n)*e,r=2*n-i;return new Le(je(t>=240?t-240:t+120,r,i),je(t,r,i),je(t<120?t+240:t-120,r,i),this.opacity)},clamp(){return new $e(Pe(this.h),Ye(this.s),Ye(this.l),Me(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=Me(this.opacity);return`${1===t?"hsl(":"hsla("}${Pe(this.h)}, ${100*Ye(this.s)}%, ${100*Ye(this.l)}%${1===t?")":`, ${t})`}`}}));const ze=Math.PI/180,Ue=180/Math.PI,We=6/29*3*(6/29);function qe(t){if(t instanceof He)return new He(t.l,t.a,t.b,t.opacity);if(t instanceof Je)return tn(t);t instanceof Le||(t=Ae(t));var e,n,i=Ze(t.r),r=Ze(t.g),a=Ze(t.b),s=Ve((.2225045*i+.7168786*r+.0606169*a)/1);return i===r&&r===a?e=n=s:(e=Ve((.4360747*i+.3850649*r+.1430804*a)/.96422),n=Ve((.0139322*i+.0971045*r+.7141733*a)/.82521)),new He(116*s-16,500*(e-s),200*(s-n),t.opacity)}function He(t,e,n,i){this.l=+t,this.a=+e,this.b=+n,this.opacity=+i}function Ve(t){return t>6/29*(6/29)*(6/29)?Math.pow(t,1/3):t/We+4/29}function Ge(t){return t>6/29?t*t*t:We*(t-4/29)}function Xe(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function Ze(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Qe(t){if(t instanceof Je)return new Je(t.h,t.c,t.l,t.opacity);if(t instanceof He||(t=qe(t)),0===t.a&&0===t.b)return new Je(NaN,0()=>t;function nn(t,e){return function(n){return t+n*e}}function rn(t){return 1==(t=+t)?an:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(i){return Math.pow(t+i*e,n)}}(e,n,t):en(isNaN(e)?n:e)}}function an(t,e){var n=e-t;return n?nn(t,n):en(isNaN(t)?e:t)}const sn=function t(e){var n=rn(e);function i(t,e){var i=n((t=De(t)).r,(e=De(e)).r),r=n(t.g,e.g),a=n(t.b,e.b),s=an(t.opacity,e.opacity);return function(e){return t.r=i(e),t.g=r(e),t.b=a(e),t.opacity=s(e),t+""}}return i.gamma=t,i}(1);function on(t,e){e||(e=[]);var n,i=t?Math.min(e.length,t.length):0,r=e.slice();return function(a){for(n=0;na&&(r=e.slice(a,r),o[s]?o[s]+=r:o[++s]=r),(n=n[0])===(i=i[0])?o[s]?o[s]+=i:o[++s]=i:(o[++s]=null,l.push({i:s,x:hn(n,i)})),a=fn.lastIndex;return a180?e+=360:e-t>180&&(t+=360),a.push({i:n.push(r(n)+"rotate(",null,i)-2,x:hn(t,e)})):e&&n.push(r(n)+"rotate("+e+i)}(a.rotate,s.rotate,o,l),function(t,e,n,a){t!==e?a.push({i:n.push(r(n)+"skewX(",null,i)-2,x:hn(t,e)}):e&&n.push(r(n)+"skewX("+e+i)}(a.skewX,s.skewX,o,l),function(t,e,n,i,a,s){if(t!==n||e!==i){var o=a.push(r(a)+"scale(",null,",",null,")");s.push({i:o-4,x:hn(t,n)},{i:o-2,x:hn(e,i)})}else 1===n&&1===i||a.push(r(a)+"scale("+n+","+i+")")}(a.scaleX,a.scaleY,s.scaleX,s.scaleY,o,l),a=s=null,function(t){for(var e,n=-1,i=l.length;++n180||n<-180?n-360*Math.round(n/360):n):en(isNaN(t)?e:t)},function(t,e){var n=Cn((t=Ke(t)).h,(e=Ke(e)).h),i=an(t.c,e.c),r=an(t.l,e.l),a=an(t.opacity,e.opacity);return function(e){return t.h=n(e),t.c=i(e),t.l=r(e),t.opacity=a(e),t+""}});var Cn,En,Sn,An=0,Dn=0,Ln=0,On=0,Nn=0,Mn=0,Bn="object"==typeof performance&&performance.now?performance:Date,In="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function Fn(){return Nn||(In(Rn),Nn=Bn.now()+Mn)}function Rn(){Nn=0}function $n(){this._call=this._time=this._next=null}function Pn(t,e,n){var i=new $n;return i.restart(t,e,n),i}function Yn(){Nn=(On=Bn.now())+Mn,An=Dn=0;try{!function(){Fn(),++An;for(var t,e=En;e;)(t=Nn-e._time)>=0&&e._call.call(void 0,t),e=e._next;--An}()}finally{An=0,function(){for(var t,e,n=En,i=1/0;n;)n._call?(i>n._time&&(i=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:En=e);Sn=t,zn(i)}(),Nn=0}}function jn(){var t=Bn.now(),e=t-On;e>1e3&&(Mn-=e,On=t)}function zn(t){An||(Dn&&(Dn=clearTimeout(Dn)),t-Nn>24?(t<1/0&&(Dn=setTimeout(Yn,t-Bn.now()-Mn)),Ln&&(Ln=clearInterval(Ln))):(Ln||(On=Bn.now(),Ln=setInterval(jn,1e3)),An=1,In(Yn)))}function Un(t,e,n){var i=new $n;return e=null==e?0:+e,i.restart(n=>{i.stop(),t(n+e)},e,n),i}$n.prototype=Pn.prototype={constructor:$n,restart:function(t,e,n){if("function"!=typeof t)throw new TypeError("callback is not a function");n=(null==n?Fn():+n)+(null==e?0:+e),this._next||Sn===this||(Sn?Sn._next=this:En=this,Sn=this),this._call=t,this._time=n,zn()},stop:function(){this._call&&(this._call=null,this._time=1/0,zn())}};var Wn=z("start","end","cancel","interrupt"),qn=[];function Hn(t,e,n,i,r,a){var s=t.__transition;if(s){if(n in s)return}else t.__transition={};!function(t,e,n){var i,r=t.__transition;function a(l){var c,h,u,d;if(1!==n.state)return o();for(c in r)if((d=r[c]).name===n.name){if(3===d.state)return Un(a);4===d.state?(d.state=6,d.timer.stop(),d.on.call("interrupt",t,t.__data__,d.index,d.group),delete r[c]):+c0)throw new Error("too late; already scheduled");return n}function Gn(t,e){var n=Xn(t,e);if(n.state>3)throw new Error("too late; already running");return n}function Xn(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function Zn(t,e){var n,i;return function(){var r=Gn(this,t),a=r.tween;if(a!==n)for(var s=0,o=(i=n=a).length;s=0&&(t=t.slice(0,e)),!t||"start"===t}))}(e)?Vn:Gn;return function(){var s=a(this,t),o=s.on;o!==i&&(r=(i=o).copy()).on(e,n),s.on=r}}var yi=se.prototype.constructor;function mi(t){return function(){this.style.removeProperty(t)}}function bi(t,e,n){return function(i){this.style.setProperty(t,e.call(this,i),n)}}function _i(t,e,n){var i,r;function a(){var a=e.apply(this,arguments);return a!==r&&(i=(r=a)&&bi(t,a,n)),i}return a._value=e,a}function xi(t){return function(e){this.textContent=t.call(this,e)}}function vi(t){var e,n;function i(){var i=t.apply(this,arguments);return i!==n&&(e=(n=i)&&xi(i)),e}return i._value=t,i}var ki=0;function wi(t,e,n,i){this._groups=t,this._parents=e,this._name=n,this._id=i}function Ti(){return++ki}var Ci=se.prototype;wi.prototype={constructor:wi,select:function(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=tt(t));for(var i=this._groups,r=i.length,a=new Array(r),s=0;s2&&n.state<5,n.state=6,n.timer.stop(),n.on.call(i?"interrupt":"cancel",t,t.__data__,n.index,n.group),delete a[r]):s=!1;s&&delete t.__transition}}(this,t)}))},se.prototype.transition=function(t){var e,n;t instanceof wi?(e=t._id,t=t._name):(e=Ti(),(n=Ei).time=Fn(),t=null==t?null:t+"");for(var i=this._groups,r=i.length,a=0;a1?i[0]+i.slice(2):i,+t.slice(n+1)]}function Bi(t){return(t=Mi(Math.abs(t)))?t[1]:NaN}Oi.prototype=Ni.prototype={constructor:Oi,moveTo:function(t,e){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)},closePath:function(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(t,e){this._+="L"+(this._x1=+t)+","+(this._y1=+e)},quadraticCurveTo:function(t,e,n,i){this._+="Q"+ +t+","+ +e+","+(this._x1=+n)+","+(this._y1=+i)},bezierCurveTo:function(t,e,n,i,r,a){this._+="C"+ +t+","+ +e+","+ +n+","+ +i+","+(this._x1=+r)+","+(this._y1=+a)},arcTo:function(t,e,n,i,r){t=+t,e=+e,n=+n,i=+i,r=+r;var a=this._x1,s=this._y1,o=n-t,l=i-e,c=a-t,h=s-e,u=c*c+h*h;if(r<0)throw new Error("negative radius: "+r);if(null===this._x1)this._+="M"+(this._x1=t)+","+(this._y1=e);else if(u>1e-6)if(Math.abs(h*o-l*c)>1e-6&&r){var d=n-a,f=i-s,p=o*o+l*l,g=d*d+f*f,y=Math.sqrt(p),m=Math.sqrt(u),b=r*Math.tan((Ai-Math.acos((p+u-g)/(2*y*m)))/2),_=b/m,x=b/y;Math.abs(_-1)>1e-6&&(this._+="L"+(t+_*c)+","+(e+_*h)),this._+="A"+r+","+r+",0,0,"+ +(h*d>c*f)+","+(this._x1=t+x*o)+","+(this._y1=e+x*l)}else this._+="L"+(this._x1=t)+","+(this._y1=e)},arc:function(t,e,n,i,r,a){t=+t,e=+e,a=!!a;var s=(n=+n)*Math.cos(i),o=n*Math.sin(i),l=t+s,c=e+o,h=1^a,u=a?i-r:r-i;if(n<0)throw new Error("negative radius: "+n);null===this._x1?this._+="M"+l+","+c:(Math.abs(this._x1-l)>1e-6||Math.abs(this._y1-c)>1e-6)&&(this._+="L"+l+","+c),n&&(u<0&&(u=u%Di+Di),u>Li?this._+="A"+n+","+n+",0,1,"+h+","+(t-s)+","+(e-o)+"A"+n+","+n+",0,1,"+h+","+(this._x1=l)+","+(this._y1=c):u>1e-6&&(this._+="A"+n+","+n+",0,"+ +(u>=Ai)+","+h+","+(this._x1=t+n*Math.cos(r))+","+(this._y1=e+n*Math.sin(r))))},rect:function(t,e,n,i){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)+"h"+ +n+"v"+ +i+"h"+-n+"Z"},toString:function(){return this._}};var Ii,Fi=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Ri(t){if(!(e=Fi.exec(t)))throw new Error("invalid format: "+t);var e;return new $i({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function $i(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function Pi(t,e){var n=Mi(t,e);if(!n)return t+"";var i=n[0],r=n[1];return r<0?"0."+new Array(-r).join("0")+i:i.length>r+1?i.slice(0,r+1)+"."+i.slice(r+1):i+new Array(r-i.length+2).join("0")}Ri.prototype=$i.prototype,$i.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};const Yi={"%":(t,e)=>(100*t).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>Pi(100*t,e),r:Pi,s:function(t,e){var n=Mi(t,e);if(!n)return t+"";var i=n[0],r=n[1],a=r-(Ii=3*Math.max(-8,Math.min(8,Math.floor(r/3))))+1,s=i.length;return a===s?i:a>s?i+new Array(a-s+1).join("0"):a>0?i.slice(0,a)+"."+i.slice(a):"0."+new Array(1-a).join("0")+Mi(t,Math.max(0,e+a-1))[0]},X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function ji(t){return t}var zi,Ui,Wi,qi=Array.prototype.map,Hi=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function Vi(t){var e,n,i=void 0===t.grouping||void 0===t.thousands?ji:(e=qi.call(t.grouping,Number),n=t.thousands+"",function(t,i){for(var r=t.length,a=[],s=0,o=e[0],l=0;r>0&&o>0&&(l+o+1>i&&(o=Math.max(1,i-l)),a.push(t.substring(r-=o,r+o)),!((l+=o+1)>i));)o=e[s=(s+1)%e.length];return a.reverse().join(n)}),r=void 0===t.currency?"":t.currency[0]+"",a=void 0===t.currency?"":t.currency[1]+"",s=void 0===t.decimal?".":t.decimal+"",o=void 0===t.numerals?ji:function(t){return function(e){return e.replace(/[0-9]/g,(function(e){return t[+e]}))}}(qi.call(t.numerals,String)),l=void 0===t.percent?"%":t.percent+"",c=void 0===t.minus?"−":t.minus+"",h=void 0===t.nan?"NaN":t.nan+"";function u(t){var e=(t=Ri(t)).fill,n=t.align,u=t.sign,d=t.symbol,f=t.zero,p=t.width,g=t.comma,y=t.precision,m=t.trim,b=t.type;"n"===b?(g=!0,b="g"):Yi[b]||(void 0===y&&(y=12),m=!0,b="g"),(f||"0"===e&&"="===n)&&(f=!0,e="0",n="=");var _="$"===d?r:"#"===d&&/[boxX]/.test(b)?"0"+b.toLowerCase():"",x="$"===d?a:/[%p]/.test(b)?l:"",v=Yi[b],k=/[defgprs%]/.test(b);function w(t){var r,a,l,d=_,w=x;if("c"===b)w=v(t)+w,t="";else{var T=(t=+t)<0||1/t<0;if(t=isNaN(t)?h:v(Math.abs(t),y),m&&(t=function(t){t:for(var e,n=t.length,i=1,r=-1;i0&&(r=0)}return r>0?t.slice(0,r)+t.slice(e+1):t}(t)),T&&0==+t&&"+"!==u&&(T=!1),d=(T?"("===u?u:c:"-"===u||"("===u?"":u)+d,w=("s"===b?Hi[8+Ii/3]:"")+w+(T&&"("===u?")":""),k)for(r=-1,a=t.length;++r(l=t.charCodeAt(r))||l>57){w=(46===l?s+t.slice(r+1):t.slice(r))+w,t=t.slice(0,r);break}}g&&!f&&(t=i(t,1/0));var C=d.length+t.length+w.length,E=C>1)+d+t+w+E.slice(C);break;default:t=E+d+t+w}return o(t)}return y=void 0===y?6:/[gprs]/.test(b)?Math.max(1,Math.min(21,y)):Math.max(0,Math.min(20,y)),w.toString=function(){return t+""},w}return{format:u,formatPrefix:function(t,e){var n=u(((t=Ri(t)).type="f",t)),i=3*Math.max(-8,Math.min(8,Math.floor(Bi(e)/3))),r=Math.pow(10,-i),a=Hi[8+i/3];return function(t){return n(r*t)+a}}}}function Gi(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t)}return this}zi=Vi({thousands:",",grouping:[3],currency:["$",""]}),Ui=zi.format,Wi=zi.formatPrefix;const Xi=Symbol("implicit");function Zi(t){return+t}var Qi=[0,1];function Ki(t){return t}function Ji(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:(n=isNaN(e)?NaN:.5,function(){return n});var n}function tr(t,e,n){var i=t[0],r=t[1],a=e[0],s=e[1];return re&&(n=t,t=e,e=n),c=function(n){return Math.max(t,Math.min(e,n))}),i=l>2?er:tr,r=a=null,u}function u(e){return null==e||isNaN(e=+e)?n:(r||(r=i(s.map(t),o,l)))(t(c(e)))}return u.invert=function(n){return c(e((a||(a=i(o,s.map(t),hn)))(n)))},u.domain=function(t){return arguments.length?(s=Array.from(t,Zi),h()):s.slice()},u.range=function(t){return arguments.length?(o=Array.from(t),h()):o.slice()},u.rangeRound=function(t){return o=Array.from(t),l=yn,h()},u.clamp=function(t){return arguments.length?(c=!!t||Ki,h()):c!==Ki},u.interpolate=function(t){return arguments.length?(l=t,h()):l},u.unknown=function(t){return arguments.length?(n=t,u):n},function(n,i){return t=n,e=i,h()}}function rr(){return ir()(Ki,Ki)}function ar(t,e,n,i){var r,a=O(t,e,n);switch((i=Ri(null==i?",f":i)).type){case"s":var s=Math.max(Math.abs(t),Math.abs(e));return null!=i.precision||isNaN(r=function(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Bi(e)/3)))-Bi(Math.abs(t)))}(a,s))||(i.precision=r),Wi(i,s);case"":case"e":case"g":case"p":case"r":null!=i.precision||isNaN(r=function(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,Bi(e)-Bi(t))+1}(a,Math.max(Math.abs(t),Math.abs(e))))||(i.precision=r-("e"===i.type));break;case"f":case"%":null!=i.precision||isNaN(r=function(t){return Math.max(0,-Bi(Math.abs(t)))}(a))||(i.precision=r-2*("%"===i.type))}return Ui(i)}function sr(t){var e=t.domain;return t.ticks=function(t){var n=e();return function(t,e,n){var i,r,a,s,o=-1;if(n=+n,(t=+t)==(e=+e)&&n>0)return[t];if((i=e0){let n=Math.round(t/s),i=Math.round(e/s);for(n*se&&--i,a=new Array(r=i-n+1);++oe&&--i,a=new Array(r=i-n+1);++o0;){if((r=L(l,c,n))===i)return a[s]=l,a[o]=c,e(a);if(r>0)l=Math.floor(l/r)*r,c=Math.ceil(c/r)*r;else{if(!(r<0))break;l=Math.ceil(l*r)/r,c=Math.floor(c*r)/r}i=r}return t},t}var or=new Date,lr=new Date;function cr(t,e,n,i){function r(e){return t(e=0===arguments.length?new Date:new Date(+e)),e}return r.floor=function(e){return t(e=new Date(+e)),e},r.ceil=function(n){return t(n=new Date(n-1)),e(n,1),t(n),n},r.round=function(t){var e=r(t),n=r.ceil(t);return t-e0))return o;do{o.push(s=new Date(+n)),e(n,a),t(n)}while(s=e)for(;t(e),!n(e);)e.setTime(e-1)}),(function(t,i){if(t>=t)if(i<0)for(;++i<=0;)for(;e(t,-1),!n(t););else for(;--i>=0;)for(;e(t,1),!n(t););}))},n&&(r.count=function(e,i){return or.setTime(+e),lr.setTime(+i),t(or),t(lr),Math.floor(n(or,lr))},r.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?r.filter(i?function(e){return i(e)%t==0}:function(e){return r.count(0,e)%t==0}):r:null}),r}var hr=cr((function(){}),(function(t,e){t.setTime(+t+e)}),(function(t,e){return e-t}));hr.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?cr((function(e){e.setTime(Math.floor(e/t)*t)}),(function(e,n){e.setTime(+e+n*t)}),(function(e,n){return(n-e)/t})):hr:null};const ur=hr;hr.range;var dr=cr((function(t){t.setTime(t-t.getMilliseconds())}),(function(t,e){t.setTime(+t+1e3*e)}),(function(t,e){return(e-t)/1e3}),(function(t){return t.getUTCSeconds()}));const fr=dr;dr.range;var pr=cr((function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds())}),(function(t,e){t.setTime(+t+6e4*e)}),(function(t,e){return(e-t)/6e4}),(function(t){return t.getMinutes()}));const gr=pr;pr.range;var yr=cr((function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds()-6e4*t.getMinutes())}),(function(t,e){t.setTime(+t+36e5*e)}),(function(t,e){return(e-t)/36e5}),(function(t){return t.getHours()}));const mr=yr;yr.range;var br=cr(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/864e5,t=>t.getDate()-1);const _r=br;function xr(t){return cr((function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+7*e)}),(function(t,e){return(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/6048e5}))}br.range;var vr=xr(0),kr=xr(1),wr=xr(2),Tr=xr(3),Cr=xr(4),Er=xr(5),Sr=xr(6);vr.range,kr.range,wr.range,Tr.range,Cr.range,Er.range,Sr.range;var Ar=cr((function(t){t.setDate(1),t.setHours(0,0,0,0)}),(function(t,e){t.setMonth(t.getMonth()+e)}),(function(t,e){return e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())}),(function(t){return t.getMonth()}));const Dr=Ar;Ar.range;var Lr=cr((function(t){t.setMonth(0,1),t.setHours(0,0,0,0)}),(function(t,e){t.setFullYear(t.getFullYear()+e)}),(function(t,e){return e.getFullYear()-t.getFullYear()}),(function(t){return t.getFullYear()}));Lr.every=function(t){return isFinite(t=Math.floor(t))&&t>0?cr((function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)}),(function(e,n){e.setFullYear(e.getFullYear()+n*t)})):null};const Or=Lr;Lr.range;var Nr=cr((function(t){t.setUTCSeconds(0,0)}),(function(t,e){t.setTime(+t+6e4*e)}),(function(t,e){return(e-t)/6e4}),(function(t){return t.getUTCMinutes()}));const Mr=Nr;Nr.range;var Br=cr((function(t){t.setUTCMinutes(0,0,0)}),(function(t,e){t.setTime(+t+36e5*e)}),(function(t,e){return(e-t)/36e5}),(function(t){return t.getUTCHours()}));const Ir=Br;Br.range;var Fr=cr((function(t){t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+e)}),(function(t,e){return(e-t)/864e5}),(function(t){return t.getUTCDate()-1}));const Rr=Fr;function $r(t){return cr((function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+7*e)}),(function(t,e){return(e-t)/6048e5}))}Fr.range;var Pr=$r(0),Yr=$r(1),jr=$r(2),zr=$r(3),Ur=$r(4),Wr=$r(5),qr=$r(6);Pr.range,Yr.range,jr.range,zr.range,Ur.range,Wr.range,qr.range;var Hr=cr((function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCMonth(t.getUTCMonth()+e)}),(function(t,e){return e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear())}),(function(t){return t.getUTCMonth()}));const Vr=Hr;Hr.range;var Gr=cr((function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)}),(function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()}),(function(t){return t.getUTCFullYear()}));Gr.every=function(t){return isFinite(t=Math.floor(t))&&t>0?cr((function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),(function(e,n){e.setUTCFullYear(e.getUTCFullYear()+n*t)})):null};const Xr=Gr;function Zr(t,e,n,i,r,a){const s=[[fr,1,1e3],[fr,5,5e3],[fr,15,15e3],[fr,30,3e4],[a,1,6e4],[a,5,3e5],[a,15,9e5],[a,30,18e5],[r,1,36e5],[r,3,108e5],[r,6,216e5],[r,12,432e5],[i,1,864e5],[i,2,1728e5],[n,1,6048e5],[e,1,2592e6],[e,3,7776e6],[t,1,31536e6]];function o(e,n,i){const r=Math.abs(n-e)/i,a=x(([,,t])=>t).right(s,r);if(a===s.length)return t.every(O(e/31536e6,n/31536e6,i));if(0===a)return ur.every(Math.max(O(e,n,i),1));const[o,l]=s[r/s[a-1][2][t.toLowerCase(),e]))}function da(t,e,n){var i=aa.exec(e.slice(n,n+1));return i?(t.w=+i[0],n+i[0].length):-1}function fa(t,e,n){var i=aa.exec(e.slice(n,n+1));return i?(t.u=+i[0],n+i[0].length):-1}function pa(t,e,n){var i=aa.exec(e.slice(n,n+2));return i?(t.U=+i[0],n+i[0].length):-1}function ga(t,e,n){var i=aa.exec(e.slice(n,n+2));return i?(t.V=+i[0],n+i[0].length):-1}function ya(t,e,n){var i=aa.exec(e.slice(n,n+2));return i?(t.W=+i[0],n+i[0].length):-1}function ma(t,e,n){var i=aa.exec(e.slice(n,n+4));return i?(t.y=+i[0],n+i[0].length):-1}function ba(t,e,n){var i=aa.exec(e.slice(n,n+2));return i?(t.y=+i[0]+(+i[0]>68?1900:2e3),n+i[0].length):-1}function _a(t,e,n){var i=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return i?(t.Z=i[1]?0:-(i[2]+(i[3]||"00")),n+i[0].length):-1}function xa(t,e,n){var i=aa.exec(e.slice(n,n+1));return i?(t.q=3*i[0]-3,n+i[0].length):-1}function va(t,e,n){var i=aa.exec(e.slice(n,n+2));return i?(t.m=i[0]-1,n+i[0].length):-1}function ka(t,e,n){var i=aa.exec(e.slice(n,n+2));return i?(t.d=+i[0],n+i[0].length):-1}function wa(t,e,n){var i=aa.exec(e.slice(n,n+3));return i?(t.m=0,t.d=+i[0],n+i[0].length):-1}function Ta(t,e,n){var i=aa.exec(e.slice(n,n+2));return i?(t.H=+i[0],n+i[0].length):-1}function Ca(t,e,n){var i=aa.exec(e.slice(n,n+2));return i?(t.M=+i[0],n+i[0].length):-1}function Ea(t,e,n){var i=aa.exec(e.slice(n,n+2));return i?(t.S=+i[0],n+i[0].length):-1}function Sa(t,e,n){var i=aa.exec(e.slice(n,n+3));return i?(t.L=+i[0],n+i[0].length):-1}function Aa(t,e,n){var i=aa.exec(e.slice(n,n+6));return i?(t.L=Math.floor(i[0]/1e3),n+i[0].length):-1}function Da(t,e,n){var i=sa.exec(e.slice(n,n+1));return i?n+i[0].length:-1}function La(t,e,n){var i=aa.exec(e.slice(n));return i?(t.Q=+i[0],n+i[0].length):-1}function Oa(t,e,n){var i=aa.exec(e.slice(n));return i?(t.s=+i[0],n+i[0].length):-1}function Na(t,e){return la(t.getDate(),e,2)}function Ma(t,e){return la(t.getHours(),e,2)}function Ba(t,e){return la(t.getHours()%12||12,e,2)}function Ia(t,e){return la(1+_r.count(Or(t),t),e,3)}function Fa(t,e){return la(t.getMilliseconds(),e,3)}function Ra(t,e){return Fa(t,e)+"000"}function $a(t,e){return la(t.getMonth()+1,e,2)}function Pa(t,e){return la(t.getMinutes(),e,2)}function Ya(t,e){return la(t.getSeconds(),e,2)}function ja(t){var e=t.getDay();return 0===e?7:e}function za(t,e){return la(vr.count(Or(t)-1,t),e,2)}function Ua(t){var e=t.getDay();return e>=4||0===e?Cr(t):Cr.ceil(t)}function Wa(t,e){return t=Ua(t),la(Cr.count(Or(t),t)+(4===Or(t).getDay()),e,2)}function qa(t){return t.getDay()}function Ha(t,e){return la(kr.count(Or(t)-1,t),e,2)}function Va(t,e){return la(t.getFullYear()%100,e,2)}function Ga(t,e){return la((t=Ua(t)).getFullYear()%100,e,2)}function Xa(t,e){return la(t.getFullYear()%1e4,e,4)}function Za(t,e){var n=t.getDay();return la((t=n>=4||0===n?Cr(t):Cr.ceil(t)).getFullYear()%1e4,e,4)}function Qa(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+la(e/60|0,"0",2)+la(e%60,"0",2)}function Ka(t,e){return la(t.getUTCDate(),e,2)}function Ja(t,e){return la(t.getUTCHours(),e,2)}function ts(t,e){return la(t.getUTCHours()%12||12,e,2)}function es(t,e){return la(1+Rr.count(Xr(t),t),e,3)}function ns(t,e){return la(t.getUTCMilliseconds(),e,3)}function is(t,e){return ns(t,e)+"000"}function rs(t,e){return la(t.getUTCMonth()+1,e,2)}function as(t,e){return la(t.getUTCMinutes(),e,2)}function ss(t,e){return la(t.getUTCSeconds(),e,2)}function os(t){var e=t.getUTCDay();return 0===e?7:e}function ls(t,e){return la(Pr.count(Xr(t)-1,t),e,2)}function cs(t){var e=t.getUTCDay();return e>=4||0===e?Ur(t):Ur.ceil(t)}function hs(t,e){return t=cs(t),la(Ur.count(Xr(t),t)+(4===Xr(t).getUTCDay()),e,2)}function us(t){return t.getUTCDay()}function ds(t,e){return la(Yr.count(Xr(t)-1,t),e,2)}function fs(t,e){return la(t.getUTCFullYear()%100,e,2)}function ps(t,e){return la((t=cs(t)).getUTCFullYear()%100,e,2)}function gs(t,e){return la(t.getUTCFullYear()%1e4,e,4)}function ys(t,e){var n=t.getUTCDay();return la((t=n>=4||0===n?Ur(t):Ur.ceil(t)).getUTCFullYear()%1e4,e,4)}function ms(){return"+0000"}function bs(){return"%"}function _s(t){return+t}function xs(t){return Math.floor(+t/1e3)}function vs(t){return new Date(t)}function ks(t){return t instanceof Date?+t:+new Date(+t)}function ws(t,e,n,i,r,a,s,o,l,c){var h=rr(),u=h.invert,d=h.domain,f=c(".%L"),p=c(":%S"),g=c("%I:%M"),y=c("%I %p"),m=c("%a %d"),b=c("%b %d"),_=c("%B"),x=c("%Y");function v(t){return(l(t)=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:_s,s:xs,S:Ya,u:ja,U:za,V:Wa,w:qa,W:Ha,x:null,X:null,y:Va,Y:Xa,Z:Qa,"%":bs},x={a:function(t){return s[t.getUTCDay()]},A:function(t){return a[t.getUTCDay()]},b:function(t){return l[t.getUTCMonth()]},B:function(t){return o[t.getUTCMonth()]},c:null,d:Ka,e:Ka,f:is,g:ps,G:ys,H:Ja,I:ts,j:es,L:ns,m:rs,M:as,p:function(t){return r[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:_s,s:xs,S:ss,u:os,U:ls,V:hs,w:us,W:ds,x:null,X:null,y:fs,Y:gs,Z:ms,"%":bs},v={a:function(t,e,n){var i=f.exec(e.slice(n));return i?(t.w=p.get(i[0].toLowerCase()),n+i[0].length):-1},A:function(t,e,n){var i=u.exec(e.slice(n));return i?(t.w=d.get(i[0].toLowerCase()),n+i[0].length):-1},b:function(t,e,n){var i=m.exec(e.slice(n));return i?(t.m=b.get(i[0].toLowerCase()),n+i[0].length):-1},B:function(t,e,n){var i=g.exec(e.slice(n));return i?(t.m=y.get(i[0].toLowerCase()),n+i[0].length):-1},c:function(t,n,i){return T(t,e,n,i)},d:ka,e:ka,f:Aa,g:ba,G:ma,H:Ta,I:Ta,j:wa,L:Sa,m:va,M:Ca,p:function(t,e,n){var i=c.exec(e.slice(n));return i?(t.p=h.get(i[0].toLowerCase()),n+i[0].length):-1},q:xa,Q:La,s:Oa,S:Ea,u:fa,U:pa,V:ga,w:da,W:ya,x:function(t,e,i){return T(t,n,e,i)},X:function(t,e,n){return T(t,i,e,n)},y:ba,Y:ma,Z:_a,"%":Da};function k(t,e){return function(n){var i,r,a,s=[],o=-1,l=0,c=t.length;for(n instanceof Date||(n=new Date(+n));++o53)return null;"w"in a||(a.w=1),"Z"in a?(r=(i=ta(ea(a.y,0,1))).getUTCDay(),i=r>4||0===r?Yr.ceil(i):Yr(i),i=Rr.offset(i,7*(a.V-1)),a.y=i.getUTCFullYear(),a.m=i.getUTCMonth(),a.d=i.getUTCDate()+(a.w+6)%7):(r=(i=Jr(ea(a.y,0,1))).getDay(),i=r>4||0===r?kr.ceil(i):kr(i),i=_r.offset(i,7*(a.V-1)),a.y=i.getFullYear(),a.m=i.getMonth(),a.d=i.getDate()+(a.w+6)%7)}else("W"in a||"U"in a)&&("w"in a||(a.w="u"in a?a.u%7:"W"in a?1:0),r="Z"in a?ta(ea(a.y,0,1)).getUTCDay():Jr(ea(a.y,0,1)).getDay(),a.m=0,a.d="W"in a?(a.w+6)%7+7*a.W-(r+5)%7:a.w+7*a.U-(r+6)%7);return"Z"in a?(a.H+=a.Z/100|0,a.M+=a.Z%100,ta(a)):Jr(a)}}function T(t,e,n,i){for(var r,a,s=0,o=e.length,l=n.length;s=l)return-1;if(37===(r=e.charCodeAt(s++))){if(r=e.charAt(s++),!(a=v[r in ra?e.charAt(s++):r])||(i=a(t,n,i))<0)return-1}else if(r!=n.charCodeAt(i++))return-1}return i}return _.x=k(n,_),_.X=k(i,_),_.c=k(e,_),x.x=k(n,x),x.X=k(i,x),x.c=k(e,x),{format:function(t){var e=k(t+="",_);return e.toString=function(){return t},e},parse:function(t){var e=w(t+="",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=k(t+="",x);return e.toString=function(){return t},e},utcParse:function(t){var e=w(t+="",!0);return e.toString=function(){return t},e}}}(t),ia=na.format,na.parse,na.utcFormat,na.utcParse}({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});const Cs=Math.abs,Es=Math.atan2,Ss=Math.cos,As=Math.max,Ds=Math.min,Ls=Math.sin,Os=Math.sqrt,Ns=Math.PI,Ms=Ns/2,Bs=2*Ns;function Is(t){return t>1?0:t<-1?Ns:Math.acos(t)}function Fs(t){return t>=1?Ms:t<=-1?-Ms:Math.asin(t)}function Rs(t){return t.innerRadius}function $s(t){return t.outerRadius}function Ps(t){return t.startAngle}function Ys(t){return t.endAngle}function js(t){return t&&t.padAngle}function zs(t,e,n,i,r,a,s,o){var l=n-t,c=i-e,h=s-r,u=o-a,d=u*l-h*c;if(!(d*d<1e-12))return[t+(d=(h*(e-a)-u*(t-r))/d)*l,e+d*c]}function Us(t,e,n,i,r,a,s){var o=t-n,l=e-i,c=(s?a:-a)/Os(o*o+l*l),h=c*l,u=-c*o,d=t+h,f=e+u,p=n+h,g=i+u,y=(d+p)/2,m=(f+g)/2,b=p-d,_=g-f,x=b*b+_*_,v=r-a,k=d*g-p*f,w=(_<0?-1:1)*Os(As(0,v*v*x-k*k)),T=(k*_-b*w)/x,C=(-k*b-_*w)/x,E=(k*_+b*w)/x,S=(-k*b+_*w)/x,A=T-y,D=C-m,L=E-y,O=S-m;return A*A+D*D>L*L+O*O&&(T=E,C=S),{cx:T,cy:C,x01:-h,y01:-u,x11:T*(r/v-1),y11:C*(r/v-1)}}function Ws(){var t=Rs,e=$s,n=Ts(0),i=null,r=Ps,a=Ys,s=js,o=null;function l(){var l,c,h=+t.apply(this,arguments),u=+e.apply(this,arguments),d=r.apply(this,arguments)-Ms,f=a.apply(this,arguments)-Ms,p=Cs(f-d),g=f>d;if(o||(o=l=Ni()),u1e-12)if(p>Bs-1e-12)o.moveTo(u*Ss(d),u*Ls(d)),o.arc(0,0,u,d,f,!g),h>1e-12&&(o.moveTo(h*Ss(f),h*Ls(f)),o.arc(0,0,h,f,d,g));else{var y,m,b=d,_=f,x=d,v=f,k=p,w=p,T=s.apply(this,arguments)/2,C=T>1e-12&&(i?+i.apply(this,arguments):Os(h*h+u*u)),E=Ds(Cs(u-h)/2,+n.apply(this,arguments)),S=E,A=E;if(C>1e-12){var D=Fs(C/h*Ls(T)),L=Fs(C/u*Ls(T));(k-=2*D)>1e-12?(x+=D*=g?1:-1,v-=D):(k=0,x=v=(d+f)/2),(w-=2*L)>1e-12?(b+=L*=g?1:-1,_-=L):(w=0,b=_=(d+f)/2)}var O=u*Ss(b),N=u*Ls(b),M=h*Ss(v),B=h*Ls(v);if(E>1e-12){var I,F=u*Ss(_),R=u*Ls(_),$=h*Ss(x),P=h*Ls(x);if(p1e-12?A>1e-12?(y=Us($,P,O,N,u,A,g),m=Us(F,R,M,B,u,A,g),o.moveTo(y.cx+y.x01,y.cy+y.y01),A1e-12&&k>1e-12?S>1e-12?(y=Us(M,B,F,R,h,-S,g),m=Us(O,N,$,P,h,-S,g),o.lineTo(y.cx+y.x01,y.cy+y.y01),St?1:e>=t?0:NaN}function Ks(t){return t}function Js(){}function to(t,e,n){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+n)/6)}function eo(t){this._context=t}function no(t){return new eo(t)}function io(t){this._context=t}function ro(t){this._context=t}function ao(t){this._context=t}function so(t){return t<0?-1:1}function oo(t,e,n){var i=t._x1-t._x0,r=e-t._x1,a=(t._y1-t._y0)/(i||r<0&&-0),s=(n-t._y1)/(r||i<0&&-0),o=(a*r+s*i)/(i+r);return(so(a)+so(s))*Math.min(Math.abs(a),Math.abs(s),.5*Math.abs(o))||0}function lo(t,e){var n=t._x1-t._x0;return n?(3*(t._y1-t._y0)/n-e)/2:e}function co(t,e,n){var i=t._x0,r=t._y0,a=t._x1,s=t._y1,o=(a-i)/3;t._context.bezierCurveTo(i+o,r+o*e,a-o,s-o*n,a,s)}function ho(t){this._context=t}function uo(t){this._context=new fo(t)}function fo(t){this._context=t}function po(t){this._context=t}function go(t){var e,n,i=t.length-1,r=new Array(i),a=new Array(i),s=new Array(i);for(r[0]=0,a[0]=2,s[0]=t[0]+2*t[1],e=1;e=0;--e)r[e]=(s[e]-r[e+1])/a[e];for(a[i-1]=(t[i]+r[i-1])/2,e=0;e(((t,e,i)=>{e in t?n(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i})(t,"symbol"!=typeof e?e+"":e,i),i);t.exports=function(){"use strict";"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;var n,r={exports:{}};(n=r).exports=function(){var t;function e(){return t.apply(null,arguments)}function i(t){return t instanceof Array||"[object Array]"===Object.prototype.toString.call(t)}function r(t){return null!=t&&"[object Object]"===Object.prototype.toString.call(t)}function a(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function s(t){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(t).length;for(var e in t)if(a(t,e))return;return 1}function o(t){return void 0===t}function l(t){return"number"==typeof t||"[object Number]"===Object.prototype.toString.call(t)}function c(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function h(t,e){for(var n=[],i=t.length,r=0;r>>0,i=0;iDt(t)?(a=t+1,e-Dt(t)):(a=t,e),{year:a,dayOfYear:n}}function It(t,e,n){var i,r,a=Mt(t.year(),e,n);return(a=Math.floor((t.dayOfYear()-a-1)/7)+1)<1?i=a+Ft(r=t.year()-1,e,n):a>Ft(t.year(),e,n)?(i=a-Ft(t.year(),e,n),r=t.year()+1):(r=t.year(),i=a),{week:i,year:r}}function Ft(t,e,n){var i=Mt(t,e,n);return e=Mt(t+1,e,n),(Dt(t)-i+e)/7}function Rt(t,e){return t.slice(e,7).concat(t.slice(0,e))}I("w",["ww",2],"wo","week"),I("W",["WW",2],"Wo","isoWeek"),P("week","w"),P("isoWeek","W"),U("week",5),U("isoWeek",5),dt("w",et),dt("ww",et,Q),dt("W",et),dt("WW",et,Q),_t(["w","ww","W","WW"],(function(t,e,n,i){e[i.substr(0,1)]=H(t)})),I("d",0,"do","day"),I("dd",0,0,(function(t){return this.localeData().weekdaysMin(this,t)})),I("ddd",0,0,(function(t){return this.localeData().weekdaysShort(this,t)})),I("dddd",0,0,(function(t){return this.localeData().weekdays(this,t)})),I("e",0,0,"weekday"),I("E",0,0,"isoWeekday"),P("day","d"),P("weekday","e"),P("isoWeekday","E"),U("day",11),U("weekday",11),U("isoWeekday",11),dt("d",et),dt("e",et),dt("E",et),dt("dd",(function(t,e){return e.weekdaysMinRegex(t)})),dt("ddd",(function(t,e){return e.weekdaysShortRegex(t)})),dt("dddd",(function(t,e){return e.weekdaysRegex(t)})),_t(["dd","ddd","dddd"],(function(t,e,n,i){null!=(i=n._locale.weekdaysParse(t,i,n._strict))?e.d=i:f(n).invalidWeekday=t})),_t(["d","e","E"],(function(t,e,n,i){e[i]=H(t)}));var $t="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Pt="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Yt="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),jt=ut,zt=ut,Ut=ut;function Wt(){function t(t,e){return e.length-t.length}for(var e,n,i,r=[],a=[],s=[],o=[],l=0;l<7;l++)i=d([2e3,1]).day(l),e=pt(this.weekdaysMin(i,"")),n=pt(this.weekdaysShort(i,"")),i=pt(this.weekdays(i,"")),r.push(e),a.push(n),s.push(i),o.push(e),o.push(n),o.push(i);r.sort(t),a.sort(t),s.sort(t),o.sort(t),this._weekdaysRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+r.join("|")+")","i")}function qt(){return this.hours()%12||12}function Ht(t,e){I(t,0,0,(function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)}))}function Vt(t,e){return e._meridiemParse}I("H",["HH",2],0,"hour"),I("h",["hh",2],0,qt),I("k",["kk",2],0,(function(){return this.hours()||24})),I("hmm",0,0,(function(){return""+qt.apply(this)+L(this.minutes(),2)})),I("hmmss",0,0,(function(){return""+qt.apply(this)+L(this.minutes(),2)+L(this.seconds(),2)})),I("Hmm",0,0,(function(){return""+this.hours()+L(this.minutes(),2)})),I("Hmmss",0,0,(function(){return""+this.hours()+L(this.minutes(),2)+L(this.seconds(),2)})),Ht("a",!0),Ht("A",!1),P("hour","h"),U("hour",13),dt("a",Vt),dt("A",Vt),dt("H",et),dt("h",et),dt("k",et),dt("HH",et,Q),dt("hh",et,Q),dt("kk",et,Q),dt("hmm",nt),dt("hmmss",it),dt("Hmm",nt),dt("Hmmss",it),bt(["H","HH"],3),bt(["k","kk"],(function(t,e,n){t=H(t),e[3]=24===t?0:t})),bt(["a","A"],(function(t,e,n){n._isPm=n._locale.isPM(t),n._meridiem=t})),bt(["h","hh"],(function(t,e,n){e[3]=H(t),f(n).bigHour=!0})),bt("hmm",(function(t,e,n){var i=t.length-2;e[3]=H(t.substr(0,i)),e[4]=H(t.substr(i)),f(n).bigHour=!0})),bt("hmmss",(function(t,e,n){var i=t.length-4,r=t.length-2;e[3]=H(t.substr(0,i)),e[4]=H(t.substr(i,2)),e[5]=H(t.substr(r)),f(n).bigHour=!0})),bt("Hmm",(function(t,e,n){var i=t.length-2;e[3]=H(t.substr(0,i)),e[4]=H(t.substr(i))})),bt("Hmmss",(function(t,e,n){var i=t.length-4,r=t.length-2;e[3]=H(t.substr(0,i)),e[4]=H(t.substr(i,2)),e[5]=H(t.substr(r))})),ut=V("Hours",!0);var Gt,Xt={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:vt,monthsShort:kt,week:{dow:0,doy:6},weekdays:$t,weekdaysMin:Yt,weekdaysShort:Pt,meridiemParse:/[ap]\.?m?\.?/i},Zt={},Qt={};function Kt(t){return t&&t.toLowerCase().replace("_","-")}function Jt(t){var e;if(void 0===Zt[t]&&n&&n.exports&&null!=t.match("^[^/\\\\]*$"))try{e=Gt._abbr,function(t){throw new Error('Could not dynamically require "'+t+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}("./locale/"+t),te(e)}catch(e){Zt[t]=null}return Zt[t]}function te(t,e){return t&&((e=o(e)?ne(t):ee(t,e))?Gt=e:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+t+" not found. Did you forget to load it?")),Gt._abbr}function ee(t,e){if(null===e)return delete Zt[t],null;var n,i=Xt;if(e.abbr=t,null!=Zt[t])C("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),i=Zt[t]._config;else if(null!=e.parentLocale)if(null!=Zt[e.parentLocale])i=Zt[e.parentLocale]._config;else{if(null==(n=Jt(e.parentLocale)))return Qt[e.parentLocale]||(Qt[e.parentLocale]=[]),Qt[e.parentLocale].push({name:t,config:e}),null;i=n._config}return Zt[t]=new A(S(i,e)),Qt[t]&&Qt[t].forEach((function(t){ee(t.name,t.config)})),te(t),Zt[t]}function ne(t){var e;if(!(t=t&&t._locale&&t._locale._abbr?t._locale._abbr:t))return Gt;if(!i(t)){if(e=Jt(t))return e;t=[t]}return function(t){for(var e,n,i,r,a=0;a=e&&function(t,e){for(var n=Math.min(t.length,e.length),i=0;i=e-1)break;e--}a++}return Gt}(t)}function ie(t){var e=t._a;return e&&-2===f(t).overflow&&(e=e[1]<0||11xt(e[0],e[1])?2:e[3]<0||24Ft(s,c,h)?f(r)._overflowWeeks=!0:null!=u?f(r)._overflowWeekday=!0:(d=Bt(s,o,l,c,h),r._a[0]=d.year,r._dayOfYear=d.dayOfYear)),null!=t._dayOfYear&&(a=pe(t._a[0],i[0]),(t._dayOfYear>Dt(a)||0===t._dayOfYear)&&(f(t)._overflowDayOfYear=!0),u=Nt(a,0,t._dayOfYear),t._a[1]=u.getUTCMonth(),t._a[2]=u.getUTCDate()),n=0;n<3&&null==t._a[n];++n)t._a[n]=p[n]=i[n];for(;n<7;n++)t._a[n]=p[n]=null==t._a[n]?2===n?1:0:t._a[n];24===t._a[3]&&0===t._a[4]&&0===t._a[5]&&0===t._a[6]&&(t._nextDay=!0,t._a[3]=0),t._d=(t._useUTC?Nt:Ot).apply(null,p),s=t._useUTC?t._d.getUTCDay():t._d.getDay(),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[3]=24),t._w&&void 0!==t._w.d&&t._w.d!==s&&(f(t).weekdayMismatch=!0)}}function ye(t){if(t._f===e.ISO_8601)de(t);else if(t._f===e.RFC_2822)fe(t);else{t._a=[],f(t).empty=!0;for(var n,i,r,s,o,l=""+t._i,c=l.length,h=0,u=R(t._f,t._locale).match(O)||[],d=u.length,p=0;pt.valueOf():t.valueOf()"}),Z.toJSON=function(){return this.isValid()?this.toISOString():null},Z.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},Z.unix=function(){return Math.floor(this.valueOf()/1e3)},Z.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},Z.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},Z.eraName=function(){for(var t,e=this.localeData().eras(),n=0,i=e.length;nthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},Z.isLocal=function(){return!!this.isValid()&&!this._isUTC},Z.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},Z.isUtc=Le,Z.isUTC=Le,Z.zoneAbbr=function(){return this._isUTC?"UTC":""},Z.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},Z.dates=w("dates accessor is deprecated. Use date instead.",at),Z.months=w("months accessor is deprecated. Use month instead",St),Z.years=w("years accessor is deprecated. Use year instead",Lt),Z.zone=w("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",(function(t,e){return null!=t?(this.utcOffset(t="string"!=typeof t?-t:t,e),this):-this.utcOffset()})),Z.isDSTShifted=w("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",(function(){if(!o(this._isDSTShifted))return this._isDSTShifted;var t,e={};return _(e,this),(e=me(e))._a?(t=(e._isUTC?d:_e)(e._a),this._isDSTShifted=this.isValid()&&0{},debug:(...t)=>{},info:(...t)=>{},warn:(...t)=>{},error:(...t)=>{},fatal:(...t)=>{}},l=function(t="fatal"){let e=s.fatal;"string"==typeof t?(t=t.toLowerCase())in s&&(e=s[t]):"number"==typeof t&&(e=t),o.trace=()=>{},o.debug=()=>{},o.info=()=>{},o.warn=()=>{},o.error=()=>{},o.fatal=()=>{},e<=s.fatal&&(o.fatal=console.error?console.error.bind(console,h("FATAL"),"color: orange"):console.log.bind(console,"",h("FATAL"))),e<=s.error&&(o.error=console.error?console.error.bind(console,h("ERROR"),"color: orange"):console.log.bind(console,"",h("ERROR"))),e<=s.warn&&(o.warn=console.warn?console.warn.bind(console,h("WARN"),"color: orange"):console.log.bind(console,"",h("WARN"))),e<=s.info&&(o.info=console.info?console.info.bind(console,h("INFO"),"color: lightblue"):console.log.bind(console,"",h("INFO"))),e<=s.debug&&(o.debug=console.debug?console.debug.bind(console,h("DEBUG"),"color: lightgreen"):console.log.bind(console,"",h("DEBUG"))),e<=s.trace&&(o.trace=console.debug?console.debug.bind(console,h("TRACE"),"color: lightgreen"):console.log.bind(console,"",h("TRACE")))},h=t=>`%c${a().format("ss.SSS")} : ${t} : `;var u={};Object.defineProperty(u,"__esModule",{value:!0});var d=u.sanitizeUrl=void 0,f=/^([^\w]*)(javascript|data|vbscript)/im,p=/&#(\w+)(^\w|;)?/g,g=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,y=/^([^:]+):/gm,m=[".","/"];function b(t,e){return null==t||null==e?NaN:te?1:t>=e?0:NaN}function _(t,e){return null==t||null==e?NaN:et?1:e>=t?0:NaN}function x(t){let e,n,i;function r(t,i,r=0,a=t.length){if(r>>1;n(t[e],i)<0?r=e+1:a=e}while(rb(t(e),n),i=(e,n)=>t(e)-n):(e=t===b||t===_?t:v,n=t,i=t),{left:r,center:function(t,e,n=0,a=t.length){const s=r(t,e,n,a-1);return s>n&&i(t[s-1],e)>-i(t[s],e)?s-1:s},right:function(t,i,r=0,a=t.length){if(r>>1;n(t[e],i)<=0?r=e+1:a=e}while(r-1}(n))return n;var i=n.match(y);if(!i)return n;var r=i[0];return f.test(r)?"about:blank":n};const k=x(b).right;x((function(t){return null===t?NaN:+t})).center;const w=k;class T extends Map{constructor(t,e=E){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:e}}),null!=t)for(const[e,n]of t)this.set(e,n)}get(t){return super.get(C(this,t))}has(t){return super.has(C(this,t))}set(t,e){return super.set(function({_intern:t,_key:e},n){const i=e(n);return t.has(i)?t.get(i):(t.set(i,n),n)}(this,t),e)}delete(t){return super.delete(function({_intern:t,_key:e},n){const i=e(n);return t.has(i)&&(n=t.get(i),t.delete(i)),n}(this,t))}}function C({_intern:t,_key:e},n){const i=e(n);return t.has(i)?t.get(i):n}function E(t){return null!==t&&"object"==typeof t?t.valueOf():t}var S=Math.sqrt(50),A=Math.sqrt(10),D=Math.sqrt(2);function L(t,e,n){var i=(e-t)/Math.max(0,n),r=Math.floor(Math.log(i)/Math.LN10),a=i/Math.pow(10,r);return r>=0?(a>=S?10:a>=A?5:a>=D?2:1)*Math.pow(10,r):-Math.pow(10,-r)/(a>=S?10:a>=A?5:a>=D?2:1)}function O(t,e,n){var i=Math.abs(e-t)/Math.max(0,n),r=Math.pow(10,Math.floor(Math.log(i)/Math.LN10)),a=i/r;return a>=S?r*=10:a>=A?r*=5:a>=D&&(r*=2),e=e)&&(n=e);else{let i=-1;for(let r of t)null!=(r=e(r,++i,t))&&(n=r)&&(n=r)}return n}function M(t,e){let n;if(void 0===e)for(const e of t)null!=e&&(n>e||void 0===n&&e>=e)&&(n=e);else{let i=-1;for(let r of t)null!=(r=e(r,++i,t))&&(n>r||void 0===n&&r>=r)&&(n=r)}return n}function B(t){return t}function I(t){return"translate("+t+",0)"}function F(t){return"translate(0,"+t+")"}function R(t){return e=>+t(e)}function $(t,e){return e=Math.max(0,t.bandwidth()-2*e)/2,t.round()&&(e=Math.round(e)),n=>+t(n)+e}function P(){return!this.__axis}function Y(t,e){var n=[],i=null,r=null,a=6,s=6,o=3,l="undefined"!=typeof window&&window.devicePixelRatio>1?0:.5,c=1===t||4===t?-1:1,h=4===t||2===t?"x":"y",u=1===t||3===t?I:F;function d(d){var f=null==i?e.ticks?e.ticks.apply(e,n):e.domain():i,p=null==r?e.tickFormat?e.tickFormat.apply(e,n):B:r,g=Math.max(a,0)+o,y=e.range(),m=+y[0]+l,b=+y[y.length-1]+l,_=(e.bandwidth?$:R)(e.copy(),l),x=d.selection?d.selection():d,v=x.selectAll(".domain").data([null]),k=x.selectAll(".tick").data(f,e).order(),w=k.exit(),T=k.enter().append("g").attr("class","tick"),C=k.select("line"),E=k.select("text");v=v.merge(v.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),k=k.merge(T),C=C.merge(T.append("line").attr("stroke","currentColor").attr(h+"2",c*a)),E=E.merge(T.append("text").attr("fill","currentColor").attr(h,c*g).attr("dy",1===t?"0em":3===t?"0.71em":"0.32em")),d!==x&&(v=v.transition(d),k=k.transition(d),C=C.transition(d),E=E.transition(d),w=w.transition(d).attr("opacity",1e-6).attr("transform",(function(t){return isFinite(t=_(t))?u(t+l):this.getAttribute("transform")})),T.attr("opacity",1e-6).attr("transform",(function(t){var e=this.parentNode.__axis;return u((e&&isFinite(e=e(t))?e:_(t))+l)}))),w.remove(),v.attr("d",4===t||2===t?s?"M"+c*s+","+m+"H"+l+"V"+b+"H"+c*s:"M"+l+","+m+"V"+b:s?"M"+m+","+c*s+"V"+l+"H"+b+"V"+c*s:"M"+m+","+l+"H"+b),k.attr("opacity",1).attr("transform",(function(t){return u(_(t)+l)})),C.attr(h+"2",c*a),E.attr(h,c*g).text(p),x.filter(P).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",2===t?"start":4===t?"end":"middle"),x.each((function(){this.__axis=_}))}return d.scale=function(t){return arguments.length?(e=t,d):e},d.ticks=function(){return n=Array.from(arguments),d},d.tickArguments=function(t){return arguments.length?(n=null==t?[]:Array.from(t),d):n.slice()},d.tickValues=function(t){return arguments.length?(i=null==t?null:Array.from(t),d):i&&i.slice()},d.tickFormat=function(t){return arguments.length?(r=t,d):r},d.tickSize=function(t){return arguments.length?(a=s=+t,d):a},d.tickSizeInner=function(t){return arguments.length?(a=+t,d):a},d.tickSizeOuter=function(t){return arguments.length?(s=+t,d):s},d.tickPadding=function(t){return arguments.length?(o=+t,d):o},d.offset=function(t){return arguments.length?(l=+t,d):l},d}var j={value:()=>{}};function z(){for(var t,e=0,n=arguments.length,i={};e=0&&(n=t.slice(i+1),t=t.slice(0,i)),t&&!e.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}}))}function q(t,e){for(var n,i=0,r=t.length;i0)for(var n,i,r=new Array(n),a=0;a=0&&"xmlns"!==(e=t.slice(0,n))&&(t=t.slice(n+1)),G.hasOwnProperty(e)?{space:G[e],local:t}:t}function Z(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===V&&e.documentElement.namespaceURI===V?e.createElement(t):e.createElementNS(n,t)}}function Q(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function K(t){var e=X(t);return(e.local?Q:Z)(e)}function J(){}function tt(t){return null==t?J:function(){return this.querySelector(t)}}function et(t){return null==t?[]:Array.isArray(t)?t:Array.from(t)}function nt(){return[]}function it(t){return null==t?nt:function(){return this.querySelectorAll(t)}}function rt(t){return function(){return this.matches(t)}}function at(t){return function(e){return e.matches(t)}}var st=Array.prototype.find;function ot(){return this.firstElementChild}var lt=Array.prototype.filter;function ct(){return Array.from(this.children)}function ht(t){return new Array(t.length)}function ut(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}function dt(t){return function(){return t}}function ft(t,e,n,i,r,a){for(var s,o=0,l=e.length,c=a.length;oe?1:t>=e?0:NaN}function bt(t){return function(){this.removeAttribute(t)}}function _t(t){return function(){this.removeAttributeNS(t.space,t.local)}}function xt(t,e){return function(){this.setAttribute(t,e)}}function vt(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function kt(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttribute(t):this.setAttribute(t,n)}}function wt(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}function Tt(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function Ct(t){return function(){this.style.removeProperty(t)}}function Et(t,e,n){return function(){this.style.setProperty(t,e,n)}}function St(t,e,n){return function(){var i=e.apply(this,arguments);null==i?this.style.removeProperty(t):this.style.setProperty(t,i,n)}}function At(t,e){return t.style.getPropertyValue(e)||Tt(t).getComputedStyle(t,null).getPropertyValue(e)}function Dt(t){return function(){delete this[t]}}function Lt(t,e){return function(){this[t]=e}}function Ot(t,e){return function(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}}function Nt(t){return t.trim().split(/^|\s+/)}function Mt(t){return t.classList||new Bt(t)}function Bt(t){this._node=t,this._names=Nt(t.getAttribute("class")||"")}function It(t,e){for(var n=Mt(t),i=-1,r=e.length;++i=0&&(e=t.slice(n+1),t=t.slice(0,n)),{type:t,name:e}}))}function Jt(t){return function(){var e=this.__on;if(e){for(var n,i=0,r=-1,a=e.length;i=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var re=[null];function ae(t,e){this._groups=t,this._parents=e}function se(){return new ae([[document.documentElement]],re)}function oe(t){return"string"==typeof t?new ae([[document.querySelector(t)]],[document.documentElement]):new ae([[t]],re)}function le(t){return"string"==typeof t?new ae([document.querySelectorAll(t)],[document.documentElement]):new ae([et(t)],re)}function ce(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function he(t,e){var n=Object.create(t.prototype);for(var i in e)n[i]=e[i];return n}function ue(){}ae.prototype=se.prototype={constructor:ae,select:function(t){"function"!=typeof t&&(t=tt(t));for(var e=this._groups,n=e.length,i=new Array(n),r=0;r=v&&(v=x+1);!(_=y[v])&&++v=0;)(i=r[a])&&(s&&4^i.compareDocumentPosition(s)&&s.parentNode.insertBefore(i,s),s=i);return this},sort:function(t){function e(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}t||(t=mt);for(var n=this._groups,i=n.length,r=new Array(i),a=0;a1?this.each((null==e?Ct:"function"==typeof e?St:Et)(t,e,null==n?"":n)):At(this.node(),t)},property:function(t,e){return arguments.length>1?this.each((null==e?Dt:"function"==typeof e?Ot:Lt)(t,e)):this.node()[t]},classed:function(t,e){var n=Nt(t+"");if(arguments.length<2){for(var i=Mt(this.node()),r=-1,a=n.length;++r>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===n?Se(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===n?Se(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=ye.exec(t))?new Le(e[1],e[2],e[3],1):(e=me.exec(t))?new Le(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=be.exec(t))?Se(e[1],e[2],e[3],e[4]):(e=_e.exec(t))?Se(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=xe.exec(t))?Fe(e[1],e[2]/100,e[3]/100,1):(e=ve.exec(t))?Fe(e[1],e[2]/100,e[3]/100,e[4]):ke.hasOwnProperty(t)?Ee(ke[t]):"transparent"===t?new Le(NaN,NaN,NaN,0):null}function Ee(t){return new Le(t>>16&255,t>>8&255,255&t,1)}function Se(t,e,n,i){return i<=0&&(t=e=n=NaN),new Le(t,e,n,i)}function Ae(t){return t instanceof ue||(t=Ce(t)),t?new Le((t=t.rgb()).r,t.g,t.b,t.opacity):new Le}function De(t,e,n,i){return 1===arguments.length?Ae(t):new Le(t,e,n,null==i?1:i)}function Le(t,e,n,i){this.r=+t,this.g=+e,this.b=+n,this.opacity=+i}function Oe(){return`#${Ie(this.r)}${Ie(this.g)}${Ie(this.b)}`}function Ne(){const t=Me(this.opacity);return`${1===t?"rgb(":"rgba("}${Be(this.r)}, ${Be(this.g)}, ${Be(this.b)}${1===t?")":`, ${t})`}`}function Me(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Be(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function Ie(t){return((t=Be(t))<16?"0":"")+t.toString(16)}function Fe(t,e,n,i){return i<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new $e(t,e,n,i)}function Re(t){if(t instanceof $e)return new $e(t.h,t.s,t.l,t.opacity);if(t instanceof ue||(t=Ce(t)),!t)return new $e;if(t instanceof $e)return t;var e=(t=t.rgb()).r/255,n=t.g/255,i=t.b/255,r=Math.min(e,n,i),a=Math.max(e,n,i),s=NaN,o=a-r,l=(a+r)/2;return o?(s=e===a?(n-i)/o+6*(n0&&l<1?0:s,new $e(s,o,l,t.opacity)}function $e(t,e,n,i){this.h=+t,this.s=+e,this.l=+n,this.opacity=+i}function Pe(t){return(t=(t||0)%360)<0?t+360:t}function Ye(t){return Math.max(0,Math.min(1,t||0))}function je(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}ce(ue,Ce,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:we,formatHex:we,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return Re(this).formatHsl()},formatRgb:Te,toString:Te}),ce(Le,De,he(ue,{brighter(t){return t=null==t?1/.7:Math.pow(1/.7,t),new Le(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=null==t?.7:Math.pow(.7,t),new Le(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new Le(Be(this.r),Be(this.g),Be(this.b),Me(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Oe,formatHex:Oe,formatHex8:function(){return`#${Ie(this.r)}${Ie(this.g)}${Ie(this.b)}${Ie(255*(isNaN(this.opacity)?1:this.opacity))}`},formatRgb:Ne,toString:Ne})),ce($e,(function(t,e,n,i){return 1===arguments.length?Re(t):new $e(t,e,n,null==i?1:i)}),he(ue,{brighter(t){return t=null==t?1/.7:Math.pow(1/.7,t),new $e(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=null==t?.7:Math.pow(.7,t),new $e(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,i=n+(n<.5?n:1-n)*e,r=2*n-i;return new Le(je(t>=240?t-240:t+120,r,i),je(t,r,i),je(t<120?t+240:t-120,r,i),this.opacity)},clamp(){return new $e(Pe(this.h),Ye(this.s),Ye(this.l),Me(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=Me(this.opacity);return`${1===t?"hsl(":"hsla("}${Pe(this.h)}, ${100*Ye(this.s)}%, ${100*Ye(this.l)}%${1===t?")":`, ${t})`}`}}));const ze=Math.PI/180,Ue=180/Math.PI,We=6/29*3*(6/29);function qe(t){if(t instanceof He)return new He(t.l,t.a,t.b,t.opacity);if(t instanceof Je)return tn(t);t instanceof Le||(t=Ae(t));var e,n,i=Ze(t.r),r=Ze(t.g),a=Ze(t.b),s=Ve((.2225045*i+.7168786*r+.0606169*a)/1);return i===r&&r===a?e=n=s:(e=Ve((.4360747*i+.3850649*r+.1430804*a)/.96422),n=Ve((.0139322*i+.0971045*r+.7141733*a)/.82521)),new He(116*s-16,500*(e-s),200*(s-n),t.opacity)}function He(t,e,n,i){this.l=+t,this.a=+e,this.b=+n,this.opacity=+i}function Ve(t){return t>6/29*(6/29)*(6/29)?Math.pow(t,1/3):t/We+4/29}function Ge(t){return t>6/29?t*t*t:We*(t-4/29)}function Xe(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function Ze(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Qe(t){if(t instanceof Je)return new Je(t.h,t.c,t.l,t.opacity);if(t instanceof He||(t=qe(t)),0===t.a&&0===t.b)return new Je(NaN,0()=>t;function nn(t,e){return function(n){return t+n*e}}function rn(t){return 1==(t=+t)?an:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(i){return Math.pow(t+i*e,n)}}(e,n,t):en(isNaN(e)?n:e)}}function an(t,e){var n=e-t;return n?nn(t,n):en(isNaN(t)?e:t)}const sn=function t(e){var n=rn(e);function i(t,e){var i=n((t=De(t)).r,(e=De(e)).r),r=n(t.g,e.g),a=n(t.b,e.b),s=an(t.opacity,e.opacity);return function(e){return t.r=i(e),t.g=r(e),t.b=a(e),t.opacity=s(e),t+""}}return i.gamma=t,i}(1);function on(t,e){e||(e=[]);var n,i=t?Math.min(e.length,t.length):0,r=e.slice();return function(a){for(n=0;na&&(r=e.slice(a,r),o[s]?o[s]+=r:o[++s]=r),(n=n[0])===(i=i[0])?o[s]?o[s]+=i:o[++s]=i:(o[++s]=null,l.push({i:s,x:hn(n,i)})),a=fn.lastIndex;return a180?e+=360:e-t>180&&(t+=360),a.push({i:n.push(r(n)+"rotate(",null,i)-2,x:hn(t,e)})):e&&n.push(r(n)+"rotate("+e+i)}(a.rotate,s.rotate,o,l),function(t,e,n,a){t!==e?a.push({i:n.push(r(n)+"skewX(",null,i)-2,x:hn(t,e)}):e&&n.push(r(n)+"skewX("+e+i)}(a.skewX,s.skewX,o,l),function(t,e,n,i,a,s){if(t!==n||e!==i){var o=a.push(r(a)+"scale(",null,",",null,")");s.push({i:o-4,x:hn(t,n)},{i:o-2,x:hn(e,i)})}else 1===n&&1===i||a.push(r(a)+"scale("+n+","+i+")")}(a.scaleX,a.scaleY,s.scaleX,s.scaleY,o,l),a=s=null,function(t){for(var e,n=-1,i=l.length;++n180||n<-180?n-360*Math.round(n/360):n):en(isNaN(t)?e:t)},function(t,e){var n=Cn((t=Ke(t)).h,(e=Ke(e)).h),i=an(t.c,e.c),r=an(t.l,e.l),a=an(t.opacity,e.opacity);return function(e){return t.h=n(e),t.c=i(e),t.l=r(e),t.opacity=a(e),t+""}});var Cn,En,Sn,An=0,Dn=0,Ln=0,On=0,Nn=0,Mn=0,Bn="object"==typeof performance&&performance.now?performance:Date,In="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function Fn(){return Nn||(In(Rn),Nn=Bn.now()+Mn)}function Rn(){Nn=0}function $n(){this._call=this._time=this._next=null}function Pn(t,e,n){var i=new $n;return i.restart(t,e,n),i}function Yn(){Nn=(On=Bn.now())+Mn,An=Dn=0;try{!function(){Fn(),++An;for(var t,e=En;e;)(t=Nn-e._time)>=0&&e._call.call(void 0,t),e=e._next;--An}()}finally{An=0,function(){for(var t,e,n=En,i=1/0;n;)n._call?(i>n._time&&(i=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:En=e);Sn=t,zn(i)}(),Nn=0}}function jn(){var t=Bn.now(),e=t-On;e>1e3&&(Mn-=e,On=t)}function zn(t){An||(Dn&&(Dn=clearTimeout(Dn)),t-Nn>24?(t<1/0&&(Dn=setTimeout(Yn,t-Bn.now()-Mn)),Ln&&(Ln=clearInterval(Ln))):(Ln||(On=Bn.now(),Ln=setInterval(jn,1e3)),An=1,In(Yn)))}function Un(t,e,n){var i=new $n;return e=null==e?0:+e,i.restart(n=>{i.stop(),t(n+e)},e,n),i}$n.prototype=Pn.prototype={constructor:$n,restart:function(t,e,n){if("function"!=typeof t)throw new TypeError("callback is not a function");n=(null==n?Fn():+n)+(null==e?0:+e),this._next||Sn===this||(Sn?Sn._next=this:En=this,Sn=this),this._call=t,this._time=n,zn()},stop:function(){this._call&&(this._call=null,this._time=1/0,zn())}};var Wn=z("start","end","cancel","interrupt"),qn=[];function Hn(t,e,n,i,r,a){var s=t.__transition;if(s){if(n in s)return}else t.__transition={};!function(t,e,n){var i,r=t.__transition;function a(l){var c,h,u,d;if(1!==n.state)return o();for(c in r)if((d=r[c]).name===n.name){if(3===d.state)return Un(a);4===d.state?(d.state=6,d.timer.stop(),d.on.call("interrupt",t,t.__data__,d.index,d.group),delete r[c]):+c0)throw new Error("too late; already scheduled");return n}function Gn(t,e){var n=Xn(t,e);if(n.state>3)throw new Error("too late; already running");return n}function Xn(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function Zn(t,e){var n,i;return function(){var r=Gn(this,t),a=r.tween;if(a!==n)for(var s=0,o=(i=n=a).length;s=0&&(t=t.slice(0,e)),!t||"start"===t}))}(e)?Vn:Gn;return function(){var s=a(this,t),o=s.on;o!==i&&(r=(i=o).copy()).on(e,n),s.on=r}}var yi=se.prototype.constructor;function mi(t){return function(){this.style.removeProperty(t)}}function bi(t,e,n){return function(i){this.style.setProperty(t,e.call(this,i),n)}}function _i(t,e,n){var i,r;function a(){var a=e.apply(this,arguments);return a!==r&&(i=(r=a)&&bi(t,a,n)),i}return a._value=e,a}function xi(t){return function(e){this.textContent=t.call(this,e)}}function vi(t){var e,n;function i(){var i=t.apply(this,arguments);return i!==n&&(e=(n=i)&&xi(i)),e}return i._value=t,i}var ki=0;function wi(t,e,n,i){this._groups=t,this._parents=e,this._name=n,this._id=i}function Ti(){return++ki}var Ci=se.prototype;wi.prototype={constructor:wi,select:function(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=tt(t));for(var i=this._groups,r=i.length,a=new Array(r),s=0;s2&&n.state<5,n.state=6,n.timer.stop(),n.on.call(i?"interrupt":"cancel",t,t.__data__,n.index,n.group),delete a[r]):s=!1;s&&delete t.__transition}}(this,t)}))},se.prototype.transition=function(t){var e,n;t instanceof wi?(e=t._id,t=t._name):(e=Ti(),(n=Ei).time=Fn(),t=null==t?null:t+"");for(var i=this._groups,r=i.length,a=0;a1?i[0]+i.slice(2):i,+t.slice(n+1)]}function Bi(t){return(t=Mi(Math.abs(t)))?t[1]:NaN}Oi.prototype=Ni.prototype={constructor:Oi,moveTo:function(t,e){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)},closePath:function(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(t,e){this._+="L"+(this._x1=+t)+","+(this._y1=+e)},quadraticCurveTo:function(t,e,n,i){this._+="Q"+ +t+","+ +e+","+(this._x1=+n)+","+(this._y1=+i)},bezierCurveTo:function(t,e,n,i,r,a){this._+="C"+ +t+","+ +e+","+ +n+","+ +i+","+(this._x1=+r)+","+(this._y1=+a)},arcTo:function(t,e,n,i,r){t=+t,e=+e,n=+n,i=+i,r=+r;var a=this._x1,s=this._y1,o=n-t,l=i-e,c=a-t,h=s-e,u=c*c+h*h;if(r<0)throw new Error("negative radius: "+r);if(null===this._x1)this._+="M"+(this._x1=t)+","+(this._y1=e);else if(u>1e-6)if(Math.abs(h*o-l*c)>1e-6&&r){var d=n-a,f=i-s,p=o*o+l*l,g=d*d+f*f,y=Math.sqrt(p),m=Math.sqrt(u),b=r*Math.tan((Ai-Math.acos((p+u-g)/(2*y*m)))/2),_=b/m,x=b/y;Math.abs(_-1)>1e-6&&(this._+="L"+(t+_*c)+","+(e+_*h)),this._+="A"+r+","+r+",0,0,"+ +(h*d>c*f)+","+(this._x1=t+x*o)+","+(this._y1=e+x*l)}else this._+="L"+(this._x1=t)+","+(this._y1=e)},arc:function(t,e,n,i,r,a){t=+t,e=+e,a=!!a;var s=(n=+n)*Math.cos(i),o=n*Math.sin(i),l=t+s,c=e+o,h=1^a,u=a?i-r:r-i;if(n<0)throw new Error("negative radius: "+n);null===this._x1?this._+="M"+l+","+c:(Math.abs(this._x1-l)>1e-6||Math.abs(this._y1-c)>1e-6)&&(this._+="L"+l+","+c),n&&(u<0&&(u=u%Di+Di),u>Li?this._+="A"+n+","+n+",0,1,"+h+","+(t-s)+","+(e-o)+"A"+n+","+n+",0,1,"+h+","+(this._x1=l)+","+(this._y1=c):u>1e-6&&(this._+="A"+n+","+n+",0,"+ +(u>=Ai)+","+h+","+(this._x1=t+n*Math.cos(r))+","+(this._y1=e+n*Math.sin(r))))},rect:function(t,e,n,i){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)+"h"+ +n+"v"+ +i+"h"+-n+"Z"},toString:function(){return this._}};var Ii,Fi=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Ri(t){if(!(e=Fi.exec(t)))throw new Error("invalid format: "+t);var e;return new $i({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function $i(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function Pi(t,e){var n=Mi(t,e);if(!n)return t+"";var i=n[0],r=n[1];return r<0?"0."+new Array(-r).join("0")+i:i.length>r+1?i.slice(0,r+1)+"."+i.slice(r+1):i+new Array(r-i.length+2).join("0")}Ri.prototype=$i.prototype,$i.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};const Yi={"%":(t,e)=>(100*t).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>Pi(100*t,e),r:Pi,s:function(t,e){var n=Mi(t,e);if(!n)return t+"";var i=n[0],r=n[1],a=r-(Ii=3*Math.max(-8,Math.min(8,Math.floor(r/3))))+1,s=i.length;return a===s?i:a>s?i+new Array(a-s+1).join("0"):a>0?i.slice(0,a)+"."+i.slice(a):"0."+new Array(1-a).join("0")+Mi(t,Math.max(0,e+a-1))[0]},X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function ji(t){return t}var zi,Ui,Wi,qi=Array.prototype.map,Hi=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function Vi(t){var e,n,i=void 0===t.grouping||void 0===t.thousands?ji:(e=qi.call(t.grouping,Number),n=t.thousands+"",function(t,i){for(var r=t.length,a=[],s=0,o=e[0],l=0;r>0&&o>0&&(l+o+1>i&&(o=Math.max(1,i-l)),a.push(t.substring(r-=o,r+o)),!((l+=o+1)>i));)o=e[s=(s+1)%e.length];return a.reverse().join(n)}),r=void 0===t.currency?"":t.currency[0]+"",a=void 0===t.currency?"":t.currency[1]+"",s=void 0===t.decimal?".":t.decimal+"",o=void 0===t.numerals?ji:function(t){return function(e){return e.replace(/[0-9]/g,(function(e){return t[+e]}))}}(qi.call(t.numerals,String)),l=void 0===t.percent?"%":t.percent+"",c=void 0===t.minus?"−":t.minus+"",h=void 0===t.nan?"NaN":t.nan+"";function u(t){var e=(t=Ri(t)).fill,n=t.align,u=t.sign,d=t.symbol,f=t.zero,p=t.width,g=t.comma,y=t.precision,m=t.trim,b=t.type;"n"===b?(g=!0,b="g"):Yi[b]||(void 0===y&&(y=12),m=!0,b="g"),(f||"0"===e&&"="===n)&&(f=!0,e="0",n="=");var _="$"===d?r:"#"===d&&/[boxX]/.test(b)?"0"+b.toLowerCase():"",x="$"===d?a:/[%p]/.test(b)?l:"",v=Yi[b],k=/[defgprs%]/.test(b);function w(t){var r,a,l,d=_,w=x;if("c"===b)w=v(t)+w,t="";else{var T=(t=+t)<0||1/t<0;if(t=isNaN(t)?h:v(Math.abs(t),y),m&&(t=function(t){t:for(var e,n=t.length,i=1,r=-1;i0&&(r=0)}return r>0?t.slice(0,r)+t.slice(e+1):t}(t)),T&&0==+t&&"+"!==u&&(T=!1),d=(T?"("===u?u:c:"-"===u||"("===u?"":u)+d,w=("s"===b?Hi[8+Ii/3]:"")+w+(T&&"("===u?")":""),k)for(r=-1,a=t.length;++r(l=t.charCodeAt(r))||l>57){w=(46===l?s+t.slice(r+1):t.slice(r))+w,t=t.slice(0,r);break}}g&&!f&&(t=i(t,1/0));var C=d.length+t.length+w.length,E=C>1)+d+t+w+E.slice(C);break;default:t=E+d+t+w}return o(t)}return y=void 0===y?6:/[gprs]/.test(b)?Math.max(1,Math.min(21,y)):Math.max(0,Math.min(20,y)),w.toString=function(){return t+""},w}return{format:u,formatPrefix:function(t,e){var n=u(((t=Ri(t)).type="f",t)),i=3*Math.max(-8,Math.min(8,Math.floor(Bi(e)/3))),r=Math.pow(10,-i),a=Hi[8+i/3];return function(t){return n(r*t)+a}}}}function Gi(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t)}return this}zi=Vi({thousands:",",grouping:[3],currency:["$",""]}),Ui=zi.format,Wi=zi.formatPrefix;const Xi=Symbol("implicit");function Zi(t){return+t}var Qi=[0,1];function Ki(t){return t}function Ji(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:(n=isNaN(e)?NaN:.5,function(){return n});var n}function tr(t,e,n){var i=t[0],r=t[1],a=e[0],s=e[1];return re&&(n=t,t=e,e=n),c=function(n){return Math.max(t,Math.min(e,n))}),i=l>2?er:tr,r=a=null,u}function u(e){return null==e||isNaN(e=+e)?n:(r||(r=i(s.map(t),o,l)))(t(c(e)))}return u.invert=function(n){return c(e((a||(a=i(o,s.map(t),hn)))(n)))},u.domain=function(t){return arguments.length?(s=Array.from(t,Zi),h()):s.slice()},u.range=function(t){return arguments.length?(o=Array.from(t),h()):o.slice()},u.rangeRound=function(t){return o=Array.from(t),l=yn,h()},u.clamp=function(t){return arguments.length?(c=!!t||Ki,h()):c!==Ki},u.interpolate=function(t){return arguments.length?(l=t,h()):l},u.unknown=function(t){return arguments.length?(n=t,u):n},function(n,i){return t=n,e=i,h()}}function rr(){return ir()(Ki,Ki)}function ar(t,e,n,i){var r,a=O(t,e,n);switch((i=Ri(null==i?",f":i)).type){case"s":var s=Math.max(Math.abs(t),Math.abs(e));return null!=i.precision||isNaN(r=function(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Bi(e)/3)))-Bi(Math.abs(t)))}(a,s))||(i.precision=r),Wi(i,s);case"":case"e":case"g":case"p":case"r":null!=i.precision||isNaN(r=function(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,Bi(e)-Bi(t))+1}(a,Math.max(Math.abs(t),Math.abs(e))))||(i.precision=r-("e"===i.type));break;case"f":case"%":null!=i.precision||isNaN(r=function(t){return Math.max(0,-Bi(Math.abs(t)))}(a))||(i.precision=r-2*("%"===i.type))}return Ui(i)}function sr(t){var e=t.domain;return t.ticks=function(t){var n=e();return function(t,e,n){var i,r,a,s,o=-1;if(n=+n,(t=+t)==(e=+e)&&n>0)return[t];if((i=e0){let n=Math.round(t/s),i=Math.round(e/s);for(n*se&&--i,a=new Array(r=i-n+1);++oe&&--i,a=new Array(r=i-n+1);++o0;){if((r=L(l,c,n))===i)return a[s]=l,a[o]=c,e(a);if(r>0)l=Math.floor(l/r)*r,c=Math.ceil(c/r)*r;else{if(!(r<0))break;l=Math.ceil(l*r)/r,c=Math.floor(c*r)/r}i=r}return t},t}var or=new Date,lr=new Date;function cr(t,e,n,i){function r(e){return t(e=0===arguments.length?new Date:new Date(+e)),e}return r.floor=function(e){return t(e=new Date(+e)),e},r.ceil=function(n){return t(n=new Date(n-1)),e(n,1),t(n),n},r.round=function(t){var e=r(t),n=r.ceil(t);return t-e0))return o;do{o.push(s=new Date(+n)),e(n,a),t(n)}while(s=e)for(;t(e),!n(e);)e.setTime(e-1)}),(function(t,i){if(t>=t)if(i<0)for(;++i<=0;)for(;e(t,-1),!n(t););else for(;--i>=0;)for(;e(t,1),!n(t););}))},n&&(r.count=function(e,i){return or.setTime(+e),lr.setTime(+i),t(or),t(lr),Math.floor(n(or,lr))},r.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?r.filter(i?function(e){return i(e)%t==0}:function(e){return r.count(0,e)%t==0}):r:null}),r}var hr=cr((function(){}),(function(t,e){t.setTime(+t+e)}),(function(t,e){return e-t}));hr.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?cr((function(e){e.setTime(Math.floor(e/t)*t)}),(function(e,n){e.setTime(+e+n*t)}),(function(e,n){return(n-e)/t})):hr:null};const ur=hr;hr.range;var dr=cr((function(t){t.setTime(t-t.getMilliseconds())}),(function(t,e){t.setTime(+t+1e3*e)}),(function(t,e){return(e-t)/1e3}),(function(t){return t.getUTCSeconds()}));const fr=dr;dr.range;var pr=cr((function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds())}),(function(t,e){t.setTime(+t+6e4*e)}),(function(t,e){return(e-t)/6e4}),(function(t){return t.getMinutes()}));const gr=pr;pr.range;var yr=cr((function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds()-6e4*t.getMinutes())}),(function(t,e){t.setTime(+t+36e5*e)}),(function(t,e){return(e-t)/36e5}),(function(t){return t.getHours()}));const mr=yr;yr.range;var br=cr(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/864e5,t=>t.getDate()-1);const _r=br;function xr(t){return cr((function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+7*e)}),(function(t,e){return(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/6048e5}))}br.range;var vr=xr(0),kr=xr(1),wr=xr(2),Tr=xr(3),Cr=xr(4),Er=xr(5),Sr=xr(6);vr.range,kr.range,wr.range,Tr.range,Cr.range,Er.range,Sr.range;var Ar=cr((function(t){t.setDate(1),t.setHours(0,0,0,0)}),(function(t,e){t.setMonth(t.getMonth()+e)}),(function(t,e){return e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())}),(function(t){return t.getMonth()}));const Dr=Ar;Ar.range;var Lr=cr((function(t){t.setMonth(0,1),t.setHours(0,0,0,0)}),(function(t,e){t.setFullYear(t.getFullYear()+e)}),(function(t,e){return e.getFullYear()-t.getFullYear()}),(function(t){return t.getFullYear()}));Lr.every=function(t){return isFinite(t=Math.floor(t))&&t>0?cr((function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)}),(function(e,n){e.setFullYear(e.getFullYear()+n*t)})):null};const Or=Lr;Lr.range;var Nr=cr((function(t){t.setUTCSeconds(0,0)}),(function(t,e){t.setTime(+t+6e4*e)}),(function(t,e){return(e-t)/6e4}),(function(t){return t.getUTCMinutes()}));const Mr=Nr;Nr.range;var Br=cr((function(t){t.setUTCMinutes(0,0,0)}),(function(t,e){t.setTime(+t+36e5*e)}),(function(t,e){return(e-t)/36e5}),(function(t){return t.getUTCHours()}));const Ir=Br;Br.range;var Fr=cr((function(t){t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+e)}),(function(t,e){return(e-t)/864e5}),(function(t){return t.getUTCDate()-1}));const Rr=Fr;function $r(t){return cr((function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+7*e)}),(function(t,e){return(e-t)/6048e5}))}Fr.range;var Pr=$r(0),Yr=$r(1),jr=$r(2),zr=$r(3),Ur=$r(4),Wr=$r(5),qr=$r(6);Pr.range,Yr.range,jr.range,zr.range,Ur.range,Wr.range,qr.range;var Hr=cr((function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCMonth(t.getUTCMonth()+e)}),(function(t,e){return e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear())}),(function(t){return t.getUTCMonth()}));const Vr=Hr;Hr.range;var Gr=cr((function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)}),(function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()}),(function(t){return t.getUTCFullYear()}));Gr.every=function(t){return isFinite(t=Math.floor(t))&&t>0?cr((function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),(function(e,n){e.setUTCFullYear(e.getUTCFullYear()+n*t)})):null};const Xr=Gr;function Zr(t,e,n,i,r,a){const s=[[fr,1,1e3],[fr,5,5e3],[fr,15,15e3],[fr,30,3e4],[a,1,6e4],[a,5,3e5],[a,15,9e5],[a,30,18e5],[r,1,36e5],[r,3,108e5],[r,6,216e5],[r,12,432e5],[i,1,864e5],[i,2,1728e5],[n,1,6048e5],[e,1,2592e6],[e,3,7776e6],[t,1,31536e6]];function o(e,n,i){const r=Math.abs(n-e)/i,a=x(([,,t])=>t).right(s,r);if(a===s.length)return t.every(O(e/31536e6,n/31536e6,i));if(0===a)return ur.every(Math.max(O(e,n,i),1));const[o,l]=s[r/s[a-1][2][t.toLowerCase(),e]))}function da(t,e,n){var i=aa.exec(e.slice(n,n+1));return i?(t.w=+i[0],n+i[0].length):-1}function fa(t,e,n){var i=aa.exec(e.slice(n,n+1));return i?(t.u=+i[0],n+i[0].length):-1}function pa(t,e,n){var i=aa.exec(e.slice(n,n+2));return i?(t.U=+i[0],n+i[0].length):-1}function ga(t,e,n){var i=aa.exec(e.slice(n,n+2));return i?(t.V=+i[0],n+i[0].length):-1}function ya(t,e,n){var i=aa.exec(e.slice(n,n+2));return i?(t.W=+i[0],n+i[0].length):-1}function ma(t,e,n){var i=aa.exec(e.slice(n,n+4));return i?(t.y=+i[0],n+i[0].length):-1}function ba(t,e,n){var i=aa.exec(e.slice(n,n+2));return i?(t.y=+i[0]+(+i[0]>68?1900:2e3),n+i[0].length):-1}function _a(t,e,n){var i=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return i?(t.Z=i[1]?0:-(i[2]+(i[3]||"00")),n+i[0].length):-1}function xa(t,e,n){var i=aa.exec(e.slice(n,n+1));return i?(t.q=3*i[0]-3,n+i[0].length):-1}function va(t,e,n){var i=aa.exec(e.slice(n,n+2));return i?(t.m=i[0]-1,n+i[0].length):-1}function ka(t,e,n){var i=aa.exec(e.slice(n,n+2));return i?(t.d=+i[0],n+i[0].length):-1}function wa(t,e,n){var i=aa.exec(e.slice(n,n+3));return i?(t.m=0,t.d=+i[0],n+i[0].length):-1}function Ta(t,e,n){var i=aa.exec(e.slice(n,n+2));return i?(t.H=+i[0],n+i[0].length):-1}function Ca(t,e,n){var i=aa.exec(e.slice(n,n+2));return i?(t.M=+i[0],n+i[0].length):-1}function Ea(t,e,n){var i=aa.exec(e.slice(n,n+2));return i?(t.S=+i[0],n+i[0].length):-1}function Sa(t,e,n){var i=aa.exec(e.slice(n,n+3));return i?(t.L=+i[0],n+i[0].length):-1}function Aa(t,e,n){var i=aa.exec(e.slice(n,n+6));return i?(t.L=Math.floor(i[0]/1e3),n+i[0].length):-1}function Da(t,e,n){var i=sa.exec(e.slice(n,n+1));return i?n+i[0].length:-1}function La(t,e,n){var i=aa.exec(e.slice(n));return i?(t.Q=+i[0],n+i[0].length):-1}function Oa(t,e,n){var i=aa.exec(e.slice(n));return i?(t.s=+i[0],n+i[0].length):-1}function Na(t,e){return la(t.getDate(),e,2)}function Ma(t,e){return la(t.getHours(),e,2)}function Ba(t,e){return la(t.getHours()%12||12,e,2)}function Ia(t,e){return la(1+_r.count(Or(t),t),e,3)}function Fa(t,e){return la(t.getMilliseconds(),e,3)}function Ra(t,e){return Fa(t,e)+"000"}function $a(t,e){return la(t.getMonth()+1,e,2)}function Pa(t,e){return la(t.getMinutes(),e,2)}function Ya(t,e){return la(t.getSeconds(),e,2)}function ja(t){var e=t.getDay();return 0===e?7:e}function za(t,e){return la(vr.count(Or(t)-1,t),e,2)}function Ua(t){var e=t.getDay();return e>=4||0===e?Cr(t):Cr.ceil(t)}function Wa(t,e){return t=Ua(t),la(Cr.count(Or(t),t)+(4===Or(t).getDay()),e,2)}function qa(t){return t.getDay()}function Ha(t,e){return la(kr.count(Or(t)-1,t),e,2)}function Va(t,e){return la(t.getFullYear()%100,e,2)}function Ga(t,e){return la((t=Ua(t)).getFullYear()%100,e,2)}function Xa(t,e){return la(t.getFullYear()%1e4,e,4)}function Za(t,e){var n=t.getDay();return la((t=n>=4||0===n?Cr(t):Cr.ceil(t)).getFullYear()%1e4,e,4)}function Qa(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+la(e/60|0,"0",2)+la(e%60,"0",2)}function Ka(t,e){return la(t.getUTCDate(),e,2)}function Ja(t,e){return la(t.getUTCHours(),e,2)}function ts(t,e){return la(t.getUTCHours()%12||12,e,2)}function es(t,e){return la(1+Rr.count(Xr(t),t),e,3)}function ns(t,e){return la(t.getUTCMilliseconds(),e,3)}function is(t,e){return ns(t,e)+"000"}function rs(t,e){return la(t.getUTCMonth()+1,e,2)}function as(t,e){return la(t.getUTCMinutes(),e,2)}function ss(t,e){return la(t.getUTCSeconds(),e,2)}function os(t){var e=t.getUTCDay();return 0===e?7:e}function ls(t,e){return la(Pr.count(Xr(t)-1,t),e,2)}function cs(t){var e=t.getUTCDay();return e>=4||0===e?Ur(t):Ur.ceil(t)}function hs(t,e){return t=cs(t),la(Ur.count(Xr(t),t)+(4===Xr(t).getUTCDay()),e,2)}function us(t){return t.getUTCDay()}function ds(t,e){return la(Yr.count(Xr(t)-1,t),e,2)}function fs(t,e){return la(t.getUTCFullYear()%100,e,2)}function ps(t,e){return la((t=cs(t)).getUTCFullYear()%100,e,2)}function gs(t,e){return la(t.getUTCFullYear()%1e4,e,4)}function ys(t,e){var n=t.getUTCDay();return la((t=n>=4||0===n?Ur(t):Ur.ceil(t)).getUTCFullYear()%1e4,e,4)}function ms(){return"+0000"}function bs(){return"%"}function _s(t){return+t}function xs(t){return Math.floor(+t/1e3)}function vs(t){return new Date(t)}function ks(t){return t instanceof Date?+t:+new Date(+t)}function ws(t,e,n,i,r,a,s,o,l,c){var h=rr(),u=h.invert,d=h.domain,f=c(".%L"),p=c(":%S"),g=c("%I:%M"),y=c("%I %p"),m=c("%a %d"),b=c("%b %d"),_=c("%B"),x=c("%Y");function v(t){return(l(t)=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:_s,s:xs,S:Ya,u:ja,U:za,V:Wa,w:qa,W:Ha,x:null,X:null,y:Va,Y:Xa,Z:Qa,"%":bs},x={a:function(t){return s[t.getUTCDay()]},A:function(t){return a[t.getUTCDay()]},b:function(t){return l[t.getUTCMonth()]},B:function(t){return o[t.getUTCMonth()]},c:null,d:Ka,e:Ka,f:is,g:ps,G:ys,H:Ja,I:ts,j:es,L:ns,m:rs,M:as,p:function(t){return r[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:_s,s:xs,S:ss,u:os,U:ls,V:hs,w:us,W:ds,x:null,X:null,y:fs,Y:gs,Z:ms,"%":bs},v={a:function(t,e,n){var i=f.exec(e.slice(n));return i?(t.w=p.get(i[0].toLowerCase()),n+i[0].length):-1},A:function(t,e,n){var i=u.exec(e.slice(n));return i?(t.w=d.get(i[0].toLowerCase()),n+i[0].length):-1},b:function(t,e,n){var i=m.exec(e.slice(n));return i?(t.m=b.get(i[0].toLowerCase()),n+i[0].length):-1},B:function(t,e,n){var i=g.exec(e.slice(n));return i?(t.m=y.get(i[0].toLowerCase()),n+i[0].length):-1},c:function(t,n,i){return T(t,e,n,i)},d:ka,e:ka,f:Aa,g:ba,G:ma,H:Ta,I:Ta,j:wa,L:Sa,m:va,M:Ca,p:function(t,e,n){var i=c.exec(e.slice(n));return i?(t.p=h.get(i[0].toLowerCase()),n+i[0].length):-1},q:xa,Q:La,s:Oa,S:Ea,u:fa,U:pa,V:ga,w:da,W:ya,x:function(t,e,i){return T(t,n,e,i)},X:function(t,e,n){return T(t,i,e,n)},y:ba,Y:ma,Z:_a,"%":Da};function k(t,e){return function(n){var i,r,a,s=[],o=-1,l=0,c=t.length;for(n instanceof Date||(n=new Date(+n));++o53)return null;"w"in a||(a.w=1),"Z"in a?(r=(i=ta(ea(a.y,0,1))).getUTCDay(),i=r>4||0===r?Yr.ceil(i):Yr(i),i=Rr.offset(i,7*(a.V-1)),a.y=i.getUTCFullYear(),a.m=i.getUTCMonth(),a.d=i.getUTCDate()+(a.w+6)%7):(r=(i=Jr(ea(a.y,0,1))).getDay(),i=r>4||0===r?kr.ceil(i):kr(i),i=_r.offset(i,7*(a.V-1)),a.y=i.getFullYear(),a.m=i.getMonth(),a.d=i.getDate()+(a.w+6)%7)}else("W"in a||"U"in a)&&("w"in a||(a.w="u"in a?a.u%7:"W"in a?1:0),r="Z"in a?ta(ea(a.y,0,1)).getUTCDay():Jr(ea(a.y,0,1)).getDay(),a.m=0,a.d="W"in a?(a.w+6)%7+7*a.W-(r+5)%7:a.w+7*a.U-(r+6)%7);return"Z"in a?(a.H+=a.Z/100|0,a.M+=a.Z%100,ta(a)):Jr(a)}}function T(t,e,n,i){for(var r,a,s=0,o=e.length,l=n.length;s=l)return-1;if(37===(r=e.charCodeAt(s++))){if(r=e.charAt(s++),!(a=v[r in ra?e.charAt(s++):r])||(i=a(t,n,i))<0)return-1}else if(r!=n.charCodeAt(i++))return-1}return i}return _.x=k(n,_),_.X=k(i,_),_.c=k(e,_),x.x=k(n,x),x.X=k(i,x),x.c=k(e,x),{format:function(t){var e=k(t+="",_);return e.toString=function(){return t},e},parse:function(t){var e=w(t+="",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=k(t+="",x);return e.toString=function(){return t},e},utcParse:function(t){var e=w(t+="",!0);return e.toString=function(){return t},e}}}(t),ia=na.format,na.parse,na.utcFormat,na.utcParse}({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});const Cs=Math.abs,Es=Math.atan2,Ss=Math.cos,As=Math.max,Ds=Math.min,Ls=Math.sin,Os=Math.sqrt,Ns=Math.PI,Ms=Ns/2,Bs=2*Ns;function Is(t){return t>1?0:t<-1?Ns:Math.acos(t)}function Fs(t){return t>=1?Ms:t<=-1?-Ms:Math.asin(t)}function Rs(t){return t.innerRadius}function $s(t){return t.outerRadius}function Ps(t){return t.startAngle}function Ys(t){return t.endAngle}function js(t){return t&&t.padAngle}function zs(t,e,n,i,r,a,s,o){var l=n-t,c=i-e,h=s-r,u=o-a,d=u*l-h*c;if(!(d*d<1e-12))return[t+(d=(h*(e-a)-u*(t-r))/d)*l,e+d*c]}function Us(t,e,n,i,r,a,s){var o=t-n,l=e-i,c=(s?a:-a)/Os(o*o+l*l),h=c*l,u=-c*o,d=t+h,f=e+u,p=n+h,g=i+u,y=(d+p)/2,m=(f+g)/2,b=p-d,_=g-f,x=b*b+_*_,v=r-a,k=d*g-p*f,w=(_<0?-1:1)*Os(As(0,v*v*x-k*k)),T=(k*_-b*w)/x,C=(-k*b-_*w)/x,E=(k*_+b*w)/x,S=(-k*b+_*w)/x,A=T-y,D=C-m,L=E-y,O=S-m;return A*A+D*D>L*L+O*O&&(T=E,C=S),{cx:T,cy:C,x01:-h,y01:-u,x11:T*(r/v-1),y11:C*(r/v-1)}}function Ws(){var t=Rs,e=$s,n=Ts(0),i=null,r=Ps,a=Ys,s=js,o=null;function l(){var l,c,h=+t.apply(this,arguments),u=+e.apply(this,arguments),d=r.apply(this,arguments)-Ms,f=a.apply(this,arguments)-Ms,p=Cs(f-d),g=f>d;if(o||(o=l=Ni()),u1e-12)if(p>Bs-1e-12)o.moveTo(u*Ss(d),u*Ls(d)),o.arc(0,0,u,d,f,!g),h>1e-12&&(o.moveTo(h*Ss(f),h*Ls(f)),o.arc(0,0,h,f,d,g));else{var y,m,b=d,_=f,x=d,v=f,k=p,w=p,T=s.apply(this,arguments)/2,C=T>1e-12&&(i?+i.apply(this,arguments):Os(h*h+u*u)),E=Ds(Cs(u-h)/2,+n.apply(this,arguments)),S=E,A=E;if(C>1e-12){var D=Fs(C/h*Ls(T)),L=Fs(C/u*Ls(T));(k-=2*D)>1e-12?(x+=D*=g?1:-1,v-=D):(k=0,x=v=(d+f)/2),(w-=2*L)>1e-12?(b+=L*=g?1:-1,_-=L):(w=0,b=_=(d+f)/2)}var O=u*Ss(b),N=u*Ls(b),M=h*Ss(v),B=h*Ls(v);if(E>1e-12){var I,F=u*Ss(_),R=u*Ls(_),$=h*Ss(x),P=h*Ls(x);if(p1e-12?A>1e-12?(y=Us($,P,O,N,u,A,g),m=Us(F,R,M,B,u,A,g),o.moveTo(y.cx+y.x01,y.cy+y.y01),A1e-12&&k>1e-12?S>1e-12?(y=Us(M,B,F,R,h,-S,g),m=Us(O,N,$,P,h,-S,g),o.lineTo(y.cx+y.x01,y.cy+y.y01),St?1:e>=t?0:NaN}function Ks(t){return t}function Js(){}function to(t,e,n){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+n)/6)}function eo(t){this._context=t}function no(t){return new eo(t)}function io(t){this._context=t}function ro(t){this._context=t}function ao(t){this._context=t}function so(t){return t<0?-1:1}function oo(t,e,n){var i=t._x1-t._x0,r=e-t._x1,a=(t._y1-t._y0)/(i||r<0&&-0),s=(n-t._y1)/(r||i<0&&-0),o=(a*r+s*i)/(i+r);return(so(a)+so(s))*Math.min(Math.abs(a),Math.abs(s),.5*Math.abs(o))||0}function lo(t,e){var n=t._x1-t._x0;return n?(3*(t._y1-t._y0)/n-e)/2:e}function co(t,e,n){var i=t._x0,r=t._y0,a=t._x1,s=t._y1,o=(a-i)/3;t._context.bezierCurveTo(i+o,r+o*e,a-o,s-o*n,a,s)}function ho(t){this._context=t}function uo(t){this._context=new fo(t)}function fo(t){this._context=t}function po(t){this._context=t}function go(t){var e,n,i=t.length-1,r=new Array(i),a=new Array(i),s=new Array(i);for(r[0]=0,a[0]=2,s[0]=t[0]+2*t[1],e=1;e=0;--e)r[e]=(s[e]-r[e+1])/a[e];for(a[i-1]=(t[i]+r[i-1])/2,e=0;et.length)&&(e=t.length);for(var n=0,i=new Array(e);n=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var n=this._x*(1-this._t)+t*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,e)}}this._x=t,this._y=e}},mo.prototype={constructor:mo,scale:function(t){return 1===t?this:new mo(this.k*t,this.x,this.y)},translate:function(t,e){return 0===t&0===e?this:new mo(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}},new mo(1,0,0),mo.prototype;var To=Object.hasOwnProperty,Co=Object.setPrototypeOf,Eo=Object.isFrozen,So=Object.getPrototypeOf,Ao=Object.getOwnPropertyDescriptor,Do=Object.freeze,Lo=Object.seal,Oo=Object.create,No="undefined"!=typeof Reflect&&Reflect,Mo=No.apply,Bo=No.construct;Mo||(Mo=function(t,e,n){return t.apply(e,n)}),Do||(Do=function(t){return t}),Lo||(Lo=function(t){return t}),Bo||(Bo=function(t,e){return vo(t,ko(e))});var Io,Fo=Vo(Array.prototype.forEach),Ro=Vo(Array.prototype.pop),$o=Vo(Array.prototype.push),Po=Vo(String.prototype.toLowerCase),Yo=Vo(String.prototype.toString),jo=Vo(String.prototype.match),zo=Vo(String.prototype.replace),Uo=Vo(String.prototype.indexOf),Wo=Vo(String.prototype.trim),qo=Vo(RegExp.prototype.test),Ho=(Io=TypeError,function(){for(var t=arguments.length,e=new Array(t),n=0;n1?n-1:0),r=1;r/gm),hl=Lo(/\${[\w\W]*}/gm),ul=Lo(/^data-[\-\w.\u00B7-\uFFFF]/),dl=Lo(/^aria-[\-\w]+$/),fl=Lo(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),pl=Lo(/^(?:\w+script|data):/i),gl=Lo(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),yl=Lo(/^html$/i),ml=function(){return"undefined"==typeof window?null:window},bl=function(t,e){if("object"!==bo(t)||"function"!=typeof t.createPolicy)return null;var n=null;e.currentScript&&e.currentScript.hasAttribute("data-tt-policy-suffix")&&(n=e.currentScript.getAttribute("data-tt-policy-suffix"));var i="dompurify"+(n?"#"+n:"");try{return t.createPolicy(i,{createHTML:function(t){return t},createScriptURL:function(t){return t}})}catch(t){return console.warn("TrustedTypes policy "+i+" could not be created."),null}},_l=function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:ml(),n=function(e){return t(e)};if(n.version="2.4.1",n.removed=[],!e||!e.document||9!==e.document.nodeType)return n.isSupported=!1,n;var i=e.document,r=e.document,a=e.DocumentFragment,s=e.HTMLTemplateElement,o=e.Node,l=e.Element,c=e.NodeFilter,h=e.NamedNodeMap,u=void 0===h?e.NamedNodeMap||e.MozNamedAttrMap:h,d=e.HTMLFormElement,f=e.DOMParser,p=e.trustedTypes,g=l.prototype,y=Zo(g,"cloneNode"),m=Zo(g,"nextSibling"),b=Zo(g,"childNodes"),_=Zo(g,"parentNode");if("function"==typeof s){var x=r.createElement("template");x.content&&x.content.ownerDocument&&(r=x.content.ownerDocument)}var v=bl(p,i),k=v?v.createHTML(""):"",w=r,T=w.implementation,C=w.createNodeIterator,E=w.createDocumentFragment,S=w.getElementsByTagName,A=i.importNode,D={};try{D=Xo(r).documentMode?r.documentMode:{}}catch(t){}var L={};n.isSupported="function"==typeof _&&T&&void 0!==T.createHTMLDocument&&9!==D;var O,N,M=ll,B=cl,I=hl,F=ul,R=dl,$=pl,P=gl,Y=fl,j=null,z=Go({},[].concat(ko(Qo),ko(Ko),ko(Jo),ko(el),ko(il))),U=null,W=Go({},[].concat(ko(rl),ko(al),ko(sl),ko(ol))),q=Object.seal(Object.create(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),H=null,V=null,G=!0,X=!0,Z=!1,Q=!1,K=!1,J=!1,tt=!1,et=!1,nt=!1,it=!1,rt=!0,at=!1,st="user-content-",ot=!0,lt=!1,ct={},ht=null,ut=Go({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),dt=null,ft=Go({},["audio","video","img","source","image","track"]),pt=null,gt=Go({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),yt="http://www.w3.org/1998/Math/MathML",mt="http://www.w3.org/2000/svg",bt="http://www.w3.org/1999/xhtml",_t=bt,xt=!1,vt=null,kt=Go({},[yt,mt,bt],Yo),wt=["application/xhtml+xml","text/html"],Tt="text/html",Ct=null,Et=r.createElement("form"),St=function(t){return t instanceof RegExp||t instanceof Function},At=function(t){Ct&&Ct===t||(t&&"object"===bo(t)||(t={}),t=Xo(t),O=O=-1===wt.indexOf(t.PARSER_MEDIA_TYPE)?Tt:t.PARSER_MEDIA_TYPE,N="application/xhtml+xml"===O?Yo:Po,j="ALLOWED_TAGS"in t?Go({},t.ALLOWED_TAGS,N):z,U="ALLOWED_ATTR"in t?Go({},t.ALLOWED_ATTR,N):W,vt="ALLOWED_NAMESPACES"in t?Go({},t.ALLOWED_NAMESPACES,Yo):kt,pt="ADD_URI_SAFE_ATTR"in t?Go(Xo(gt),t.ADD_URI_SAFE_ATTR,N):gt,dt="ADD_DATA_URI_TAGS"in t?Go(Xo(ft),t.ADD_DATA_URI_TAGS,N):ft,ht="FORBID_CONTENTS"in t?Go({},t.FORBID_CONTENTS,N):ut,H="FORBID_TAGS"in t?Go({},t.FORBID_TAGS,N):{},V="FORBID_ATTR"in t?Go({},t.FORBID_ATTR,N):{},ct="USE_PROFILES"in t&&t.USE_PROFILES,G=!1!==t.ALLOW_ARIA_ATTR,X=!1!==t.ALLOW_DATA_ATTR,Z=t.ALLOW_UNKNOWN_PROTOCOLS||!1,Q=t.SAFE_FOR_TEMPLATES||!1,K=t.WHOLE_DOCUMENT||!1,et=t.RETURN_DOM||!1,nt=t.RETURN_DOM_FRAGMENT||!1,it=t.RETURN_TRUSTED_TYPE||!1,tt=t.FORCE_BODY||!1,rt=!1!==t.SANITIZE_DOM,at=t.SANITIZE_NAMED_PROPS||!1,ot=!1!==t.KEEP_CONTENT,lt=t.IN_PLACE||!1,Y=t.ALLOWED_URI_REGEXP||Y,_t=t.NAMESPACE||bt,t.CUSTOM_ELEMENT_HANDLING&&St(t.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(q.tagNameCheck=t.CUSTOM_ELEMENT_HANDLING.tagNameCheck),t.CUSTOM_ELEMENT_HANDLING&&St(t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(q.attributeNameCheck=t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),t.CUSTOM_ELEMENT_HANDLING&&"boolean"==typeof t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(q.allowCustomizedBuiltInElements=t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Q&&(X=!1),nt&&(et=!0),ct&&(j=Go({},ko(il)),U=[],!0===ct.html&&(Go(j,Qo),Go(U,rl)),!0===ct.svg&&(Go(j,Ko),Go(U,al),Go(U,ol)),!0===ct.svgFilters&&(Go(j,Jo),Go(U,al),Go(U,ol)),!0===ct.mathMl&&(Go(j,el),Go(U,sl),Go(U,ol))),t.ADD_TAGS&&(j===z&&(j=Xo(j)),Go(j,t.ADD_TAGS,N)),t.ADD_ATTR&&(U===W&&(U=Xo(U)),Go(U,t.ADD_ATTR,N)),t.ADD_URI_SAFE_ATTR&&Go(pt,t.ADD_URI_SAFE_ATTR,N),t.FORBID_CONTENTS&&(ht===ut&&(ht=Xo(ht)),Go(ht,t.FORBID_CONTENTS,N)),ot&&(j["#text"]=!0),K&&Go(j,["html","head","body"]),j.table&&(Go(j,["tbody"]),delete H.tbody),Do&&Do(t),Ct=t)},Dt=Go({},["mi","mo","mn","ms","mtext"]),Lt=Go({},["foreignobject","desc","title","annotation-xml"]),Ot=Go({},["title","style","font","a","script"]),Nt=Go({},Ko);Go(Nt,Jo),Go(Nt,tl);var Mt=Go({},el);Go(Mt,nl);var Bt=function(t){var e=_(t);e&&e.tagName||(e={namespaceURI:_t,tagName:"template"});var n=Po(t.tagName),i=Po(e.tagName);return!!vt[t.namespaceURI]&&(t.namespaceURI===mt?e.namespaceURI===bt?"svg"===n:e.namespaceURI===yt?"svg"===n&&("annotation-xml"===i||Dt[i]):Boolean(Nt[n]):t.namespaceURI===yt?e.namespaceURI===bt?"math"===n:e.namespaceURI===mt?"math"===n&&Lt[i]:Boolean(Mt[n]):t.namespaceURI===bt?!(e.namespaceURI===mt&&!Lt[i])&&!(e.namespaceURI===yt&&!Dt[i])&&!Mt[n]&&(Ot[n]||!Nt[n]):!("application/xhtml+xml"!==O||!vt[t.namespaceURI]))},It=function(t){$o(n.removed,{element:t});try{t.parentNode.removeChild(t)}catch(e){try{t.outerHTML=k}catch(e){t.remove()}}},Ft=function(t,e){try{$o(n.removed,{attribute:e.getAttributeNode(t),from:e})}catch(t){$o(n.removed,{attribute:null,from:e})}if(e.removeAttribute(t),"is"===t&&!U[t])if(et||nt)try{It(e)}catch(t){}else try{e.setAttribute(t,"")}catch(t){}},Rt=function(t){var e,n;if(tt)t=""+t;else{var i=jo(t,/^[\r\n\t ]+/);n=i&&i[0]}"application/xhtml+xml"===O&&_t===bt&&(t=''+t+"");var a=v?v.createHTML(t):t;if(_t===bt)try{e=(new f).parseFromString(a,O)}catch(t){}if(!e||!e.documentElement){e=T.createDocument(_t,"template",null);try{e.documentElement.innerHTML=xt?"":a}catch(t){}}var s=e.body||e.documentElement;return t&&n&&s.insertBefore(r.createTextNode(n),s.childNodes[0]||null),_t===bt?S.call(e,K?"html":"body")[0]:K?e.documentElement:s},$t=function(t){return C.call(t.ownerDocument||t,t,c.SHOW_ELEMENT|c.SHOW_COMMENT|c.SHOW_TEXT,null,!1)},Pt=function(t){return t instanceof d&&("string"!=typeof t.nodeName||"string"!=typeof t.textContent||"function"!=typeof t.removeChild||!(t.attributes instanceof u)||"function"!=typeof t.removeAttribute||"function"!=typeof t.setAttribute||"string"!=typeof t.namespaceURI||"function"!=typeof t.insertBefore||"function"!=typeof t.hasChildNodes)},Yt=function(t){return"object"===bo(o)?t instanceof o:t&&"object"===bo(t)&&"number"==typeof t.nodeType&&"string"==typeof t.nodeName},jt=function(t,e,i){L[t]&&Fo(L[t],(function(t){t.call(n,e,i,Ct)}))},zt=function(t){var e;if(jt("beforeSanitizeElements",t,null),Pt(t))return It(t),!0;if(qo(/[\u0080-\uFFFF]/,t.nodeName))return It(t),!0;var i=N(t.nodeName);if(jt("uponSanitizeElement",t,{tagName:i,allowedTags:j}),t.hasChildNodes()&&!Yt(t.firstElementChild)&&(!Yt(t.content)||!Yt(t.content.firstElementChild))&&qo(/<[/\w]/g,t.innerHTML)&&qo(/<[/\w]/g,t.textContent))return It(t),!0;if("select"===i&&qo(/