Properties#
This section contains elaborations of the different fields in the properties sheet.
There are two types of properties in DMS Rules: Connection
and Data
. The Connection
property is used to
specify how nodes are connected, while the Data
property is used to specify the data that is stored on the node.
These concepts match a Entity
and Literal
in semantic modeling. It is recommended that you use PascalCase
for
views, neat uses camelCase
for data properties. This makes it easier to distinguish between the two by looking
at the Value Type
column in the Properties
sheet.
Data Property#
A data property is used to specify the data that is stored on the node (also known as node attributes). Below is an example of a data property:
View | View Property | Value Type | Container | Container Property |
---|---|---|---|---|
WindTurbine | capacity | float64(unit=power:megaw) | GeneratingUnit | capacity |
This data property specifies that the WindTurbine
view has a property called capacity
that is a holding vLUW of type float64 with the unit
power:megaw
. The data is stored in the GeneratingUnit
container with the property capacity
.
To see which value types are supported, see the
CDF API Spec for Container Creation section.
The container.properties.type.type
field specifies the type of the property.
There are two Value Type
that supports extra parameters
float32
andfloat64
- These are used to specify floating-point numbers. Theunit
parameter is used to specify the unit of the number. See Units for available units. See example above.enum
- This is used to specify an enumeration. You need to setcollection
to the name of the enumeration and, optionally,unknownValue
to the value that should be used when the value is unknown. See example below. When enumerations are used, there is expected to be a correspondingenum
sheet in the DMS Rules file with the enumeration values.
View | View Property | Value Type | Container | Container Property |
---|---|---|---|---|
WindTurbine | category | enum(collection=category, unknownValue=onshore) | WindTurbine | category |
Connection Property#
All connections have a ValueType
that specifies the type of the connected node. For example:
View | ViewProperty | Connection | Value Type | Is List |
---|---|---|---|---|
WindTurbine | blades | direct | Blade | True |
This connection specifies that the WindTurbine
view has a property called blades
that is a direct relation to the Blade
view.
In addition, the Is List
, specifies that there can be multiple blades connected to a wind turbine.
Connection Implementation#
The column Connection
specifies how the connection is implemented in the CDF data model and can be one of the following:
- Direct relation—This is cheap in terms of storage and query time.
- Edge connection—This is more flexible, but more expensive in terms of storage and query time.
- Reverse connection—This is used to specify a connection from the other end of a direct relation or edge connection.
To get more details on the difference, see the data modeling documentation. Note that in addition to the mentioned differences, direct relations have an upper limit of 1000 connection per node.
The syntax for the Connection
column is as follows:
direct
- This specifies a direct relation. There are no extra parameters. Note, however, that you need to specifyContainer
andContainer Property
asdirect
connections are stored in the container.edge
- This specifies an edge connection. You can, optionally, specifytype
,properties
, anddirection
as extra parameters.reverse
- This specifies a reverse connection. You need to specify theproperty
that the connection is reversing.
Edge example:
View | ViewProperty | Connection | Value Type | Is List |
---|---|---|---|---|
WindTurbine | metmasts | edge(type=distance,properties=Distance,direction=outwards) | MetMast | True |
Distance | distance | float64(unit=length:m) | False |
This connection specifies that the WindTurbine
view has a property called metmasts
that is an edge connection
to the MetMast
view. The edges are of type distance
and have properties stored in the Distance
view. The
Distance
view has a property called distance
that is a float64 with the unit length:m
.
Why is both type
and properties
needed? The type
specifies the type of the edge, this is used for filtering
when querying the data model. The properties
specifies the properties that are stored on the edge. This is used
to store data on the edge. In the example above, we can, for example, write a query that returns all MetMast
(Wheather Station) that are connected to a WindTurbine with a distance less than 100 meters.
Reverse example:
View | ViewProperty | Connection | Value Type | Is List |
---|---|---|---|---|
MetMast | windTurbines | reverse(property=metmasts) | WindTurbine | True |
This connection specifies that the MetMast
view has a property called windTurbines
that is a reverse connection
of the metmasts
property in the WindTurbine
view. The Is List
specifies that there can be multiple wind turbines
connected to a MetMast.
Connecting this example to the previous example, we see that the reverse here will be an edge that is pointing the
opposite direction of the WindTurbine
.metmasts
edge. The reverse enable use to easily reuse the same edge
for both directions.