Assets in JSON

The assets composing a factory model, including the 3D scene, can be defined according to the JSON schema described in this section. JSON (JavaScript Object Notation) is a lightweight text-based data-interchange format that is easy to read/parse and write/generate both for humans and machines. A .json file can be opened with any basic or advanced text editor (e.g. NotePad++, Visual Studio Code).

The JSON file can be generated from a spreadsheet and, in turn, can be used to instantiate the ontology Factory Data Model thanks to the import functionality of OntoGui-Utlilities module.

Two examples are available in the dedicated section.


The .json schema has a root object with the following keys:

  1. "context": definition of context setup.

  2. "scene": definition of the 3D scene.

  3. "assets": detailed definition of assets that are included or not in the scene. Assets not included in the scene are models/templates that are referenced or could be later instantiated in the scene.


The context is an object that contains the following keys (all required):

  • "UnitOfMeasureScale": The unit of measure scale (e.g. 0.01 stands for centimeter, whereas 1 stands for meter)

  • "Zup": is a boolean parameter specifying the convention for the 3-D Cartesian coordinate system. The parameter is set to true if Z-axis is the vertical axis pointing up from the ground (i.e. Zup convention), or set to false if the Y-axis is the vertical axis pointing up from the ground (i.e. Yup convention). In both cases the right-handed system convention is assumed.

  • "RepoPath": Path of the repository where the 3D models can be found. RepoPath can be defined as absolute or as relative to the application path. The file path of 3D models is defined relatively to RepoPath (e.g. '/repository/', '').


The scene is an array consisting of asset IDs that are included in the 3D scene.


The assets is an array of objects defining each asset. The object contains the following keys:

  • "id": unique identifier of the asset [required];

  • "type": The type of the asset, i.e. OWL class of the Factory Data Model it belongs to [required]

  • "model": ID of the model of the asset (if existing), e.g. the model of a machine tool that is described in a catalog. In turn, the model can have a model. Please refer to the Object Typing pattern.

  • "representations": Array of 2D/3D representations of the asset. Each item of the array is an object with the following keys:

    • "file": file path of the 2D/3D model representation, as relative to the RepoPath [optional]. The file can be available on a local or remote file system (see example), as any online repository accessible via HTTPS (see example). The “file” property can be used also as a reference to a specific component inside the hierarchy of a 3D model by adding a hashtag and the ID of the component to the file path (e.g. #componentID'). For instance, the “file” property will have the value "FileName.glb#nodeId" if it refers to a node with unique id "nodeId" inside a GLTF file named "FileName.glb".

    • "unit": Unit of measure to interpret a 3D representation (e.g. 0.01 stands for centimeter, whereas 1 stands for meter) [required if “file” is defined]

  • "position": The Position of the asset. If missing, the default value is [0.0,0.0,0.0];

  • "scale": The scaling of the asset. If missing, the default value is [1.0,1.0,1.0]. Scaling is defined independently of the unit of measurement of the 3D representation (cf. “unit” in “representations”);

  • "rotation": The rotation of the asset defined as Euler angles YXZ in radians, or quaternion or rotation matrix. If missing, the default value is the rotation of the corresponding node in the GLTF hierarchy (if available), otherwise [0.0,0.0,0.0] as Euler angles, [1.0, 0.0, 0.0, 0.0] as quaternion, or [[1 0 0], [0 1 0], [0 0 1]] as rotation matrix.

  • "placementRelTo": ID of the asset with respect to which the placement (position and rotation) is defined in relative terms. This means that a roto-translation must be applied with respect to the placement of the asset identified by the value of placementRelTo. This relation happens between nodes directly connected in a scene graph. For instance, the placement of a pallet can be defined as relative to the placement of a conveyor.

  • "parentObject": ID of the asset that is decomposed (it may be empty or missing) when an aggregated asset is represented. If a parentObject is defined, then placementRelTo is defined as equal to parentObject. However, if a placementRelTo value is defined, then it is not necessarily also the parentObject. For instance, machine components decompose a workstation, whereas a pallet doesn't decompose a conveyor.

In addition, the following optional keys can be used to further characterize the factory model in terms of relations and properties:

  • "connectedTo": array of asset IDs that are connected downstream to the asset. The list may be empty or missing

  • assignmentTo": array of assignments to other asset IDs. The list may be empty or missing

  • successors": array of successors of a task as asset IDs.

  • taskTime": execution time of a task

  • TTF": time to failure (for devices like machines) in terms of probability distribution and value

  • TTR": time to repair (for devices like machines) in terms of probability distribution and value

  • duration": duration of a production plan

  • "properties": object containing the definition of static properties with property name and property value, e.g. {"capacity": 1, "mass": 100}. Valid property names are: capacity (for buffers), quantity (for production schedules), mass, friction, and restitution (for elements).

  • "polObserved": array containing machine and buffer IDs that are observed by a (conwip) policy.

  • "polThreshold": threshold value of a conwip policy.

  • "controlledMach": array of objects that define what is controlled by a release controller. Each object contains the following keys: machine (i.e. the controlled machine), policy (i.e. the policy to apply), state (optional, i.e. the state of the machine involved in the release control)

  • bufferCap": buffer capacity [deprecated]

  • quantity": quantity to be produced in a production plan [deprecated]


Examples of a scene with assets instantiated in a JSON file are available together with the corresponding spreadsheets for simple cases, an assembled product, and a workstation. These JSON files can be used to visualize a 3D scene in VEB.js.

Last updated