Skip to content

https://schema.org/SoftwareApplication and CWL Process Crosswalk for OCI Annotations

The OCI Annotations transpiler emits annotations for an OCI manifest. The output is wrapped under the $manifest key used by ORAS annotation files.

Root properties

$manifest
Source OCI annotation
https://schema.org/softwareVersion org.opencontainers.image.version
https://schema.org/description org.opencontainers.image.description
https://schema.org/applicationCategory N/A
https://schema.org/applicationSubCategory N/A
https://schema.org/copyrightYear N/A
https://schema.org/dateCreated N/A
https://schema.org/name org.opencontainers.image.title
https://schema.org/operatingSystem N/A
https://schema.org/keywords N/A
https://schema.org/softwareRequirements N/A
https://schema.org/author N/A
https://schema.org/license license
https://schema.org/publisher N/A
https://schema.org/softwareHelp N/A
CLI --image-source org.opencontainers.image.source
CLI --image-revision org.opencontainers.image.revision
CWL selected process id org.cwl.entrypoint
CWL selected process cwlVersion org.cwl.spec
CWL selected process class_ org.cwl.type

The selected CWL process is resolved from the CLI --workflow-id option. If the process cannot be found in the input CWL document, the command raises an error instead of emitting annotations.

https://schema.org/description is normalized before serialization: newline characters are replaced by spaces and carriage returns are removed.

License

The org.opencontainers.image.licenses annotation is populated from https://schema.org/license.

Schema.org OCI annotation
https://schema.org/identifier org.opencontainers.image.licenses
https://schema.org/name N/A
https://schema.org/url org.opencontainers.image.licenses

When license is a CreativeWork, the transpiler uses its identifier. When license is a URL value, the transpiler uses the last URL path segment. Multiple license values are joined with OR.

i.e. given this input:

s:license:
- '@type': s:CreativeWork
  s:identifier: Apache-2.0
- https://spdx.org/licenses/MIT.html

the resulting annotation is:

{
  "$manifest": {
    "org.opencontainers.image.licenses": "Apache-2.0 OR MIT.html"
  }
}