[DDI-SRG] [CDI] new Canonical XMI after model transform

A. G. ilg21 at yahoo.com
Fri Aug 6 14:39:16 EDT 2021


 Flavio:
It has become clear to me as I have looked at a couple of examples that what you say is true.
One major topic for the Dagstuhl week will be to design and document a methodology for creating implementation guides. These would describe both the selection of classes to be used from the model, and relevant choices about syntac representation.
Without this - functioning basically as a checklist for a community implementing the model, but one which can be shared with others to support interoperability - I do not see a model of this complexity being practically useful.
One aspect of this which has become evident is that with a minimum received metadata payload, it is possible to use the model to derive much greater richness within the system processing that metadata, especially if the implementation details are known.
The best example of this I have seen so far is an RDF implementation prototype where users are expected to describe their instance variables, and to indicate whether the concept employed and/or the enumerated values are taken from an authoritative source. With this information it is possible to populate the entire variable cascade in a useful way, suitable for a system designed to identify reuse programmatically.
I think this kind of hidden complexity is actually very powerful. Although we need responsible users it will help a lot if we can tell them what we mean by "responsible". That burden should be as light as possible for our adopters.
Cheers,
Arofan
    On Friday, August 6, 2021, 06:09:04 PM GMT+2, Flavio Rizzolo <flavio.rizzolo at gmail.com> wrote:  
 
  
That would depend on the syntax representation, in XML or JSON you can use the nesting of elements without needing further references... In any case, I lost track of how many times we went back and forth on this, I made the suggestion because I thought we were not identifying everything in this iteration... my bad.
 
 
The identifier is optional anyways, we could emphasize in the documentation that if the syntax representation of your choice doesn't need it in certain cases, then don't use it. That would create other interoperability problems since some people might drop identifiers even when they are really required, but I don't see any way around that since we are given tons of flexibility to the users, and with great flexibility comes great responsibility... 
 
 
Flavio
 
 On 2021-08-06 10:57 a.m., Hoyle, Larry wrote:
  
 
 _filtered {} _filtered {} _filtered {}#yiv0598211313 p.yiv0598211313MsoNormal, #yiv0598211313 li.yiv0598211313MsoNormal, #yiv0598211313 div.yiv0598211313MsoNormal {margin:0in;font-size:11.0pt;font-family:"Calibri", sans-serif;}#yiv0598211313 a:link, #yiv0598211313 span.yiv0598211313MsoHyperlink {color:blue;text-decoration:underline;}#yiv0598211313 pre {margin:0in;font-size:10.0pt;font-family:"Courier New";}#yiv0598211313 p.yiv0598211313MsoListParagraph, #yiv0598211313 li.yiv0598211313MsoListParagraph, #yiv0598211313 div.yiv0598211313MsoListParagraph {margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;font-size:11.0pt;font-family:"Calibri", sans-serif;}#yiv0598211313 span.yiv0598211313HTMLPreformattedChar {font-family:Consolas;}#yiv0598211313 span.yiv0598211313EmailStyle23 {font-family:"Calibri", sans-serif;color:windowtext;}#yiv0598211313 .yiv0598211313MsoChpDefault {font-size:10.0pt;}#yiv0598211313 div.yiv0598211313WordSection1 {}#yiv0598211313 ol {margin-bottom:0in;}#yiv0598211313 ul {margin-bottom:0in;} 
Unfortunately, anything that is at the navigable end of an association needs an identifier. This does not mean that these need to be heavily (centrally) managed – a random UUID could work for the ddiIdentifier attribute of the Identifier. The Position class is an example. A list needs to be able to refer to the positions of the objects in the list. If these Positions do not have unique identifiers, a saved instance of the list and its associated positions becomes unusable.
 
  
 
Since we cannot foresee future uses of existing classes in the model, all classes should have an identifier property. This is how we have been doing this for quite a while now. This is one of the primary distinctions between classes and structured datatypes.
 
Please let’s not get into remodeling this at this late date.
 
  
 
