OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

obix-comment message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: OBIX v1.0 Comments


4.16.8 status

Comment: If we define two alarm objects, alarm and ack, each with two states,

there are four alarm states:

1. no_alarm and no_ack.

2. alarm and no_ack. normally occurs between the alarm_timestamp and the

    ack_timestamp.

3. alarm and ack.

4. no_alarm and ack.

Usually an alarm system will reset ack when the alarm transitions to no_alarm.

So, alarm state    4 will not be allowed to exist.

Adding a temporal dimension, adds a fifth state.

5. no_alarm and no_ack for a previous alarm



Actually, renaming the parent alarm object annunciator would help me. Then

<obj name="annunciator"> 

    <bool name="alarm" />

    <bool name="ack" />

</obj>

Then there are five states of annunciator.

1. clear

2. unackedAlarm

3. ackalarm

4. noname since system disallows.

5. unacked    


15 Alarming



Suggest alarmTimestamp be mentioned in 2. Alarm Generation.



Re "these alarms merely represent event": This confuses me.

Suggest this be clarified to show that an event is not a subset of alarm

but a separate and distinct object.



15.1.2 

As suggested above for 4.16.8, there are five states of annunciator.

1. clear

2. unackedAlarm

3. ackalarm

4. noname since system disallows.

5. unacked



normalTimestamp and alarmTimestamp are children of alarm

ackTimestamp is a child of ack

All three timestamps are grandchildren of annunciator.



15.2.2 StatefulAlarm

Per 15. "an alarm indicates a condition which requires notification of either a user

or another application" I am having trouble coming up with an example of an alarm

which does not transition back to normal.
The specification is very well done. Obviously, many person-hours and a lot of
thought went into this project.

My comments are my thinking out loud (on the keyboard), a normal process for
me when I am trying to learn something. I hope my ramblings will be useful
to someone. I would be glad to clarify anything either in print or on the phone.

My comments fall into one of two categories, plain comments and rewordings.
The rewordings are the result of my attempt to reach an understanding of the
content. I have included my rewordings in the hopes that they may help others.
The word Rewording: appears as a label at the start of each rewording.
The word Comment: appears as a label at the start of each comment
where necessary to separate a rewording from a comment.

2   Quick Start
Rewording: ... -the staid thermostat. Lets assume we have a simple thermostat.
In oBIX XLM, the thermostat object is represented by
	<obj href="http://myhome/thermostat";>
	</obj>
If the thermostat includes a temperature sensor which reports the current space
temperature, a temperature setpoint that stores the desired temperature, and
a control output that indicates when the thermostat is calling for a furnace to
be on, these three objects are represented by the following elements:
	<real name="spaceTemp" val="67.2"/>
	<real name="setpoint" val="72.0"/>
	<bool name="furnaceOn" val="true"/>
The useful information for these objects includes not only the object
identification, the name or the href, but also a value.
Therefore, these elements are value elements and include the val attribute.
To be meaningful, a value element must include a statement about the type of data,
real for the two floating point temperature values and bool for the boolean value
of the furnace state. 
Since these three objects are child (sub) objects of the thermostat object,
the parent/child relationship is represented by including the child elements
within the parent element as follows: 
	<obj href="http://myhome/thermostat";>
		<real name="spaceTemp" val="67.2"/>
		<real name="setpoint" val="72.0"/>
		<bool name="furnaceOn" val="true"/>
	</obj>
	
Since in this example the thermostat is the most basic object,
it is the root object.
If the thermostat were controlling the temperature in my home and
if the space also included a humidistat, the root object would be my home.
In oBIX XLM, the my_home object is represented by
	<obj href="http://myhome";>
	</obj>
Now, the thermostat becomes a child element along with brother humidistat
which are represented by: 
	<obj href="http://myhome";>
		<obj href="http://myhome/thermostat";>
			<real name="spaceTemp" val="67.2"/>
			<real name="setpoint" val="72.0"/>
			<bool name="furnaceOn" val="true"/>
		</obj>
		<obj href="http://myhome/humidistat";>
			<real name="spaceHumidity" val="51.2"/>
			<real name="setpoint" val="55.0"/>
			<bool name="dehumidifierOn" val="false"/>
		</obj>
	</obj>

Adding a units attribute to a temperature value element increases the meaning of
the information, for example:	
<real name="spaceTemp" val="67.2" units="obix:units/fahrenheit"/>
helps explain what 67.2	means.
Adding a status attribute to a temperature value element helps, for example:
<real name="spaceTemp" val="-412.0" units="obix:units/fahrenheit" status="fault"/>		
helps explain that the unusual temperature represents an alarm condition.
The units attribute and the status attribute belong to a class of attributes
called facets. 

