- Authors:
- Finn Bacall https://orcid.org/0000-0002-0048-3300
- Alan R Williams https://orcid.org/0000-0003-3156-2105
- Stuart Owen https://orcid.org/0000-0003-2130-0865
- Stian Soiland-Reyes https://orcid.org/0000-0001-9842-9718
- Title: Workflow RO-Crate profile 1.0
- Publisher: WorkflowHub community
- Permalink: https://w3id.org/workflowhub/workflow-ro-crate/1.0 (this version)
https://w3id.org/workflowhub/workflow-ro-crate/ (latest version) - Version: 1.0.3
- Profile Crate
ro-crate-metadata.json
- Example RO-Crate
ro-crate-metadata.json
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 extends the more general Bioschemas ComputationalWorkflow profile.
WorkflowHub uses Workflow RO-Crates as an exchange format for users to upload a packaged workflow.
Extension profiles
Several extensions of Workflow RO-Crate exists:
- Workflow Testing RO-Crate defines test infrastructure recognized by LifeMonitor
- The Workflow Run Crate profiles extends Workflow RO-Crate to describe workflow run provenance, documenting execution of a workflow.
- Five Safes RO-Crate refers to Workflow RO-Crate for the purpose of workflow execution in a distributed trusted research environment (TRE)
Concepts
This section uses terminology from the RO-Crate 1.1 specification.
Context
The Crate JSON-LD MUST be valid according to RO-Crate 1.1 and SHOULD use the RO-Crate 1.1 @context
https://w3id.org/ro/crate/1.1/context
Metadata File Descriptor
The Metadata File Descriptor conformsTo
SHOULD be an array that contains at least https://w3id.org/ro/crate/1.1 and https://w3id.org/workflowhub/workflow-ro-crate/1.0
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
.
Tip: See RO-Crate specification on Workflows and Scripts for details.
Main Workflow CWL Description
The Crate COULD contain a data entity of type ["File", "SoftwareSourceCode", "HowTo"]
as the Main Workflow CWL Description.
A Main Workflow CWL Description SHOULD have https://w3id.org/workflowhub/workflow-ro-crate#cwl
as its programmingLanguage
with a corresponding contextual entity.
If Main Workflow CWL Description is present, the Main Workflow MUST refer to it the 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 license is assumed to apply to any content of the crate, unless overriden by license
on individual File
entities.
The Crate SHOULD contain a File README.md
at the root level. If present, it SHOULD be about
the Crate ./
and SHOULD have text/markdown
as its encodingFormat
.
The Crate COULD contain a Dataset (directory) data entity of type ["Dataset"]
with identifier test/
to hold tests.
The Crate COULD contain a Dataset (directory) data entity of type ["Dataset"]
with identifier examples/
to hold examples.
Bioschemas Computational Workflow profile
The ComputationalWorkflow
description of the Main Workflow SHOULD comply with Bioschemas ComputationalWorkflow profile version 1.0 or later.
Conformance with the Bioschemas profile SHOULD be indicated with a conformsTo
on the Main Workflow entity.
Tip: See RO-Crate 1.1: Complying with Bioschemas Computational Workflow profile
WorkflowHub-specific Features/Requirements
File Format
The Workflow RO-Crate MUST be zipped, and SHOULD have the file extension .crate.zip
to be recognized by WorkflowHub.
The ro-crate-metadata.json
file SHOULD be directly in the root of the zip archive, so that the whole Zip becomes the RO-Crate Root.
Extracted Metadata
WorkflowHub will extract and expose the following properties from the Crate entity (./
) in ro-crate-metadata.json
:
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": "https://w3id.org/workflowhub/workflow-ro-crate#cwl",
"@type": "ComputerLanguage",
"name": "Common Workflow Language",
"alternateName": "CWL",
"identifier": {
"@id": "https://w3id.org/cwl/v1.2/"
},
"url": {
"@id": "https://www.commonwl.org/"
}
}
Galaxy
{
"@id": "https://w3id.org/workflowhub/workflow-ro-crate#galaxy",
"@type": "ComputerLanguage",
"name": "Galaxy",
"identifier": {
"@id": "https://galaxyproject.org/"
},
"url": {
"@id": "https://galaxyproject.org/"
}
}
KNIME
{
"@id": "https://w3id.org/workflowhub/workflow-ro-crate#knime",
"@type": "ComputerLanguage",
"name": "KNIME",
"identifier": {
"@id": "https://www.knime.com/"
},
"url": {
"@id": "https://www.knime.com/"
}
}
Nextflow
{
"@id": "https://w3id.org/workflowhub/workflow-ro-crate#nextflow",
"@type": "ComputerLanguage",
"name": "Nextflow",
"identifier": {
"@id": "https://www.nextflow.io/"
},
"url": {
"@id": "https://www.nextflow.io/"
}
}
Snakemake
{
"@id": "https://w3id.org/workflowhub/workflow-ro-crate#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.json 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.json",
"@type": "CreativeWork",
"about": {
"@id": "./"
},
"conformsTo": [
{ "@id": "https://w3id.org/ro/crate/1.1"},
{ "@id": "https://w3id.org/workflowhub/workflow-ro-crate/1.0"}
]
},
{
"@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": "https://w3id.org/workflowhub/workflow-ro-crate#cwl"
},
"name": "Example Workflow",
"image": {
"@id": "diagram.svg"
}
},
{
"@id": "diagram.svg",
"name": "Example Workflow Diagram",
"@type": [
"File",
"ImageObject"
]
},
{
"@id": "README.md",
"@type": "File",
"about": "./",
"encodingFormat": "text/markdown"
},
{
"@id": "https://w3id.org/workflowhub/workflow-ro-crate#cwl",
"@type": "ComputerLanguage",
"name": "Common Workflow Language",
"alternateName": "CWL",
"identifier": "https://w3id.org/cwl/v1.2/",
"url": "https://www.commonwl.org/"
}
]
}