Issue 8100: Section: 7.3.35 (uml2-rtf) Source: (, ) Nature: Clarification Severity: Minor Summary: The modifications made for multiple languages (Issue 3391) could often be taken by the reader to mean that multiple languages may exist simultaneously in a single opaque expression. An example is the attribute "language:String[0..*] specifies the languages in which the expression is stated" could be interpreted to mean that the expression could be stated in mixed languages. Additionally plurality of verbs and modifying expressions often do not agree with the plurality of the sentence subject. An example of this is "The languages of an opaque expression, is specified, is often..." Subject is the sentence is "languages" so verb should be "are." Furthermore, this statement implies that a single ("an") opaque expression may have more than one language ("languages"). Resolution: see above Revised Text: It is quite possible that multiple languages may co-exist in the same expression (although they are expected to be serialized rather than interleaved in such cases). These typically serve as alternative forms of expression for the same content. Revised Text: On page 104 of the Superstructure [page 58 of the Infrastructure] replace the first sentence in the Semantics subsection of OpaqueExpression: The interpretation of the expression body depends on the languages. with the following: The expression body may consist of a sequence of text strings – each in a different language – representing alternative representations of the same content. When multiple language strings are provided, the language of each separate string is determined by its corresponding entry in the “language” attribute (by sequence order). The interpretation of the text strings is language specific. Also, on page 105 of the Superstructure [there is no corresponding Infrastructure change], replace the first sentence of the third paragraph of the Notation subsection: The languages of an opaque expression, if specified, is often not shown on a diagram. with the following: The languages of an opaque expression, if specified, are often not shown on a diagram. In the Constraints subsection of OpaqueExpression on page 104 of the Superstructure [page 58 of the Infrastructure], replace the sentence No additional constraints. with the following constraints: [1] If the language attribute is not empty, then the size of the body and language arrays must be the same. language->notEmpty() implies (body->size() = language->size()) [2] If there is only one body then the size of the language is exactly 1 (corresponding to the default language). language->isEmpty() implies (body->size() = 1) Editor’s note: second constraint removed by resolution to 9191 Actions taken: January 20, 2005: received issue August 23, 2006: closed issue Discussion: It is quite possible that multiple languages may co-exist in the same expression (although they are expected to be serialized rather than interleaved in such cases). These typically serve as alternative forms of expression for the same content. End of Annotations:===== m: webmaster@omg.org Date: 20 Jan 2005 11:54:36 -0500 To: Subject: Issue/Bug Report -------------------------------------------------------------------------------- Name: Jane Messenger Company: U. S. Geological Survey mailFrom: jmessenger@usgs.gov Notification: Yes Specification: Superstructure Section: 7.3.35 FormalNumber: ptc/04-10-02 Version: 2.0 Draft Adopted RevisionDate: 10/08/2004 Page: 103-105 Nature: Clarification Severity: Minor HTTP User Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Q312461) Description The modifications made for multiple languages (Issue 3391) could often be taken by the reader to mean that multiple languages may exist simultaneously in a single opaque expression. An example is the attribute "language:String[0..*] specifies the languages in which the expression is stated" could be interpreted to mean that the expression could be stated in mixed languages. Additionally plurality of verbs and modifying expressions often do not agree with the plurality of the sentence subject. An example of this is "The languages of an opaque expression, is specified, is often..." Subject is the sentence is "languages" so verb should be "are." Furthermore, this statement implies that a single ("an") opaque expression may have more than one language ("languages"). Subject: RE: Resolution proposals for Infrastructure/Classes area Date: Wed, 24 Aug 2005 18:34:28 -0700 X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: Resolution proposals for Infrastructure/Classes area Thread-Index: AcWo9WVm2zHXw+tDTVSx6dF6B7c6rQAGI/Ug From: "Pete Rivett" To: "Branislav Selic" , Here are some comments. I'm OK with the other proposals. Pete ----- Issue 8086 We need to be careful with 'association name' in the proposed phrase ", suggests a simple descriptive sentence with the association name serving as the verb" since although it is true, the UML2 spec itself consistently uses 'association' to refer to 'Property' (e.g. the list of 'Associations' for each metaclass in the spec). So maybe it should say '...with the name property of the Association serving as the verb'. The other question is whether the classifiers or the end names should be used in the constructed phrase. So for a reflexive Association on Person called 'is married to' with end names husband and wife, would the phrase be 'husband is married to wife' or 'Person is married to Person'? The example actually seems to be using the end names since player and year are lower case. --------- Issue 8100: I thought the different languages for an Expression were meant to be alternative formulations e.g. the same meaning depicted in English, Java and OCL. So that the list of languages needs to be the same length as the list of bodies with them being matched pair-wise. This is borne out by the original issue 3391 which made the attributes of Expression multivalued says: " For example, the Expression metaclass has an metaattribute for language and another for the uninterpreted string. This should be a set of such pairs. Then code generators can target multiple languages from the same model." ----- Issue 8226: I don;t think the new BNF is really tight enough - it allows arbitrary long expressions, repetition and inconsistency. e.g. it allows {ordered, ordered, unordered, unique, ordered} How about the following (changes from original spec in red) ::= [ .{. [ [.,. ] ] | [ [.,. ] ] .}. ] ::= [ .... ] ::= | ::= .*. | ::= .ordered. | .unordered. ::= .unique. | .nonunique. ...and likewise for the other changes. ------- Issue 8719 The instance diagram is interesting and could well be a useful addition to the spec - to help explain how the Instances model works. I think it reveals a weakness in the Instances metamodel in terms of how to represent Links - I think InstanceSpecification is not necessarily the right thing to use since an InstanceSpecification (in this case for ) cannot reference Slots it does not own. I created an extended Instances model in MOF to address this (see ptc/4-10-15 Figure 15) - though this is not part of the MOF metamodel but for defining constraints for MOF operations. I agree with the explanation of the original Issue but feel including the instance diagram could lead to misleading impressions about the Instances metamodel.. Regards Pete -------------------------------------------------------------------------------- From: Branislav Selic [mailto:bselic@ca.ibm.com] Sent: Wednesday, August 24, 2005 10:47 PM To: uml2-rtf@omg.org Subject: Resolution proposals for Infrastructure/Classes area Attached are proposals for 7 issue resolutions in the Infrastructure/Classes area. I would like to include them in the draft for ballot 9. Please review them if you care about this area. Cheers, Bran From: "Thomas Weigert" To: "'Branislav Selic'" , Subject: RE: Revised version of draft 9 ballot Date: Thu, 1 Sep 2005 17:03:04 -0500 X-Mailer: Microsoft Outlook, Build 10.0.6626 I have concerns regarding 8100. It states that "The expression body may consist of a series of text strings . each in a different language- typically representing alternative representations of the same content. When multiple language strings are provided, the language of each separate string is determined by its corresponding entry in the "language" attribute (by sequence order). The interpretation of the text strings is language specific." I don't know where the idea came from that the expression body may have a several strings pasted after each other, each representing the same text in the different language, but surely is not a good solution. In general, I think the spec should be silent as to how multiple languages are represented, but if we really desire to do so, a far better solution would be to have the body attribute be 0..* with the constraint that it match the language attribute, and then each body element corresponds to one language element with the interpretation that each string is interpreted by the matching language. The current solution just sticks them all one behind each other into the single body attribute with no obvious way of how to tell where one string ends and the next starts. Anyway, please make this simple change or pull this issue. It is not workable as is. It is not even very clear (e.g., what is a "series of text strings"... the term series is not defined in the document)... Th. -----Original Message----- From: Branislav Selic [mailto:bselic@ca.ibm.com] Sent: Thursday, September 01, 2005 4:41 PM To: uml2-rtf@omg.org Subject: Revised version of draft 9 ballot In the hope that I can eschew reissuing the ballot after it is formally released, I am sending a second updated version of the draft ballot that I plan to issue tomorrow. In particular, I made a number of changes recommended by Conrad and Pete (although I did not implement all of them). Please review this one and tell me by 4 pm EDT tomorrow, if you have any objections. The official ballot will go out at 6 pm EDT tomorrow. Thanks, Bran To: "Thomas Weigert" Cc: uml2-rtf@omg.org Subject: RE: Revised version of draft 9 ballot X-Mailer: Lotus Notes Release 6.0.1CF1 March 04, 2003 From: Branislav Selic Date: Thu, 1 Sep 2005 18:18:28 -0400 X-MIMETrack: Serialize by Router on D25ML01/25/M/IBM(Release 6.5.4|March 27, 2005) at 09/01/2005 18:18:26, Serialize complete at 09/01/2005 18:18:26 The idea for multiple strings was introduced late in the FTF (I think it was Conrad) and accepted by the FTF. The text that is in there is supposed to reflect the solution you propose (if I understand it correctly) but may have been clumsily worded. Please note that the body attribute has a multiplicity 1..*, so I don't know why you say that they are all "stuck into a single body attribute". The term "series of text strings" is supposed to suggest that this is an ordered collection of "bodies" (i.e., a vector) and that their language is determined by the corresponding entry in the "language" vector. Bran "Thomas Weigert" 09/01/2005 06:03 PM To Branislav Selic/Ottawa/IBM@IBMCA, cc Subject RE: Revised version of draft 9 ballot I have concerns regarding 8100. It states that "The expression body may consist of a series of text strings . each in a different language- typically representing alternative representations of the same content. When multiple language strings are provided, the language of each separate string is determined by its corresponding entry in the "language" attribute (by sequence order). The interpretation of the text strings is language specific." I don't know where the idea came from that the expression body may have a several strings pasted after each other, each representing the same text in the different language, but surely is not a good solution. In general, I think the spec should be silent as to how multiple languages are represented, but if we really desire to do so, a far better solution would be to have the body attribute be 0..* with the constraint that it match the language attribute, and then each body element corresponds to one language element with the interpretation that each string is interpreted by the matching language. The current solution just sticks them all one behind each other into the single body attribute with no obvious way of how to tell where one string ends and the next starts. Anyway, please make this simple change or pull this issue. It is not workable as is. It is not even very clear (e.g., what is a "series of text strings"... the term series is not defined in the document)... Th. -----Original Message----- From: Branislav Selic [mailto:bselic@ca.ibm.com] Sent: Thursday, September 01, 2005 4:41 PM To: uml2-rtf@omg.org Subject: Revised version of draft 9 ballot In the hope that I can eschew reissuing the ballot after it is formally released, I am sending a second updated version of the draft ballot that I plan to issue tomorrow. In particular, I made a number of changes recommended by Conrad and Pete (although I did not implement all of them). Please review this one and tell me by 4 pm EDT tomorrow, if you have any objections. The official ballot will go out at 6 pm EDT tomorrow. Thanks, Bran Subject: RE: Revised version of draft 9 ballot Date: Thu, 1 Sep 2005 15:33:14 -0700 X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: Revised version of draft 9 ballot Thread-Index: AcWvQybXzGXN5IbyTSyKHs4RmNYQIgAAQauw From: "Pete Rivett" To: "Branislav Selic" , "Thomas Weigert" Cc: I agree with your reading Bran. However Thomas makes a useful suggestion regarding adding a constraint that the size of the sequences should match, unless the optional language is empty i.e. language->isEmpty() or language->size() = body->size() Pete -------------------------------------------------------------------------------- From: Branislav Selic [mailto:bselic@ca.ibm.com] Sent: Thursday, September 01, 2005 11:18 PM To: Thomas Weigert Cc: uml2-rtf@omg.org Subject: RE: Revised version of draft 9 ballot The idea for multiple strings was introduced late in the FTF (I think it was Conrad) and accepted by the FTF. The text that is in there is supposed to reflect the solution you propose (if I understand it correctly) but may have been clumsily worded. Please note that the body attribute has a multiplicity 1..*, so I don't know why you say that they are all "stuck into a single body attribute". The term "series of text strings" is supposed to suggest that this is an ordered collection of "bodies" (i.e., a vector) and that their language is determined by the corresponding entry in the "language" vector. Bran "Thomas Weigert" 09/01/2005 06:03 PM To Branislav Selic/Ottawa/IBM@IBMCA, cc Subject RE: Revised version of draft 9 ballot I have concerns regarding 8100. It states that "The expression body may consist of a series of text strings . each in a different language- typically representing alternative representations of the same content. When multiple language strings are provided, the language of each separate string is determined by its corresponding entry in the "language" attribute (by sequence order). The interpretation of the text strings is language specific." I don't know where the idea came from that the expression body may have a several strings pasted after each other, each representing the same text in the different language, but surely is not a good solution. In general, I think the spec should be silent as to how multiple languages are represented, but if we really desire to do so, a far better solution would be to have the body attribute be 0..* with the constraint that it match the language attribute, and then each body element corresponds to one language element with the interpretation that each string is interpreted by the matching language. The current solution just sticks them all one behind each other into the single body attribute with no obvious way of how to tell where one string ends and the next starts. Anyway, please make this simple change or pull this issue. It is not workable as is. It is not even very clear (e.g., what is a "series of text strings"... the term series is not defined in the document)... Th. -----Original Message----- From: Branislav Selic [mailto:bselic@ca.ibm.com] Sent: Thursday, September 01, 2005 4:41 PM To: uml2-rtf@omg.org Subject: Revised version of draft 9 ballot In the hope that I can eschew reissuing the ballot after it is formally released, I am sending a second updated version of the draft ballot that I plan to issue tomorrow. In particular, I made a number of changes recommended by Conrad and Pete (although I did not implement all of them). Please review this one and tell me by 4 pm EDT tomorrow, if you have any objections. The official ballot will go out at 6 pm EDT tomorrow. Thanks, Bran To: "Pete Rivett" Cc: "Thomas Weigert" , uml2-rtf@omg.org Subject: RE: Revised version of draft 9 ballot X-Mailer: Lotus Notes Release 6.0.1CF1 March 04, 2003 From: Branislav Selic Date: Thu, 1 Sep 2005 18:57:10 -0400 X-MIMETrack: Serialize by Router on D25ML01/25/M/IBM(Release 6.5.4|March 27, 2005) at 09/01/2005 18:57:21, Serialize complete at 09/01/2005 18:57:22, Serialize by Router on D25ML01/25/M/IBM(Release 6.5.4|March 27, 2005) at 09/01/2005 18:57:22 Agreed, but suggest a slightly different constraint: language->notEmpty() implies (language->size() = body->size()) Bran "Pete Rivett" 09/01/2005 06:33 PM To Branislav Selic/Ottawa/IBM@IBMCA, "Thomas Weigert" cc Subject RE: Revised version of draft 9 ballot I agree with your reading Bran. However Thomas makes a useful suggestion regarding adding a constraint that the size of the sequences should match, unless the optional language is empty i.e. language->isEmpty() or language->size() = body->size() Pete -------------------------------------------------------------------------------- From: Branislav Selic [mailto:bselic@ca.ibm.com] Sent: Thursday, September 01, 2005 11:18 PM To: Thomas Weigert Cc: uml2-rtf@omg.org Subject: RE: Revised version of draft 9 ballot The idea for multiple strings was introduced late in the FTF (I think it was Conrad) and accepted by the FTF. The text that is in there is supposed to reflect the solution you propose (if I understand it correctly) but may have been clumsily worded. Please note that the body attribute has a multiplicity 1..*, so I don't know why you say that they are all "stuck into a single body attribute". The term "series of text strings" is supposed to suggest that this is an ordered collection of "bodies" (i.e., a vector) and that their language is determined by the corresponding entry in the "language" vector. Bran "Thomas Weigert" 09/01/2005 06:03 PM To Branislav Selic/Ottawa/IBM@IBMCA, cc Subject RE: Revised version of draft 9 ballot I have concerns regarding 8100. It states that "The expression body may consist of a series of text strings . each in a different language- typically representing alternative representations of the same content. When multiple language strings are provided, the language of each separate string is determined by its corresponding entry in the "language" attribute (by sequence order). The interpretation of the text strings is language specific." I don't know where the idea came from that the expression body may have a several strings pasted after each other, each representing the same text in the different language, but surely is not a good solution. In general, I think the spec should be silent as to how multiple languages are represented, but if we really desire to do so, a far better solution would be to have the body attribute be 0..* with the constraint that it match the language attribute, and then each body element corresponds to one language element with the interpretation that each string is interpreted by the matching language. The current solution just sticks them all one behind each other into the single body attribute with no obvious way of how to tell where one string ends and the next starts. Anyway, please make this simple change or pull this issue. It is not workable as is. It is not even very clear (e.g., what is a "series of text strings"... the term series is not defined in the document)... Th. -----Original Message----- From: Branislav Selic [mailto:bselic@ca.ibm.com] Sent: Thursday, September 01, 2005 4:41 PM To: uml2-rtf@omg.org Subject: Revised version of draft 9 ballot In the hope that I can eschew reissuing the ballot after it is formally released, I am sending a second updated version of the draft ballot that I plan to issue tomorrow. In particular, I made a number of changes recommended by Conrad and Pete (although I did not implement all of them). Please review this one and tell me by 4 pm EDT tomorrow, if you have any objections. The official ballot will go out at 6 pm EDT tomorrow. Thanks, Bran Subject: RE: Revised version of draft 9 ballot Date: Thu, 1 Sep 2005 16:29:12 -0700 X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: Revised version of draft 9 ballot Thread-Index: AcWvSJeH0EGR05UeQ3O/FDeaTmdvjQAAFYkA From: "Pete Rivett" To: "Branislav Selic" Cc: Differently expressed but identical logic since (P implies Q) is-equivalent-to (not(P) or Q) Personally I think my version is more intuitive since in my experience fewer people understand the above definition of 'implies' and it's more obvious to say the constraint allows 2 alternatives (by using 'or'). But I accept it's personal preference and I don't care enough to argue about it - it's enough to have OCL at all! BTW The thing I find that catches some people with 'implies' is the meaning when the antecedent is false (in our case when language isEmpty.) Actually on that subject I think we need might to strengthen the constraint to say that if language isEmpty then body->size() = 1. Since it does not seem to make sense to have more than one 'body' value if there are no 'language' values to distinguish them. Making the OCL: (language->isEmpty() and body->size() =1) or (language->size() = body->size() ) or, using 'implies' gives the following (which I find less intuitive) (language->notEmpty() or body->size() != 1) implies (language->size() = body->size() ) Pete -------------------------------------------------------------------------------- From: Branislav Selic [mailto:bselic@ca.ibm.com] Sent: Thursday, September 01, 2005 11:57 PM To: Pete Rivett Cc: Thomas Weigert; uml2-rtf@omg.org Subject: RE: Revised version of draft 9 ballot Agreed, but suggest a slightly different constraint: language->notEmpty() implies (language->size() = body->size()) Bran "Pete Rivett" 09/01/2005 06:33 PM To Branislav Selic/Ottawa/IBM@IBMCA, "Thomas Weigert" cc Subject RE: Revised version of draft 9 ballot I agree with your reading Bran. However Thomas makes a useful suggestion regarding adding a constraint that the size of the sequences should match, unless the optional language is empty i.e. language->isEmpty() or language->size() = body->size() Pete -------------------------------------------------------------------------------- From: Branislav Selic [mailto:bselic@ca.ibm.com] Sent: Thursday, September 01, 2005 11:18 PM To: Thomas Weigert Cc: uml2-rtf@omg.org Subject: RE: Revised version of draft 9 ballot The idea for multiple strings was introduced late in the FTF (I think it was Conrad) and accepted by the FTF. The text that is in there is supposed to reflect the solution you propose (if I understand it correctly) but may have been clumsily worded. Please note that the body attribute has a multiplicity 1..*, so I don't know why you say that they are all "stuck into a single body attribute". The term "series of text strings" is supposed to suggest that this is an ordered collection of "bodies" (i.e., a vector) and that their language is determined by the corresponding entry in the "language" vector. Bran "Thomas Weigert" 09/01/2005 06:03 PM To Branislav Selic/Ottawa/IBM@IBMCA, cc Subject RE: Revised version of draft 9 ballot I have concerns regarding 8100. It states that "The expression body may consist of a series of text strings . each in a different language- typically representing alternative representations of the same content. When multiple language strings are provided, the language of each separate string is determined by its corresponding entry in the "language" attribute (by sequence order). The interpretation of the text strings is language specific." I don't know where the idea came from that the expression body may have a several strings pasted after each other, each representing the same text in the different language, but surely is not a good solution. In general, I think the spec should be silent as to how multiple languages are represented, but if we really desire to do so, a far better solution would be to have the body attribute be 0..* with the constraint that it match the language attribute, and then each body element corresponds to one language element with the interpretation that each string is interpreted by the matching language. The current solution just sticks them all one behind each other into the single body attribute with no obvious way of how to tell where one string ends and the next starts. Anyway, please make this simple change or pull this issue. It is not workable as is. It is not even very clear (e.g., what is a "series of text strings"... the term series is not defined in the document)... Th. -----Original Message----- From: Branislav Selic [mailto:bselic@ca.ibm.com] Sent: Thursday, September 01, 2005 4:41 PM To: uml2-rtf@omg.org Subject: Revised version of draft 9 ballot In the hope that I can eschew reissuing the ballot after it is formally released, I am sending a second updated version of the draft ballot that I plan to issue tomorrow. In particular, I made a number of changes recommended by Conrad and Pete (although I did not implement all of them). Please review this one and tell me by 4 pm EDT tomorrow, if you have any objections. The official ballot will go out at 6 pm EDT tomorrow. Thanks, Bran From: "Thomas Weigert" To: "'Pete Rivett'" , "'Branislav Selic'" Cc: Subject: RE: Revised version of draft 9 ballot Date: Thu, 1 Sep 2005 20:17:32 -0500 X-Mailer: Microsoft Outlook, Build 10.0.6626 OK. I would still change the wording to be clearer as well. E.g., don't speak of a "series" of text strings, but of a sequence of strings. Also, I think saying "typically these strings express the same content" is somewhat confusing. The intent is that these strings do express the same meaning... otherwise, we would have a mess on our hands. So let's say that, and not just say that this is "typically" the case, which leaves everything wide open. I realize you cannot establish that the strings mean the same, but at least you can state the intention. Personally, I think it is not a wise idea to have these multiple strings and languages. If a tool wants to support many alternative languages, let that be the tools business. Th. -----Original Message----- From: Pete Rivett [mailto:pete.rivett@adaptive.com] Sent: Thursday, September 01, 2005 6:29 PM To: Branislav Selic Cc: uml2-rtf@omg.org Subject: RE: Revised version of draft 9 ballot Differently expressed but identical logic since (P implies Q) is-equivalent-to (not(P) or Q) Personally I think my version is more intuitive since in my experience fewer people understand the above definition of 'implies' and it's more obvious to say the constraint allows 2 alternatives (by using 'or'). But I accept it's personal preference and I don't care enough to argue about it - it's enough to have OCL at all! BTW The thing I find that catches some people with 'implies' is the meaning when the antecedent is false (in our case when language isEmpty.) Actually on that subject I think we need might to strengthen the constraint to say that if language isEmpty then body->size() = 1. Since it does not seem to make sense to have more than one 'body' value if there are no 'language' values to distinguish them. Making the OCL: (language->isEmpty() and body->size() =1) or (language->size() = body->size() ) or, using 'implies' gives the following (which I find less intuitive) (language->notEmpty() or body->size() != 1) implies (language->size() = body->size() ) Pete -------------------------------------------------------------------------------- From: Branislav Selic [mailto:bselic@ca.ibm.com] Sent: Thursday, September 01, 2005 11:57 PM To: Pete Rivett Cc: Thomas Weigert; uml2-rtf@omg.org Subject: RE: Revised version of draft 9 ballot Agreed, but suggest a slightly different constraint: language->notEmpty() implies (language->size() = body->size()) Bran "Pete Rivett" 09/01/2005 06:33 PM To Branislav Selic/Ottawa/IBM@IBMCA, "Thomas Weigert" cc Subject RE: Revised version of draft 9 ballot I agree with your reading Bran. However Thomas makes a useful suggestion regarding adding a constraint that the size of the sequences should match, unless the optional language is empty i.e. language->isEmpty() or language->size() = body->size() Pete -------------------------------------------------------------------------------- From: Branislav Selic [mailto:bselic@ca.ibm.com] Sent: Thursday, September 01, 2005 11:18 PM To: Thomas Weigert Cc: uml2-rtf@omg.org Subject: RE: Revised version of draft 9 ballot The idea for multiple strings was introduced late in the FTF (I think it was Conrad) and accepted by the FTF. The text that is in there is supposed to reflect the solution you propose (if I understand it correctly) but may have been clumsily worded. Please note that the body attribute has a multiplicity 1..*, so I don't know why you say that they are all "stuck into a single body attribute". The term "series of text strings" is supposed to suggest that this is an ordered collection of "bodies" (i.e., a vector) and that their language is determined by the corresponding entry in the "language" vector. Bran "Thomas Weigert" 09/01/2005 06:03 PM To Branislav Selic/Ottawa/IBM@IBMCA, cc Subject RE: Revised version of draft 9 ballot I have concerns regarding 8100. It states that "The expression body may consist of a series of text strings . each in a different language- typically representing alternative representations of the same content. When multiple language strings are provided, the language of each separate string is determined by its corresponding entry in the "language" attribute (by sequence order). The interpretation of the text strings is language specific." I don't know where the idea came from that the expression body may have a several strings pasted after each other, each representing the same text in the different language, but surely is not a good solution. In general, I think the spec should be silent as to how multiple languages are represented, but if we really desire to do so, a far better solution would be to have the body attribute be 0..* with the constraint that it match the language attribute, and then each body element corresponds to one language element with the interpretation that each string is interpreted by the matching language. The current solution just sticks them all one behind each other into the single body attribute with no obvious way of how to tell where one string ends and the next starts. Anyway, please make this simple change or pull this issue. It is not workable as is. It is not even very clear (e.g., what is a "series of text strings"... the term series is not defined in the document)... Th. -----Original Message----- From: Branislav Selic [mailto:bselic@ca.ibm.com] Sent: Thursday, September 01, 2005 4:41 PM To: uml2-rtf@omg.org Subject: Revised version of draft 9 ballot In the hope that I can eschew reissuing the ballot after it is formally released, I am sending a second updated version of the draft ballot that I plan to issue tomorrow. In particular, I made a number of changes recommended by Conrad and Pete (although I did not implement all of them). Please review this one and tell me by 4 pm EDT tomorrow, if you have any objections. The official ballot will go out at 6 pm EDT tomorrow. Thanks, Bran To: "Pete Rivett" Cc: uml2-rtf@omg.org Subject: RE: Revised version of draft 9 ballot X-Mailer: Lotus Notes Release 6.0.1CF1 March 04, 2003 From: Branislav Selic Date: Fri, 2 Sep 2005 08:44:10 -0400 X-MIMETrack: Serialize by Router on D25ML01/25/M/IBM(Release 6.5.4|March 27, 2005) at 09/02/2005 08:44:31, Serialize complete at 09/02/2005 08:44:31 A question of taste, I think. Personally, I find it simpler to use "implies" because there is less mental calculation that needs to take place (I prefer not to have to remember De Morgan's laws). However, I suggest that instead of combining the two it might be more understandable if we expressed them as separate constraints: language->notEmpty() implies (body->size() = langauge->size()) language->isEmpty implies (body->size() = 1) Of course, an if-else statement could do the same thing, but I personally see these as two different constraints. I will make the above change in the final version. Bran "Pete Rivett" 09/01/2005 07:29 PM To Branislav Selic/Ottawa/IBM@IBMCA cc Subject RE: Revised version of draft 9 ballot Differently expressed but identical logic since (P implies Q) is-equivalent-to (not(P) or Q) Personally I think my version is more intuitive since in my experience fewer people understand the above definition of 'implies' and it's more obvious to say the constraint allows 2 alternatives (by using 'or'). But I accept it's personal preference and I don't care enough to argue about it - it's enough to have OCL at all! BTW The thing I find that catches some people with 'implies' is the meaning when the antecedent is false (in our case when language isEmpty.) Actually on that subject I think we need might to strengthen the constraint to say that if language isEmpty then body->size() = 1. Since it does not seem to make sense to have more than one 'body' value if there are no 'language' values to distinguish them. Making the OCL: (language->isEmpty() and body->size() =1) or (language->size() = body->size() ) or, using 'implies' gives the following (which I find less intuitive) (language->notEmpty() or body->size() != 1) implies (language->size() = body->size() ) Pete -------------------------------------------------------------------------------- From: Branislav Selic [mailto:bselic@ca.ibm.com] Sent: Thursday, September 01, 2005 11:57 PM To: Pete Rivett Cc: Thomas Weigert; uml2-rtf@omg.org Subject: RE: Revised version of draft 9 ballot Agreed, but suggest a slightly different constraint: language->notEmpty() implies (language->size() = body->size()) Bran "Pete Rivett" 09/01/2005 06:33 PM To Branislav Selic/Ottawa/IBM@IBMCA, "Thomas Weigert" cc Subject RE: Revised version of draft 9 ballot I agree with your reading Bran. However Thomas makes a useful suggestion regarding adding a constraint that the size of the sequences should match, unless the optional language is empty i.e. language->isEmpty() or language->size() = body->size() Pete -------------------------------------------------------------------------------- From: Branislav Selic [mailto:bselic@ca.ibm.com] Sent: Thursday, September 01, 2005 11:18 PM To: Thomas Weigert Cc: uml2-rtf@omg.org Subject: RE: Revised version of draft 9 ballot The idea for multiple strings was introduced late in the FTF (I think it was Conrad) and accepted by the FTF. The text that is in there is supposed to reflect the solution you propose (if I understand it correctly) but may have been clumsily worded. Please note that the body attribute has a multiplicity 1..*, so I don't know why you say that they are all "stuck into a single body attribute". The term "series of text strings" is supposed to suggest that this is an ordered collection of "bodies" (i.e., a vector) and that their language is determined by the corresponding entry in the "language" vector. Bran "Thomas Weigert" 09/01/2005 06:03 PM To Branislav Selic/Ottawa/IBM@IBMCA, cc Subject RE: Revised version of draft 9 ballot I have concerns regarding 8100. It states that "The expression body may consist of a series of text strings . each in a different language- typically representing alternative representations of the same content. When multiple language strings are provided, the language of each separate string is determined by its corresponding entry in the "language" attribute (by sequence order). The interpretation of the text strings is language specific." I don't know where the idea came from that the expression body may have a several strings pasted after each other, each representing the same text in the different language, but surely is not a good solution. In general, I think the spec should be silent as to how multiple languages are represented, but if we really desire to do so, a far better solution would be to have the body attribute be 0..* with the constraint that it match the language attribute, and then each body element corresponds to one language element with the interpretation that each string is interpreted by the matching language. The current solution just sticks them all one behind each other into the single body attribute with no obvious way of how to tell where one string ends and the next starts. Anyway, please make this simple change or pull this issue. It is not workable as is. It is not even very clear (e.g., what is a "series of text strings"... the term series is not defined in the document)... Th. -----Original Message----- From: Branislav Selic [mailto:bselic@ca.ibm.com] Sent: Thursday, September 01, 2005 4:41 PM To: uml2-rtf@omg.org Subject: Revised version of draft 9 ballot In the hope that I can eschew reissuing the ballot after it is formally released, I am sending a second updated version of the draft ballot that I plan to issue tomorrow. In particular, I made a number of changes recommended by Conrad and Pete (although I did not implement all of them). Please review this one and tell me by 4 pm EDT tomorrow, if you have any objections. The official ballot will go out at 6 pm EDT tomorrow. Thanks, Bran To: "Thomas Weigert" Cc: "'Pete Rivett'" , uml2-rtf@omg.org Subject: RE: Revised version of draft 9 ballot X-Mailer: Lotus Notes Release 6.0.1CF1 March 04, 2003 From: Branislav Selic Date: Fri, 2 Sep 2005 08:50:54 -0400 X-MIMETrack: Serialize by Router on D25ML01/25/M/IBM(Release 6.5.4|March 27, 2005) at 09/02/2005 08:51:10, Serialize complete at 09/02/2005 08:51:10 Thanks, Thomas. Will amend as suggested. Like you, I think the idea of multiple languages was not a good idea (in fact, I believe I voted NO to this resolution), but the FTF accepted it. Bran "Thomas Weigert" 09/01/2005 09:17 PM To "'Pete Rivett'" , Branislav Selic/Ottawa/IBM@IBMCA cc Subject RE: Revised version of draft 9 ballot OK. I would still change the wording to be clearer as well. E.g., don't speak of a "series" of text strings, but of a sequence of strings. Also, I think saying "typically these strings express the same content" is somewhat confusing. The intent is that these strings do express the same meaning... otherwise, we would have a mess on our hands. So let's say that, and not just say that this is "typically" the case, which leaves everything wide open. I realize you cannot establish that the strings mean the same, but at least you can state the intention. Personally, I think it is not a wise idea to have these multiple strings and languages. If a tool wants to support many alternative languages, let that be the tools business. Th. -----Original Message----- From: Pete Rivett [mailto:pete.rivett@adaptive.com] Sent: Thursday, September 01, 2005 6:29 PM To: Branislav Selic Cc: uml2-rtf@omg.org Subject: RE: Revised version of draft 9 ballot Differently expressed but identical logic since (P implies Q) is-equivalent-to (not(P) or Q) Personally I think my version is more intuitive since in my experience fewer people understand the above definition of 'implies' and it's more obvious to say the constraint allows 2 alternatives (by using 'or'). But I accept it's personal preference and I don't care enough to argue about it - it's enough to have OCL at all! BTW The thing I find that catches some people with 'implies' is the meaning when the antecedent is false (in our case when language isEmpty.) Actually on that subject I think we need might to strengthen the constraint to say that if language isEmpty then body->size() = 1. Since it does not seem to make sense to have more than one 'body' value if there are no 'language' values to distinguish them. Making the OCL: (language->isEmpty() and body->size() =1) or (language->size() = body->size() ) or, using 'implies' gives the following (which I find less intuitive) (language->notEmpty() or body->size() != 1) implies (language->size() = body->size() ) Pete -------------------------------------------------------------------------------- From: Branislav Selic [mailto:bselic@ca.ibm.com] Sent: Thursday, September 01, 2005 11:57 PM To: Pete Rivett Cc: Thomas Weigert; uml2-rtf@omg.org Subject: RE: Revised version of draft 9 ballot Agreed, but suggest a slightly different constraint: language->notEmpty() implies (language->size() = body->size()) Bran "Pete Rivett" 09/01/2005 06:33 PM To Branislav Selic/Ottawa/IBM@IBMCA, "Thomas Weigert" cc Subject RE: Revised version of draft 9 ballot I agree with your reading Bran. However Thomas makes a useful suggestion regarding adding a constraint that the size of the sequences should match, unless the optional language is empty i.e. language->isEmpty() or language->size() = body->size() Pete -------------------------------------------------------------------------------- From: Branislav Selic [mailto:bselic@ca.ibm.com] Sent: Thursday, September 01, 2005 11:18 PM To: Thomas Weigert Cc: uml2-rtf@omg.org Subject: RE: Revised version of draft 9 ballot The idea for multiple strings was introduced late in the FTF (I think it was Conrad) and accepted by the FTF. The text that is in there is supposed to reflect the solution you propose (if I understand it correctly) but may have been clumsily worded. Please note that the body attribute has a multiplicity 1..*, so I don't know why you say that they are all "stuck into a single body attribute". The term "series of text strings" is supposed to suggest that this is an ordered collection of "bodies" (i.e., a vector) and that their language is determined by the corresponding entry in the "language" vector. Bran "Thomas Weigert" 09/01/2005 06:03 PM To Branislav Selic/Ottawa/IBM@IBMCA, cc Subject RE: Revised version of draft 9 ballot I have concerns regarding 8100. It states that "The expression body may consist of a series of text strings . each in a different language- typically representing alternative representations of the same content. When multiple language strings are provided, the language of each separate string is determined by its corresponding entry in the "language" attribute (by sequence order). The interpretation of the text strings is language specific." I don't know where the idea came from that the expression body may have a several strings pasted after each other, each representing the same text in the different language, but surely is not a good solution. In general, I think the spec should be silent as to how multiple languages are represented, but if we really desire to do so, a far better solution would be to have the body attribute be 0..* with the constraint that it match the language attribute, and then each body element corresponds to one language element with the interpretation that each string is interpreted by the matching language. The current solution just sticks them all one behind each other into the single body attribute with no obvious way of how to tell where one string ends and the next starts. Anyway, please make this simple change or pull this issue. It is not workable as is. It is not even very clear (e.g., what is a "series of text strings"... the term series is not defined in the document)... Th. -----Original Message----- From: Branislav Selic [mailto:bselic@ca.ibm.com] Sent: Thursday, September 01, 2005 4:41 PM To: uml2-rtf@omg.org Subject: Revised version of draft 9 ballot In the hope that I can eschew reissuing the ballot after it is formally released, I am sending a second updated version of the draft ballot that I plan to issue tomorrow. In particular, I made a number of changes recommended by Conrad and Pete (although I did not implement all of them). Please review this one and tell me by 4 pm EDT tomorrow, if you have any objections. The official ballot will go out at 6 pm EDT tomorrow. Thanks, Bran Subject: RE: Revised version of draft 9 ballot Date: Fri, 2 Sep 2005 07:39:09 -0700 X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: Revised version of draft 9 ballot Thread-Index: AcWvSJeH0EGR05UeQ3O/FDeaTmdvjQAAFYkAACC6SyA= From: "Karl Frank" To: "Pete Rivett" , "Branislav Selic" Cc: X-OriginalArrivalTime: 02 Sep 2005 14:39:11.0201 (UTC) FILETIME=[1517FD10:01C5AFCC] I like Pete's revision. the logic behind OCL differentiates implication from entailment, and most people intuitively think 'implies' means entails. - Karl -------------------------------------------------------------------------------- From: Pete Rivett [mailto:pete.rivett@adaptive.com] Sent: Thursday, September 01, 2005 7:29 PM To: Branislav Selic Cc: uml2-rtf@omg.org Subject: RE: Revised version of draft 9 ballot Differently expressed but identical logic since (P implies Q) is-equivalent-to (not(P) or Q) Personally I think my version is more intuitive since in my experience fewer people understand the above definition of 'implies' and it's more obvious to say the constraint allows 2 alternatives (by using 'or'). But I accept it's personal preference and I don't care enough to argue about it - it's enough to have OCL at all! BTW The thing I find that catches some people with 'implies' is the meaning when the antecedent is false (in our case when language isEmpty.) Actually on that subject I think we need might to strengthen the constraint to say that if language isEmpty then body->size() = 1. Since it does not seem to make sense to have more than one 'body' value if there are no 'language' values to distinguish them. Making the OCL: (language->isEmpty() and body->size() =1) or (language->size() = body->size() ) or, using 'implies' gives the following (which I find less intuitive) (language->notEmpty() or body->size() != 1) implies (language->size() = body->size() ) Pete -------------------------------------------------------------------------------- From: Branislav Selic [mailto:bselic@ca.ibm.com] Sent: Thursday, September 01, 2005 11:57 PM To: Pete Rivett Cc: Thomas Weigert; uml2-rtf@omg.org Subject: RE: Revised version of draft 9 ballot Agreed, but suggest a slightly different constraint: language->notEmpty() implies (language->size() = body->size()) Bran "Pete Rivett" 09/01/2005 06:33 PM To Branislav Selic/Ottawa/IBM@IBMCA, "Thomas Weigert" cc Subject RE: Revised version of draft 9 ballot I agree with your reading Bran. However Thomas makes a useful suggestion regarding adding a constraint that the size of the sequences should match, unless the optional language is empty i.e. language->isEmpty() or language->size() = body->size() Pete -------------------------------------------------------------------------------- From: Branislav Selic [mailto:bselic@ca.ibm.com] Sent: Thursday, September 01, 2005 11:18 PM To: Thomas Weigert Cc: uml2-rtf@omg.org Subject: RE: Revised version of draft 9 ballot The idea for multiple strings was introduced late in the FTF (I think it was Conrad) and accepted by the FTF. The text that is in there is supposed to reflect the solution you propose (if I understand it correctly) but may have been clumsily worded. Please note that the body attribute has a multiplicity 1..*, so I don't know why you say that they are all "stuck into a single body attribute". The term "series of text strings" is supposed to suggest that this is an ordered collection of "bodies" (i.e., a vector) and that their language is determined by the corresponding entry in the "language" vector. Bran "Thomas Weigert" 09/01/2005 06:03 PM To Branislav Selic/Ottawa/IBM@IBMCA, cc Subject RE: Revised version of draft 9 ballot I have concerns regarding 8100. It states that "The expression body may consist of a series of text strings . each in a different language- typically representing alternative representations of the same content. When multiple language strings are provided, the language of each separate string is determined by its corresponding entry in the "language" attribute (by sequence order). The interpretation of the text strings is language specific." I don't know where the idea came from that the expression body may have a several strings pasted after each other, each representing the same text in the different language, but surely is not a good solution. In general, I think the spec should be silent as to how multiple languages are represented, but if we really desire to do so, a far better solution would be to have the body attribute be 0..* with the constraint that it match the language attribute, and then each body element corresponds to one language element with the interpretation that each string is interpreted by the matching language. The current solution just sticks them all one behind each other into the single body attribute with no obvious way of how to tell where one string ends and the next starts. Anyway, please make this simple change or pull this issue. It is not workable as is. It is not even very clear (e.g., what is a "series of text strings"... the term series is not defined in the document)... Th. -----Original Message----- From: Branislav Selic [mailto:bselic@ca.ibm.com] Sent: Thursday, September 01, 2005 4:41 PM To: uml2-rtf@omg.org Subject: Revised version of draft 9 ballot In the hope that I can eschew reissuing the ballot after it is formally released, I am sending a second updated version of the draft ballot that I plan to issue tomorrow. In particular, I made a number of changes recommended by Conrad and Pete (although I did not implement all of them). Please review this one and tell me by 4 pm EDT tomorrow, if you have any objections. The official ballot will go out at 6 pm EDT tomorrow. Thanks, Bran To: Branislav Selic Cc: uml2-rtf@omg.org Subject: Re: Ballot 9 X-Mailer: Lotus Notes Release 6.0.1CF1 March 04, 2003 From: Kenneth Hussey Date: Thu, 8 Sep 2005 20:43:31 -0400 X-MIMETrack: Serialize by Router on D25ML03/25/M/IBM(Release 6.5.4|March 27, 2005) at 09/08/2005 20:42:49, Serialize complete at 09/08/2005 20:42:49 Bran, In the resolution to issue 8100, the second constraint does not look correct. According to the English description, I would have expected the OCL to be: (body->size() = 1) implies (language->size() = 1) Cheers, Kenn Hussey Eclipse UML2 Project Lead Rational Software, IBM Software Group 770 Palladium Drive Kanata, Ontario, K2V 1C8 T: (613) 599-3980 F: (613) 599-3912 Branislav Selic/Ottawa/IBM@IBMCA 09/02/2005 02:26 PM To uml2-rtf@omg.org cc Subject Ballot 9 Official Ballot 9 enclosed. Voting starts tonight at 6 pm EDT and closes on Sept. 16 at the same time. Regards, Bran Selic IBM Distinguished Engineer IBM Rational Software 770 Palladium Drive Kanata, Ontario, Canada K2V 1C8 ph.: (613) 591-7915 fax: (613) 599-3912 e-mail: bselic@ca.ibm.com[attachment "Ballot9.pdf" deleted by Kenneth Hussey/Ottawa/IBM] To: Kenneth Hussey Cc: uml2-rtf@omg.org Subject: Re: Ballot 9 X-Mailer: Lotus Notes Release 6.0.1CF1 March 04, 2003 From: Branislav Selic Date: Thu, 8 Sep 2005 20:58:43 -0400 X-MIMETrack: Serialize by Router on D25ML01/25/M/IBM(Release 6.5.4|March 27, 2005) at 09/08/2005 20:58:44, Serialize complete at 09/08/2005 20:58:44 Kenn, Actually, it is the text that is incorrect, not the constraint. The language id is omitted when there is only one body (which implies that the body is exressed using the "default" language -- whatever that is in a given situation). This is why the lower multiplicity of "language" is 0 and not 1. The text of the second constraint should be changed so that "1" is replaced by "0". I'll fix this as an editorial change. Thanks...Bran Kenneth Hussey/Ottawa/IBM@IBMCA 09/08/2005 08:43 PM To Branislav Selic/Ottawa/IBM@IBMCA cc uml2-rtf@omg.org Subject Re: Ballot 9 Bran, In the resolution to issue 8100, the second constraint does not look correct. According to the English description, I would have expected the OCL to be: (body->size() = 1) implies (language->size() = 1) Cheers, Kenn Hussey Eclipse UML2 Project Lead Rational Software, IBM Software Group 770 Palladium Drive Kanata, Ontario, K2V 1C8 T: (613) 599-3980 F: (613) 599-3912 Branislav Selic/Ottawa/IBM@IBMCA 09/02/2005 02:26 PM To uml2-rtf@omg.org cc Subject Ballot 9 Official Ballot 9 enclosed. Voting starts tonight at 6 pm EDT and closes on Sept. 16 at the same time. Regards, Bran Selic IBM Distinguished Engineer IBM Rational Software 770 Palladium Drive Kanata, Ontario, Canada K2V 1C8 ph.: (613) 591-7915 fax: (613) 599-3912 e-mail: bselic@ca.ibm.com[attachment "Ballot9.pdf" deleted by Kenneth Hussey/Ottawa/IBM]