Predicate Description
part-of(x, y)
Component x is part of component y.
measure(x, y, z)
Sensor x measures the quantity y of component z.
cause(x, y, z, u, t)
Quantity x of component y is cause of quantity z of component u
with a delay t .
measurement(x, y)
Sensor x measures time series y.
value(x, y, t, v)
Quantity x of a single component y with t_scope t has the value v.
value(x, y, t, z, v)
Quantity x of a complex component y with t_scope t and c_scope z
has the value v.
state(x, y)
The state of component x is y.
recent_state(x, y)
The recent state of component x is y.
trend(x, y)
The trend of the state of component x is y.
quantification(x, y)
The quantification of the state of component x is y.
state_category(x,y,z)
The state z is a category of the state y of component x.
Fig. 5. Examples of predicates to represent knowledge about the dynamic system.
In order cope with different levels of abstraction, our representation also includes
the scope of certain affirmations. For this purpose, we use the concept of relative
scope to a specific domain. We use two sorts: t_scope which defines a temporal scope
and c_scope which defines the scope in a set of subcomponents that are part of a giv-
en component. For example, a possible value for temporal scope is max(n) that means
the maximum value for the last n hours.
Figure 5 shows a list of predicates to represent knowledge about the dynamic sys-
tem. For example, to represent structural relations we use the predicate part-of(x:
component, y: component) for the part-of relation and measure(x: sensor, y: quantity,
z: component) to relate sensors and quantities of components. The predicate cause(x:
quantity, y: component, z: quantity, u: component, t: number) represents a direct
causal influence between two quantities. The relation includes a temporal delay be-
tween the cause and effect.
To represent the value of a particular quantity we use the predicate value(x: quan-
tity, y: component, t: t_scope, v: value) for the case of a single component. This pre-
dicate defines the value for the quantity of a component with a particular temporal
scope. For example, value(temperature, tank-T3, current, 120) represents that the
current temperature of tank-T3 is 120 and value(volume, reservoir-R8, min(24), 18)
represents that the minimum volume of reservoir-R8 in the last 24 hours is 18. This
predicate also helps to represent historical information about behavior (e.g., average
values, maximum historical values, etc.). The predicate for the case of complex com-
ponents is value(x: quantity, y: component, t: t_scope, z: c_scope, v: value). It in-
cludes an additional argument for c_scope. For example, value(rain, Spain, current,
max, 27) represents that, at the present moment, the maximum rain in the set of points
(where rain is measured) that are part of Spain is 27.
To interpret the current state of a component we use the predicates state(x: com-
ponent, y: state), trend(x: component, y: state) and quantification(x: component, y:
quantification). For example the tuple <state(Spain, heavy-rain), trend(Spain, de-
crease), quantification(Spain, few)> represents that there is a decreasing heavy rain in
a few points of Spain. It is also possible to use the predicate recent_state(x: compo-
nent, y: state) for a recent time interval.
28