Ticket #679 (closed Feature Request: invalid)
uni-directional association
Reported by: | JuergeN | Owned by: | jri |
---|---|---|---|
Priority: | Major | Milestone: | Release 4.4 |
Component: | DeepaMehta Standard Distribution | Version: | 4.3 |
Keywords: | Cc: | ||
Complexity: | 3 | Area: | Data Model |
Module: |
Description
As a user I want to be able to distinguish between bi-directional and uni-directional associations. This should be implemented on type level. An AssocDefinition? must destinguish between an bi-directional association type and an uni-directional association type, where the uni-directional association type must have a start point and an end point. The uni-directional association type is urgently needed to accomplish the real world requirements of modelling data structures with DM.
Change History
comment:2 Changed 10 years ago by JuergeN
ok - Let's get clear about defintions first: Let's talk about directed and undirected association types, composition types and aggregation types. All 4 Types are needed!
In a comosite type a composition definition and a aggregation definition
must be hirarchical, because they define the roles between the whole and
the part or in other words the parent type and the child type.
o whole (parentType) /|\ / | \ o o o part (childType)
agreed.
An association definition is not hirarchical: so no parent type or child type here. But it can be both: directed or undirected. I think we both agree that we need both, directed and undirected associations, because they are an important part of the semantic vocabulary.
How else could you clearly define the roles of two persons:
(Person[1])----STALKER----(Person[2]). It is much clearer like this:
(Person[1])----STALKER--->(Person[2]), because then it reads
"Person[1] is stalker of Person[2]".
(BTW, direction is also very clear for instanciations: Topic----is INSTANCE of---->TopicType?)
So I agree that we need to be able to distinquish the startpoint and the endpoint (direction) of an directional association. "Parent" and "Child" are not the right terms to use here. If we agree on "Start" and "End", then let's implement it like this.
I hope you agree, that it must be part of the standard. Otherwise it would just be like skipping a few letters from the alphabet, expecting they are not needed so often. ;-)
comment:3 Changed 10 years ago by jri
Sorry, I don't understand what you actually want to implement here.
DM4 has directed associations from the very start.
They are expressible by the means of Role Types.
Each Topic involved in a certain Association is qualified by a Role Type.
A directed association would have different Role Types at each side, e.g. "Stalker" and "Stalkee". Another example: "Type" and "Instance" (in case of a "Instantiation"). To see an association's role types, click the association.
An undirected association would have the same Role Types at each side, e.g. Default.
comment:4 Changed 10 years ago by JuergeN
Yes, I understand. But how do I create a new RoleType? then? I want to have the two generic role types 'Start' and 'End' or 'Subject' and 'Object' to be more precise or any other more specific role types?
An unidirectional association between topics A and B would mean that you can navigate from A to B but not vice-versa. I assume what you actually mean is the distinction of directed associations vs. undirected associations.
In DM2 associations are directed. That is there are dedicated start and end points. In DM4 in contrast we deliberately decided NOT to have directed associations (because in most cases there is no clear start and end, e.g. what would be the start of a parent-child relationship?) but to qualify the 2 topics by the means of Role Types. So you could define the Role Types start and end on your own.