This build prototypes a new mechanism to synthesize all the different combinations of equip and point tags. There are different ways to go about it, but this design starts from hand curated equip sub-parts and then recursively iterates. For example:
Chiller says its has a chilled-water-leaving-pipe
Pipe says it has a {conveys}-{section}-temp-sensor
That generates chilled-water-leaving-temp-sensor
Currently this generates defs with the "synthetic" marker. These synthesized defs show up in the docs, but are not first class defs that are considered part of the ontology.
What we have generates fairly complete docs for the points and containment. However there are two looming questions:
how aggressive or hand curated should "expansion" of combinations be?
should these be first class defs or something "else"?
Pages to see this in action (NOTE things have changed since this post):
I would not spend much time with the children or synthetic defs in 3.9.4 - it was just a prototype to see how that design direction would work. And it hasn't worked out all that well. I'm working on a new direction which we've prototyped and will post shortly. But there isn't much written up about it (I don't want to spend time writing up a design until it looks like we have something that seems to be elegant).
The fundamental issue is how to treat "children" of equip such sub-equip and points. This drives both documentation and tooling. The primary design options are:
Make them first class defs - not good because they are 1000s or 10,000s of them. This has never felt right
Make them kind of like defs - this is what is posted currently in 3.9.4 as "synthetic defs" which looks like defs but they are generated on the fly to model things like discharge duct, then discharge duct points, ...
Make them something completely different - this is the design I'm prototyping now where they are just Dict instances I'm calling "protos/protoypes"
Making them instance dict "templates" as protos instead of first class defs seems to be the right set of trade-offs.
Patrick CoffeyThu 30 May 2019
Hi Brian,
Thanks for the quick response. It's great to hear you working on it as I see some clear use cases for smart tools.
I've since discovered some recent commits on the haystack-defs repo. I think I see where you're going, but I'll wait until you have something more concrete.
Brian Frank Fri 3 May 2019
New version has been posted. See previous version notes:
Synthesized Children
This build prototypes a new mechanism to synthesize all the different combinations of equip and point tags. There are different ways to go about it, but this design starts from hand curated equip sub-parts and then recursively iterates. For example:
chilled-water-leaving-pipe
{conveys}-{section}-temp-sensor
chilled-water-leaving-temp-sensor
Currently this generates defs with the "synthetic" marker. These synthesized defs show up in the docs, but are not first class defs that are considered part of the ontology.
What we have generates fairly complete docs for the points and containment. However there are two looming questions:
Pages to see this in action (NOTE things have changed since this post):
Ontology Changes
There are significant enhancements the ontology itself:
ChangeLog
Version 3.9.4 (3 May 2019)
Patrick Coffey Thu 30 May 2019
I'm trying to wrap my head around the Ontology definitions and how we create the instance data.
If I use an ontology definition example from previous presentations:
Looking at ahu in the v4 docs , discharge-duct is listed as a child but no specific relationship type is specified.
2 Questions:
ahu
and childdischarge-duct
?eqiupRef
? (how did we know we needed equipRef?), ordischarge-duct
entity as a dict within theahu
entity?Cheers,
Patrick
Brian Frank Thu 30 May 2019
Patrick,
I would not spend much time with the children or synthetic defs in 3.9.4 - it was just a prototype to see how that design direction would work. And it hasn't worked out all that well. I'm working on a new direction which we've prototyped and will post shortly. But there isn't much written up about it (I don't want to spend time writing up a design until it looks like we have something that seems to be elegant).
The fundamental issue is how to treat "children" of equip such sub-equip and points. This drives both documentation and tooling. The primary design options are:
Making them instance dict "templates" as protos instead of first class defs seems to be the right set of trade-offs.
Patrick Coffey Thu 30 May 2019
Hi Brian,
Thanks for the quick response. It's great to hear you working on it as I see some clear use cases for smart tools.
I've since discovered some recent commits on the haystack-defs repo. I think I see where you're going, but I'll wait until you have something more concrete.
Let me know if you need any help.
Patrick