I am new to PH. I am looking at developing some new software and am looking at using PH as he basis of a configuration system. My goal is to use macro generators to produce sections of haystack models and the use configuration generators to take that and give the software exactly what it needs.
My particular focus is on distributed processing for control systems.
How I see things actually working in my system is that there is a macro for a thermostat and that generates the sensor and the agent that handles the sensor. The thermostat had a zone defined, so this sensor then refers to a zone and the zone refers to the control agent. The process agent has the attribute for the required accuracy of readings.
Once all the attribute flow has been processed, each agent type has a generator that produces the exact information that agent needs to set up all the communications and processing. When an agent instance starts, it discovers its configuration on the net and then loads it before communicating.
Things are viewed as very dynamic, where almost anything can appear, disappear and move on the net at any time.
Observations: To me, PH is a bottom up definition system. Lots of information about the capabilities of widgets and very little on how they fit together.
For distributed processing, there is a needed concept of an agent. So you may have some sensor points, but those need some form of agent to do the distributed communication. the instantiation of that agent is a key point in both configuration and communication, so it needs to be a first class object.
The idea of "device" seems weak when viewed from the distributed processing model. Agents get mapped onto processors, and the processor and agent information combine to produce the addressing.
I see PH more as a common language for a model as opposed to a meta model per se. For me, the ability to have a powerful macro processing system is almost mandatory to be able to build user meaningful models. Even system designers want to work at abstractions levels higher than PH provides.
Questions:
My main semantics question has to do with ref: The definition of ref is completely abstract, but the examples all have it that the smaller object refers to the larger object. Is this the assumed semantic meaning of ref? If so, it should be documented. (The reason this matters will show up immediately.)
I look at refs as building a flow of attributes down the referral paths. If I have a sensor that is part different zones (heating, cooling and lighting can all be different and overlapping in arbitrary ways), what do you do when there are attribute conflicts. As an example, say zone A controller (I call them process agents) wants the sensor to be sampled every 20 seconds and zone B wants them sampled every 11 seconds? Worse yet, what if C sets an attribute to true and D to false? There is nothing in the semantic system to address these conflicts.
This may be simple to avoid with hand crafted models, but becomes much more likely with macro generated ones.
What is the standard expectation when a parser encounters a non-standard attribute in a defined object? I see this as a common problem. As an example, say I have a temperature sensor who's read speed is a function of bits collected. I would like to have an attribute added that says accuracy-bits to control that for the sensor. What happens if someone else gets a model with that in it? IMO, the ideal response is a warning. I would prefer silent discard to generating an error.
jerry
Brian FrankWed 3 Feb 2016
Even system designers want to work at abstractions levels higher than PH provides.
I think everyone doing serious work to build software around Haystack has quite a bit of layered technology above the core model. At some point, it might make sense to standardize some of that, but probably too early at this point
The definition of ref is completely abstract
Essentially a ref is nothing more than what a URI is - a link to another resource. Except its not any generic resource, but an entity modeled with Haystack tags. Another parallel would be primary and foreign keys in a database
smaller object refers to the larger object. Is this the assumed semantic meaning of ref
Its really done one a case by case basis. It just happens that referencing things "up" makes the model simpler for many-to-one relationships. Once again, its most likely how you would model this in a relational database. So its a useful convention, but not a hard fast rule.
There are some (but not a lot) of cases where you have many-to-many relationships. In a RDMBS you would just a join table. We have not handled this case yet, but with proposed Haystack 3.0 model we now have a list of Refs as an option.
What is the standard expectation when a parser encounters a non-standard attribute in a defined object
The expectation is that you should handle this gracefully. It is a fundamental philosophy that people can make up their own tags, specific to products, projects, or organizations. I would say virtually everyone using Haystack uses their own customer tags.
Jerry Scharf Tue 2 Feb 2016
Hi,
I am new to PH. I am looking at developing some new software and am looking at using PH as he basis of a configuration system. My goal is to use macro generators to produce sections of haystack models and the use configuration generators to take that and give the software exactly what it needs.
My particular focus is on distributed processing for control systems.
How I see things actually working in my system is that there is a macro for a thermostat and that generates the sensor and the agent that handles the sensor. The thermostat had a zone defined, so this sensor then refers to a zone and the zone refers to the control agent. The process agent has the attribute for the required accuracy of readings.
Once all the attribute flow has been processed, each agent type has a generator that produces the exact information that agent needs to set up all the communications and processing. When an agent instance starts, it discovers its configuration on the net and then loads it before communicating.
Things are viewed as very dynamic, where almost anything can appear, disappear and move on the net at any time.
Observations: To me, PH is a bottom up definition system. Lots of information about the capabilities of widgets and very little on how they fit together.
For distributed processing, there is a needed concept of an agent. So you may have some sensor points, but those need some form of agent to do the distributed communication. the instantiation of that agent is a key point in both configuration and communication, so it needs to be a first class object.
The idea of "device" seems weak when viewed from the distributed processing model. Agents get mapped onto processors, and the processor and agent information combine to produce the addressing.
I see PH more as a common language for a model as opposed to a meta model per se. For me, the ability to have a powerful macro processing system is almost mandatory to be able to build user meaningful models. Even system designers want to work at abstractions levels higher than PH provides.
Questions:
My main semantics question has to do with ref: The definition of ref is completely abstract, but the examples all have it that the smaller object refers to the larger object. Is this the assumed semantic meaning of ref? If so, it should be documented. (The reason this matters will show up immediately.)
I look at refs as building a flow of attributes down the referral paths. If I have a sensor that is part different zones (heating, cooling and lighting can all be different and overlapping in arbitrary ways), what do you do when there are attribute conflicts. As an example, say zone A controller (I call them process agents) wants the sensor to be sampled every 20 seconds and zone B wants them sampled every 11 seconds? Worse yet, what if C sets an attribute to true and D to false? There is nothing in the semantic system to address these conflicts.
This may be simple to avoid with hand crafted models, but becomes much more likely with macro generated ones.
What is the standard expectation when a parser encounters a non-standard attribute in a defined object? I see this as a common problem. As an example, say I have a temperature sensor who's read speed is a function of bits collected. I would like to have an attribute added that says accuracy-bits to control that for the sensor. What happens if someone else gets a model with that in it? IMO, the ideal response is a warning. I would prefer silent discard to generating an error.
jerry
Brian Frank Wed 3 Feb 2016
I think everyone doing serious work to build software around Haystack has quite a bit of layered technology above the core model. At some point, it might make sense to standardize some of that, but probably too early at this point
Essentially a ref is nothing more than what a URI is - a link to another resource. Except its not any generic resource, but an entity modeled with Haystack tags. Another parallel would be primary and foreign keys in a database
Its really done one a case by case basis. It just happens that referencing things "up" makes the model simpler for many-to-one relationships. Once again, its most likely how you would model this in a relational database. So its a useful convention, but not a hard fast rule.
There are some (but not a lot) of cases where you have many-to-many relationships. In a RDMBS you would just a join table. We have not handled this case yet, but with proposed Haystack 3.0 model we now have a list of Refs as an option.
The expectation is that you should handle this gracefully. It is a fundamental philosophy that people can make up their own tags, specific to products, projects, or organizations. I would say virtually everyone using Haystack uses their own customer tags.