External representations (Brick v1.3)
Open-FDD models Brick points with Brick’s ref schema so software can discover how each point maps to external systems (BACnet and timeseries storage) using:
ref:hasExternalReferenceref:BACnetReferenceref:TimeseriesReference
Open-FDD keeps legacy ofdd:* BACnet fields for compatibility, but ref:* is the preferred representation.
What Open-FDD emits
For each point in config/data_model.ttl:
- A timeseries reference:
a ref:TimeseriesReferenceref:hasTimeseriesId "<external_id>"ref:storedAt "<postgresql://host:port/db/timeseries_readings>"
- A BACnet reference when BACnet addressing is known (
bacnet_device_id+object_identifier):a ref:BACnetReferencebacnet:object-identifier "<object-type,instance>"- optional
bacnet:object-name "<name>" bacnet:objectOf <bacnet://<device_instance>>brick:BACnetURI "bacnet://<device>/<object>/present-value"
Example
:pt_123 a brick:Zone_Air_Temperature_Sensor ;
rdfs:label "ZoneTemp" ;
ref:hasExternalReference [
a ref:BACnetReference ;
bacnet:object-identifier "analog-input,3" ;
bacnet:object-name "BLDG-Z410-ZATS" ;
brick:BACnetURI "bacnet://123/analog-input,3/present-value" ;
bacnet:objectOf <bacnet://123>
] ;
ref:hasExternalReference [
a ref:TimeseriesReference ;
ref:hasTimeseriesId "ZoneTemp" ;
ref:storedAt "postgresql://localhost:5432/openfdd/timeseries_readings"
] ;
brick:isPointOf :eq_ahu_1 .
SPARQL discovery pattern
Use this to enumerate all external references and their types:
PREFIX ref: <https://brickschema.org/schema/Brick/ref#>
SELECT ?point ?rep ?type WHERE {
?point ref:hasExternalReference ?rep .
?rep a ?type .
}
BACnet-only references:
PREFIX ref: <https://brickschema.org/schema/Brick/ref#>
PREFIX bacnet: <http://data.ashrae.org/bacnet/2020#>
SELECT ?point ?oid ?dev WHERE {
?point ref:hasExternalReference ?rep .
?rep a ref:BACnetReference ;
bacnet:object-identifier ?oid ;
bacnet:objectOf ?dev .
}
Timeseries-only references:
PREFIX ref: <https://brickschema.org/schema/Brick/ref#>
SELECT ?point ?tsid ?store WHERE {
?point ref:hasExternalReference ?rep .
?rep a ref:TimeseriesReference ;
ref:hasTimeseriesId ?tsid ;
ref:storedAt ?store .
}