comparison env/lib/python3.9/site-packages/cwltool/schemas/v1.2.0-dev2/Process.yml @ 0:4f3585e2f14b draft default tip

"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
author shellac
date Mon, 22 Mar 2021 18:12:50 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:4f3585e2f14b
1 saladVersion: v1.1
2 $base: "https://w3id.org/cwl/cwl#"
3
4 $namespaces:
5 cwl: "https://w3id.org/cwl/cwl#"
6 sld: "https://w3id.org/cwl/salad#"
7 rdfs: "http://www.w3.org/2000/01/rdf-schema#"
8
9 $graph:
10
11 - name: "Common Workflow Language, v1.2.0-dev2"
12 type: documentation
13 doc: {$include: concepts.md}
14
15 - $import: "salad/schema_salad/metaschema/metaschema_base.yml"
16
17 - name: BaseTypesDoc
18 type: documentation
19 doc: |
20 ## Base types
21 docChild:
22 - "#CWLType"
23 - "#Process"
24
25 - type: enum
26 name: CWLVersion
27 doc: "Version symbols for published CWL document versions."
28 symbols:
29 - cwl:draft-2
30 - cwl:draft-3.dev1
31 - cwl:draft-3.dev2
32 - cwl:draft-3.dev3
33 - cwl:draft-3.dev4
34 - cwl:draft-3.dev5
35 - cwl:draft-3
36 - cwl:draft-4.dev1
37 - cwl:draft-4.dev2
38 - cwl:draft-4.dev3
39 - cwl:v1.0.dev4
40 - cwl:v1.0
41 - cwl:v1.1.0-dev1 # a dash is required by the semver 2.0 rules
42 - cwl:v1.1
43 - cwl:v1.2.0-dev1
44 - cwl:v1.2.0-dev2
45
46 - name: CWLType
47 type: enum
48 extends: "sld:PrimitiveType"
49 symbols:
50 - cwl:File
51 - cwl:Directory
52 doc:
53 - "Extends primitive types with the concept of a file and directory as a builtin type."
54 - "File: A File object"
55 - "Directory: A Directory object"
56
57 - name: File
58 type: record
59 docParent: "#CWLType"
60 doc: |
61 Represents a file (or group of files when `secondaryFiles` is provided) that
62 will be accessible by tools using standard POSIX file system call API such as
63 open(2) and read(2).
64
65 Files are represented as objects with `class` of `File`. File objects have
66 a number of properties that provide metadata about the file.
67
68 The `location` property of a File is a URI that uniquely identifies the
69 file. Implementations must support the file:// URI scheme and may support
70 other schemes such as http://. The value of `location` may also be a
71 relative reference, in which case it must be resolved relative to the URI
72 of the document it appears in. Alternately to `location`, implementations
73 must also accept the `path` property on File, which must be a filesystem
74 path available on the same host as the CWL runner (for inputs) or the
75 runtime environment of a command line tool execution (for command line tool
76 outputs).
77
78 If no `location` or `path` is specified, a file object must specify
79 `contents` with the UTF-8 text content of the file. This is a "file
80 literal". File literals do not correspond to external resources, but are
81 created on disk with `contents` with when needed for a executing a tool.
82 Where appropriate, expressions can return file literals to define new files
83 on a runtime. The maximum size of `contents` is 64 kilobytes.
84
85 The `basename` property defines the filename on disk where the file is
86 staged. This may differ from the resource name. If not provided,
87 `basename` must be computed from the last path part of `location` and made
88 available to expressions.
89
90 The `secondaryFiles` property is a list of File or Directory objects that
91 must be staged in the same directory as the primary file. It is an error
92 for file names to be duplicated in `secondaryFiles`.
93
94 The `size` property is the size in bytes of the File. It must be computed
95 from the resource and made available to expressions. The `checksum` field
96 contains a cryptographic hash of the file content for use it verifying file
97 contents. Implementations may, at user option, enable or disable
98 computation of the `checksum` field for performance or other reasons.
99 However, the ability to compute output checksums is required to pass the
100 CWL conformance test suite.
101
102 When executing a CommandLineTool, the files and secondary files may be
103 staged to an arbitrary directory, but must use the value of `basename` for
104 the filename. The `path` property must be file path in the context of the
105 tool execution runtime (local to the compute node, or within the executing
106 container). All computed properties should be available to expressions.
107 File literals also must be staged and `path` must be set.
108
109 When collecting CommandLineTool outputs, `glob` matching returns file paths
110 (with the `path` property) and the derived properties. This can all be
111 modified by `outputEval`. Alternately, if the file `cwl.output.json` is
112 present in the output, `outputBinding` is ignored.
113
114 File objects in the output must provide either a `location` URI or a `path`
115 property in the context of the tool execution runtime (local to the compute
116 node, or within the executing container).
117
118 When evaluating an ExpressionTool, file objects must be referenced via
119 `location` (the expression tool does not have access to files on disk so
120 `path` is meaningless) or as file literals. It is legal to return a file
121 object with an existing `location` but a different `basename`. The
122 `loadContents` field of ExpressionTool inputs behaves the same as on
123 CommandLineTool inputs, however it is not meaningful on the outputs.
124
125 An ExpressionTool may forward file references from input to output by using
126 the same value for `location`.
127
128 fields:
129 - name: class
130 type:
131 type: enum
132 name: File_class
133 symbols:
134 - cwl:File
135 jsonldPredicate:
136 _id: "@type"
137 _type: "@vocab"
138 doc: Must be `File` to indicate this object describes a file.
139 - name: location
140 type: string?
141 doc: |
142 An IRI that identifies the file resource. This may be a relative
143 reference, in which case it must be resolved using the base IRI of the
144 document. The location may refer to a local or remote resource; the
145 implementation must use the IRI to retrieve file content. If an
146 implementation is unable to retrieve the file content stored at a
147 remote resource (due to unsupported protocol, access denied, or other
148 issue) it must signal an error.
149
150 If the `location` field is not provided, the `contents` field must be
151 provided. The implementation must assign a unique identifier for
152 the `location` field.
153
154 If the `path` field is provided but the `location` field is not, an
155 implementation may assign the value of the `path` field to `location`,
156 then follow the rules above.
157 jsonldPredicate:
158 _id: "@id"
159 _type: "@id"
160 - name: path
161 type: string?
162 doc: |
163 The local host path where the File is available when a CommandLineTool is
164 executed. This field must be set by the implementation. The final
165 path component must match the value of `basename`. This field
166 must not be used in any other context. The command line tool being
167 executed must be able to to access the file at `path` using the POSIX
168 `open(2)` syscall.
169
170 As a special case, if the `path` field is provided but the `location`
171 field is not, an implementation may assign the value of the `path`
172 field to `location`, and remove the `path` field.
173
174 If the `path` contains [POSIX shell metacharacters](http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_02)
175 (`|`,`&`, `;`, `<`, `>`, `(`,`)`, `$`,`` ` ``, `\`, `"`, `'`,
176 `<space>`, `<tab>`, and `<newline>`) or characters
177 [not allowed](http://www.iana.org/assignments/idna-tables-6.3.0/idna-tables-6.3.0.xhtml)
178 for [Internationalized Domain Names for Applications](https://tools.ietf.org/html/rfc6452)
179 then implementations may terminate the process with a
180 `permanentFailure`.
181 jsonldPredicate:
182 "_id": "cwl:path"
183 "_type": "@id"
184 - name: basename
185 type: string?
186 doc: |
187 The base name of the file, that is, the name of the file without any
188 leading directory path. The base name must not contain a slash `/`.
189
190 If not provided, the implementation must set this field based on the
191 `location` field by taking the final path component after parsing
192 `location` as an IRI. If `basename` is provided, it is not required to
193 match the value from `location`.
194
195 When this file is made available to a CommandLineTool, it must be named
196 with `basename`, i.e. the final component of the `path` field must match
197 `basename`.
198 jsonldPredicate: "cwl:basename"
199 - name: dirname
200 type: string?
201 doc: |
202 The name of the directory containing file, that is, the path leading up
203 to the final slash in the path such that `dirname + '/' + basename ==
204 path`.
205
206 The implementation must set this field based on the value of `path`
207 prior to evaluating parameter references or expressions in a
208 CommandLineTool document. This field must not be used in any other
209 context.
210 - name: nameroot
211 type: string?
212 doc: |
213 The basename root such that `nameroot + nameext == basename`, and
214 `nameext` is empty or begins with a period and contains at most one
215 period. For the purposess of path splitting leading periods on the
216 basename are ignored; a basename of `.cshrc` will have a nameroot of
217 `.cshrc`.
218
219 The implementation must set this field automatically based on the value
220 of `basename` prior to evaluating parameter references or expressions.
221 - name: nameext
222 type: string?
223 doc: |
224 The basename extension such that `nameroot + nameext == basename`, and
225 `nameext` is empty or begins with a period and contains at most one
226 period. Leading periods on the basename are ignored; a basename of
227 `.cshrc` will have an empty `nameext`.
228
229 The implementation must set this field automatically based on the value
230 of `basename` prior to evaluating parameter references or expressions.
231 - name: checksum
232 type: string?
233 doc: |
234 Optional hash code for validating file integrity. Currently must be in the form
235 "sha1$ + hexadecimal string" using the SHA-1 algorithm.
236 - name: size
237 type: long?
238 doc: Optional file size
239 - name: "secondaryFiles"
240 type:
241 - "null"
242 - type: array
243 items: [File, Directory]
244 jsonldPredicate:
245 _id: "cwl:secondaryFiles"
246 secondaryFilesDSL: true
247 doc: |
248 A list of additional files or directories that are associated with the
249 primary file and must be transferred alongside the primary file.
250 Examples include indexes of the primary file, or external references
251 which must be included when loading primary document. A file object
252 listed in `secondaryFiles` may itself include `secondaryFiles` for
253 which the same rules apply.
254 - name: format
255 type: string?
256 jsonldPredicate:
257 _id: cwl:format
258 _type: "@id"
259 identity: true
260 doc: |
261 The format of the file: this must be an IRI of a concept node that
262 represents the file format, preferrably defined within an ontology.
263 If no ontology is available, file formats may be tested by exact match.
264
265 Reasoning about format compatability must be done by checking that an
266 input file format is the same, `owl:equivalentClass` or
267 `rdfs:subClassOf` the format required by the input parameter.
268 `owl:equivalentClass` is transitive with `rdfs:subClassOf`, e.g. if
269 `<B> owl:equivalentClass <C>` and `<B> owl:subclassOf <A>` then infer
270 `<C> owl:subclassOf <A>`.
271
272 File format ontologies may be provided in the "$schema" metadata at the
273 root of the document. If no ontologies are specified in `$schema`, the
274 runtime may perform exact file format matches.
275 - name: contents
276 type: string?
277 doc: |
278 File contents literal. Maximum of 64 KiB.
279
280 If neither `location` nor `path` is provided, `contents` must be
281 non-null. The implementation must assign a unique identifier for the
282 `location` field. When the file is staged as input to CommandLineTool,
283 the value of `contents` must be written to a file.
284
285 If `loadContents` of `inputBinding` or `outputBinding` is true and
286 `location` is valid, the implementation must read up to the first 64
287 KiB of text from the file and place it in the "contents" field.
288
289
290 - name: Directory
291 type: record
292 docAfter: "#File"
293 doc: |
294 Represents a directory to present to a command line tool.
295
296 Directories are represented as objects with `class` of `Directory`. Directory objects have
297 a number of properties that provide metadata about the directory.
298
299 The `location` property of a Directory is a URI that uniquely identifies
300 the directory. Implementations must support the file:// URI scheme and may
301 support other schemes such as http://. Alternately to `location`,
302 implementations must also accept the `path` property on Directory, which
303 must be a filesystem path available on the same host as the CWL runner (for
304 inputs) or the runtime environment of a command line tool execution (for
305 command line tool outputs).
306
307 A Directory object may have a `listing` field. This is a list of File and
308 Directory objects that are contained in the Directory. For each entry in
309 `listing`, the `basename` property defines the name of the File or
310 Subdirectory when staged to disk. If `listing` is not provided, the
311 implementation must have some way of fetching the Directory listing at
312 runtime based on the `location` field.
313
314 If a Directory does not have `location`, it is a Directory literal. A
315 Directory literal must provide `listing`. Directory literals must be
316 created on disk at runtime as needed.
317
318 The resources in a Directory literal do not need to have any implied
319 relationship in their `location`. For example, a Directory listing may
320 contain two files located on different hosts. It is the responsibility of
321 the runtime to ensure that those files are staged to disk appropriately.
322 Secondary files associated with files in `listing` must also be staged to
323 the same Directory.
324
325 When executing a CommandLineTool, Directories must be recursively staged
326 first and have local values of `path` assigend.
327
328 Directory objects in CommandLineTool output must provide either a
329 `location` URI or a `path` property in the context of the tool execution
330 runtime (local to the compute node, or within the executing container).
331
332 An ExpressionTool may forward file references from input to output by using
333 the same value for `location`.
334
335 Name conflicts (the same `basename` appearing multiple times in `listing`
336 or in any entry in `secondaryFiles` in the listing) is a fatal error.
337
338 fields:
339 - name: class
340 type:
341 type: enum
342 name: Directory_class
343 symbols:
344 - cwl:Directory
345 jsonldPredicate:
346 _id: "@type"
347 _type: "@vocab"
348 doc: Must be `Directory` to indicate this object describes a Directory.
349 - name: location
350 type: string?
351 doc: |
352 An IRI that identifies the directory resource. This may be a relative
353 reference, in which case it must be resolved using the base IRI of the
354 document. The location may refer to a local or remote resource. If
355 the `listing` field is not set, the implementation must use the
356 location IRI to retrieve directory listing. If an implementation is
357 unable to retrieve the directory listing stored at a remote resource (due to
358 unsupported protocol, access denied, or other issue) it must signal an
359 error.
360
361 If the `location` field is not provided, the `listing` field must be
362 provided. The implementation must assign a unique identifier for
363 the `location` field.
364
365 If the `path` field is provided but the `location` field is not, an
366 implementation may assign the value of the `path` field to `location`,
367 then follow the rules above.
368 jsonldPredicate:
369 _id: "@id"
370 _type: "@id"
371 - name: path
372 type: string?
373 doc: |
374 The local path where the Directory is made available prior to executing a
375 CommandLineTool. This must be set by the implementation. This field
376 must not be used in any other context. The command line tool being
377 executed must be able to to access the directory at `path` using the POSIX
378 `opendir(2)` syscall.
379
380 If the `path` contains [POSIX shell metacharacters](http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_02)
381 (`|`,`&`, `;`, `<`, `>`, `(`,`)`, `$`,`` ` ``, `\`, `"`, `'`,
382 `<space>`, `<tab>`, and `<newline>`) or characters
383 [not allowed](http://www.iana.org/assignments/idna-tables-6.3.0/idna-tables-6.3.0.xhtml)
384 for [Internationalized Domain Names for Applications](https://tools.ietf.org/html/rfc6452)
385 then implementations may terminate the process with a
386 `permanentFailure`.
387 jsonldPredicate:
388 _id: "cwl:path"
389 _type: "@id"
390 - name: basename
391 type: string?
392 doc: |
393 The base name of the directory, that is, the name of the file without any
394 leading directory path. The base name must not contain a slash `/`.
395
396 If not provided, the implementation must set this field based on the
397 `location` field by taking the final path component after parsing
398 `location` as an IRI. If `basename` is provided, it is not required to
399 match the value from `location`.
400
401 When this file is made available to a CommandLineTool, it must be named
402 with `basename`, i.e. the final component of the `path` field must match
403 `basename`.
404 jsonldPredicate: "cwl:basename"
405 - name: listing
406 type:
407 - "null"
408 - type: array
409 items: [File, Directory]
410 doc: |
411 List of files or subdirectories contained in this directory. The name
412 of each file or subdirectory is determined by the `basename` field of
413 each `File` or `Directory` object. It is an error if a `File` shares a
414 `basename` with any other entry in `listing`. If two or more
415 `Directory` object share the same `basename`, this must be treated as
416 equivalent to a single subdirectory with the listings recursively
417 merged.
418 jsonldPredicate:
419 _id: "cwl:listing"
420
421 - name: Labeled
422 type: record
423 abstract: true
424 fields:
425 - name: label
426 type:
427 - "null"
428 - string
429 jsonldPredicate: "rdfs:label"
430 doc: "A short, human-readable label of this object."
431
432
433 - name: Identified
434 type: record
435 abstract: true
436 fields:
437 - name: id
438 type: string?
439 jsonldPredicate: "@id"
440 doc: "The unique identifier for this object."
441
442
443 - name: LoadListingEnum
444 type: enum
445 symbols: [no_listing, shallow_listing, deep_listing]
446 doc:
447 - |
448 Specify the desired behavior for loading the `listing` field of
449 a Directory object for use by expressions.
450 - "no_listing: Do not load the directory listing."
451 - "shallow_listing: Only load the top level listing, do not recurse into subdirectories."
452 - "deep_listing: Load the directory listing and recursively load all subdirectories as well."
453
454
455 - name: LoadContents
456 type: record
457 abstract: true
458 fields:
459 - name: loadContents
460 type: boolean?
461 jsonldPredicate: "cwl:loadContents"
462 doc: |
463 Only valid when `type: File` or is an array of `items: File`.
464
465 Read up to the first 64 KiB of text from the file and place it in the
466 "contents" field of the file object for use by expressions.
467 - name: loadListing
468 type: LoadListingEnum?
469 jsonldPredicate: "cwl:loadListing"
470 doc: |
471 Only valid when `type: Directory` or is an array of `items: Directory`.
472
473 Specify the desired behavior for loading the `listing` field of
474 a Directory object for use by expressions.
475
476 The order of precedence for loadListing is:
477
478 1. `loadListing` on an individual parameter
479 2. Inherited from `LoadListingRequirement`
480 3. By default: `no_listing`
481
482 - name: FieldBase
483 type: record
484 extends: Labeled
485 abstract: true
486 fields:
487 secondaryFiles:
488 type:
489 - "null"
490 - SecondaryFileSchema
491 - type: array
492 items: SecondaryFileSchema
493 jsonldPredicate:
494 _id: "cwl:secondaryFiles"
495 secondaryFilesDSL: true
496 doc: |
497 Only valid when `type: File` or is an array of `items: File`.
498
499 Provides a pattern or expression specifying files or
500 directories that should be included alongside the primary
501 file. Secondary files may be required or optional. When not
502 explicitly specified, secondary files specified for `inputs`
503 are required and `outputs` are optional. An implementation
504 must include matching Files and Directories in the
505 `secondaryFiles` property of the primary file. These Files
506 and Directories must be transferred and staged alongside the
507 primary file. An implementation may fail workflow execution
508 if a required secondary file does not exist.
509
510 If the value is an expression, the value of `self` in the expression
511 must be the primary input or output File object to which this binding
512 applies. The `basename`, `nameroot` and `nameext` fields must be
513 present in `self`. For `CommandLineTool` outputs the `path` field must
514 also be present. The expression must return a filename string relative
515 to the path to the primary File, a File or Directory object with either
516 `path` or `location` and `basename` fields set, or an array consisting
517 of strings or File or Directory objects. It is legal to reference an
518 unchanged File or Directory object taken from input as a secondaryFile.
519 The expression may return "null" in which case there is no secondaryFile
520 from that expression.
521
522 To work on non-filename-preserving storage systems, portable tool
523 descriptions should avoid constructing new values from `location`, but
524 should construct relative references using `basename` or `nameroot`
525 instead.
526
527 If a value in `secondaryFiles` is a string that is not an expression,
528 it specifies that the following pattern should be applied to the path
529 of the primary file to yield a filename relative to the primary File:
530
531 1. If string ends with `?` character, remove the last `?` and mark
532 the resulting secondary file as optional.
533 2. If string begins with one or more caret `^` characters, for each
534 caret, remove the last file extension from the path (the last
535 period `.` and all following characters). If there are no file
536 extensions, the path is unchanged.
537 3. Append the remainder of the string to the end of the file path.
538
539 streamable:
540 type: boolean?
541 doc: |
542 Only valid when `type: File` or is an array of `items: File`.
543
544 A value of `true` indicates that the file is read or written
545 sequentially without seeking. An implementation may use this flag to
546 indicate whether it is valid to stream file contents using a named
547 pipe. Default: `false`.
548
549
550 - name: InputFormat
551 type: record
552 abstract: true
553 fields:
554 format:
555 type:
556 - "null"
557 - string
558 - type: array
559 items: string
560 - Expression
561 jsonldPredicate:
562 _id: cwl:format
563 _type: "@id"
564 identity: true
565 doc: |
566 Only valid when `type: File` or is an array of `items: File`.
567
568 This must be one or more IRIs of concept nodes
569 that represents file formats which are allowed as input to this
570 parameter, preferrably defined within an ontology. If no ontology is
571 available, file formats may be tested by exact match.
572
573
574 - name: OutputFormat
575 type: record
576 abstract: true
577 fields:
578 format:
579 type:
580 - "null"
581 - string
582 - Expression
583 jsonldPredicate:
584 _id: cwl:format
585 _type: "@id"
586 identity: true
587 doc: |
588 Only valid when `type: File` or is an array of `items: File`.
589
590 This is the file format that will be assigned to the output
591 File object.
592
593
594 - name: Parameter
595 type: record
596 extends: [FieldBase, sld:Documented, Identified]
597 abstract: true
598 doc: |
599 Define an input or output parameter to a process.
600
601
602 - type: enum
603 name: Expression
604 doc: |
605 'Expression' is not a real type. It indicates that a field must allow
606 runtime parameter references. If [InlineJavascriptRequirement](#InlineJavascriptRequirement)
607 is declared and supported by the platform, the field must also allow
608 Javascript expressions.
609 symbols:
610 - cwl:ExpressionPlaceholder
611
612
613 - name: InputBinding
614 type: record
615 fields:
616 - name: loadContents
617 type:
618 - "null"
619 - boolean
620 jsonldPredicate: "cwl:loadContents"
621 doc: |
622 Use of `loadContents` in `InputBinding` is deprecated.
623 Preserved for v1.0 backwards compatability. Will be removed in
624 CWL v2.0. Use `InputParameter.loadContents` instead.
625
626 Only valid when `type: File` or is an array of `items: File`.
627
628 Read up to the first 64 KiB of text from the file and place it in the
629 "contents" field of the file object for use by expressions.
630
631
632 - name: IOSchema
633 extends: [Labeled, sld:Documented]
634 type: record
635 abstract: true
636 fields:
637 - name: name
638 type: string?
639 jsonldPredicate: "@id"
640 doc: "The identifier for this type"
641
642 - name: InputSchema
643 extends: [IOSchema]
644 type: record
645 abstract: true
646
647 - name: OutputSchema
648 extends: [IOSchema]
649 type: record
650 abstract: true
651
652
653 - name: InputRecordField
654 type: record
655 extends: [sld:RecordField, FieldBase, InputFormat, LoadContents]
656 specialize:
657 - specializeFrom: "sld:RecordSchema"
658 specializeTo: InputRecordSchema
659 - specializeFrom: "sld:EnumSchema"
660 specializeTo: InputEnumSchema
661 - specializeFrom: "sld:ArraySchema"
662 specializeTo: InputArraySchema
663 - specializeFrom: "sld:PrimitiveType"
664 specializeTo: CWLType
665
666
667 - name: InputRecordSchema
668 type: record
669 extends: ["sld:RecordSchema", InputSchema]
670 specialize:
671 - specializeFrom: "sld:RecordField"
672 specializeTo: InputRecordField
673
674
675 - name: InputEnumSchema
676 type: record
677 extends: ["sld:EnumSchema", InputSchema]
678
679
680 - name: InputArraySchema
681 type: record
682 extends: ["sld:ArraySchema", InputSchema]
683 specialize:
684 - specializeFrom: "sld:RecordSchema"
685 specializeTo: InputRecordSchema
686 - specializeFrom: "sld:EnumSchema"
687 specializeTo: InputEnumSchema
688 - specializeFrom: "sld:ArraySchema"
689 specializeTo: InputArraySchema
690 - specializeFrom: "sld:PrimitiveType"
691 specializeTo: CWLType
692
693
694 - name: OutputRecordField
695 type: record
696 extends: [sld:RecordField, FieldBase, OutputFormat]
697 specialize:
698 - specializeFrom: "sld:RecordSchema"
699 specializeTo: OutputRecordSchema
700 - specializeFrom: "sld:EnumSchema"
701 specializeTo: OutputEnumSchema
702 - specializeFrom: "sld:ArraySchema"
703 specializeTo: OutputArraySchema
704 - specializeFrom: "sld:PrimitiveType"
705 specializeTo: CWLType
706
707
708 - name: OutputRecordSchema
709 type: record
710 extends: ["sld:RecordSchema", "#OutputSchema"]
711 docParent: "#OutputParameter"
712 specialize:
713 - specializeFrom: "sld:RecordField"
714 specializeTo: OutputRecordField
715
716
717 - name: OutputEnumSchema
718 type: record
719 extends: ["sld:EnumSchema", OutputSchema]
720 docParent: "#OutputParameter"
721
722
723 - name: OutputArraySchema
724 type: record
725 extends: ["sld:ArraySchema", OutputSchema]
726 docParent: "#OutputParameter"
727 specialize:
728 - specializeFrom: "sld:RecordSchema"
729 specializeTo: OutputRecordSchema
730 - specializeFrom: "sld:EnumSchema"
731 specializeTo: OutputEnumSchema
732 - specializeFrom: "sld:ArraySchema"
733 specializeTo: OutputArraySchema
734 - specializeFrom: "sld:PrimitiveType"
735 specializeTo: CWLType
736
737
738 - name: InputParameter
739 type: record
740 abstract: true
741 extends: [Parameter, InputFormat, LoadContents]
742 fields:
743 - name: default
744 type: Any?
745 jsonldPredicate:
746 _id: sld:default
747 noLinkCheck: true
748 doc: |
749 The default value to use for this parameter if the parameter is missing
750 from the input object, or if the value of the parameter in the input
751 object is `null`. Default values are applied before evaluating expressions
752 (e.g. dependent `valueFrom` fields).
753
754
755 - name: OutputParameter
756 type: record
757 extends: [Parameter, OutputFormat]
758 abstract: true
759
760
761 - type: record
762 name: ProcessRequirement
763 abstract: true
764 doc: |
765 A process requirement declares a prerequisite that may or must be fulfilled
766 before executing a process. See [`Process.hints`](#process) and
767 [`Process.requirements`](#process).
768
769 Process requirements are the primary mechanism for specifying extensions to
770 the CWL core specification.
771
772
773 - type: record
774 name: Process
775 extends: [Identified, Labeled, sld:Documented]
776 abstract: true
777 doc: |
778
779 The base executable type in CWL is the `Process` object defined by the
780 document. Note that the `Process` object is abstract and cannot be
781 directly executed.
782
783 fields:
784 - name: inputs
785 type:
786 type: array
787 items: InputParameter
788 jsonldPredicate:
789 _id: "cwl:inputs"
790 mapSubject: id
791 mapPredicate: type
792 doc: |
793 Defines the input parameters of the process. The process is ready to
794 run when all required input parameters are associated with concrete
795 values. Input parameters include a schema for each parameter which is
796 used to validate the input object. It may also be used to build a user
797 interface for constructing the input object.
798
799 When accepting an input object, all input parameters must have a value.
800 If an input parameter is missing from the input object, it must be
801 assigned a value of `null` (or the value of `default` for that
802 parameter, if provided) for the purposes of validation and evaluation
803 of expressions.
804
805 - name: outputs
806 type:
807 type: array
808 items: OutputParameter
809 jsonldPredicate:
810 _id: "cwl:outputs"
811 mapSubject: id
812 mapPredicate: type
813 doc: |
814 Defines the parameters representing the output of the process. May be
815 used to generate and/or validate the output object.
816 - name: requirements
817 type: ProcessRequirement[]?
818 jsonldPredicate:
819 _id: "cwl:requirements"
820 mapSubject: class
821 doc: |
822 Declares requirements that apply to either the runtime environment or the
823 workflow engine that must be met in order to execute this process. If
824 an implementation cannot satisfy all requirements, or a requirement is
825 listed which is not recognized by the implementation, it is a fatal
826 error and the implementation must not attempt to run the process,
827 unless overridden at user option.
828 - name: hints
829 type: Any[]?
830 doc: |
831 Declares hints applying to either the runtime environment or the
832 workflow engine that may be helpful in executing this process. It is
833 not an error if an implementation cannot satisfy all hints, however
834 the implementation may report a warning.
835 jsonldPredicate:
836 _id: cwl:hints
837 noLinkCheck: true
838 mapSubject: class
839 - name: cwlVersion
840 type: CWLVersion?
841 doc: |
842 CWL document version. Always required at the document root. Not
843 required for a Process embedded inside another Process.
844 jsonldPredicate:
845 "_id": "cwl:cwlVersion"
846 "_type": "@vocab"
847 - name: intent
848 type: string[]?
849 jsonldPredicate:
850 _type: "@id"
851 identity: true
852 doc: |
853 An identifier for the type of computational operation, of this Process.
854 Especially useful for "class: Operation", but can also be used for
855 CommandLineTool, Workflow, or ExpressionTool.
856
857 If provided, then this must be an IRI of a concept node that
858 represents the type of operation, preferrably defined within an ontology.
859
860 For example, in the domain of bioinformatics, one can use an IRI from
861 the EDAM Ontology's [Operation concept nodes](http://edamontology.org/operation_0004),
862 like [Alignment](http://edamontology.org/operation_2928),
863 or [Clustering](http://edamontology.org/operation_3432); or a more
864 specific Operation concept like
865 [Split read mapping](http://edamontology.org/operation_3199).
866
867 - name: InlineJavascriptRequirement
868 type: record
869 extends: ProcessRequirement
870 doc: |
871 Indicates that the workflow platform must support inline Javascript expressions.
872 If this requirement is not present, the workflow platform must not perform expression
873 interpolatation.
874 fields:
875 - name: class
876 type: string
877 doc: "Always 'InlineJavascriptRequirement'"
878 jsonldPredicate:
879 "_id": "@type"
880 "_type": "@vocab"
881 - name: expressionLib
882 type: string[]?
883 doc: |
884 Additional code fragments that will also be inserted
885 before executing the expression code. Allows for function definitions that may
886 be called from CWL expressions.
887
888
889 - name: CommandInputSchema
890 type: record
891 abstract: true
892
893 - name: SchemaDefRequirement
894 type: record
895 extends: ProcessRequirement
896 doc: |
897 This field consists of an array of type definitions which must be used when
898 interpreting the `inputs` and `outputs` fields. When a `type` field
899 contain a IRI, the implementation must check if the type is defined in
900 `schemaDefs` and use that definition. If the type is not found in
901 `schemaDefs`, it is an error. The entries in `schemaDefs` must be
902 processed in the order listed such that later schema definitions may refer
903 to earlier schema definitions.
904 fields:
905 - name: class
906 type: string
907 doc: "Always 'SchemaDefRequirement'"
908 jsonldPredicate:
909 "_id": "@type"
910 "_type": "@vocab"
911 - name: types
912 type:
913 type: array
914 items: CommandInputSchema
915 doc: The list of type definitions.
916
917 - name: SecondaryFileSchema
918 type: record
919 fields:
920 - name: pattern
921 type:
922 - string
923 - Expression
924 doc: |
925 Provides a pattern or expression specifying files or directories that
926 should be included alongside the primary file.
927
928 If the value is an expression, the value of `self` in the expression
929 must be the primary input or output File object to which this binding
930 applies. The `basename`, `nameroot` and `nameext` fields must be
931 present in `self`. For `CommandLineTool` outputs the `path` field must
932 also be present. The expression must return a filename string relative
933 to the path to the primary File, a File or Directory object with either
934 `path` or `location` and `basename` fields set, or an array consisting
935 of strings or File or Directory objects. It is legal to reference an
936 unchanged File or Directory object taken from input as a secondaryFile.
937 The expression may return "null" in which case there is no secondaryFile
938 from that expression.
939
940 To work on non-filename-preserving storage systems, portable tool
941 descriptions should avoid constructing new values from `location`, but
942 should construct relative references using `basename` or `nameroot`
943 instead.
944
945 If a value in `secondaryFiles` is a string that is not an expression,
946 it specifies that the following pattern should be applied to the path
947 of the primary file to yield a filename relative to the primary File:
948
949 1. If string ends with `?` character, remove the last `?` and mark
950 the resulting secondary file as optional.
951 2. If string begins with one or more caret `^` characters, for each
952 caret, remove the last file extension from the path (the last
953 period `.` and all following characters). If there are no file
954 extensions, the path is unchanged.
955 3. Append the remainder of the string to the end of the file path.
956 - name: required
957 type: ["null", boolean, Expression]
958 doc: |
959 An implementation must not fail workflow execution if `required` is
960 set to `false` and the expected secondary file does not exist.
961 Default value for `required` field is `true` for secondary files on
962 input and `false` for secondary files on output.
963 doc: |
964 Secondary files are specified using the following micro-DSL for secondary files:
965
966 * If the value is a string, it is transformed to an object with two fields
967 `pattern` and `required`
968 * By default, the value of `required` is `null`
969 (this indicates default behavior, which may be based on the context)
970 * If the value ends with a question mark `?` the question mark is
971 stripped off and the value of the field `required` is set to `False`
972 * The remaining value is assigned to the field `pattern`
973
974 For implementation details and examples, please see
975 [this section](SchemaSalad.html#Domain_Specific_Language_for_secondary_files)
976 in the Schema Salad specification.
977
978 - name: LoadListingRequirement
979 type: record
980 extends: ProcessRequirement
981 doc: |
982 Specify the desired behavior for loading the `listing` field of
983 a Directory object for use by expressions.
984 fields:
985 class:
986 type: string
987 doc: "Always 'LoadListingRequirement'"
988 jsonldPredicate:
989 "_id": "@type"
990 "_type": "@vocab"
991 loadListing:
992 type: LoadListingEnum?
993 jsonldPredicate: "cwl:loadListing"