2 "$schema": "https://json-schema.org/draft/2020-12/schema",
3 "$id": "https://nvidia.com/dw/graphlet.schema.json",
4 "title": "DW Graphlet Descriptor",
5 "description": "The descriptor of a DriveWorks graphlet. The keys in JSON should appear in the same order as the properties are documented in the schema.",
15 "additionalProperties": false,
18 "description": "An optional description of the graphlet",
22 "description": "The unique name of the graphlet",
24 "pattern": "^([a-z][a-z_]*::)*[a-zA-Z][a-zA-Z0-9_]*$"
27 "description": "The input ports. The order is user defined.",
29 "additionalProperties": false,
30 "patternProperties": {
31 "^[A-Z][A-Z0-9_]*$": {
32 "description": "The key is the name of the input port (in MACRO_CASE) which must be unique within the collection of input ports in this graphlet. The value describes the port itself.",
33 "$ref": "#/$defs/port"
38 "description": "The output ports. The order is user defined.",
40 "additionalProperties": false,
41 "patternProperties": {
42 "^[A-Z][A-Z0-9_]*$": {
43 "description": "The key is the name of the output port (in MACRO_CASE) which must be unique within the collection of output ports in this graphlet. The value describes the port itself.",
44 "$ref": "#/$defs/port"
49 "description": "The parameters. The order is user defined.",
51 "additionalProperties": false,
52 "patternProperties": {
53 "^[a-z][a-zA-Z0-9_]*(\\.[a-z][a-zA-Z0-9_]*)?$": {
54 "description": "The key is the name of the parameter (in camelCase) which must be unique within the collection of parameters in this node. The value describes the parameter itself.",
55 "$ref": "#/$defs/parameter"
60 "description": "The subcomponents. The order should be alphabetical.",
62 "additionalProperties": false,
63 "patternProperties": {
64 "^[a-z][a-zA-Z0-9]*$": {
65 "description": "The key is the name of the component instance (in camelCase() which must be unique within the collection of subcomponents in this node. The value describes the component instance itself.",
66 "$ref": "#/$defs/subcomponent"
71 "description": "The connections. The order should be alphabetical based on the source and the connection parameter names.",
74 "$ref": "#/$defs/connection"
84 "additionalProperties": false,
87 "description": "The C++ type name of the data",
92 "description": "The array size if this is an array of ports (default: a single non-array port)",
97 "description": "The flag if the port must be bound (default: false)",
101 "description": "Any text describing the port (default: empty string)",
111 "additionalProperties": false,
114 "description": "The C++ type name of the parameter",
119 "description": "The array size if this is an array of parameter values (default: a single-value parameter)",
124 "description": "The default value (default: none)",
140 "description": "Any text describing the parameter (default: empty string)",
150 "additionalProperties": false,
153 "description": "The (relative) path of a component ending in .node.json / .graphlet.json.",
155 "pattern": "^.+\\.(node|graphlet)\\.json$"
158 "description": "The parameters passed to the subcomponent. The order should be alphabetical.",
160 "additionalProperties": false,
161 "patternProperties": {
162 "^([a-z][a-zA-Z0-9_]*(\\.[a-z][a-zA-Z0-9_]*)?|\\*)$": {
163 "description": "The key is the name of the parameter and must match a parameter declared in the descriptor of the referenced component. The parameter value can either be of primitive type or an homongeneous array of a primitive type. A string value as well as string values in an array are subject to substition. The string can be either the literal value or a placeholder referencing a parameter of this graphlet. The placeholder must have the form of '$paramName' or if the graphlet parameter is an array and only a single value should be passed '$paramName[N]' where N is an index within the array. To pass a literal '$' character it needs to be escaped using another '$' character. As a wildcard the key can be the string '*'. The corresponding value must be '$*'. If it is present all parameters of the graphlet are passed to the component if it has a parameter with a matching name. Additional explicit parameter can be present beside the wildcard and override the graphlet parameter values.",
181 "description": "Any text describing the subcomponent (default: empty string)",
192 "additionalProperties": false,
195 "description": "The name of the input port of the graphlet or an output port of a subcomponent (in the form 'subcomponentInstanceName.OUTPUT_PORT_NAME') optionally followed by a non-negative array index wrapped in brackets. If an empty string is provided, it means the connection is an INBOUND connection and the src comes outside of the DAG.",
197 "pattern": "^$|^([a-z][a-zA-Z0-9]*\\.)?[A-Z][A-Z0-9_]*(\\[[0-9]+\\])?$"
200 "description": "The collection of ports receiving the data",
202 "additionalProperties": false,
203 "patternProperties": {
204 "^$|^([a-z][a-zA-Z0-9]*\\.)?[A-Z][A-Z0-9_]*(\\[[0-9]+\\])?$": {
205 "description": "The key is the name of the output port of the graphlet or an input port of a subcomponent (in the form 'subcomponentInstanceName.INPUT_PORT_NAME') optionally followed by a non-negative array index wrapped in brackets. The value contains parameters specific to this destination port. The order of the parameters should be alphabetical. If an empty string is provided, it means the connection is an OUTBOUND connection and the dest goes outside of the DAG.",
209 "additionalProperties": false,
210 "patternProperties": {
211 "^[a-z][a-zA-Z0-9_-]*$": {
212 "description": "The key is the name of the parameter and the value can either be any primitive type",
224 "description": "Parameters for multicast connections. The order should be alphabetical.",
226 "additionalProperties": false,
227 "patternProperties": {
228 "^[a-z][a-zA-Z0-9_-]*$": {
229 "description": "The key is the name of the parameter and the value can any primitive type",