Workflow RO-Crate (DRAFT)
- Permalink:
TODO
- Version: 0.2.0
- Profile Crate
ro-crate-metadata.json
- Example RO-Crate
ro-crate-metadata.json
Please note this is a draft spec and subject to change. Please leave any suggestions and comments here: https://github.com/seek4science/seek/issues/183
Workflow RO-Crates are a specialization of RO-Crate for packaging an executable workflow with all necessary documentation. It is aligned with, and intends to strictly extend, the more general Bioschemas ComputatioonalWorkflow profile.
WorkflowHub uses Workflow RO-Crates as an exchange format for users to upload a packaged workflow.
Concepts
This section uses terminology from the RO-Crate 1.1 specification.
Main Workflow
The Crate MUST contain a data entity of type ["File", "SoftwareSourceCode", "ComputationalWorkflow"]
as the Main Workflow.
The Crate MUST refer to the Main Workflow via mainEntity
.
The Main Workflow MUST refer to its type via programmingLanguage
.
Main Workflow CWL Description
The Crate COULD contain a data entity of type ["File", "SoftwareSourceCode", "HowTo"]
as the Main Workflow CWL Description.
If present the Main Workflow MUST refer to the Main Workflow CWL Description via subjectOf
.
Main Workflow Diagram
The Crate COULD contain a Main Workflow Diagram, indicated as a data entity of type ["File", "ImageObject"]
.
If Main Workflow Diagram is present, the Main Workflow MUST refer to it via image
.
Crate
The Crate MUST specify a license
.
The Crate SHOULD contain README.md at the root level.
The Crate COULD contain a Dataset (directory) data entity of type ["Dataset"]
named “test” to hold tests.
The Crate COULD contain a Dataset (directory) data entity of type ["Dataset"]
named “examples” to hold examples.
WorkflowHub-specific Features/Requirements
File Format
The Workflow RO-Crate must be zipped, and have the file extension .crate.zip
to be recognized by WorkflowHub.
Extracted Metadata
WorkflowHub will extract and expose the following properties from the Crate entity (./
) in ro-crate-metadata.jsonld
:
name
- This will be shown as the title of the workflow.description
- This will be shown as the description of the workflow. If it is not present, but aREADME.md
file is available in the root of the crate, that will be rendered instead.author
- These will be shown as “creators” of the workflow.license
- See below.keywords
- These will be shown as “tags”, and can be filtered over.
If the Main Workflow CWL Description is present it will be parsed and the inputs, outputs and steps will be listed on the workflow’s page in the Hub.
If the Main Workflow Diagram is present, it will also be rendered on the page.
Supported Workflow Types
WorkflowHub currently supports CWL, Galaxy, KNIME and Nextflow workflow types.
To ensure compatibility, please include one of the following in the RO-Crate metadata, and refer to it from the Main Workflow’s programmingLanguage
.
CWL
{
"@id": "#cwl",
"@type": "ComputerLanguage",
"name": "Common Workflow Language",
"alternateName": "CWL",
"identifier": {
"@id": "https://w3id.org/cwl/v1.0/"
},
"url": {
"@id": "https://www.commonwl.org/"
}
}
Galaxy
{
"@id": "#galaxy",
"@type": "ComputerLanguage",
"name": "Galaxy",
"identifier": {
"@id": "https://galaxyproject.org/"
},
"url": {
"@id": "https://galaxyproject.org/"
}
}
KNIME
{
"@id": "#knime",
"@type": "ComputerLanguage",
"name": "KNIME",
"identifier": {
"@id": "https://www.knime.com/"
},
"url": {
"@id": "https://www.knime.com/"
}
}
Nextflow
{
"@id": "#nextflow",
"@type": "ComputerLanguage",
"name": "Nextflow",
"identifier": {
"@id": "https://www.nextflow.io/"
},
"url": {
"@id": "https://www.nextflow.io/"
}
}
Snakemake
{
"@id": "#snakemake",
"@type": "ComputerLanguage",
"name": "Snakemake",
"identifier": {
"@id": "https://doi.org/10.1093/bioinformatics/bts480"
},
"url": {
"@id": "https://snakemake.readthedocs.io"
}
}
Supported Licenses
Although the Crate’s license
field should be a URL, WorkflowHub currently accepts a string of one of the following values (on the left):
AFL-3.0
- Academic Free License 3.0APL-1.0
- Adaptive Public License 1.0Apache-1.1
- Apache Software License 1.1Apache-2.0
- Apache Software License 2.0APSL-2.0
- Apple Public Source License 2.0Artistic-2.0
- Artistic License 2.0AAL
- Attribution Assurance LicensesBSD-2-Clause
- BSD 2-Clause “Simplified” or “FreeBSD” License (BSD-2-Clause)BSD-3-Clause
- BSD 3-Clause “New” or “Revised” License (BSD-3-Clause)BitTorrent-1.1
- BitTorrent Open Source License 1.1BSL-1.0
- Boost Software License 1.0CC0-1.0
- CC0 1.0CNRI-Python
- CNRI Python LicenseCUA-OPL-1.0
- CUA Office Public License 1.0CECILL-2.1
- CeCILL License 2.1CDDL-1.0
- Common Development and Distribution License 1.0CPAL-1.0
- Common Public Attribution License 1.0CATOSL-1.1
- Computer Associates Trusted Open Source License 1.1 (CATOSL-1.1)EUDatagrid
- EU DataGrid Software LicenseEPL-1.0
- Eclipse Public License 1.0ECL-2.0
- Educational Community License 2.0EFL-2.0
- Eiffel Forum License 2.0Entessa
- Entessa Public LicenseEUPL-1.1
- European Union Public License 1.1Fair
- Fair LicenseFrameworx-1.0
- Frameworx License 1.0AGPL-3.0
- GNU Affero General Public License v3GPL-2.0
- GNU General Public License 2.0GPL-3.0
- GNU General Public License 3.0LGPL-2.1
- GNU Lesser General Public License 2.1LGPL-3.0
- GNU Lesser General Public License 3.0HPND
- Historical Permission Notice and DisclaimerIPL-1.0
- IBM Public License 1.0IPA
- IPA Font LicenseISC
- ISC LicenseIntel
- Intel Open Source LicenseLPPL-1.3c
- LaTeX Project Public License 1.3cLPL-1.0
- Lucent Public License (“Plan9”) 1.0LPL-1.02
- Lucent Public License 1.02MIT
- MIT Licensemitre
- MITRE Collaborative Virtual Workspace License (CVW License)MS-PL
- Microsoft Public LicenseMS-RL
- Microsoft Reciprocal LicenseMirOS
- MirOS LicenceMotosoto
- Motosoto LicenseMPL-1.0
- Mozilla Public License 1.0MPL-1.1
- Mozilla Public License 1.1MPL-2.0
- Mozilla Public License 2.0Multics
- Multics LicenseNASA-1.3
- NASA Open Source Agreement 1.3NTP
- NTP LicenseNaumen
- Naumen Public LicenseNGPL
- Nethack General Public LicenseNokia
- Nokia Open Source LicenseNPOSL-3.0
- Non-Profit Open Software License 3.0OCLC-2.0
- OCLC Research Public License 2.0OFL-1.1
- Open Font License 1.1OGL-UK-1.0
- Open Government Licence 1.0 (United Kingdom)OGL-UK-2.0
- Open Government Licence 2.0 (United Kingdom)OGL-UK-3.0
- Open Government Licence 3.0 (United Kingdom)OGTSL
- Open Group Test Suite LicenseOSL-3.0
- Open Software License 3.0PHP-3.0
- PHP License 3.0PostgreSQL
- PostgreSQL LicensePython-2.0
- Python License 2.0QPL-1.0
- Q Public License 1.0RPSL-1.0
- RealNetworks Public Source License 1.0RPL-1.5
- Reciprocal Public License 1.5RSCPL
- Ricoh Source Code Public LicenseSimPL-2.0
- Simple Public License 2.0Sleepycat
- Sleepycat LicenseSISSL
- Sun Industry Standards Source License 1.1SPL-1.0
- Sun Public License 1.0Watcom-1.0
- Sybase Open Watcom Public License 1.0NCSA
- University of Illinois/NCSA Open Source LicenseUnlicense
- UnlicenseVSL-1.0
- Vovida Software License 1.0W3C
- W3C LicenseXnet
- X.Net LicenseZPL-2.0
- Zope Public License 2.0WXwindows
- wxWindows Library LicenseZlib
- zlib/libpng licensenotspecified
- No license - no permission to use unless the owner grants a licence
ro-crate-metadata.jsonld Example
A minimal example of Workflow RO-Crate metadata, containing a CWL workflow, an SVG diagram of that workflow and a README file.
{
"@context": "https://w3id.org/ro/crate/1.1/context",
"@graph": [
{
"@id": "ro-crate-metadata.jsonld",
"@type": "CreativeWork",
"about": {
"@id": "./"
},
"conformsTo": {
"@id": "https://w3id.org/ro/crate/1.1"
}
},
{
"@id": "ro-crate-preview.html",
"@type": "CreativeWork",
"about": {
"@id": "./"
}
},
{
"@id": "./",
"@type": "Dataset",
"name": "Example Workflow",
"description": "An example workflow RO-Crate",
"license": "Apache-2.0",
"mainEntity": {
"@id": "example_workflow.cwl"
},
"hasPart": [
{
"@id": "example_workflow.cwl"
},
{
"@id": "diagram.svg"
},
{
"@id": "README.md"
}
]
},
{
"@id": "example_workflow.cwl",
"@type": [
"File",
"SoftwareSourceCode",
"HowTo"
],
"programmingLanguage": {
"@id": "#cwl"
},
"name": "Example Workflow",
"image": {
"@id": "diagram.svg"
}
},
{
"@id": "diagram.svg",
"name": "Example Workflow Diagram",
"@type": [
"File",
"ImageObject"
]
},
{
"@id": "README.md",
"@type": "File"
},
{
"@id": "#cwl",
"@type": "ComputerLanguage",
"name": "Common Workflow Language",
"alternateName": "CWL",
"identifier": {
"@id": "https://w3id.org/cwl/v1.0/"
},
"url": {
"@id": "https://www.commonwl.org/"
}
}
]
}