HIM supports structuring information into different trees instead of bundling it all into one tree. This is likely to lead to that e. g. a server that manages a super domain of somewhat heterogeneous information will have that information represented by multiple trees. HIM enables this “forest of trees” to be accessed in a homogeneous manner by using the paths of the nodes of the trees to address theinformation contained in the trees. To support the server in managing this forest of trees, a HIM configuration tree provides a representation of the key parameters of this forest. The server may also share this configuration file on request from clients, in order for them to discover the information available by the forest. The HIM model is not restricted to client/server models.
A file containing this configuration shall have a name starting with “HIM_configuration”, with an optional suffix that might describe the domain, information type, or version. The file may have the extension “.him”, which typically would indicate that it is YAML formatted. Any file extension can be used that indicates it has been transformed from its YAML source format to a different format like “.json”.
The configuration tree root node shall have a name starting with “HIM_config”, which may be followed by additional information such as a descriptive domain name, version, etc.
A server may share the information of this file with a client that wants to discover what information the server manages.
A HIM compliant server shall be able to read a HIM configuration file and from that access the forest of trees it defines.
A HIM compliant tree must follow the HIM rule set.
The project specifying this tree must also define the domain
metadata for this tree,
and it may provide a public
URL to a file containing the complete tree,
possible also multiple public
URLs to renditions of the tree in different formats such as YAML, JSON, etc.
The creation of a HIM configuration file is the responsibility of the HIM server implementor.
The following node types can be used in a configuration tree:
This example shows a forest consisting of three local trees, and a remote tree:
HIM:
type: branch
description: Contains the set of trees that are managed as one virtual domain.
VehicleData:
type: direct
domain: Vehicle.Car.ResourceData
version: X.Y.Z
local: file://<full-path-name>
public: https://himrepo.oem.com?instance=Vehicle.Car.ResourceData.X.Y.Z
description: ….
VehicleServices:
type: direct
domain: Vehicle.Car.ServiceData
version: X.Y.Z
local: file://<full-path-name>
public: https://himrepo.oem.com?instance=Vehicle.Car.ServiceData.X.Y.Z
description: ….
Types:
type: direct
domain: Vehicle.Car.TypeDefinition
version: X.Y.Z
local: file://<full-path-name>
public: https://himrepo.oem.com?instance=Vehicle.Car.DataType.X.Y.Z
description: ….
ChargingStationData:
type: proxy
domain:ChargingStation.Vehicle.ResourceData
version: X.Y.Z
public: https://himrepo.energyco.com?instance=ChargingStation.Vehicle.ResourceData.X.Y.Z
description: ….