Larry
 
  
 
  
   
From: ddi-srg-bounces at icpsr.umich.edu <ddi-srg-bounces at icpsr.umich.edu> On Behalf Of Flavio Rizzolo
 Sent: Friday, August 6, 2021 8:40 AM
 To: ddi-srg at icpsr.umich.edu
 Subject: Re: [DDI-SRG] [CDI] new Canonical XMI after model transform
   
  
 
Yes, that's a good point Larry. The question is whether that is the case, or it's just safer to remove them from all abstract classes with the idea we'll add them in the concrete classes as necessary.
 
The pattern classes also have identifier, even in the cases in which the concrete classes shouldn't have them, e.g. keys and keymembers. I think the criteria for having identifiers is not only that they will be instantiated but also that the instance can live on its own and is worth referencing, which is not the case of something like keys and keymembers (besides, it would really be an overkill to add identifier, which is not light, to something like a keymember, which is essentially a pointer linking data points). 
 
The idea at some point was to use composition to indicate when two classes formed a single whole so that the parts didn't require separate identification from the whole. They keys certainly satisfy that, since the are parts of a dataset. Position in List is another example. 
 
Flavio
 
  
  
On 2021-08-06 7:56 a.m., Hoyle, Larry wrote:
  
 
As to the last point:
 
I would think that adding an identifier to an abstract class is done not because I would think that adding an identifier to an abstract class is done not because you expect to identify the abstract class itself, but because you intend that all classes inheriting from it are identifiable. A Flavio pointed out, by being abstract, a class is never intended to be used directly. It only exists to describe what properties and relationships its descendants must have. 
 
 
 
I would not remove the identifier from an abstract classes without thinking about whether all descendants are intended to be identifiable.
 
 
   
From:  ddi-srg-bounces at icpsr.umich.edu  <ddi-srg-bounces at icpsr.umich.edu> On Behalf Of Wackerow, Joachim
 Sent: Friday, August 6, 2021 6:42 AM
 To: DDI Structural Reform Working Group.  <ddi-srg at icpsr.umich.edu>
 Subject: Re: [DDI-SRG] [CDI] new Canonical XMI after model transform
   
 
 
Thanks Flavio, for the things you noticed. This is helpful. My comments are below in the message. 
 
Keep checking!
 
 
 
Achim
 
 
   
From: Flavio Rizzolo <flavio.rizzolo at gmail.com> 
 Sent: Freitag, 6. August 2021 03:39
 To: Wackerow, Joachim <Joachim.Wackerow at gesis.org>; DDI Structural Reform Working Group. <ddi-srg at icpsr.umich.edu>
 Subject: Re: [DDI-SRG] [CDI] new Canonical XMI after model transform
   
 
 
A couple of other issues:
 
- The "refine" association seems to have a unique name now, even in the non-unique names xmi. For instance, Concept "refines" IndividualMember. Instead, we have Concept "Concept_refines_IndividualMember" IndividualMember.
 
[JW] The name should be probably removed in the regular XMI file. The long name should be in the version with the unique association names. The background of the refine names is that some UML tools are not able to consume the abstraction stereotypes. They just ignore them which results in a Abstraction relationship without further specification. Using the name is a workaround. But this is confusing in a tool like EA which can consume the abstraction stereotypes. The name repeats what is already expressed in the specific abstraction relationship. Another workaround would be to describe the kind of relationship in the definition.
 
I will remove the names in the regular XMI file. I’ll add the long names to the version with the unique association names.
 
You could think about if the abstraction definitions could be improved in a way that the kind of relationship is clear even if an UML tool doesn’t understand the related stereotypes like refine.
 
- Identifier appears in all classes in the inheritance chains.  For instance, Activity has Identifier, and so does Step, which is an extension of Activity. However, only the top non-abstract class in any inheritance chain should have Identifiable.
 
[JW] I didn’t think about this.
 
I will remove the attribute identifier at all classes which inherit from a non-abstract class.
 
