Comments on the Part 11 Ed2 28-Mar-03 draft

Ed Barkmeyer edbark at nist.gov
Fri Apr 4 17:05:13 EST 2003


Jochen et al.,

(Just when you thought it was safe to go back in the water... ;-)
Below please find my comments on the most recent draft of Part11 Ed2.
They are all 'editorial', but they became more numerous and complex than 
I expected.  If it would help, I can put them into the ISO template form.

-Ed


-- 
Edward J. Barkmeyer                       Email: edbark at nist.gov
National Institute of Standards & Technology
Manufacturing Systems Integration Division
100 Bureau Drive, Mail Stop 8260          Tel: +1 301-975-3528
Gaithersburg, MD 20899-8260               FAX: +1 301-975-4694

"The opinions expressed above do not reflect consensus of NIST,
and have not been reviewed by any Government authority."

------------------------------------------------
Editorial comments on Part 11Ed2 draft 28-Mar-03

P. 48, 9.2.1 Note 1.
This Note is misplaced; it should appear after Rule (a) of 9.2.1.1 on 
the following page.

P. 49, 9.2.1.1, paragraph following Note 2.  This discussion of OPTIONAL 
appears to be normative text, but was clearly intended to be (was 
formerly) part of Note 3.  Put it at the beginning of Note 3.

p. 57, 9.2.3, paragraph following the syntax box, last sentence:
"Following the SUBTYPE OF links leads to supertypes while following the 
SUPERTYPE OF links leads to subtypes."
There are no "SUPERTYPE OF links".  That is, the definition of SUPERTYPE 
OF is no longer defined in 9.2.3.2 to have anything to do with "links". 
  (This is probably left over from EXPRESS 1CD:1991!)  What is meant 
here is 'following the (directed) "SUBTYPE OF" edges in the reverse 
direction leads from supertypes to subtypes.'
Note also that the graph-theoretic term is "edges", or sometimes "arcs", 
not "links".

p. 58, 9.2.3.2, first paragraph.  It appears that "subtype declaration" 
should be "SUBTYPE declaration" for consistency with 9.2.3.1.  Also, for 
stylistic reasons, I would change "declaration and is implicitly ..." to
"declaration.  An entity is implicitly ...".  (There are two definitions 
here, and each should be a sentence.)

p. 60, 9.2.3.4, 2nd bullet under Example 1:
9.2.7 now says that a select over subtypes of the original entity data 
type is a specialization of that entity data type.  So this bullet seems 
to be entirely redundant -- the 2nd bullet (p.59) says you can redeclare 
to any specialization.  I would delete this bullet, but if you elect to 
keep it, then it has two problems:

p. 60, 9.2.3.4, same bullet:
"— if the original data type of the attribute is an entity data type, 
which is also a supertype, ..."
This should read "... an entity data type that is also a supertype ...".

p. 60, 9.2.3.4, same bullet:
"this select data type shall only identify either a collection of 
subtypes of the original entity data type or a specialization of those 
subtypes;"
What is meant by "a specialization of those subtypes"?  *one* 
specialization of *multiple* subtypes?

p. 60, 9.2.3.4, bullet before the Note:
"— an attribute in the supertype may be given a new identifier in the 
subtype. The new attribute identifier obeys all the scope and visibility 
rules defined in clause 10. It can be used as a true alternative to the 
original attribute identifier."
This is inaccurate.  It is not a "true alternative" to the original, and 
cannot (in general) be used in (qualified by) other subtypes of the 
supertype.  What the NOTE says about the original is exactly the scope 
of the new name.  Try:
"The new identifier obeys all the scope and visibility rules defined in 
clause 10 for an identifier for an attribute of the subtype whose 
declaration includes this redeclaration; but the identifier always 
refers to the original attribute in the supertype."

p. 60, 9.2.3.4, rule (a):
"a) An attribute that is redeclared in the subtype, but not renamed, 
shall be a specialization of the attribute in the supertype. ..."
This is mis-stated.  Specialization is a relationship between data 
types, not attributes. Try:
"a) If an attribute that is redeclared in the subtype is not renamed, 
the data type declared for the attribute in the subtype shall be a 
specialization of the data type declared for the attribute in the 
supertype. ..."

