{ "info": { "author": "Andr\u00e9 Heughebaert", "author_email": "andrejjh@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# Frictionless Darwin Core\nA tool converting [Darwin Core Archive](https://en.wikipedia.org/wiki/Darwin_Core_Archive) into [Frictionless Data Package](https://frictionlessdata.io/specs/data-package/).\n\n## Features\n* **datapackage.json**: Ensure your DarwinCore archive complies with [Frictionless specifications](https://frictionlessdata.io/specs/)\n* **README.md**: Add human readable metadata from [EML](https://en.wikipedia.org/wiki/Ecological_Metadata_Language)\n* **Support all standards [DarwinCore terms](#darwincore-terms)**\n* **Fields constraints**: Enable further data validation, with [goodtables](https://github.com/frictionlessdata/goodtables-py)\n* **URL**: Accept DarwinCore Archive from local path or URL\n* **Command line interface**\n\n## Contents\n\n* [Getting Started](#getting-started)\n * [Installing](#installing)\n * [Running on CLI](#running-on-cli)\n * [Python use](#python-use)\n* [Documentation](#documentation)\n * [Rationale](#rationale)\n * [What it does?](#what-it-does)\n * [DarwinCore terms](#darwincore-terms)\n * [Test cases suite](#test-cases-suite)\n* [Contributing](#contributing)\n\n\n## Getting Started\n### Installing\n```\npip install FrictionlessDarwinCore\n```\n\n### Running on CLI\n```sh\nfdwca --help\nUsage: fdwca [OPTIONS] DWCA OUTPATH\n\nOptions:\n -f, --format [json|md] Output format\n --help Show this message and exit.\n\n# convert from local DwC archive\nfdwca myDwC.zip myDP.zip\n\n# convert from URL (archive accessible on internet)\nfdwca https://ipt.biodiversity.be/archive.do?r=rbins_saproxilyc_beetles S1dp.zip\n\n# only generates JSON descriptor (datapackage.json)\nfdwca -f json https://ipt.biodiversity.be/archive.do?r=rbins_saproxilyc_beetles datapackage.json\n\n# only generates markdown human readable metadata (readme.md)\nfdwca -f md https://ipt.biodiversity.be/archive.do?r=rbins_saproxilyc_beetles readme.md\n```\n\n### Python use\nAlternatively, you can use DwCArchive Python object like this:\n```python\nfrom FrictionlessDarwinCore import DwCArchive\n\n# load DarwinCore archive from URL\nda = DwCArchive('https://ipt.biodiversity.be/archive.do?r=rbins_saproxilyc_beetles')\n# infer Data Package structure from DarwinCore files\nda.infer()\nif da.valid:\n # save it as Data Package locally\n da.save('BeetlesDP.zip')\n # ... or generates separate JSON descriptor\n da.to_json('datpackage.json')\n # ... or generates separate markdown human readable metadata\n da.to_markdown('readme.md')\n```\n\n## Documentation\n### Rationale\n**DarwinCore** standard, created and maintained by [Biodivesity Informatics Standards(aka TDWG)](https://www.tdwg.org/), is used to publish Life Sciences data about observations, collections specimens, species checklists and sampling events. DarwinCore Archive(DwCA), a bundle of biodiversity data and metadata files, is well established mechanism for publishing or using data in [Global Biodiversity Information Facility](https://www.gbif.org/) and other Life Sciences networks.\n\n**Frictionless Data Package** is an emerging, domain agnostic, data standard that offers a variety of cross technology tools.\n\nBridging these two data ecosystems is our vision. This project is supported by [Open Knowledge Foundation](https://okfn.org/) and funded under the [Frictionless Data Tool Fund](https://toolfund.frictionlessdata.io/).\n\n### What it does?\nDarwinCore archives consist of:\n* a **core** data file\n* optionally, 1 or more **extension** data file(s)\n* eml.xml: **metadata** written in Ecological Metadata Language\n* meta.xml: the **structure** of the DarwinCore data files\n\nThis conversion tool appends two files to the archive, see diagram below:\n* **datapackage.json**: data package descriptor of the data files\n* **readme.md**: markdown, human readable, metadata\n\n
\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502\n\u2502 \u2502DarwinCore Archive \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 \u250c \u2500 \u2500 \u2500 \u2500 \u2500 \u2500 \u2500 \u2500 \u2500 \u2502 \u2502\n\u2502 \u2502 \u250c \u2500 \u2500 Extension 1 \u2502 \u2502 \u2502\n\u2502 \u2502 \u2514 \u2500 \u2500 \u2500 \u2500 \u2500 \u2500 \u2500 \u2500 \u2500 \u2502 \u2502\n\u2502 \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502 \u250c \u2500 \u2500 \u2500 \u2500 \u2500 \u2500 \u2500 \u2500 \u2500 \u2502 \u2502\n\u2502 \u2502 \u2502 Core file \u2502\u2500 \u2500 \u2500 \u2500 Extension 2 \u2502 \u2502 \u2502\n\u2502 \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502 \u2514 \u2500 \u2500 \u2500 \u2500 \u2500 \u2500 \u2500 \u2500 \u2500 \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 \u250c \u2500 \u2500 \u2500 \u2500 \u2500 \u2500 \u2500 \u2500 \u2500 \u2502 \u2502\n\u2502 \u2502 \u2514 \u2500 \u2500 Extension n \u2502 \u2502 \u2502\n\u2502 \u2502 \u2514 \u2500 \u2500 \u2500 \u2500 \u2500 \u2500 \u2500 \u2500 \u2500 \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502 \u2502\n\u2502 \u2502 \u2502 meta.xml \u2502 \u2502 eml.xml \u2502 \u2502 \u2502\n\u2502 \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502 \u2502 \u2502\n\u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502\n\u2502 \u25bc \u25bc \u2502\n\u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502\n\u2502 \u2502 datapackage.json \u2502 \u2502 readme.md \u2502 \u2502\n\u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502\n\u2502 \u2502\n\u2502 FrictionlessDarwinCore\u2502\n\u2502 (=Data Package)\u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n\nThe tool can also generate these two files as separate outputs without touching the archive.\n\n### DarwinCore terms\nDarwin Core is a very persmissive standard some recommandations but almost no constraining rules. This [table](https://github.com/andrejjh/FrictionlessDarwinCore/blob/master/FrictionlessDarwinCore/fdwc_terms.csv) assigns Frictionless Data Package's type, format and constraints to every [Darwin Core term](https://dwc.tdwg.org/terms/).\nValues that do not comply with these **Frictionless DarwinCore rules** will automatically raise warnings.\n\n### Test cases suite\nThe initial [test cases suite](./testCases.md) covers a wide variety of Darwin Core usages. It should give enough confidence that basic incompatibilities are identified, reported and solved but it will not guarantee that all possible DwC Archives will automatically translate into valid Data Packages.\n\n## Contributing\nYou are encouraged to contribute by identifying/reporting issues or incompatiblities and helping to solve them.\n\n### Not familiar with Darwin Core?\nHave a look at iDigBio's [Darwin Core Hour](https://www.idigbio.org/content/darwin-core-hour-webinar-series) Webinar Series.\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "", "keywords": "", "license": "MIT License", "maintainer": "", "maintainer_email": "", "name": "FrictionlessDarwinCore", "package_url": "https://pypi.org/project/FrictionlessDarwinCore/", "platform": "", "project_url": "https://pypi.org/project/FrictionlessDarwinCore/", "project_urls": null, "release_url": "https://pypi.org/project/FrictionlessDarwinCore/0.1.4/", "requires_dist": [ "requests (==2.22.0)", "Click (==7.0)" ], "requires_python": ">=3.7", "summary": "A tool converting Darwin Core Archive into Frictionless Data Package.", "version": "0.1.4" }, "last_serial": 5903083, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "5e8803357a748cedc8180c218ef40bc1", "sha256": "d56af522b000dbd856408efce897474912d451107cbf08f740346322f47321ee" }, "downloads": -1, "filename": "FrictionlessDarwinCore-0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "5e8803357a748cedc8180c218ef40bc1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 10931, "upload_time": "2019-09-16T12:19:33", "url": "https://files.pythonhosted.org/packages/0b/08/2c2760fff87ed28c0b07694741759007362cbb8b904244b95a47ca2b5720/FrictionlessDarwinCore-0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4b853724047cdcc9b72d1037ed18266e", "sha256": "ce8022bc0d442f1654b4f1e7e66ec48b0afd94dad60770d8d4cffe027834e76e" }, "downloads": -1, "filename": "FrictionlessDarwinCore-0.1.tar.gz", "has_sig": false, "md5_digest": "4b853724047cdcc9b72d1037ed18266e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 11428, "upload_time": "2019-09-16T12:19:35", "url": "https://files.pythonhosted.org/packages/b2/f9/427b8ea963f30781246c495c0d39bb4aa5b46960a5f09b7e886256e9c1af/FrictionlessDarwinCore-0.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "b0f4e3677ae3758cc85c95e21e30829e", "sha256": "3a425d428a66fccbfaf45ccf3fc6d3b679ec79b9af4dd42a3f2cf7eb7c0368d9" }, "downloads": -1, "filename": "FrictionlessDarwinCore-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "b0f4e3677ae3758cc85c95e21e30829e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 10981, "upload_time": "2019-09-17T09:51:18", "url": "https://files.pythonhosted.org/packages/05/54/f7fc6bad1880ba6041e596d85e425974bba00529918817903070e2b3f156/FrictionlessDarwinCore-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f97c033f887881a6b3dd9f4153b7bd85", "sha256": "ee4a49b03489aa6a2458475c827dc82c9d5a29a49391f2d6c508af7adf3689fe" }, "downloads": -1, "filename": "FrictionlessDarwinCore-0.1.2.tar.gz", "has_sig": false, "md5_digest": "f97c033f887881a6b3dd9f4153b7bd85", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 11453, "upload_time": "2019-09-17T09:51:20", "url": "https://files.pythonhosted.org/packages/b4/8e/4eb0fa595cb5ff1c8c3508284737f719c3c4f44b270c681db671b62c4524/FrictionlessDarwinCore-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "cbcbd10d38b494a2cb50f75ea1be2195", "sha256": "2af28e943f06907fa9edfb187d7c8393328ec1e75ed0bf3d0f5efafaf3b34ee0" }, "downloads": -1, "filename": "FrictionlessDarwinCore-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "cbcbd10d38b494a2cb50f75ea1be2195", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 13400, "upload_time": "2019-09-29T09:43:59", "url": "https://files.pythonhosted.org/packages/fe/76/2fa985f0bb062a6bba67a1a1e85d9c1ee2fb8dc6bb8112fdd3ab07c21b2c/FrictionlessDarwinCore-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "98628c3c3d5a7c56058943355cee0e96", "sha256": "2566ece6f2e66ab1f618d1cbe0b57da7b92eb9c29c32dcb2007ba56abdfe8519" }, "downloads": -1, "filename": "FrictionlessDarwinCore-0.1.3.tar.gz", "has_sig": false, "md5_digest": "98628c3c3d5a7c56058943355cee0e96", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 12581, "upload_time": "2019-09-29T09:44:01", "url": "https://files.pythonhosted.org/packages/a1/61/f5aa2960f4f4865b827f54f2cb8b1d23b0c5ed5a13b6d6052903ea979515/FrictionlessDarwinCore-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "b7150790e6ddfc13494c96abf44fe1b9", "sha256": "fcfc0d64c7248dd587ec69da3ec086ec927db9b3f0c74621aff25285e07dd218" }, "downloads": -1, "filename": "FrictionlessDarwinCore-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "b7150790e6ddfc13494c96abf44fe1b9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 13613, "upload_time": "2019-09-29T16:53:52", "url": "https://files.pythonhosted.org/packages/69/03/ff950c296e1625938a7a6ab50898d296367fcd0ecafd4f174aaca44a2aa2/FrictionlessDarwinCore-0.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7e8b05fc464537f51ff191cd0bc606a3", "sha256": "20aa339b16a3a7d7f137804b7af6bd0ce00b6168a1fd6c78a1ab18d31fdd9726" }, "downloads": -1, "filename": "FrictionlessDarwinCore-0.1.4.tar.gz", "has_sig": false, "md5_digest": "7e8b05fc464537f51ff191cd0bc606a3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 12746, "upload_time": "2019-09-29T16:53:59", "url": "https://files.pythonhosted.org/packages/ba/c8/037637edaf2c52b2992c4fb8fa93108edb9c5eb73e90381b600214091036/FrictionlessDarwinCore-0.1.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b7150790e6ddfc13494c96abf44fe1b9", "sha256": "fcfc0d64c7248dd587ec69da3ec086ec927db9b3f0c74621aff25285e07dd218" }, "downloads": -1, "filename": "FrictionlessDarwinCore-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "b7150790e6ddfc13494c96abf44fe1b9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 13613, "upload_time": "2019-09-29T16:53:52", "url": "https://files.pythonhosted.org/packages/69/03/ff950c296e1625938a7a6ab50898d296367fcd0ecafd4f174aaca44a2aa2/FrictionlessDarwinCore-0.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7e8b05fc464537f51ff191cd0bc606a3", "sha256": "20aa339b16a3a7d7f137804b7af6bd0ce00b6168a1fd6c78a1ab18d31fdd9726" }, "downloads": -1, "filename": "FrictionlessDarwinCore-0.1.4.tar.gz", "has_sig": false, "md5_digest": "7e8b05fc464537f51ff191cd0bc606a3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 12746, "upload_time": "2019-09-29T16:53:59", "url": "https://files.pythonhosted.org/packages/ba/c8/037637edaf2c52b2992c4fb8fa93108edb9c5eb73e90381b600214091036/FrictionlessDarwinCore-0.1.4.tar.gz" } ] }