Comment: At this point, I am confused by the example of contracts.
To some extent -412degF is an obvious fault. But the status attribute does avoid
any ambiguity. However, I have not imagined a circumstance wherein anyone would
not recognize a spaceTemp as a point. In other words, a different contract example
would be better in the Quick Start.

3.1 Object Model

Rewording: All information ......

Value elements represent objects for which a value enhances the meaning of the
object. For example, the space temperature or the furnace state.

Their are 7 value objects, which represent a piece of variable information:
	bool: ....
	.
	.
	reltime: ....
and 6 special objects which represent relatively fixed values
	uri: ....	
	list: stores a list of objects
	op: stores an operation or sequence to be performed
	feed: stores a stream of events
	ref: stores a reference to another object
	err: stores an error indicator

4    Object Model

The organization of this section confuses me. 
The illustration includes the attribute "val". I would prefer to have this block
labeled "value objects"

I would prefer an organization which would clearly indicate what is an object
and what is an attribute of an object, such as:

Rewording: Suggested reorganization
4	Object Model

4.1	Objects

4.1.1 obj
.
.
.
4.1.14 feed

4.2 Attributes of objects

4.2.1 Null

4.2.2 Facets
end of rewording

4.16 Facets
Comment:
The examples for displayName, display, and writable appear to be examples of
attributes and they include a name attribute to link the facet to a specific object.
The examples for min, max, precision, range, status, and unit appear to be examples
of attributes. But, they do not include a name attribute to link the facet to a
specific object. For example, 4.16.9 unit:
<real unit="obix:units/fahrenheit" val="67.2"/>
Elements representing value objects use the type declaration instead of obj.
But, don't we need some way to identify what is 67.2degF? In our simple thermostat,
it could be either the current space temp or the setpoint.

4.16.8 status
Comment: If we define two alarm objects, alarm and ack, each with two states,
there are four alarm states:
1. no_alarm and no_ack.
2. alarm and no_ack. normally occurs between the alarm_timestamp and the
	ack_timestamp.
3. alarm and ack.
4. no_alarm and ack.
Usually an alarm system will reset ack when the alarm transitions to no_alarm.
So, alarm state	4 will not be allowed to exist.
Adding a temporal dimension, adds a fifth state.
5. no_alarm and no_ack for a previous alarm

Actually, renaming the parent alarm object annunciator would help me. Then
<obj name="annunciator"> 
	<bool name="alarm" />
	<bool name="ack" />
</obj>
Then there are five states of annunciator.
1. clear
2. unackedAlarm
3. ackalarm
4. noname since system disallows.
5. unacked		
	
5 Naming.

What is camel case?

5.1 Why discourage the use of name within the root object. Is there any reason,
other than social engineering, for this discouragement? 

5.2 I am struggling with "there may not be a root URI". I would have thought
there is always a root for any object.

5.3 Some examples. I am not familiar with the meaning of + or R as used here.

5.4 I do not understand the need for the second paragraph: "In the example above
the object with an href of "onOff" is both the target of the fragment URI, but
also has the absolute URI "http://server/whatever/onOff"; ". 
Isn't this obvious since the object with an href of "onOff" is the child of
the object with with an href of http://server/whatever/ ?
Please include an example of "an object that was the target of a fragment URI
within the document, but could not be directly addressed using an absolute URI".

6 Contracts

Contracts are special but not because other objects reference it as do other
objects's and other attributes.

Does "as a "template object"" add any meaning to the sentence?

6.3 is Attribute
Rewording:
The is attribute is used to specify a contract required for an object.

If the object is a list object or a feed object, then a contract is specified using
the of attribute.

An object can override (by name) an object specified in one of its contracts.

Comment: (an example would help)
What is a respective primitive contract? Please avoid reference to implied
contracts.

6.4 Contract Inheritance

Re sentence:
"Usually the implicit contract is documented using natural language prose.
It isn't mathematical, but rather subject to human interpretation."
And later "These fuzzy concepts...".
Comment: 
But the task of the designer is to make the language as explicit and unfuzzy
as possible in order to limit the chances of misinterpretation.
I am worried that these words will bias the understanding of implicit.
My dictionary includes "suggested or to be understood though not plainly
expressed" as a definition of implicit. In a control/monitoring environment,
the existance of any contracts that are "suggested or to be understood though not
plainly expressed" are a recipe for problems.

Re sentence:
"An object shouldn't put obix:Alarm in its contract list unless it really
represents an alarm event."
Comment: Is this type of statement necessary? If so, should the following
be included: Do not label a point as a temperature unless it really represents
a temperature.

Re sentence:
"A contract's named children objects are automatically applied to
implementations."  ..." If the implementation omits the child, then it is
assumed to default to the contract's value(s)."
Comment: Add sentence: If the implementation declares
the child (by name), then it will use the child's value(s) unless the
implementation overrides some or all of the child's attributes.