p. 61, 9.2.3.4, rule (f):
"In this case, the attribute in the subtype need not be a specialization 
of the corresponding attribute in the supertype."
This is mis-stated as in rule(a) above, and "corresponding" is wrong 
(it's the *same* attribute), but this rule is also misleading.  The 
intent here is:
"In this case, the data type declared for the attribute in the subtype 
shall be the same as, or a specialization of, the data type declared for 
the attribute in the supertype."

p. 61, 9.2.3.4, rules (a) and (f):
The last sentence of rule (f) should be moved to rule (a) -- it is those 
two rules that are a complete pair.  Rule (f) is about naming.
But it also seems that a lot of wording is spent making it invalid to 
redeclare an attribute without actually constraining its data type. 
Wouldn't it have been easier to make rule (a) simply:
"(a) the data type in the redeclaration shall be the same as, or a 
specialization of, the data type of the attribute declared in the 
supertype."
(I assume that this may have been debated and resolved; and I don't want 
to reopen the debate if that is the case.  Just put the whole rule in (a).)

p. 61, 9.2.3.4, rule (g) should be a NOTE.  It follows from 9.2.3.5.

p. 63, 9.2.3.5, first paragraph.
"Every local or global rule that applies to a supertype applies to its 
subtype(s)."
This can easily be misinterpreted.  What is meant is:
"Every local or global rule that applies to all instances of a supertype 
applies to all instances of its subtypes."
Because in global rules it is possible to make rules about the *extent* 
of an entity data type (subject of my treatises on subtype constraints), 
those rules do not apply to the subtypes in the sense that the subtype 
can be substituted for the supertype in the rule.  Local rules are 
always about instances; so that's never a problem.

p. 64, 9.2.4, second paragraph (below the box)
"It is possible to specify constraints on which subtype/supertype graphs 
may be instantiated.  These constraints are specified in the supertype 
by means of the SUPERTYPE constraint."
This is true, but it isn't the whole truth anymore, and the NOTE tells 
us that this is the lesser half.  Replace the last sentence with:
"These constraints may be specified in the declaration of the supertype 
by means of the SUPERTYPE clause.  They may also be specified as 
separate rules, by means of SUBTYPE_CONSTRAINT declarations (see 9.7)."

p. 64ff, 9.2.4 and 9.2.5, generally.
Nowhere in subclause 9.2.4 et al. does it say what a subtype_constraint 
actually means!  And it is far from obvious that it is to be interpreted 
as a set of quasi-independent constraints, which is what Annex B does! 
9.7 says that subtype_constraints are specified in 9.2.4 (and .5), but 
their meaning isn't; we should fix it here.

After the deprecation Note in 9.2.4, insert the following:

"The meaning of a subtype_constraint is the set of constraints stated in
the supertype_expression.  A subtype_constraint can contain any number 
of AND constraints and ONEOF constraints.  Each is interpreted as a 
separate constraint.

In addition, when it appears in the statement of some more complex 
constraint, each ONEOF, AND and ANDOR expression is interpreted as a set 
of instances of the supertype.  In interpreting the 
supertype_expression, the following rules apply:

- an entity data type name appearing anywhere in a supertype_expression 
is interpreted as the set of entity instances constituting the entire 
population of that data type, just as in a global rule (see 9.6);

- the result of an expression in a supertype_expression is interpreted 
as a set of instances of the supertype, as specified for ONEOF, ANDOR 
and AND below.

Although the 'final result' of the supertype_expression in the 
subtype_constraint is therefore a set of entity instances, that set has 
*no significance*.  That is, the 'result' of the whole 
supertype_expression does not state any constraint -- it does not 
necessarily include all instances of the supertype, and may include 
instances to which none of the stated constraints applies.

NOTE -- Therefore, independent constraints can be connected by ANDOR, 
which only adds instances to the (meaningless) overall result of the 
supertype_expression."

p. 64, 9.2.4, paragraph beginning "Annex B".
At the end of the next paragraph, add:
"That is, Annex B characerizes the supertype populations that satisfy 
the whole subtype_constraint."

p. 64-65, 9.2.4/9.2.5 Section numbering
There is a subclause numbering problem here.  9.2.5.2, 9.2.5.3, 9.2.5.4, 
and 9.2.5.5 state subtype constraints and are referenced as a body in 
9.7.  They should all be in 9.2.4, which is about instantiation 
constraints.  By comparison, 9.2.5.1 is about a special kind of entity 
declaration that has *weakened* constraints on the *declarations* of its 
attributes.  Recommendation:
Move 9.2.5 and 9.2.5.1 to precede what is currently 9.2.4.
(See also the following comment.)

p. 65, 9.2.5, first (only) paragraph.
The second sentence of 9.2.5 makes a ONEOF out of a SUBTYPE 
relationship, in one sense, but it also compares apples and oranges. 
Every ABSTRACT entity satisfies the ABSTRACT SUPERTYPE constraint.
But an abstract entity is a special kind of entity; while ABSTRACT 
SUPERTYPE is a constraint -- a rule.  Recommendation:

a. In 9.2.5.1, add a Note after rule (b)
"NOTE: Rule (b) implies that every abstract entity data type satisfies 
the abstract supertype constraint (see 9.2.5.2)."

b. Delete 9.2.5 and its paragraph, renumber 9.2.5.1 to 9.2.5 (3rd level 
heading).  If necessary, move the first sentence of the paragraph into 
9.2.5.1.

p. 65, 9.2.5.1, 1st paragraph and rule (b)
"An abstract entity data type may declare explicit and derived 
attributes of data type generalized_types."
generalized_types is not a data type; it's just a non-terminal.
This should read:
"An abstract entity data type may declare explicit and derived 
attributes whose data types are generalized data types (see 8.5)."

Similarly, in rule (b), replace
"all attributes of data type generalized_types"
with
"all attributes whose data types are generalized data types"

9.2.5.3, first paragraph
The first sentence is almost right; the second is at best redundant; I 
don't know what the third says; and nothing says what the ONEOF means 
when "combined with other subtype constraints" (in the sentence below 
the syntax box).  If the operands of the ONEOF are expressions instead 
of named types, the term "element" is wrong.  We need to talk about 
"populations" or "extents".

a. Replace the paragraph with:
"The ONEOF constraint states that the populations of the operands in the 
ONEOF list are mutually exclusive -- no instance of any of the 
populations of the operands in the ONEOF list shall appear in the 
population of any other operand in the ONEOF list."

b. Add the following sentence at the end of the paragraph below the box:
"When a ONEOF constraint occurs as an operand in another constraint, it 
represents the set of entity instances that is the union of the 
populations of the operands in the ONEOF list."

9.2.5.4, first paragraph
"If the subtypes are not mutually exclusive, that is, an instance of the 
supertype may be an instance of more than one of its subtypes, the 
relationship between the subtypes shall be specified using the ANDOR 
constraint."

This states the constraint backwards -- it doesn't say what ANDOR means, 
it says when to use it.  And it doesn't tell me what ANDOR means when it 
  appears inside another subtype constraint.  Replace the normative text 
with:
"ANDOR does not state a constraint -- an instance of the
population designated by the ANDOR expression may be an instance of
either operand population or both.  Within a complex constraint, the 
ANDOR represents the set of entity instances that is the union of the 
populations of the operand expressions."

9.2.5.4, Note.
"NOTE The phrase b ANDOR c reads in natural language as 'an instance 
shall consist of the types b and/or c.'"
This is false.  ANDOR does not require that an instance of the supertype 
"shall consist" of anything in particular; ANDOR is only meaningful as 
part of a more complex constraint.  Replace the note with:

"NOTE -- ANDOR is only used in constructing a 'union' of populations for 
a more complex constraint. The phrase 'b ANDOR c' means 'all instances 
of type b and all instances of type c, including any that happen to be 
instances of both'."

9.2.5.5, first paragraph
"If the supertype instances are categorized into multiple groups of 
mutually exclusive subtypes (that is, multiple ONEOF groupings) 
indicating that there is more than one way to completely categorize the 
supertype, the relationship between those groups shall be specified 
using the AND constraint. The AND constraint is only used to relate 
groupings established by other subtype/supertype constraints."

There is no relationship between what this paragraph says and what Annex 
B does with AND!  The interpretation in Annex B has nothing to do with 
ONEOF groupings, and that interpretation makes P AND Q a meaningful 
constraint when P and Q are entities.  Replace the normative text with:

"AND states the constraint that the populations specified by the two 
operands shall be identical.  That is, any instance of the left operand 
population shall also be an instance of the right operand population, 
and any instance of the right operand population shall also be an 
instance of the left operand population.

When the AND expression occurs as an operand in a complex constraint, it 
represents either of its operand populations (they are identical)."

p.88, 9.7.3.1, first paragraph, second sentence:
"The ONEOF constraint may be combined with the other supertype 
constraints to enable the writing of complex constraints."
This is not said of either AND (which is also a constraint) or ANDOR 
(which is not).  This sentence should either be omitted here (because it 
is stated in 9.2.5.3), or repeated in 9.7.3.2 and 9.7.3.3 with 
appropriate substitutions for 'ONEOF constraint' (because it is also 
true of them).  I would strike it here.

--------------------------------------------------




More information about the wg11 mailing list