Skip to content

Graph Specification

KIT Graph

KIT is represented as a directed acyclic graph (DAG). Thus, no loop is allowed.

A graph is simply KIT = {workflow_name, nodes, edges}.

  • workflow_name: name of the KIT
  • nodes: list of nodes
  • edges: list of edges
"Graph": {
    "workflow_name": String,
    "nodes" : [],
    "edges" : []
}

Node Definition

A node v = {id, label, parameters, position}.

  • id: node ID used internally for KIT execution.
  • label: name of the node. For dataspace nodes, the label must match the asset name.
  • parameters: data from asset metadata needed to execute the node (See pydantic schema in KIT metadata)
  • position: [OPTIONAL] node position required only for visualisation in GUI

Examples:

"nodes": [
  {
    "id": "container-1789053957702",
    "data": {
      "label": "pybullet_sim_empty_env.tar",
      "params": {
        "type": "dlr.container",
        "provider_bpn": "BPNLM67H9AVUVPTD",
        "provider_url": "https://vision-x-api.base-x-ecosystem.org/connectors/dlr-rox-conn/cp/protocol",
        "asset_id": "e73daa3d-0e25-4e7f-90e9-81dc227fa11d",
        "representation": "docker_archive",
        "platforms": [
          "linux/amd64"
        ],
        "image_name": "robotarm-simulator",
        "image_tag": "poc",
        "registry_addr": null
      }
    },
    "position": {
      "x": -92.88419043360128,
      "y": -174.35878850328044
    }
  },
  {
    "id": "save_to_file-1789053985743",
    "data": {
      "label": "Save as a File",
      "params": {
        "type": "save_to_file",
        "file_path": "robot/robot.zip"
      }
    },
    "position": {
      "x": -325.1338378258013,
      "y": 13.332207460753708
    }
  },

Edge Definition

An edge e = {source, target, source_port, target_port}

  • source: node ID of the source node
  • target: node ID of the target node
  • sourceHandle: name of the port on the source
  • targetHandle: name of the port on the target

Important rules:

  • Every node has input dep port and output dep port ONLY for dependency indication. Thus, dep ports do not carry any data.
  • For now, every node can have either one or no input data port with the fixed port name input_0.
  • For now, every node can have either onr or no output data port with the fixed port name output_0.

Example:

"edges": [
    {
      "source": "save_to_file-1789053985743",
      "target": "unzipper-1789053988358",
      "sourceHandle": "dep",
      "targetHandle": "dep"
    },
    {
      "source": "container-1789053957702",
      "target": "bash_command-1789055057553",
      "sourceHandle": "dep",
      "targetHandle": "dep"
    },
    {
      "source": "unzipper-1789053988358",
      "target": "bash_command-1789055057553",
      "sourceHandle": "dep",
      "targetHandle": "dep"
    },
    {
      "source": "static_file-1790178290598",
      "target": "save_to_file-1789053985743",
      "sourceHandle": "output_0",
      "targetHandle": "input_0"
    }
  ]