6.5 Override Rules.

Suggest you change second sentence to:
Rewording: Implicit means that the implementation
object can omit specification of any child attributes unless the implementation
object wishes to override some attributes. In other words, the implementation
object understands that the child's attributes will be used unless the
implementation object specifies an override value.

6.6.1 Comment: Suggest the use of a simple real example such as a thermostat.

6.7 Re sentence:
"A contract list X is compatible with contract list Y, if and only if
X narrows the value space defined by Y."
Later: "X can add new URIs to Y's list , but never any take away
Comment: (never take any away?)
If the override rules are that children or attributes omitted from a contract
specification use the default values, there is no way to take away. True?

7.2 Re sentence:
"The object model figure in Chapter 4 illustrates the valid XML elements and their
respective attributes."
Comment: Except for val which is not an element but an attribute
of a value object (or an umbrella term for a group of objects). 

9.1 Re example: Comment: Previous use of list have included the
<list....>   </list> pair (ref sections 3.2, 4.10, 6.8) or
the abbreviated <list...... /> (ref section 4.10).

10.1.2 Re sentence: "in fact the unit facet should be not included in the request".
Comment: I would think this is a place for explicit information.
Specifying the units in the request would allow the server to confirm that the
units are correct.
To not plainly express the units requires the server to assume the units
are correct. Such assumptions get us into trouble. If "complete extent" include
the units, the response will catch an error but after the error has been made.
Specifying the units in the write would allow the server to catch an error
before it took action.

11.5 Units.

The term "ratio" in this context confuses me. My dictionary defines ratio as a
relationship between two values. "a ratio of seven fundamental dimensions"? 
My dictionary defines function (in math) as a quantity whose value depends on
some number of other values. "A function of seven fundamental dimensions" makes
more sense to me.

I do not understand the second example:
acceleration is m/s2, which would be encoded as
<int name="m" val="1" />
<int name="sec" val="-2" />
Where is the squaring of se and the division m/s2 implemented?

I believe the -2 exponent of seconds in the joule normalized value should be -3
as shown in a later example.

12 Watches. Why worry about the exposure of well-known IP addresses? Suggest
"well-known" be replaced by "sensitive".

12.1 Suspect the "The Watch URI is available directly from the Lobby object"
should be  The WatchService URI...

12.2 Since the children of Watch are listed in an order of lease, add, etc,
suggest lease be in 12.2.1, add be in 12.2.2, etc.

12.2.1 Add
If an attempt is made to add a URI to a watch which was previously added,
suggest some kind of notice be included in the result; would be a useful
diagnostic tool.

In the Note: "not able" should be "not be able".

12.2.3 Suggest you add "since the last poll" to "This operation returns a list
of subscribed objects which have changed." 
Suggest "change" be defined as a change in state of a bool object and a change
greater than a delta value for a real object. The delta value should be
independently adjustable for each polled real object.

12.2.4 last sentence: ...have changed state or value since the pollRefresh
invocation. Add "or value".

12.2.5 Suggest change last sentence in second paragraph to
In all cases, the server will respond to the write request and include
in the response he new lease time in effect.

12.4 Feeds
Third sentence: Clients subscribe to feeds....
Suggest a delta be available for the lat and long.
The hysteresis on my GPS is there. So, as the satellites move I would expect
a change in the lat and long even if the object stays in a fixed position.

13. Points. Suggest the name attribute be included in each example.

14. History.
In the obix:History contract element <abstime name="start" null="true"/>,
does this mean the value is null or nill?
Question also applies to HistoryQueryOut.
In the example of a history, does the repitition of "query" in the href
attribute of op name="query" map to the HistoryFilter specified in
the obix:History contract. I would have thought that a particular
HistoryFilter would be assigned to the outsideAirTemp point.

14.3.4 Rollup Calc example:
looks like the start time specified in the QueryOut is 2005-03-17.....
while the start time in the result is 2005-03-16....

15 Alarming

Suggest alarmTimestamp be mentioned in 2. Alarm Generation.

Re "these alarms merely represent event": This confuses me.
Suggest this be clarified to show that an event is not a subset of alarm
but a separate and distinct object.

15.1.2 
As suggested above for 4.16.8, there are five states of annunciator.
1. clear
2. unackedAlarm
3. ackalarm
4. noname since system disallows.
5. unacked

normalTimestamp and alarmTimestamp are children of alarm
ackTimestamp is a child of ack
All three timestamps are grandchildren of annunciator.

15.2.2 StatefulAlarm
Per 15. "an alarm indicates a condition which requires notification of either a user
or another application" I am having trouble coming up with an example of an alarm
which does not transition back to normal.


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]