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

Phil Spiby Phil.Spiby at eurostep.com
Sat Apr 5 12:15:01 EST 2003


Ed,

Thanks for the comments.

I've actually found it easier to review your comments that the document as a
whole! (Probably because I was seeing what I thought should be in the
document, instead of fully reading it!)

My only comment.
p. 60, 9.2.3.4, rule (a):
This has been changed again!
When we discussed this by e-mail I thought we agreed that specialization was
not required for renaming, and specifying a derivation, we seem to have
slipped back again on the derivation point.
I believe Ed's proposal is the correct way to go with this:
"(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."


Phil

> -----Original Message-----
> From: owner-wg11 at steptools.com 
> [mailto:owner-wg11 at steptools.com] On Behalf Of Ed Barkmeyer
> Sent: 04 April 2003 23:05
> To: SC4 WG11
> Subject: Comments on the Part 11 Ed2 28-Mar-03 draft
> 
> 
> 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