- Which brings me to the next issue: abstract classes should not be identifiable, should they? They are never instantiated, so it seems pointless they hay an identifier.
 
[JW] Absolutely.
 
I’ll remove the attribute identifier from abstract classes.
 
Flavio
 
 
  
On 2021-08-05 2:00 p.m., Flavio Rizzolo wrote:
  
 
Achim,
 
A few issues I noticed on a quick review: 
 
- The definition of Identifier seems old. It says "Basic object requiring identification. Elements of this type are versioned and provide administrative metadata properties." It's a datatype now, so it should probably say "identifier for objects requiring short- or long-lasting referencing and management", or something like that. The example seems wrong as well "Use for First Order Classes whose content does not need to be discoverable in its own right but needs to be related to multiple classes.". I suggest to remove it.
 
[JW] For the next transformation run, I would need the documentation of both the class attribute identifier and the data type Identifier. It could be the same definition.
 
“Identifier for objects requiring short- or long-lasting referencing and management.” seems to be good enough.
 
The suggested removal is fine with me.
 
- Some of the attributes, e.g. ddiIdentifier, uri, appear to be of type "EA_Java_Types_Package". I'm not sure how that happened. 
 
[JW] I typed them as strings. I will look into this. This is an issue with EA and their use of UML primitives and how they express them in their version of XMI.
 
- There is a ModelIdentification datatype, right under the DataTypes package, that doesn't seem to be used anywhere. 
 
[JW] I added this already to the public review version. It is not used anywhere in the model but it can be used by any program which uses the model or its representations. This way a program can recognize with which specification and version it deals with.
 
This could stay on the level of the data types like currently or it could be located just below DDICDILibrary. What do you think?
 
- I was just going over the Documentation.xlsx and noticed a couple of enumerations that didn't ring a bell. I checked and couldn't find them in the latest EA file. They are WorkflowPattern and StringStructureType. There might be others. I'm not sure where they are coming from.
 
[JW] StringStructureType was removed because I simplified all string data types. It is now an external controlled vocabulary. Hard coding would be too limited.
 
WorkflowPattern is not used at all. I removed it but missed to document it.
 
That's all for now. I'll keep checking.
 
Flavio
 
 
  
On 2021-07-30 2:59 p.m., Wackerow, Joachim wrote:
  
 
I did the programmatic model transformation for a couple of issues we talked about. Prior to that I edited manually the EA model regarding some other issues.
 
 
 
I documented all changes in  ModelTransformation_2021-07-30.docx.
 
The file lists also some items which need documentation. Volunteers sought.
 
 
 
While doing this work I filed a couple of additional issues:
    
   -  Missing documentation CDI-57
   -  Boolean class attributes: should they have a default value? CDI-56
   -  Data type ObjectName attributes are not clear. CDI-55 
   -  Data type name "SpecificationType" too generic CDI-54
   - Review names of enumerations and data types. Several have the suffix 'type'. CDI-58
 
 
 
The new files include everything below DDICDIModels. The abstraction stereotypes like trace are maintained. Diagrams get lost in this process.
 
The new XMI files (DDI-CDI_2021-07-30.xmi,  DDI-CDI_UniqueAssociationNames_2021-07-30.xmi) are available for download.
 
Please review. There might be issues.
 
 
 
Achim
 
 
 _______________________________________________ DDI-SRG mailing list DDI-SRG at icpsr.umich.edu http://lists.icpsr.umich.edu/mailman/listinfo/ddi-srg 
 
 

 
 
 _______________________________________________ DDI-SRG mailing list DDI-SRG at icpsr.umich.edu http://lists.icpsr.umich.edu/mailman/listinfo/ddi-srg 
  _______________________________________________
DDI-SRG mailing list
DDI-SRG at icpsr.umich.edu
http://lists.icpsr.umich.edu/mailman/listinfo/ddi-srg
  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.icpsr.umich.edu/pipermail/ddi-srg/attachments/20210806/0685a7e2/attachment-0001.html 


More information about the DDI-SRG mailing list