[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Comments on oBIX 1.1 PR01
Pre-grouped for easy Jira
General: Document should indicate more clearly what is normative, what is illustrative. For example, All examples are non-normative. Section 1 is non-normative. Etc. This also ties to the unfortunate shuffling in of REST at several sections. Perhaps if the introduction included something such as
“This specification describes an information model and the basic operations for oBIX-based services. For simplicity, it assumes XML encoding and RESTful interactions. The normative description of the XML is the associated schema (XSD). The formal description of the REST interactions is described in the document REST Bindings for OBIX (see version xx or later version). The use of REST within this document is purely illustrative, and practitioners should look to the appropriate Binding document for normative guidance.
Similarly, alternate encodings are specified in the specification “Common Encodings for oBIX” (see version xx or later version). Practitioners using creating any interactions in encodings other than XML should look to the document referenced above or other encodings specifications that may be developed”
This suggestion leads to moving some REST descriptions, described elsewhere, into the REST document and out of this.
Replace Extendability with Extensibility throughout document. Extendability is the capability of reaching out, as in an arm can extend because an elbow provides for extendability.
Suggest making the use of lowerCamelCase in Names normative, and adding normative reference to CamelCasing.
Suggest that defined terms have their first letter Upercased, as in Object or Facet, to distinguish from discussion of a general object or XML facet.
Consider a table of tables, and a table of examples following the table of contents. Many of the bulleted lists in this specification should be re-cast as tables.
(3) Section 2 should be labeled non-normative.
101-103 Replace first two sentences with:
“The section provides a non-normative introduction to the purpose for and use of OBIX. For example, consider communications with a simple thermostat.”
(4) Simple editorial comments, Section 1-2
Line 4. Eliminate “But Now”
Line 16: Information Model
Line 17: Principal Requirement language is not right for a spec. Consider “oBIX defines a common information model to represent diverse M2M systems and an interaction model for their communications.” Change object model to information model throughout paragraph.
Section 1.1.2 Networking. SB: Interactions
Change paragraph to discuss encodings other than XML, and Bindings (which are not specified here). This specification should make no normative references to the encodings or to the bindings documents, but this paragraph should make it unambiguous how to assemble the specification we know and ones we don’t for a specific implementation
Consider Moving 1.1.4 to follow section 1.1.1
Line 58-66: Move REST, SOAP, and Encodings to Non-Normative. *This* specification should require no normative reference to either. Consider replacing with references to CRUD
Add PNG (Portable Network Graphics) to the Normative References
Add URI (RFC 3986) to Normative References
(5) Simple editorial comments, Section 3
155: replace with The oBIX design philosophy recognizes a commonality of functionality of the components of all control systems while hiding the underlying mechanisms and protocols. To that end, OBIX relies on the principles in Table [n].
156-161. Replace bullet points with a named table.
Should REST be replaced with CRUD? We can then add a sentence that suggests “For this document, we use REST operations as examples of CRUD operations in oBIX.”
158: A better definition of URI, including translation of acronym. Reference to RFC 3986 would be good.
164: Remove “cleverly”
208-209L “Since OBIX is used to interact with control systems over the web, we use the URL to identify each resource. Just as we assume an XML encoding and a REST binding for all examples in this document, so to we assume a URL using the hypertext transfer protocol (URLs beginning with http:) beginning with HTTP. This is not meant to forbid the use of secure transfer (https:) or of other protocols (ws:). Neither are the examples are meant to forbid the use of alternate ports. The URLs in examples in this document are for illustration only.
Or, see detailed comment on URLs. Below.
240-242: Consider replacing first 3 sentences with:
In oBIX, these patterns are modeled as a template object named the Contract.
244: Remove words “In Geek Speak”. Replace with “Formally” if desired.
(6) Detailed comment on URIs
207-218 See example of how the full use of a URI is described in Web Sockets:
The term "URI" is used in this document as defined in [RFC3986].
When an implementation is required to _send_ data as part of the
WebSocket Protocol, the implementation MAY delay the actual
transmission arbitrarily, e.g., buffering data so as to send fewer IP
Note that this document uses both [RFC5234] and [RFC2616] variants of
ABNF in different sections.
This specification defines two URI schemes, using the ABNF syntax
defined in RFC 5234 [RFC5234], and terminology and ABNF productions
defined by the URI specification RFC 3986 [RFC3986].
ws-URI = "ws:" "//" host [ ":" port ] path [ "?" query ]
wss-URI = "wss:" "//" host [ ":" port ] path [ "?" query ]
host = <host, defined in [RFC3986], Section 3.2.2>
port = <port, defined in [RFC3986], Section 3.2.3>
path = <path-abempty, defined in [RFC3986], Section 3.3>
query = <query, defined in [RFC3986], Section 3.4>
The port component is OPTIONAL; the default for "ws" is port 80,
while the default for "wss" is port 443.
The URI is called "secure" (and it is said that "the secure flag is
set") if the scheme component matches "wss" case-insensitively.
The "resource-name" (also known as /resource name/ in Section 4.1)
can be constructed by concatenating the following:
o "/" if the path component is empty
o the path component
o "?" if the query component is non-empty
o the query component
Fragment identifiers are meaningless in the context of WebSocket URIs
and MUST NOT be used on these URIs. As with any URI scheme, the
character "#", when not indicating the start of a fragment, MUST be
escaped as %23.
1. The components of the WebSocket URI passed into this algorithm
(/host/, /port/, /resource name/, and /secure/ flag) MUST be
valid according to the specification of WebSocket URIs specified
in Section 3. If any of the components are invalid, the client
MUST _Fail the WebSocket Connection_ and abort these steps.
Notice that the result is clearer, and easier to code to. The commenter is *not* suggesting* these are the oBIX rules, merely stating that a form similar to this would be better for declaring what is expected.
(7) Detailed discussion of REST
220-234 Consider replacing REST with a discussion of CRUD. I would crib from the REST thesis for this, then finish with a renewed statement that this document non-normatively assumes a RESTful binding, while the details are left to the individual binding.
If followed, this would cause other changes throughout the document.
(8) Simple editorial comments, Section 4
266: “The OBIX object model illustrated below in Figure [x]. It consists of a common base Object (o:obj) and is built of 12 child objects. This section describes the structure of these elements and their attributes (“Facets”).
422: The language “All objects support the concept of null. Null is the absence of value” is opaque. Not sure what to suggest as a replacement.
445: Remove first sentence.
453: Add normative reference to PNG
Section 4.18.9 (520-538)
Avoid redefining common internet specification. Reference http://www.iana.org/time-zones . Use RFC6557 as a guide on how to discuss this.
Section 4.18.10. It would be helpful to reference the SI Units document when the term “SI Units” is forst used. http://physics.nist.gov/cuu/Units/units.html Add as a normative reference.
(9) Simple editorial comments, Section 5
560-564: Avoid redefining URI and HREF. Define once and incorporate by reference at all other locations. Multiple discussions increase chance of incompatible interpretations. See “detailed comment on URI”
570-577. Consider making the use of lowerCamelCase normative.
591-593. Remover references to HTTP. URI works as well as HTTP URI and avoids creating confusion between normative statements here and those for other bindings.
(10) Simple editorial comments, Section 6
638-641: OBIX Contracts are used to define inheritance in OBIX points. A Contract is a template that is referenced by other objects. These templates are referenced using the “is” attribute”.
Contracts solve many problems in OBIX:
652-654: Eliminate first two sentences.
659-670: Do not use “a couple of” to introduce a list of four items. Consider:
“Common Terms useful for discussing Contracts” and then placing the terms in a numbered table captioned “Contract Terminology”
687: “Syntactic Sugar?
702-703 “Formally defined in XML”? consider other language that distinguishes between information model and encoding.
694-709: It is unclear what a coder should do when encountering “Implicit Contracts”
797: Are these the rules used for alternate encodings? Perhaps in
“In XML, flattening is done by….” Other encodings MUST either define the rules for expressing flattening or explicitly forbid flattening to conform with this specification.
804: Here we slide back from URLs to URIs. Pick one.
827 “Diamond Inheritance Pattern” may confuse more than enlighten without more words.
(11) Simple editorial comments, Section 7
“Akin to methods in OO”.
OBIX Operations are the exposed methods of an OBIX Object, i.e., Operations are thing that you can invoke to “do” something.
(12) Simple editorial comments, Section 8
932-939: Entire section is verbose and distracting. Not sure how to fix.
962-963 appears to be redefining URL again.
964: Delete “As a matter of fact”
973-978: Remove explicit XML references
“Within any problem domain, the intra-model relationships can be expressed either by using containment or by references. The choice changes the semantics of the model _expression_ as well as of accessing the elements within the model.
If the model is expressed through containment, then we use the term Extent to refer to the tree of children contained within that element. Only elements that have an HREF have an extent; objects without an HREF are included within the extent of one or more referenceable elements which we term its Ancestors.
Section 8.4 (992-997) appears to be XML encoding rules. If they are meant to be general model rules, please re-write. If they are XML-specific rules, suggest moving to XML section of Common Encodings.
(13) Metatagging and Alternate Hierarchies
Section 8.5. Alternate Hierarchies does not represent the notion of metainformation well
Suggest We use “Tagging” as a title.
A server MAY present Tags that reference additional information about each OBIX object. If these Tags are part of a formal semantic model, i.e., Haystack, BIM, etc., then the tags will be identified by reference to its source semantic model. The identifier for such tags, along with the URI for the semantic model it represents, are declared in the lobby.
Insert after 1013.
OBIX Clients SHALL ignore information that they do not understand. In particular, a conformant client that is presented with Tags that is does not understand MUST ignore those tags. No OBIX server may require understanding of these tags for interoperation.
(13) Simple editorial comments, Section 9
Consider making 1018-1020 a table
Line 1018: consider replacing Software with server, system, interface or some other word.
Line 1020: consider replacing Software with server, system, interface or some other word.
Line 1022: change software to system.
Section 9.1: Here is the CRUD statement referenced numerous times in other comments.
1026: All service requests made against an OBIX server can be distilled down to 4 atomic operations
1033-1036: Consider making a table
1033-1036 Suggest removing possibly circular references to specific bindings.
(14) Simple editorial comments, Section 11
Line 1346 Change “Plus watches server…” to “Watches also serve…”
Section 11.2.1. Watch.add
Descriptions of naming a watch (1406-1411) should precede the watch methods.
Possible some of this is Encoding or binding specific and should be relocated accordingly.
(15) Simple editorial comments, Section 12
Line 1530: replace vendors with some other word: systems / implementers / etc.
Consider placing in a named table,
(16) Format Values
The example in line 1692 indicates text/csv as a named value. Are there others? The value is apparently using a mime-type. Are other mime-types supported? Which ones?
Suggest instead specifying delimiters/quoters/etc in header field, with perhaps default to CSV. If so, specify CSV rules.
In any case, should reference https://www.rfc-editor.org/rfc/rfc4180.txt
(17) Simple editorial comments, Section 13, 14
Line 1888 “Whip out your calculator”?
Line 1928: delete word “Feature”
Lines 1948-1952. Consider using a named table.
"Energy and persistence conquer all things." -- Benjamin Franklin
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]