# Using schema.org attributes to define compatible workflow engines

**URL:** <https://cwl.discourse.group/t/using-schema-org-attributes-to-define-compatible-workflow-engines/834>\
**Category:** CWL Questions\
**Created:** [October 2, 2023, 11:16pm UTC](https://cwl.discourse.group/t/using-schema-org-attributes-to-define-compatible-workflow-engines/834 "2023-10-02T23:16:31Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![alexiswl](https://yyz2.discourse-cdn.com/free1/user_avatar/cwl.discourse.group/alexiswl/32/93_2.png) [@alexiswl](https://cwl.discourse.group/u/alexiswl)\
**Post date:** [October 2, 2023, 11:16pm UTC](https://cwl.discourse.group/t/using-schema-org-attributes-to-define-compatible-workflow-engines/834/1 "2023-10-02T23:16:31Z")

</div>

Hello,

I am writing a suite of workflows in our [cwl-ica](https://github.com/umccr/cwl-ica/) repository.

These workflows were written for ICAv1 (which is being deprecated). We are moving to using ICAv2 along with testing out other CWL compatible workflow engines such as Amazon Omics etc.

Some workflows will be compatible only with ICAv2, and I assume some in future will only be compatible with Omics etc.

Rather than create separate repositories for each workflow engine, I would like to know if there are any official schemas to use to be able to specify which workflow engines are appropriate for a given workflow.

```plaintext
# Extensions
$namespaces:
    s: https://schema.org/
$schemas:
  - https://schema.org/version/latest/schemaorg-current-http.rdf

# Metadata
s:compatibleWorkflowEngines:
  - cwltool.local
  - https://ica.illumina.com/ica/rest
  - omics
  - toil

```

For dragen-specific workflows, `https://ica.illumina.com/ica/rest` may be the only compatible workflow engine.

Our catalogue (see [example](https://github.com/umccr/cwl-ica/blob/b576cd5e9e1365d1e341fee3d7af5bd4a625b4e3/.github/catalogue/docs/workflows/bclconvert-with-qc-pipeline/4.0.3/bclconvert-with-qc-pipeline__4.0.3.md)) would then be able to denote which engines are compatible by scraping the workflow.

I would not want anyone to come across our workflows on the likes of GitHub or Dockstore only to realise after testing that the workflow is not compatible with their setup.

Is there a best-practise for documenting this?

Would be keen to hear any other solutions / workarounds people have come across as well.

---

<div class="post-metadata">

**Author:** ![tetron](https://yyz2.discourse-cdn.com/free1/user_avatar/cwl.discourse.group/tetron/32/40_2.png) [@tetron](https://cwl.discourse.group/u/tetron)\
**Post date:** [December 7, 2023, 4:03pm UTC](https://cwl.discourse.group/t/using-schema-org-attributes-to-define-compatible-workflow-engines/834/2 "2023-12-07T16:03:31Z")

</div>

A few thoughts:

- [schema.org](http://schema.org) is a specific ontology, so you shouldn’t just make up terms. But you can make up your own prefix like this:

```auto
$namespaces:
  umccr: https://mdhs.unimelb.edu.au/cwl/

```

- Instead of “compatible workflow engines” you would recommend saying calling it something like “tested workflow engines”. I’d also recommend using full URLs that are meaningful to other people:

```auto
umccr:testedWorkflowEngines:
  - https://github.com/common-workflow-language/cwltool
  - https://ica.illumina.com/ica/rest
  - https://github.com/DataBiosphere/toil
  - omics # IDK exactly which service this refers to, which is why full URLs are good

```

While it makes practical sense to list which workflow engines have been tested, CWL workflows _ought_ to be portable unless (a) the engine doesn’t support a standard CWL feature used by the workflow or (b) the workflow has special non-standard requirements (e.g. FPGA support).

In the second case, you should be able to infer from the `requirements` section which workflows need that special support and you can compare that with a list of which engines support that special requirement.

---

<div class="post-metadata">

**Author:** ![alexiswl](https://yyz2.discourse-cdn.com/free1/user_avatar/cwl.discourse.group/alexiswl/32/93_2.png) [@alexiswl](https://cwl.discourse.group/u/alexiswl)\
**Post date:** [December 8, 2023, 6:04am UTC](https://cwl.discourse.group/t/using-schema-org-attributes-to-define-compatible-workflow-engines/834/3 "2023-12-08T06:04:42Z")

</div>

> [@tetron](#):
>
> In the second case, you should be able to infer from the `requirements` section which workflows need that special support and you can compare that with a list of which engines support that special requirement.

This isn’t always possible if the requirements are defined at the tool level.

The new namespace makes sense though, does [https://mdhs.unimelb.edu.au/cwl/](https://mdhs.unimelb.edu.au/cwl/) have to be a valid site? Could this point to a file in GitHub if so?

---

<div class="post-metadata">

**Author:** ![alexiswl](https://yyz2.discourse-cdn.com/free1/user_avatar/cwl.discourse.group/alexiswl/32/93_2.png) [@alexiswl](https://cwl.discourse.group/u/alexiswl)\
**Post date:** [December 8, 2023, 6:05am UTC](https://cwl.discourse.group/t/using-schema-org-attributes-to-define-compatible-workflow-engines/834/4 "2023-12-08T06:05:36Z")

</div>

Omics - linked here [Amazon Omics now supports Common Workflow Language](https://aws.amazon.com/about-aws/whats-new/2023/06/amazon-omics-common-workflow-language/)

---

<div class="post-metadata">

**Author:** ![mrc](https://yyz2.discourse-cdn.com/free1/user_avatar/cwl.discourse.group/mrc/32/3_2.png) [@mrc](https://cwl.discourse.group/u/mrc)\
**Post date:** [December 8, 2023, 8:42am UTC](https://cwl.discourse.group/t/using-schema-org-attributes-to-define-compatible-workflow-engines/834/5 "2023-12-08T08:42:49Z")

</div>

Stable identifier for some of the engines mentioned

1 `cwltool` is `RRID:SCR_015528` a.k.a. [https://identifiers.org/RRID/RRID:SCR\_015528](https://identifiers.org/RRID/RRID:SCR_015528)  
2. Toil is `RRID:SCR_024391` a.k.a [https://identifiers.org/RRID/RRID:SCR\_024391](https://identifiers.org/RRID/RRID:SCR_024391)  
3. Arvados is `RRID:SCR_002223` a.k.a. [https://identifiers.org/RRID/RRID:SCR\_002223](https://identifiers.org/RRID/RRID:SCR_002223)  
4. CWL-Airflow is `RRID:SCR_017196` a.k.a. [https://identifiers.org/RRID/RRID:SCR\_017196](https://identifiers.org/RRID/RRID:SCR_017196)  
5. Galaxy is `RRID:SCR_006281` a.k.a. [https://identifiers.org/RRID/RRID:SCR\_006281](https://identifiers.org/RRID/RRID:SCR_006281)

---

<div class="post-metadata">

**Author:** ![tetron](https://yyz2.discourse-cdn.com/free1/user_avatar/cwl.discourse.group/tetron/32/40_2.png) [@tetron](https://cwl.discourse.group/u/tetron)\
**Post date:** [December 8, 2023, 10:38pm UTC](https://cwl.discourse.group/t/using-schema-org-attributes-to-define-compatible-workflow-engines/834/6 "2023-12-08T22:38:18Z")

</div>

> [@alexiswl](#):
>
> The new namespace makes sense though, does [https://mdhs.unimelb.edu.au/cwl/](https://mdhs.unimelb.edu.au/cwl/) have to be a valid site? Could this point to a file in GitHub if so?

No, it doesn’t have to be real. However, it is nice if it does load a page that describes the item being identified.

> [@mrc](#):
>
> Stable identifier for some of the engines mentioned

- Do we link to these anywhere on [commonwl.org](http://commonwl.org)? Feels like something that could be mentioned on [Implementations | Common Workflow Language (CWL)](https://www.commonwl.org/implementations/)
- Regrettably this has a similar problem to the EDAM ontology (and many ontologies) where the numeric identifiers are extremely user-unfriendly. Maybe we should have a way to define URI aliases in CWL?

It’s possible something like this already works, I haven’t tried it though:

```auto
$namespaces:
  umccr: https://mdhs.unimelb.edu.au/cwl/
  cwltool_engine: https://identifiers.org/RRID/RRID:SCR_015528

umccr:testedWorkflowEngines:
  - "cwltool_engine:"

```
