FW: Inverse attributes in EXPRESS-G?

Phil Spiby Phil.Spiby at eurostep.com
Tue Aug 14 08:38:34 EDT 2001



-----Original Message-----
From: Phil Spiby [mailto:Phil.Spiby at Eurostep.com]
Sent: Monday, July 30, 2001 12:09 PM
To: wg11 at smiling.net
Subject: Inverse attributes in EXPRESS-G?


Folks,

Having just reviewed some of the STEP modules, I was surprised to see a new
form of EXPRESS-G being used. This new form of EXPRESS-G adds the capability
to document inverse attributes, which are not just the simple inverses
covered by adding the (INV) label to an explicit attribute. For example in
ISO/CD TS 10303-1017 Product Identification ARM EXPRESS-G we have the
following EXPRESS:

SCHEMA Product_identification_arm;

USE FROM Person_organisation_assignment_arm;

TYPE product_organisation_or_person_in_organisation_item = SELECT
  BASED_ON organisation_or_person_in_organisation_item WITH
  (Product);
END_TYPE;

ENTITY Product;
...
INVERSE
  identifier : Organisation_or_person_in_organisation_assignment FOR items;
...
END_ENTITY;

END_SCHEMA;

SCHEMA Person_organisation_assignment_arm;

TYPE organisation_or_person_in_organisation_item = EXTENSIBLE SELECT
  ();
END_TYPE;

ENTITY Organisation_or_person_in_organisation_assignment;
...
  items : SET [1:?] OF organisation_or_person_in_organisation_item;
END_ENTITY;

END_SCHEMA;

This is valid EXPRESS, or appears to be by visual parsing!

The problem comes in the EXPRESS-G diagram (arm.gif attached), where the
inverse attribute identifier of product, is represented as an attribute line
going from product, to the used
Organisation_or_person_in_organisation_assignment, this line has no explicit
attribute name, and has (INV) identifier marked on it. To my understanding
of EXPRESS-G, this line signifies that there is an un-named attribute in
product, and an inverse attribute called identifier in the use of
Organisation_or_person_in_organisation_assignment.

Therefore there is a problem here. I do not blame the authors of this
particular model (this is done through out the modules, and I selected this
as an example due to its small size). There is no standard way, that I know
of, for showing this type of inverse attribute in EXPRESS-G. These inverse
attributes are important, especially in the modules where use of extended
selects etc to enable extensible models requires such inverse attributes.

Proposal:
I suggest that we introduce a new graphical construct, to support the
display of such inverse attributes. This inverse attribute glyph should be
added to the EXPRESS DAM in it's DIS ballot cycle. The glyph itself should
be structured as follows:

An inverse attribute is denoted by a normal line linking the
entity in which the inverse attribute is defined and entity (or
object_proxy, reference or use representing the entity) which represents the
target of the inverse attribute. The target of an inverse attribute may be
the entity declaring the explicit attribute, for which this is an inverse,
or a subtype of that entity.
The end of the line connected to the entity which contains the inverse
attribute is signified by an open circle.
The end of the line connected to the target entity has no end style.
The name of the original explicit attribute is placed adjacent to the line
within parenthesis.
The characters INV in parenthesis, i.e., (INV) before the name of the
inverse attribute, which is placed adjacent to the line.
If the inverse attribute is constrained either by a where rule or a
unique rule the attribute name is preceded by a superscripted asterisk *.
If the attribute is defined by an aggregation datatype then the aggregate is
denoted as given in D.5.2, following the attribute name.
If the inverse attribute is a redeclared attribute, then it shall include
the characters RT in parenthesis, i.e., (RT) before the (INV) characters.

This would result in a change to the example, as given in arm_new.gif.


The rationale, behind this proposal is as follows:
1. It keeps the original explicit attribute style, so inverse attributes
marked on explicit attribute lines can be read in the same way as inverse
attributes marked in the new way.

2. We need information about what the original explicit attribute was
called, otherwise we have no graphical indication of what this is an inverse
of.

3. By placing parenthesis around the explicit attribute name we clearly
signify that this is not an actual explicit attribute. (I could accept
delimiters other than parenthesis if people object to their use!).

4. By placing this capability in the proposed DAM, we give the modules
developers (I am one now as well!) the tools to better develop/document
their models.

Comments?

Phil

-----------------------------------------------------------
Dr. Phil Spiby               Tel: +44 1623 522940
Eurostep Limited             Fax: +44 1623 522941
73 Columbia Avenue           Mobile: +44 7785 990352
Sutton-in-Ashfield           Email:Phil.Spiby at Eurostep.com
Nottinghamshire
NG17 2GZ
United Kingdom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: arm.gif
Type: image/gif
Size: 8546 bytes
Desc: not available
Url : http://lists.steptools.com/pipermail/wg11/attachments/20010814/65a536d1/arm.gif
-------------- next part --------------
A non-text attachment was scrubbed...
Name: arm_new.gif
Type: image/gif
Size: 9648 bytes
Desc: not available
Url : http://lists.steptools.com/pipermail/wg11/attachments/20010814/65a536d1/arm_new.gif


More information about the wg11 mailing list