Part11e2: Interfacing (USE/REF) meets SUBTYPE_CONSTRAINT
Jochen Haenisch
Jochen.Haenisch at epmtech.jotne.com
Tue May 21 02:22:02 EDT 2002
Hi guys,
did you in your discussions on interfacing subtype_constraints agree whether
they can be USEd, REFERENCEd, or both?
I will need to update clauses 11.1 and 11.2 correspondingly. So far I have
not discovered any change request to these chapters.
Thanks, Jochen.
____________________________________________________________
Jochen Haenisch E-mail: Jochen.Haenisch at epmtech.jotne.com
EPM Technology AS Home of the EXPRESS Data Manager
P.O Box 6629 Etterstad Tel: Int + 47 23 17 17 26; mobile: Int + 47
922 60 274
N-0607 Oslo Fax: Int + 47 23 17 17 01
Norway Web: http://www.epmtech.jotne.com
> -----Original Message-----
> From: Ed Barkmeyer [SMTP:edbark at nist.gov]
> Sent: 20. mai 2002 17:31
> To: Phil.Spiby at eurostep.com
> Cc: SC4 WG11
> Subject: Re: Part11e2: Interfacing (USE/REF) meets SUBTYPE_CONSTRAINT
>
> Phil Spiby wrote:
>
> > Please look at Step (g) in annex B again.
> > ONEOF(A,A) produces a disallowed combination [A&A], which, by the first
> > reduction, gives [A] is disallowed.
>
> Yes. I missed that. What actually happens in Step (g1) is that A is
> in the disallowed list. And all instances containing A are removed from
> the valid list by (g3).
>
> > I agree that A AND <> -> ONEOF(A,A) is not obvious and should have been
> > better though out.
> >
> > I like you idea (slightly modified) that
> > A AND <> -> A AND ?
> > This would result in the D(kA) term identifying all the complex entities
> > containing an A, which would then be removed from the resultant set. The
> > D(k?) term should not match anything since ? is not a valid name.
>
> At this point, it hardly makes a difference. The current text, however
> obscurely, accomplishes the intent. And it is no more obscure than the
> rest
> of Annex B and C. If it works, don't fix it.
>
> > I disagree, with your proposed text for 11.4.3.
> > This, to me, states that you are wrong if you interface something which
> > cannot be instantiated. The intent of annex C was to explain what
> > instantiations could be made given a collection of declarations and
> > interface specifications.
>
> I agree -- it should not be normative text in 11.4.3. I would suggest a
> Note, however. This is an important consequence that should not require
> the
> reader to go to Annex C and excerpt it from the curious text.
>
> (You will pardon my doubt that people ever explicitly interface things
> they
> don't intend should ever be instantiated. But then I don't see any reason
> for USE/REFERENCE, either. A model interfaces a concept. Making rules
> for
> the allowable instantiation of modeled types is a separate and unrelated
> feature. Put another way, if I can explicitly interface a type that
> cannot
> be instantiated, why can I not *declare* an ENTITY that cannot be
> instantiated? After all, that is what I will get in the long form! This
> was the subject of another email, or a U.S. comment, I don't remember
> which.)
>
> > I think the Ed2 -> Ed1 mapping should result in a single schema, as you
> have
> > argued (and was proposed in the initial draft).
>
> I think we have simply re-discovered what we did then. Any other choice
> produces the kind of non-deterministic results Peter identified.
>
> > But I disagree with you that
> > subtype expressions should be mapped to Rules. I believe they are
> correctly
> > mapped to expressions combined with ANDOR, if you have the right
> > understanding of how AND and ONEOF are applied.
>
> Frankly, I think the "subtype expression" is one of the worst modeling
> ideas
> in Express. But I now believe they can be properly combined by ANDOR. So
> I
> see no reason not to do that.
>
> My remaining concern, however, is that one cannot read clause 9.2.4 and
> figure out even remotely what they mean. One must read the algorithm in
> Annex B and C to determine what they mean, and it takes an expert in
> reading
> other people's code to form an intuitive interpretation of those Annexes.
> So I stand by my recommendation to rewrite the normative text of 9.2.4.2,
> .3
> and .4 to state an interpretation that is comprehensible to humans. (I
> attach the relevant part of that email below. I don't necessarily insist
> that the words I proposed are exactly what is wanted, but the difference
> in
> content between what I wrote and what the text currently says is
> enormous!)
>
> In addition, I would suggest that the equivalent RULEs be added as NOTES.
> It will make it easier for some folks to understand "combining" supertype
> expressions and TOTAL_OVER.
>
> > TOTAL_OVER has to be mapped
> > to rules, there is now way around that, and I personally prefer the rule
> you
> > wrote since it is a whole lot simpler, the rule I used was in the style
> of
> > STEP, where SIZEOF(QUERY())=0 is the norm for predicates.
>
> Thank you. It is the *simpler* that is the issue here.
> The thing that subtype expressions and TYPEOF/SIZEOF/QUERY do wrong is to
> complicate simple rules. This makes the models unreadable by the people
> we
> most need to reach: the users and the engineering tool vendors. [Most
> constraints on populations and aggregates can be written using FORALL,
> THERE_EXISTS and INSTANCE_OF. EXPRESS doesn't have the first two at all,
> and has the last (as IN) only in RULEs and not in local rules. Instead,
> it
> has the misbegotten TYPEOF function and the less-often-useful QUERY
> construct. But it is much too late to fix this.]
>
> -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-4482
>
> "The opinions expressed above do not reflect consensus of NIST,
> and have not been reviewed by any Government authority."
>
> Ed Barkmeyer wrote:
>
> > It also follows that 9.2.4.2, 9.2.4.3 and 9.2.4.4 must be rewritten so
> > as to make the intent of SUBTYPE_CONSTRAINTs clear.
> >
> > 9.2.4.2 Replace the normative text 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 be an instance of the population of any other operand
> > in the ONEOF list. When a ONEOF constraint occurs as an operand in
> > another constraint it represents the union of the populations of the
> > operands in the ONEOF list."
> >
> > 9.2.4.3 Replace the normative text with: "ANDOR does not state a
> > constraint. Within a complex constraint, the ANDOR represents the union
> > of the populations of the operand expressions. An instance of the
> > population designated by the ANDOR expression may be an instance of
> > either operand population or an instance of both operand populations
> > simultaneously."
> >
> > 9.2.4.4 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/both of its operand populations."
> >
> > In 9.2.4, after the second paragraph of text insert:
> > "The meaning of a subtype-constraint is the set of constraints stated in
> > the supertype-expression. Although the result of the
> > supertype-expression is nominally a population, that population has no
> > significance. That is, the nominal population resulting from the
> > supertype-expression may include instances that are not actually
> > contained in the constrained population, and that population does not
> > necessarily include all instances of the supertype.
> >
> > NOTE -- A subtype-constraint can contain any number of AND constraints
> > and ONEOF constraints. Each is interpreted as a separate constraint, in
> > addition to its interpretation as a population in the statement of some
> > more complex constraint. Independent constraints can be connected by
> > ANDOR."
> >
> > and at the end of the next paragraph, add:
> > "That is, Annex B characterizes the populations which satisfy the whole
> > subtype-constraint."
> >
> > And all of this will still be correct for SUBTYPE_CONSTRAINT.
More information about the wg11
mailing list