-
Notifications
You must be signed in to change notification settings - Fork 90
Controller and Point Group model #724
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
…rns and hosts Also symmetric relationships are added
…m:fennibay/Brick into fennibay-feat/special_relationships_for_controller
…o gtf-controller-model
|
The latest build of the Brick ontology on this PR is available here. |
|
The latest build of the Brick ontology on this PR is available here. |
|
Thank you @gtfierro.
Now I see we missed one point about Below some first ideas on how to address this, we shall discuss tomorrow:
Below another example assuming option 2 and #722 are in, just to give some concrete context. @prefix bldg: <http://example.com/controller2#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix rec: <https://w3id.org/rec#> .
@prefix brick: <https://brickschema.org/schema/Brick#> .
@prefix bacnet: <http://data.ashrae.org/bacnet/2020#> .
@prefix unit: <http://qudt.org/vocab/unit/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix ref: <https://brickschema.org/schema/Brick/ref#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
<http://example.com/controller2> a owl:Ontology ;
owl:imports <https://brickschema.org/schema/1.4/Brick> .
bldg:Controller_1 a brick:Controller ;
rdfs:label "AS20" ;
brick:hosts bldg:HVAC1 ;
brick:controls bldg:VavSu1 ;
brick:concerns bldg:R009 ;
.
bldg:HVAC1 a brick:Collection ;
brick:hasPart bldg:VavSu1 ;
brick:hasPart bldg:HCl1 ;
.
bldg:VavSu1 a brick:Variable_Air_Volume_Box ;
rdfs:label "VAV Supply Unit 1" ;
brick:hasPart bldg:CdnMsgCol1 ;
.
bldg:CdnMsgCol1 a brick:Collection ;
rdfs:label "Condensation Message Collection 1" ;
brick:hasPart bldg:CdnMsgRs1 ;
.
bldg:HCl1 a brick:Heating_Coil ;
rdfs:label "Heating Coil 1" ;
brick:hasPoint bldg:Pos1 ;
.
bldg:CdnMsgRs1 a brick:Status ;
rdfs:label "Condensation Message Result 1" ;
.
bldg:Pos1 a brick:Valve_PositionCommand ;
rdfs:label "Heating Coil Position 1" ;
.
bldg:R009 a rec:Zone ;
rdfs:label "Room 009 Zone" ;
brick:hasPoint bldg:TR1 ;
brick:hasPart bldg:SpTRDTr1 ;
.
bldg:TR1 a brick:Air_Temperature_Sensor ;
rdfs:label "Room Temperature 1" ;
.
bldg:SpTRDTr1 a brick:Collection ;
rdfs:label "Room Temperature Setpoint Determination 1" ;
brick:hasPart bldg:SpTR1 ;
.
bldg:SpTR1 a brick:Air_Temperature_Setpoint ;
rdfs:label "Room Temperature Setpoint 1" ;
.
|
|
@fennibay @jbkoh @ektrah I wrote up some docs for the point group here: BrickSchema/docs#26 Please take a look and let me know what you think. Maybe we can merge this next week? I don't think there's any implementation left to do on the model |
|
I'm trying to merge this in, but I'm still not 100% happy with the "concerns" relationship name. How do you all feel about |
|
|
The latest build of the Brick ontology on this PR is available here. |
|
The latest build of the Brick ontology on this PR is available here. |
|
The latest build of the Brick ontology on this PR is available here. |
|
The latest build of the Brick ontology on this PR is available here. |
|
The latest build of the Brick ontology on this PR is available here. |
|
@gtfierro thank you, it looks good. Matches what we discussed yesterday as the first step. |
|
The latest build of the Brick ontology on this PR is available here. |
|
One heads up; to get the tests to pass, I had to make |
|
The latest build of the Brick ontology on this PR is available here. |
|
The latest build of the Brick ontology on this PR is available here. |
|
all look good to me, but I want to bring up another thing: |
Do you see additional information that Would we also need it for actuating equipment? |
|
Yes, here is the query: |
|
Let me expand the above comment a bit more. Originally, If we want
select ?point ?location {
{
?equip brick:hostsPoint ?point.
?equip brick:hasLocation ?location.
?equip rdf:type brick:Controller.
}
UNION
{
?equip brick:hasPoint ?point.
?equip brick:hasLocation ?location.
?equip rdf:type brick:Sensor_Equipment.
}
}Maybe our homework is to precisely define what "hosting" actually mean. To me, I define it as following
Obviously, this definition is very rough, and there are many more cases to be considered.
Another solution is to just loosen the shape and allow hostsPoint to be used by any Equipment. It's still my desire to conclude this PR sooner than later, but I believe we need to set some direction on those topics before we conclude. |
|
@jbkoh thanks for elaborating further.
I think BMSs in general (including cloud) have quite some complexity. They have sometimes intermediaries/proxies to bring the point to their system, also there can be archiving systems (historians) and analytics systems that store copies of the points. Also, for BMS-local reasons, they might assign multiple IDs to the same point. I see the purpose of Brick+REC to make the automation system understandable. We don't need to understand how the BMS works. So I would leave all this out-of-scope. I can support the thermostat example. For instance QAP22 cannot be accessed in the network, only via a Controller; but QMX6.P30 would be accessible if the client is connected to the network and speaks the KNX protocol, otherwise again accessed via controller.
You're absolutely right. I would remove the "stores" and "physical", because maybe it's not storing, but just making the Point accessible; and it might be a virtual device as well (like SW controller). So my proposal would be: "Equipment hosts the Point, by making it available for access." Options I see:
In Option 1 and 3, we need an additional hint on how to access the point.
The starting point for this (#721) was to host Collections as first step towards modelling Control Programs running on the Controller, hence we landed in Option 1. Now that it has evolved into hosting points, we could also wait for the eventual introduction of Functions. |
|
We still don't have a definition of "Controller" in the PR yet, so maybe this is the right opportunity to hash that out. Controller is a subclass of brick:ICT Equipment which is defined as
Importantly, controllers can have a network address ( I vote for Option 1, as it feels the cleanest and closest to the original intent of this development direction. Option 2 can get confusing with when to use So, for @jbkoh's question:
the first part of his query should be sufficient (with one minor change) select ?point ?location {
{
?controller brick:hostsPoint ?point.
?controller brick:isPartOf?/brick:hasLocation ?location.
?controller rdf:type brick:Controller.
}The relationship between the Controller and Equipment must be present to find things this way. Here's what that sensor equipment might look like. In the first case, the sensor equipment could have an integrated controller (I think <temp1> a brick:Temperature_Sensor .
<sensor_hardware> a brick:Sensor_Equipment ;
brick:hasPart <controller> .
brick:hasPoint <temp1> .
<controller> a brick:Controller ;
brick:controls <sensor_hardware> ;
brick:hostsPoint <temp1> .In the second case, the sensor has a connection to an external controller (perhaps through a wireless network) <temp1> a brick:Temperature_Sensor .
<sensor_hardware> a brick:Sensor_Equipment ;
brick:hasLocation <room1> .
brick:hasPoint <temp1> .
<controller> a brick:Controller ;
brick:controls <sensor_hardware> ;
brick:hasLocation <IT_closet> . # different location than the sensor equipment
brick:hostsPoint <temp1> . |
|
The latest build of the Brick ontology on this PR is available here. |
|
The newly added definition reads pretty arbitrary:
Do you have any reference on defining "Controller" as control or monitor? The issue is not about when the Sensor Equipment and Controller (in the proposed definition) are separate, but when the Sensor Equipment is transmitting the data by itself. Sensor Equipment is a subclass of ICT Equipment, so it can certainly do it without a proxy, like many occupancy sensors do. Why don't we change the range of |
|
I think |
|
Just pushed the @jbkoh I would love a better definition of controller! I just threw something in there |
|
The latest build of the Brick ontology on this PR is available here. |
|
My reaction was towards RE: |
|
I would also keep controls on the Controller. Many thanks for driving this forward! |
|
The latest build of the Brick ontology on this PR is available here. |
|
The latest build of the Brick ontology on this PR is available here. |

Replaces #721 . @fennibay @ektrah let me know what you think!