Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Archived » GMT (Generative Modeling Technologies) » [Epsilon] Using OCL in Meta-Model level
[Epsilon] Using OCL in Meta-Model level [message #378002] Wed, 16 May 2007 18:34 Go to next message
Eclipse UserFriend
Originally posted by: b_zamani.encs.concordia.ca

Hi everybody,

I have a problem understanding how to use OCL (especially in MetaModel
level), if you have time to guide me, that would be appreciated.

So far I've worked with some tools such as ArgoUML (adding some critics to
it), OCLE (checking OCLs in model level and metamodel level), and recently
Epsilon (Adding some more functionalities on its ArgoUML version).

My problem is that I don't know from where can I find all the OPERATIONS and
FUNCTIONS that I can apply on a model (Meta-Model). Let me make it clear by
an example:

1) In Epsilon, I've written the following operation to check whether or not
a class own an attribute. But I knew nothing about the FEATURE property that
could be applied on a class. I just found it by reviewing existing similar
codes.

operation Class hasAttribute (name : String) : Boolean {
return self.feature.exists (a:Attribute | a.name = name);
}

2) In ArgoUML, I had to write the following method to check the above
condition. However, since it was in Eclipse, I could see which methods are
available by Model's Facade class (thanks to Eclipse assistance).

public static boolean classHasAtt (Object cls) {
boolean found = false;
Collection atts = Model.getFacade().getAttributes(cls);
if ( atts.size() > 0 ) {
found = true ;
}
return found;
}

Again my question is: "let say the context is a class, how can I access to
all its attributes? its operations? its stereotypes?" The same question
applies for every ModelElement.

best,
Bahman
Re: [Epsilon] Using OCL in Meta-Model level [message #378008 is a reply to message #378002] Wed, 16 May 2007 18:43 Go to previous messageGo to next message
Dimitrios Kolovos is currently offline Dimitrios KolovosFriend
Messages: 1776
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------050402000706070903070803
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Hi Bahman,

The properties of each metaclass (e.g. Class, ModelElement etc) are
defined in the metamodel of the language. For ArgoUML the metamodel is a
MOF1.4/XMI 1.1 file (attached). From this, I've generated a set of
JavaDoc-like HTML pages available at
http://www-users.cs.york.ac.uk/~dkolovos/uml14/ which you may find more
usable than the XMI metamodel itself :)

Cheers,
Dimitrios

Bahman wrote:
> Hi everybody,
>
> I have a problem understanding how to use OCL (especially in MetaModel
> level), if you have time to guide me, that would be appreciated.
>
> So far I've worked with some tools such as ArgoUML (adding some critics to
> it), OCLE (checking OCLs in model level and metamodel level), and recently
> Epsilon (Adding some more functionalities on its ArgoUML version).
>
> My problem is that I don't know from where can I find all the OPERATIONS and
> FUNCTIONS that I can apply on a model (Meta-Model). Let me make it clear by
> an example:
>
> 1) In Epsilon, I've written the following operation to check whether or not
> a class own an attribute. But I knew nothing about the FEATURE property that
> could be applied on a class. I just found it by reviewing existing similar
> codes.
>
> operation Class hasAttribute (name : String) : Boolean {
> return self.feature.exists (a:Attribute | a.name = name);
> }
>
> 2) In ArgoUML, I had to write the following method to check the above
> condition. However, since it was in Eclipse, I could see which methods are
> available by Model's Facade class (thanks to Eclipse assistance).
>
> public static boolean classHasAtt (Object cls) {
> boolean found = false;
> Collection atts = Model.getFacade().getAttributes(cls);
> if ( atts.size() > 0 ) {
> found = true ;
> }
> return found;
> }
>
> Again my question is: "let say the context is a class, how can I access to
> all its attributes? its operations? its stereotypes?" The same question
> applies for every ModelElement.
>
> best,
> Bahman
>
>
>

--------------050402000706070903070803
Content-Type: text/xml;
name="uml14.xmi"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="uml14.xmi"

<?xml version="1.0" encoding="UTF-8" ?>
<!-- <!DOCTYPE XMI SYSTEM 'Model.dtd'> -->
<XMI xmi.version='1.1' xmlns:Model='omg.org/mof.Model/1.3'>
<XMI.header>
<XMI.model xmi.name='UML' xmi.version='1.4'/>
<XMI.metamodel xmi.name='Model' xmi.version='1.3'/>
</XMI.header>
<XMI.content>
<Model:Package xmi.id='a0' name='UML' annotation='' isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'>
<Model:Namespace.contents>
<Model:Tag xmi.id='a1' name='org.omg.mof.idl_prefix=org.omg' annotation='' tagId='org.omg.mof.idl_prefix' elements='a0'>
<Model:Tag.values>
<XMI.any xmi.type='string'>org.omg</XMI.any>
</Model:Tag.values>
</Model:Tag>
<Model:Tag xmi.id='a2' name='org.omg.xmi.namespace=UML' annotation='' tagId='org.omg.xmi.namespace' elements='a0'>
<Model:Tag.values>
<XMI.any xmi.type='string'>UML</XMI.any>
</Model:Tag.values>
</Model:Tag>
<Model:Import xmi.id='a3' name='Data_Types' annotation='' visibility='public_vis' isClustered='true' importedNamespace='a4'>
</Model:Import>
<Model:Import xmi.id='a5' name='Core' annotation='' visibility='public_vis' isClustered='true' importedNamespace='a6'>
</Model:Import>
<Model:Import xmi.id='a7' name='Common_Behavior' annotation='' visibility='public_vis' isClustered='true' importedNamespace='a8'>
</Model:Import>
<Model:Import xmi.id='a9' name='Use_Cases' annotation='' visibility='public_vis' isClustered='true' importedNamespace='a10'>
</Model:Import>
<Model:Import xmi.id='a11' name='State_Machines' annotation='' visibility='public_vis' isClustered='true' importedNamespace='a12'>
</Model:Import>
<Model:Import xmi.id='a13' name='Collaborations' annotation='' visibility='public_vis' isClustered='true' importedNamespace='a14'>
</Model:Import>
<Model:Import xmi.id='a15' name='Activity_Graphs' annotation='' visibility='public_vis' isClustered='true' importedNamespace='a16'>
</Model:Import>
<Model:Import xmi.id='a17' name='Model_Management' annotation='' visibility='public_vis' isClustered='true' importedNamespace='a18'>
</Model:Import>
</Model:Namespace.contents>
</Model:Package>
<Model:Package xmi.id='a4' name='Data_Types' annotation='' isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'>
<Model:Namespace.contents>
<Model:Tag xmi.id='a19' name='org.omg.mof.idl_prefix=org.omg.uml.Foundation' annotation='' tagId='org.omg.mof.idl_prefix' elements='a4'>
<Model:Tag.values>
<XMI.any xmi.type='string'>org.omg.uml.Foundation</XMI.any>
</Model:Tag.values>
</Model:Tag>
<Model:Tag xmi.id='a20' name='org.omg.xmi.namespace=UML' annotation='' tagId='org.omg.xmi.namespace' elements='a4'>
<Model:Tag.values>
<XMI.any xmi.type='string'>UML</XMI.any>
</Model:Tag.values>
</Model:Tag>
<Model:DataType xmi.id='a21' name='Integer' annotation='' isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
<Model:DataType.typeCode>
<XMI.CorbaTypeCode>
<XMI.CorbaTcLong/>
</XMI.CorbaTypeCode>
</Model:DataType.typeCode>
</Model:DataType>
<Model:DataType xmi.id='a22' name='UnlimitedInteger' annotation='' isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
<Model:DataType.typeCode>
<XMI.CorbaTypeCode>
<XMI.CorbaTcAlias xmi.tcName='UnlimitedInteger' xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/UnlimitedInt eger:1.0' >
<XMI.CorbaTypeCode>
<XMI.CorbaTcLong/>
</XMI.CorbaTypeCode>
</XMI.CorbaTcAlias>
</XMI.CorbaTypeCode>
</Model:DataType.typeCode>
</Model:DataType>
<Model:DataType xmi.id='a23' name='String' annotation='' isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
<Model:DataType.typeCode>
<XMI.CorbaTypeCode>
<XMI.CorbaTcString xmi.tcLength='0'/>
</XMI.CorbaTypeCode>
</Model:DataType.typeCode>
</Model:DataType>
<Model:DataType xmi.id='a24' name='AggregationKind' annotation='' isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
<Model:DataType.typeCode>
<XMI.CorbaTypeCode>
<XMI.CorbaTcEnum xmi.tcName='AggregationKind' xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/AggregationK ind:1.0' >
<XMI.CorbaTcEnumLabel xmi.tcName='ak_none'/>
<XMI.CorbaTcEnumLabel xmi.tcName='ak_aggregate'/>
<XMI.CorbaTcEnumLabel xmi.tcName='ak_composite'/>
</XMI.CorbaTcEnum>
</XMI.CorbaTypeCode>
</Model:DataType.typeCode>
</Model:DataType>
<Model:Tag xmi.id='a25' name='org.omg.xmi.enumerationUnprefix=ak_' annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a24'>
<Model:Tag.values>
<XMI.any xmi.type='string'>ak_</XMI.any>
</Model:Tag.values>
</Model:Tag>
<Model:DataType xmi.id='a26' name='Boolean' annotation='' isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
<Model:DataType.typeCode>
<XMI.CorbaTypeCode>
<XMI.CorbaTcBoolean/>
</XMI.CorbaTypeCode>
</Model:DataType.typeCode>
</Model:DataType>
<Model:DataType xmi.id='a27' name='CallConcurrencyKind' annotation='' isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
<Model:DataType.typeCode>
<XMI.CorbaTypeCode>
<XMI.CorbaTcEnum xmi.tcName='CallConcurrencyKind' xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/CallConcurre ncyKind:1.0' >
<XMI.CorbaTcEnumLabel xmi.tcName='cck_sequential'/>
<XMI.CorbaTcEnumLabel xmi.tcName='cck_guarded'/>
<XMI.CorbaTcEnumLabel xmi.tcName='cck_concurrent'/>
</XMI.CorbaTcEnum>
</XMI.CorbaTypeCode>
</Model:DataType.typeCode>
</Model:DataType>
<Model:Tag xmi.id='a28' name='org.omg.xmi.enumerationUnprefix=cck_' annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a27'>
<Model:Tag.values>
<XMI.any xmi.type='string'>cck_</XMI.any>
</Model:Tag.values>
</Model:Tag>
<Model:DataType xmi.id='a29' name='ChangeableKind' annotation='' isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
<Model:DataType.typeCode>
<XMI.CorbaTypeCode>
<XMI.CorbaTcEnum xmi.tcName='ChangeableKind' xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/ChangeableKi nd:1.0' >
<XMI.CorbaTcEnumLabel xmi.tcName='ck_changeable'/>
<XMI.CorbaTcEnumLabel xmi.tcName='ck_frozen'/>
<XMI.CorbaTcEnumLabel xmi.tcName='ck_addOnly'/>
</XMI.CorbaTcEnum>
</XMI.CorbaTypeCode>
</Model:DataType.typeCode>
</Model:DataType>
<Model:Tag xmi.id='a30' name='org.omg.xmi.enumerationUnprefix=ck_' annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a29'>
<Model:Tag.values>
<XMI.any xmi.type='string'>ck_</XMI.any>
</Model:Tag.values>
</Model:Tag>
<Model:DataType xmi.id='a31' name='OrderingKind' annotation='' isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
<Model:DataType.typeCode>
<XMI.CorbaTypeCode>
<XMI.CorbaTcEnum xmi.tcName='OrderingKind' xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/OrderingKind :1.0' >
<XMI.CorbaTcEnumLabel xmi.tcName='ok_unordered'/>
<XMI.CorbaTcEnumLabel xmi.tcName='ok_ordered'/>
</XMI.CorbaTcEnum>
</XMI.CorbaTypeCode>
</Model:DataType.typeCode>
</Model:DataType>
<Model:Tag xmi.id='a32' name='org.omg.xmi.enumerationUnprefix=ok_' annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a31'>
<Model:Tag.values>
<XMI.any xmi.type='string'>ok_</XMI.any>
</Model:Tag.values>
</Model:Tag>
<Model:DataType xmi.id='a33' name='ParameterDirectionKind' annotation='' isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
<Model:DataType.typeCode>
<XMI.CorbaTypeCode>
<XMI.CorbaTcEnum xmi.tcName='ParameterDirectionKind' xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/ParameterDir ectionKind:1.0' >
<XMI.CorbaTcEnumLabel xmi.tcName='pdk_in'/>
<XMI.CorbaTcEnumLabel xmi.tcName='pdk_inout'/>
<XMI.CorbaTcEnumLabel xmi.tcName='pdk_out'/>
<XMI.CorbaTcEnumLabel xmi.tcName='pdk_return'/>
</XMI.CorbaTcEnum>
</XMI.CorbaTypeCode>
</Model:DataType.typeCode>
</Model:DataType>
<Model:Tag xmi.id='a34' name='org.omg.xmi.enumerationUnprefix=pdk_' annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a33'>
<Model:Tag.values>
<XMI.any xmi.type='string'>pdk_</XMI.any>
</Model:Tag.values>
</Model:Tag>
<Model:DataType xmi.id='a35' name='ScopeKind' annotation='' isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
<Model:DataType.typeCode>
<XMI.CorbaTypeCode>
<XMI.CorbaTcEnum xmi.tcName='ScopeKind' xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/ScopeKind:1. 0' >
<XMI.CorbaTcEnumLabel xmi.tcName='sk_instance'/>
<XMI.CorbaTcEnumLabel xmi.tcName='sk_classifier'/>
</XMI.CorbaTcEnum>
</XMI.CorbaTypeCode>
</Model:DataType.typeCode>
</Model:DataType>
<Model:Tag xmi.id='a36' name='org.omg.xmi.enumerationUnprefix=sk_' annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a35'>
<Model:Tag.values>
<XMI.any xmi.type='string'>sk_</XMI.any>
</Model:Tag.values>
</Model:Tag>
<Model:DataType xmi.id='a37' name='VisibilityKind' annotation='' isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
<Model:DataType.typeCode>
<XMI.CorbaTypeCode>
<XMI.CorbaTcEnum xmi.tcName='VisibilityKind' xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/VisibilityKi nd:1.0' >
<XMI.CorbaTcEnumLabel xmi.tcName='vk_public'/>
<XMI.CorbaTcEnumLabel xmi.tcName='vk_protected'/>
<XMI.CorbaTcEnumLabel xmi.tcName='vk_private'/>
<XMI.CorbaTcEnumLabel xmi.tcName='vk_package'/>
</XMI.CorbaTcEnum>
</XMI.CorbaTypeCode>
</Model:DataType.typeCode>
</Model:DataType>
<Model:Tag xmi.id='a38' name='org.omg.xmi.enumerationUnprefix=vk_' annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a37'>
<Model:Tag.values>
<XMI.any xmi.type='string'>vk_</XMI.any>
</Model:Tag.values>
</Model:Tag>
<Model:DataType xmi.id='a39' name='Name' annotation='' isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
<Model:DataType.typeCode>
<XMI.CorbaTypeCode>
<XMI.CorbaTcAlias xmi.tcName='Name' xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/Name:1.0'>
<XMI.CorbaTypeCode>
<XMI.CorbaTcString xmi.tcLength='0'/>
</XMI.CorbaTypeCode>
</XMI.CorbaTcAlias>
</XMI.CorbaTypeCode>
</Model:DataType.typeCode>
</Model:DataType>
<Model:Class xmi.id='a40' name='Multiplicity' annotation='' isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis' isSingleton='false'>
<Model:Namespace.contents>
<Model:Reference xmi.id='a41' name='range' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a42' referencedEnd='a43'>
<Model:StructuralFeature.multiplicity>
<XMI.field>1</XMI.field> <!-- lower -->
<XMI.field>-1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>true</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Reference>
</Model:Namespace.contents>
</Model:Class>
<Model:Class xmi.id='a42' name='MultiplicityRange' annotation='' isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis' isSingleton='false'>
<Model:Namespace.contents>
<Model:Attribute xmi.id='a44' name='lower' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a21'>
<Model:StructuralFeature.multiplicity>
<XMI.field>1</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
<Model:Attribute xmi.id='a45' name='upper' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a22'>
<Model:StructuralFeature.multiplicity>
<XMI.field>1</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
<Model:Reference xmi.id='a46' name='multiplicity' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a40' referencedEnd='a47'>
<Model:StructuralFeature.multiplicity>
<XMI.field>1</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Reference>
</Model:Namespace.contents>
</Model:Class>
<Model:Class xmi.id='a48' name='Expression' annotation='' isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis' isSingleton='false'>
<Model:Namespace.contents>
<Model:Attribute xmi.id='a49' name='language' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a39'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
<Model:Attribute xmi.id='a50' name='body' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a23'>
<Model:StructuralFeature.multiplicity>
<XMI.field>1</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
</Model:Namespace.contents>
</Model:Class>
<Model:Class xmi.id='a51' name='BooleanExpression' annotation='' isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis' isSingleton='false' supertypes='a48'>
</Model:Class>
<Model:Class xmi.id='a52' name='TypeExpression' annotation='' isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis' isSingleton='false' supertypes='a48'>
</Model:Class>
<Model:Class xmi.id='a53' name='MappingExpression' annotation='' isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis' isSingleton='false' supertypes='a48'>
</Model:Class>
<Model:Class xmi.id='a54' name='ProcedureExpression' annotation='' isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis' isSingleton='false' supertypes='a48'>
</Model:Class>
<Model:Class xmi.id='a55' name='ObjectSetExpression' annotation='' isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis' isSingleton='false' supertypes='a48'>
</Model:Class>
<Model:Class xmi.id='a56' name='ActionExpression' annotation='' isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis' isSingleton='false' supertypes='a48'>
</Model:Class>
<Model:Class xmi.id='a57' name='IterationExpression' annotation='' isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis' isSingleton='false' supertypes='a48'>
</Model:Class>
<Model:Class xmi.id='a58' name='TimeExpression' annotation='' isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis' isSingleton='false' supertypes='a48'>
</Model:Class>
<Model:Class xmi.id='a59' name='ArgListsExpression' annotation='' isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis' isSingleton='false' supertypes='a48'>
</Model:Class>
<Model:DataType xmi.id='a60' name='LocationReference' annotation='' isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
<Model:DataType.typeCode>
<XMI.CorbaTypeCode>
<XMI.CorbaTcAlias xmi.tcName='LocationReference' xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/LocationRefe rence:1.0' >
<XMI.CorbaTypeCode>
<XMI.CorbaTcString xmi.tcLength='0'/>
</XMI.CorbaTypeCode>
</XMI.CorbaTcAlias>
</XMI.CorbaTypeCode>
</Model:DataType.typeCode>
</Model:DataType>
<Model:DataType xmi.id='a61' name='PseudostateKind' annotation='' isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
<Model:DataType.typeCode>
<XMI.CorbaTypeCode>
<XMI.CorbaTcEnum xmi.tcName='PseudostateKind' xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/PseudostateK ind:1.0' >
<XMI.CorbaTcEnumLabel xmi.tcName='pk_choice'/>
<XMI.CorbaTcEnumLabel xmi.tcName='pk_deepHistory'/>
<XMI.CorbaTcEnumLabel xmi.tcName='pk_fork'/>
<XMI.CorbaTcEnumLabel xmi.tcName='pk_initial'/>
<XMI.CorbaTcEnumLabel xmi.tcName='pk_join'/>
<XMI.CorbaTcEnumLabel xmi.tcName='pk_junction'/>
<XMI.CorbaTcEnumLabel xmi.tcName='pk_shallowHistory'/>
</XMI.CorbaTcEnum>
</XMI.CorbaTypeCode>
</Model:DataType.typeCode>
</Model:DataType>
<Model:Tag xmi.id='a62' name='org.omg.xmi.enumerationUnprefix=pk_' annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a61'>
<Model:Tag.values>
<XMI.any xmi.type='string'>pk_</XMI.any>
</Model:Tag.values>
</Model:Tag>
<Model:DataType xmi.id='a63' name='Geometry' annotation='' isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
<Model:DataType.typeCode>
<XMI.CorbaTypeCode>
<XMI.CorbaTcAlias xmi.tcName='Geometry' xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/Geometry:1.0 ' >
<XMI.CorbaTypeCode>
<XMI.CorbaTcString xmi.tcLength='0'/>
</XMI.CorbaTypeCode>
</XMI.CorbaTcAlias>
</XMI.CorbaTypeCode>
</Model:DataType.typeCode>
</Model:DataType>
<Model:Association xmi.id='a64' name='A_multiplicity_range' annotation='' isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis' isDerived='false'>
<Model:Namespace.contents>
<Model:AssociationEnd xmi.id='a47' name='multiplicity' annotation='' isNavigable='true' aggregation='composite' isChangeable='true' type='a40'>
<Model:AssociationEnd.multiplicity>
<XMI.field>1</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:AssociationEnd.multiplicity>
</Model:AssociationEnd>
<Model:AssociationEnd xmi.id='a43' name='range' annotation='' isNavigable='true' aggregation='none' isChangeable='true' type='a42'>
<Model:AssociationEnd.multiplicity>
<XMI.field>1</XMI.field> <!-- lower -->
<XMI.field>-1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>true</XMI.field> <!-- is_unique -->
</Model:AssociationEnd.multiplicity>
</Model:AssociationEnd>
</Model:Namespace.contents>
</Model:Association>
</Model:Namespace.contents>
</Model:Package>
<Model:Package xmi.id='a6' name='Core' annotation='' isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'>
<Model:Namespace.contents>
<Model:Tag xmi.id='a65' name='org.omg.mof.idl_prefix=org.omg.uml.Foundation' annotation='' tagId='org.omg.mof.idl_prefix' elements='a6'>
<Model:Tag.values>
<XMI.any xmi.type='string'>org.omg.uml.Foundation</XMI.any>
</Model:Tag.values>
</Model:Tag>
<Model:Tag xmi.id='a66' name='org.omg.xmi.namespace=UML' annotation='' tagId='org.omg.xmi.namespace' elements='a6'>
<Model:Tag.values>
<XMI.any xmi.type='string'>UML</XMI.any>
</Model:Tag.values>
</Model:Tag>
<Model:Class xmi.id='a67' name='Element' annotation='' isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis' isSingleton='false'>
</Model:Class>
<Model:Class xmi.id='a68' name='ModelElement' annotation='' isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis' isSingleton='false' supertypes='a67'>
<Model:Namespace.contents>
<Model:Attribute xmi.id='a69' name='name' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a39'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
<Model:Attribute xmi.id='a70' name='visibility' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a37'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
<Model:Attribute xmi.id='a71' name='isSpecification' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a26'>
<Model:StructuralFeature.multiplicity>
<XMI.field>1</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
<Model:Reference xmi.id='a72' name='namespace' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a73' referencedEnd='a74'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Reference>
<Model:Reference xmi.id='a75' name='clientDependency' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a76' referencedEnd='a77'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>-1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>true</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Reference>
<Model:Reference xmi.id='a78' name='constraint' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a79' referencedEnd='a80'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>-1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>true</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Reference>
<Model:Reference xmi.id='a81' name='targetFlow' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a82' referencedEnd='a83'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>-1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>true</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Reference>
<Model:Reference xmi.id='a84' name='sourceFlow' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a82' referencedEnd='a85'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>-1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>true</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Reference>
<Model:Reference xmi.id='a86' name='comment' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a87' referencedEnd='a88'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>-1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>true</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Reference>
<Model:Reference xmi.id='a89' name='templateParameter' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a90' referencedEnd='a91'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>-1</XMI.field> <!-- upper -->
<XMI.field>true</XMI.field> <!-- is_ordered -->
<XMI.field>true</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Reference>
<Model:Reference xmi.id='a92' name='stereotype' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a93' referencedEnd='a94'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>-1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>true</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Reference>
<Model:Reference xmi.id='a95' name='taggedValue' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a96' referencedEnd='a97'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>-1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>true</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Reference>
</Model:Namespace.contents>
</Model:Class>
<Model:Import xmi.id='a98' name='Data_Types' annotation='' visibility='public_vis' isClustered='true' importedNamespace='a4'>
</Model:Import>
<Model:Tag xmi.id='a99' name='org.omg.mof.idl_substitute_name=umlConstraint' annotation='' tagId='org.omg.mof.idl_substitute_name' elements='a78 a80'>
<Model:Tag.values>
<XMI.any xmi.type='string'>umlConstraint</XMI.any>
</Model:Tag.values>
</Model:Tag>
<Model:Class xmi.id='a100' name='GeneralizableElement' annotation='' isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis' isSingleton='false' supertypes='a68'>
<Model:Namespace.contents>
<Model:Attribute xmi.id='a101' name='isRoot' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a26'>
<Model:StructuralFeature.multiplicity>
<XMI.field>1</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
<Model:Attribute xmi.id='a102' name='isLeaf' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a26'>
<Model:StructuralFeature.multiplicity>
<XMI.field>1</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
<Model:Attribute xmi.id='a103' name='isAbstract' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a26'>
<Model:StructuralFeature.multiplicity>
<XMI.field>1</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
<Model:Reference xmi.id='a104' name='generalization' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a105' referencedEnd='a106'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>-1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>true</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Reference>
</Model:Namespace.contents>
</Model:Class>
<Model:Class xmi.id='a73' name='Namespace' annotation='' isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis' isSingleton='false' supertypes='a68'>
<Model:Namespace.contents>
<Model:Reference xmi.id='a107' name='ownedElement' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a68' referencedEnd='a108'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>-1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>true</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Reference>
</Model:Namespace.contents>
</Model:Class>
<Model:Class xmi.id='a109' name='Classifier' annotation='' isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis' isSingleton='false' supertypes='a100 a73'>
<Model:Namespace.contents>
<Model:Reference xmi.id='a110' name='feature' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a111' referencedEnd='a112'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>-1</XMI.field> <!-- upper -->
<XMI.field>true</XMI.field> <!-- is_ordered -->
<XMI.field>true</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Reference>
<Model:Reference xmi.id='a113' name='powertypeRange' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a105' referencedEnd='a114'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>-1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>true</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Reference>
</Model:Namespace.contents>
</Model:Class>
<Model:Class xmi.id='a115' name='Class' annotation='' isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis' isSingleton='false' supertypes='a109'>
<Model:Namespace.contents>
<Model:Attribute xmi.id='a116' name='isActive' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a26'>
<Model:StructuralFeature.multiplicity>
<XMI.field>1</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
</Model:Namespace.contents>
</Model:Class>
<Model:Class xmi.id='a117' name='DataType' annotation='' isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis' isSingleton='false' supertypes='a109'>
</Model:Class>
<Model:Class xmi.id='a111' name='Feature' annotation='' isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis' isSingleton='false' supertypes='a68'>
<Model:Namespace.contents>
<Model:Attribute xmi.id='a118' name='ownerScope' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a35'>
<Model:StructuralFeature.multiplicity>
<XMI.field>1</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
<Model:Reference xmi.id='a119' name='owner' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a109' referencedEnd='a120'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Reference>
</Model:Namespace.contents>
</Model:Class>
<Model:Class xmi.id='a121' name='StructuralFeature' annotation='' isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis' isSingleton='false' supertypes='a111'>
<Model:Namespace.contents>
<Model:Attribute xmi.id='a122' name='multiplicity' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a40'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
<Model:Attribute xmi.id='a123' name='changeability' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a29'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
<Model:Attribute xmi.id='a124' name='targetScope' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a35'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
<Model:Attribute xmi.id='a125' name='ordering' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a31'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
<Model:Reference xmi.id='a126' name='type' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a109' referencedEnd='a127'>
<Model:StructuralFeature.multiplicity>
<XMI.field>1</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Reference>
</Model:Namespace.contents>
</Model:Class>
<Model:Class xmi.id='a128' name='AssociationEnd' annotation='' isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis' isSingleton='false' supertypes='a68'>
<Model:Namespace.contents>
<Model:Attribute xmi.id='a129' name='isNavigable' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a26'>
<Model:StructuralFeature.multiplicity>
<XMI.field>1</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
<Model:Attribute xmi.id='a130' name='ordering' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a31'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
<Model:Attribute xmi.id='a131' name='aggregation' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a24'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
<Model:Attribute xmi.id='a132' name='targetScope' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a35'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
<Model:Attribute xmi.id='a133' name='multiplicity' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a40'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
<Model:Attribute xmi.id='a134' name='changeability' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a29'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
<Model:Reference xmi.id='a135' name='association' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a136' referencedEnd='a137'>
<Model:StructuralFeature.multiplicity>
<XMI.field>1</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Reference>
<Model:Reference xmi.id='a138' name='qualifier' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a139' referencedEnd='a140'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>-1</XMI.field> <!-- upper -->
<XMI.field>true</XMI.field> <!-- is_ordered -->
<XMI.field>true</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Reference>
<Model:Reference xmi.id='a141' name='participant' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a109' referencedEnd='a142'>
<Model:StructuralFeature.multiplicity>
<XMI.field>1</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Reference>
<Model:Reference xmi.id='a143' name='specification' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a109' referencedEnd='a144'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>-1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>true</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Reference>
</Model:Namespace.contents>
</Model:Class>
<Model:Class xmi.id='a145' name='Interface' annotation='' isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis' isSingleton='false' supertypes='a109'>
</Model:Class>
<Model:Tag xmi.id='a146' name='org.omg.mof.idl_substitute_name=UmlInterface' annotation='' tagId='org.omg.mof.idl_substitute_name' elements='a145'>
<Model:Tag.values>
<XMI.any xmi.type='string'>UmlInterface</XMI.any>
</Model:Tag.values>
</Model:Tag>
<Model:Class xmi.id='a79' name='Constraint' annotation='' isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis' isSingleton='false' supertypes='a68'>
<Model:Namespace.contents>
<Model:Attribute xmi.id='a147' name='body' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a51'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
<Model:Reference xmi.id='a148' name='constrainedElement' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a68' referencedEnd='a149'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>-1</XMI.field> <!-- upper -->
<XMI.field>true</XMI.field> <!-- is_ordered -->
<XMI.field>true</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Reference>
</Model:Namespace.contents>
</Model:Class>
<Model:Tag xmi.id='a150' name='org.omg.mof.idl_substitute_name=UmlConstraint' annotation='' tagId='org.omg.mof.idl_substitute_name' elements='a79'>
<Model:Tag.values>
<XMI.any xmi.type='string'>UmlConstraint</XMI.any>
</Model:Tag.values>
</Model:Tag>
<Model:Class xmi.id='a151' name='Relationship' annotation='' isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis' isSingleton='false' supertypes='a68'>
</Model:Class>
<Model:Class xmi.id='a136' name='Association' annotation='' isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis' isSingleton='false' supertypes='a100 a151'>
<Model:Namespace.contents>
<Model:Reference xmi.id='a152' name='connection' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a128' referencedEnd='a153'>
<Model:StructuralFeature.multiplicity>
<XMI.field>2</XMI.field> <!-- lower -->
<XMI.field>-1</XMI.field> <!-- upper -->
<XMI.field>true</XMI.field> <!-- is_ordered -->
<XMI.field>true</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Reference>
</Model:Namespace.contents>
</Model:Class>
<Model:Class xmi.id='a139' name='Attribute' annotation='' isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis' isSingleton='false' supertypes='a121'>
<Model:Namespace.contents>
<Model:Attribute xmi.id='a154' name='initialValue' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a48'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
<Model:Reference xmi.id='a155' name='associationEnd' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a128' referencedEnd='a156'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>1</XMI.fiel
Re: [Epsilon] Using OCL in Meta-Model level [message #378020 is a reply to message #378008] Sat, 19 May 2007 20:30 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: b_zamani.encs.concordia.ca

Hi Dimitrios,

Thanks for the comment and the link.
I'm not sure what makes me confused! Would you please consider the following
concrete example and let me know your idea?

A) Considering the MOF Model structure depicted by figure3-2 on page 3-13 of
the MOF1.4 specification (http://www.omg.org/docs/formal/02-04-03.pdf), each
Model Element has specific attributes, references, and operations (as
explained in section 3.4.1).
B) Considering the description of class ModelElement from the link you
introduced (http://www-users.cs.york.ac.uk/~dkolovos/uml14/), the attributes
and references are totally different than what is specified in (A).
C) Considering UML1.5 metamodel of OCLE 2.0 tool, I find a class
ModelElement with just one attribute (name) and six operations which seems
almost different that operations or references in (A) or (B).

best,
Bahman


"Dimitrios Kolovos" <dskolovos@gmail.com> wrote in message
news:f2fjdg$p0d$1@build.eclipse.org...
> Hi Bahman,
>
> The properties of each metaclass (e.g. Class, ModelElement etc) are
> defined in the metamodel of the language. For ArgoUML the metamodel is a
> MOF1.4/XMI 1.1 file (attached). From this, I've generated a set of
> JavaDoc-like HTML pages available at
> http://www-users.cs.york.ac.uk/~dkolovos/uml14/ which you may find more
> usable than the XMI metamodel itself :)
>
> Cheers,
> Dimitrios
>
> Bahman wrote:
>> Hi everybody,
>>
>> I have a problem understanding how to use OCL (especially in MetaModel
>> level), if you have time to guide me, that would be appreciated.
>>
>> So far I've worked with some tools such as ArgoUML (adding some critics
>> to
>> it), OCLE (checking OCLs in model level and metamodel level), and
>> recently
>> Epsilon (Adding some more functionalities on its ArgoUML version).
>>
>> My problem is that I don't know from where can I find all the OPERATIONS
>> and
>> FUNCTIONS that I can apply on a model (Meta-Model). Let me make it clear
>> by
>> an example:
>>
>> 1) In Epsilon, I've written the following operation to check whether or
>> not
>> a class own an attribute. But I knew nothing about the FEATURE property
>> that
>> could be applied on a class. I just found it by reviewing existing
>> similar
>> codes.
>>
>> operation Class hasAttribute (name : String) : Boolean {
>> return self.feature.exists (a:Attribute | a.name = name);
>> }
>>
>> 2) In ArgoUML, I had to write the following method to check the above
>> condition. However, since it was in Eclipse, I could see which methods
>> are
>> available by Model's Facade class (thanks to Eclipse assistance).
>>
>> public static boolean classHasAtt (Object cls) {
>> boolean found = false;
>> Collection atts = Model.getFacade().getAttributes(cls);
>> if ( atts.size() > 0 ) {
>> found = true ;
>> }
>> return found;
>> }
>>
>> Again my question is: "let say the context is a class, how can I access
>> to
>> all its attributes? its operations? its stereotypes?" The same question
>> applies for every ModelElement.
>>
>> best,
>> Bahman
>>
>>
>>
>


------------------------------------------------------------ --------------------


> <?xml version="1.0" encoding="UTF-8" ?>
> <!-- <!DOCTYPE XMI SYSTEM 'Model.dtd'> -->
> <XMI xmi.version='1.1' xmlns:Model='omg.org/mof.Model/1.3'>
> <XMI.header>
> <XMI.model xmi.name='UML' xmi.version='1.4'/>
> <XMI.metamodel xmi.name='Model' xmi.version='1.3'/>
> </XMI.header>
> <XMI.content>
> <Model:Package xmi.id='a0' name='UML' annotation='' isRoot='false'
> isLeaf='false' isAbstract='false' visibility='public_vis'>
> <Model:Namespace.contents>
> <Model:Tag xmi.id='a1' name='org.omg.mof.idl_prefix=org.omg'
> annotation='' tagId='org.omg.mof.idl_prefix' elements='a0'>
> <Model:Tag.values>
> <XMI.any xmi.type='string'>org.omg</XMI.any>
> </Model:Tag.values>
> </Model:Tag>
> <Model:Tag xmi.id='a2' name='org.omg.xmi.namespace=UML'
> annotation='' tagId='org.omg.xmi.namespace' elements='a0'>
> <Model:Tag.values>
> <XMI.any xmi.type='string'>UML</XMI.any>
> </Model:Tag.values>
> </Model:Tag>
> <Model:Import xmi.id='a3' name='Data_Types' annotation=''
> visibility='public_vis' isClustered='true' importedNamespace='a4'>
> </Model:Import>
> <Model:Import xmi.id='a5' name='Core' annotation=''
> visibility='public_vis' isClustered='true' importedNamespace='a6'>
> </Model:Import>
> <Model:Import xmi.id='a7' name='Common_Behavior' annotation=''
> visibility='public_vis' isClustered='true' importedNamespace='a8'>
> </Model:Import>
> <Model:Import xmi.id='a9' name='Use_Cases' annotation=''
> visibility='public_vis' isClustered='true' importedNamespace='a10'>
> </Model:Import>
> <Model:Import xmi.id='a11' name='State_Machines' annotation=''
> visibility='public_vis' isClustered='true' importedNamespace='a12'>
> </Model:Import>
> <Model:Import xmi.id='a13' name='Collaborations' annotation=''
> visibility='public_vis' isClustered='true' importedNamespace='a14'>
> </Model:Import>
> <Model:Import xmi.id='a15' name='Activity_Graphs' annotation=''
> visibility='public_vis' isClustered='true' importedNamespace='a16'>
> </Model:Import>
> <Model:Import xmi.id='a17' name='Model_Management' annotation=''
> visibility='public_vis' isClustered='true' importedNamespace='a18'>
> </Model:Import>
> </Model:Namespace.contents>
> </Model:Package>
> <Model:Package xmi.id='a4' name='Data_Types' annotation=''
> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'>
> <Model:Namespace.contents>
> <Model:Tag xmi.id='a19'
> name='org.omg.mof.idl_prefix=org.omg.uml.Foundation' annotation=''
> tagId='org.omg.mof.idl_prefix' elements='a4'>
> <Model:Tag.values>
> <XMI.any xmi.type='string'>org.omg.uml.Foundation</XMI.any>
> </Model:Tag.values>
> </Model:Tag>
> <Model:Tag xmi.id='a20' name='org.omg.xmi.namespace=UML'
> annotation='' tagId='org.omg.xmi.namespace' elements='a4'>
> <Model:Tag.values>
> <XMI.any xmi.type='string'>UML</XMI.any>
> </Model:Tag.values>
> </Model:Tag>
> <Model:DataType xmi.id='a21' name='Integer' annotation=''
> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
> <Model:DataType.typeCode>
> <XMI.CorbaTypeCode>
> <XMI.CorbaTcLong/>
> </XMI.CorbaTypeCode>
> </Model:DataType.typeCode>
> </Model:DataType>
> <Model:DataType xmi.id='a22' name='UnlimitedInteger' annotation=''
> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
> <Model:DataType.typeCode>
> <XMI.CorbaTypeCode>
> <XMI.CorbaTcAlias xmi.tcName='UnlimitedInteger'
> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/UnlimitedInt eger:1.0' >
> <XMI.CorbaTypeCode>
> <XMI.CorbaTcLong/>
> </XMI.CorbaTypeCode>
> </XMI.CorbaTcAlias>
> </XMI.CorbaTypeCode>
> </Model:DataType.typeCode>
> </Model:DataType>
> <Model:DataType xmi.id='a23' name='String' annotation=''
> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
> <Model:DataType.typeCode>
> <XMI.CorbaTypeCode>
> <XMI.CorbaTcString xmi.tcLength='0'/>
> </XMI.CorbaTypeCode>
> </Model:DataType.typeCode>
> </Model:DataType>
> <Model:DataType xmi.id='a24' name='AggregationKind' annotation=''
> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
> <Model:DataType.typeCode>
> <XMI.CorbaTypeCode>
> <XMI.CorbaTcEnum xmi.tcName='AggregationKind'
> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/AggregationK ind:1.0' >
> <XMI.CorbaTcEnumLabel xmi.tcName='ak_none'/>
> <XMI.CorbaTcEnumLabel xmi.tcName='ak_aggregate'/>
> <XMI.CorbaTcEnumLabel xmi.tcName='ak_composite'/>
> </XMI.CorbaTcEnum>
> </XMI.CorbaTypeCode>
> </Model:DataType.typeCode>
> </Model:DataType>
> <Model:Tag xmi.id='a25' name='org.omg.xmi.enumerationUnprefix=ak_'
> annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a24'>
> <Model:Tag.values>
> <XMI.any xmi.type='string'>ak_</XMI.any>
> </Model:Tag.values>
> </Model:Tag>
> <Model:DataType xmi.id='a26' name='Boolean' annotation=''
> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
> <Model:DataType.typeCode>
> <XMI.CorbaTypeCode>
> <XMI.CorbaTcBoolean/>
> </XMI.CorbaTypeCode>
> </Model:DataType.typeCode>
> </Model:DataType>
> <Model:DataType xmi.id='a27' name='CallConcurrencyKind'
> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
> visibility='public_vis'>
> <Model:DataType.typeCode>
> <XMI.CorbaTypeCode>
> <XMI.CorbaTcEnum xmi.tcName='CallConcurrencyKind'
> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/CallConcurre ncyKind:1.0' >
> <XMI.CorbaTcEnumLabel xmi.tcName='cck_sequential'/>
> <XMI.CorbaTcEnumLabel xmi.tcName='cck_guarded'/>
> <XMI.CorbaTcEnumLabel xmi.tcName='cck_concurrent'/>
> </XMI.CorbaTcEnum>
> </XMI.CorbaTypeCode>
> </Model:DataType.typeCode>
> </Model:DataType>
> <Model:Tag xmi.id='a28' name='org.omg.xmi.enumerationUnprefix=cck_'
> annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a27'>
> <Model:Tag.values>
> <XMI.any xmi.type='string'>cck_</XMI.any>
> </Model:Tag.values>
> </Model:Tag>
> <Model:DataType xmi.id='a29' name='ChangeableKind' annotation=''
> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
> <Model:DataType.typeCode>
> <XMI.CorbaTypeCode>
> <XMI.CorbaTcEnum xmi.tcName='ChangeableKind'
> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/ChangeableKi nd:1.0' >
> <XMI.CorbaTcEnumLabel xmi.tcName='ck_changeable'/>
> <XMI.CorbaTcEnumLabel xmi.tcName='ck_frozen'/>
> <XMI.CorbaTcEnumLabel xmi.tcName='ck_addOnly'/>
> </XMI.CorbaTcEnum>
> </XMI.CorbaTypeCode>
> </Model:DataType.typeCode>
> </Model:DataType>
> <Model:Tag xmi.id='a30' name='org.omg.xmi.enumerationUnprefix=ck_'
> annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a29'>
> <Model:Tag.values>
> <XMI.any xmi.type='string'>ck_</XMI.any>
> </Model:Tag.values>
> </Model:Tag>
> <Model:DataType xmi.id='a31' name='OrderingKind' annotation=''
> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
> <Model:DataType.typeCode>
> <XMI.CorbaTypeCode>
> <XMI.CorbaTcEnum xmi.tcName='OrderingKind'
> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/OrderingKind :1.0' >
> <XMI.CorbaTcEnumLabel xmi.tcName='ok_unordered'/>
> <XMI.CorbaTcEnumLabel xmi.tcName='ok_ordered'/>
> </XMI.CorbaTcEnum>
> </XMI.CorbaTypeCode>
> </Model:DataType.typeCode>
> </Model:DataType>
> <Model:Tag xmi.id='a32' name='org.omg.xmi.enumerationUnprefix=ok_'
> annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a31'>
> <Model:Tag.values>
> <XMI.any xmi.type='string'>ok_</XMI.any>
> </Model:Tag.values>
> </Model:Tag>
> <Model:DataType xmi.id='a33' name='ParameterDirectionKind'
> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
> visibility='public_vis'>
> <Model:DataType.typeCode>
> <XMI.CorbaTypeCode>
> <XMI.CorbaTcEnum xmi.tcName='ParameterDirectionKind'
> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/ParameterDir ectionKind:1.0' >
> <XMI.CorbaTcEnumLabel xmi.tcName='pdk_in'/>
> <XMI.CorbaTcEnumLabel xmi.tcName='pdk_inout'/>
> <XMI.CorbaTcEnumLabel xmi.tcName='pdk_out'/>
> <XMI.CorbaTcEnumLabel xmi.tcName='pdk_return'/>
> </XMI.CorbaTcEnum>
> </XMI.CorbaTypeCode>
> </Model:DataType.typeCode>
> </Model:DataType>
> <Model:Tag xmi.id='a34' name='org.omg.xmi.enumerationUnprefix=pdk_'
> annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a33'>
> <Model:Tag.values>
> <XMI.any xmi.type='string'>pdk_</XMI.any>
> </Model:Tag.values>
> </Model:Tag>
> <Model:DataType xmi.id='a35' name='ScopeKind' annotation=''
> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
> <Model:DataType.typeCode>
> <XMI.CorbaTypeCode>
> <XMI.CorbaTcEnum xmi.tcName='ScopeKind'
> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/ScopeKind:1. 0' >
> <XMI.CorbaTcEnumLabel xmi.tcName='sk_instance'/>
> <XMI.CorbaTcEnumLabel xmi.tcName='sk_classifier'/>
> </XMI.CorbaTcEnum>
> </XMI.CorbaTypeCode>
> </Model:DataType.typeCode>
> </Model:DataType>
> <Model:Tag xmi.id='a36' name='org.omg.xmi.enumerationUnprefix=sk_'
> annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a35'>
> <Model:Tag.values>
> <XMI.any xmi.type='string'>sk_</XMI.any>
> </Model:Tag.values>
> </Model:Tag>
> <Model:DataType xmi.id='a37' name='VisibilityKind' annotation=''
> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
> <Model:DataType.typeCode>
> <XMI.CorbaTypeCode>
> <XMI.CorbaTcEnum xmi.tcName='VisibilityKind'
> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/VisibilityKi nd:1.0' >
> <XMI.CorbaTcEnumLabel xmi.tcName='vk_public'/>
> <XMI.CorbaTcEnumLabel xmi.tcName='vk_protected'/>
> <XMI.CorbaTcEnumLabel xmi.tcName='vk_private'/>
> <XMI.CorbaTcEnumLabel xmi.tcName='vk_package'/>
> </XMI.CorbaTcEnum>
> </XMI.CorbaTypeCode>
> </Model:DataType.typeCode>
> </Model:DataType>
> <Model:Tag xmi.id='a38' name='org.omg.xmi.enumerationUnprefix=vk_'
> annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a37'>
> <Model:Tag.values>
> <XMI.any xmi.type='string'>vk_</XMI.any>
> </Model:Tag.values>
> </Model:Tag>
> <Model:DataType xmi.id='a39' name='Name' annotation=''
> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
> <Model:DataType.typeCode>
> <XMI.CorbaTypeCode>
> <XMI.CorbaTcAlias xmi.tcName='Name'
> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/Name:1.0'>
> <XMI.CorbaTypeCode>
> <XMI.CorbaTcString xmi.tcLength='0'/>
> </XMI.CorbaTypeCode>
> </XMI.CorbaTcAlias>
> </XMI.CorbaTypeCode>
> </Model:DataType.typeCode>
> </Model:DataType>
> <Model:Class xmi.id='a40' name='Multiplicity' annotation=''
> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
> isSingleton='false'>
> <Model:Namespace.contents>
> <Model:Reference xmi.id='a41' name='range' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> type='a42' referencedEnd='a43'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>1</XMI.field> <!-- lower -->
> <XMI.field>-1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>true</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Reference>
> </Model:Namespace.contents>
> </Model:Class>
> <Model:Class xmi.id='a42' name='MultiplicityRange' annotation=''
> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
> isSingleton='false'>
> <Model:Namespace.contents>
> <Model:Attribute xmi.id='a44' name='lower' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> isDerived='false' type='a21'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>1</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Attribute>
> <Model:Attribute xmi.id='a45' name='upper' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> isDerived='false' type='a22'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>1</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Attribute>
> <Model:Reference xmi.id='a46' name='multiplicity' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> type='a40' referencedEnd='a47'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>1</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Reference>
> </Model:Namespace.contents>
> </Model:Class>
> <Model:Class xmi.id='a48' name='Expression' annotation=''
> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
> isSingleton='false'>
> <Model:Namespace.contents>
> <Model:Attribute xmi.id='a49' name='language' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> isDerived='false' type='a39'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Attribute>
> <Model:Attribute xmi.id='a50' name='body' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> isDerived='false' type='a23'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>1</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Attribute>
> </Model:Namespace.contents>
> </Model:Class>
> <Model:Class xmi.id='a51' name='BooleanExpression' annotation=''
> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
> isSingleton='false' supertypes='a48'>
> </Model:Class>
> <Model:Class xmi.id='a52' name='TypeExpression' annotation=''
> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
> isSingleton='false' supertypes='a48'>
> </Model:Class>
> <Model:Class xmi.id='a53' name='MappingExpression' annotation=''
> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
> isSingleton='false' supertypes='a48'>
> </Model:Class>
> <Model:Class xmi.id='a54' name='ProcedureExpression' annotation=''
> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
> isSingleton='false' supertypes='a48'>
> </Model:Class>
> <Model:Class xmi.id='a55' name='ObjectSetExpression' annotation=''
> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
> isSingleton='false' supertypes='a48'>
> </Model:Class>
> <Model:Class xmi.id='a56' name='ActionExpression' annotation=''
> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
> isSingleton='false' supertypes='a48'>
> </Model:Class>
> <Model:Class xmi.id='a57' name='IterationExpression' annotation=''
> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
> isSingleton='false' supertypes='a48'>
> </Model:Class>
> <Model:Class xmi.id='a58' name='TimeExpression' annotation=''
> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
> isSingleton='false' supertypes='a48'>
> </Model:Class>
> <Model:Class xmi.id='a59' name='ArgListsExpression' annotation=''
> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
> isSingleton='false' supertypes='a48'>
> </Model:Class>
> <Model:DataType xmi.id='a60' name='LocationReference' annotation=''
> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
> <Model:DataType.typeCode>
> <XMI.CorbaTypeCode>
> <XMI.CorbaTcAlias xmi.tcName='LocationReference'
> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/LocationRefe rence:1.0' >
> <XMI.CorbaTypeCode>
> <XMI.CorbaTcString xmi.tcLength='0'/>
> </XMI.CorbaTypeCode>
> </XMI.CorbaTcAlias>
> </XMI.CorbaTypeCode>
> </Model:DataType.typeCode>
> </Model:DataType>
> <Model:DataType xmi.id='a61' name='PseudostateKind' annotation=''
> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
> <Model:DataType.typeCode>
> <XMI.CorbaTypeCode>
> <XMI.CorbaTcEnum xmi.tcName='PseudostateKind'
> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/PseudostateK ind:1.0' >
> <XMI.CorbaTcEnumLabel xmi.tcName='pk_choice'/>
> <XMI.CorbaTcEnumLabel xmi.tcName='pk_deepHistory'/>
> <XMI.CorbaTcEnumLabel xmi.tcName='pk_fork'/>
> <XMI.CorbaTcEnumLabel xmi.tcName='pk_initial'/>
> <XMI.CorbaTcEnumLabel xmi.tcName='pk_join'/>
> <XMI.CorbaTcEnumLabel xmi.tcName='pk_junction'/>
> <XMI.CorbaTcEnumLabel xmi.tcName='pk_shallowHistory'/>
> </XMI.CorbaTcEnum>
> </XMI.CorbaTypeCode>
> </Model:DataType.typeCode>
> </Model:DataType>
> <Model:Tag xmi.id='a62' name='org.omg.xmi.enumerationUnprefix=pk_'
> annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a61'>
> <Model:Tag.values>
> <XMI.any xmi.type='string'>pk_</XMI.any>
> </Model:Tag.values>
> </Model:Tag>
> <Model:DataType xmi.id='a63' name='Geometry' annotation=''
> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
> <Model:DataType.typeCode>
> <XMI.CorbaTypeCode>
> <XMI.CorbaTcAlias xmi.tcName='Geometry'
> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/Geometry:1.0 ' >
> <XMI.CorbaTypeCode>
> <XMI.CorbaTcString xmi.tcLength='0'/>
> </XMI.CorbaTypeCode>
> </XMI.CorbaTcAlias>
> </XMI.CorbaTypeCode>
> </Model:DataType.typeCode>
> </Model:DataType>
> <Model:Association xmi.id='a64' name='A_multiplicity_range'
> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
> visibility='public_vis' isDerived='false'>
> <Model:Namespace.contents>
> <Model:AssociationEnd xmi.id='a47' name='multiplicity'
> annotation='' isNavigable='true' aggregation='composite'
> isChangeable='true' type='a40'>
> <Model:AssociationEnd.multiplicity>
> <XMI.field>1</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:AssociationEnd.multiplicity>
> </Model:AssociationEnd>
> <Model:AssociationEnd xmi.id='a43' name='range' annotation=''
> isNavigable='true' aggregation='none' isChangeable='true' type='a42'>
> <Model:AssociationEnd.multiplicity>
> <XMI.field>1</XMI.field> <!-- lower -->
> <XMI.field>-1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>true</XMI.field> <!-- is_unique -->
> </Model:AssociationEnd.multiplicity>
> </Model:AssociationEnd>
> </Model:Namespace.contents>
> </Model:Association>
> </Model:Namespace.contents>
> </Model:Package>
> <Model:Package xmi.id='a6' name='Core' annotation='' isRoot='false'
> isLeaf='false' isAbstract='false' visibility='public_vis'>
> <Model:Namespace.contents>
> <Model:Tag xmi.id='a65'
> name='org.omg.mof.idl_prefix=org.omg.uml.Foundation' annotation=''
> tagId='org.omg.mof.idl_prefix' elements='a6'>
> <Model:Tag.values>
> <XMI.any xmi.type='string'>org.omg.uml.Foundation</XMI.any>
> </Model:Tag.values>
> </Model:Tag>
> <Model:Tag xmi.id='a66' name='org.omg.xmi.namespace=UML'
> annotation='' tagId='org.omg.xmi.namespace' elements='a6'>
> <Model:Tag.values>
> <XMI.any xmi.type='string'>UML</XMI.any>
> </Model:Tag.values>
> </Model:Tag>
> <Model:Class xmi.id='a67' name='Element' annotation=''
> isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis'
> isSingleton='false'>
> </Model:Class>
> <Model:Class xmi.id='a68' name='ModelElement' annotation=''
> isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis'
> isSingleton='false' supertypes='a67'>
> <Model:Namespace.contents>
> <Model:Attribute xmi.id='a69' name='name' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> isDerived='false' type='a39'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Attribute>
> <Model:Attribute xmi.id='a70' name='visibility' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> isDerived='false' type='a37'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Attribute>
> <Model:Attribute xmi.id='a71' name='isSpecification'
> annotation='' scope='instance_level' visibility='public_vis'
> isChangeable='true' isDerived='false' type='a26'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>1</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Attribute>
> <Model:Reference xmi.id='a72' name='namespace' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> type='a73' referencedEnd='a74'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Reference>
> <Model:Reference xmi.id='a75' name='clientDependency'
> annotation='' scope='instance_level' visibility='public_vis'
> isChangeable='true' type='a76' referencedEnd='a77'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>-1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>true</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Reference>
> <Model:Reference xmi.id='a78' name='constraint' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> type='a79' referencedEnd='a80'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>-1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>true</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Reference>
> <Model:Reference xmi.id='a81' name='targetFlow' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> type='a82' referencedEnd='a83'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>-1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>true</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Reference>
> <Model:Reference xmi.id='a84' name='sourceFlow' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> type='a82' referencedEnd='a85'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>-1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>true</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Reference>
> <Model:Reference xmi.id='a86' name='comment' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> type='a87' referencedEnd='a88'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>-1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>true</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Reference>
> <Model:Reference xmi.id='a89' name='templateParameter'
> annotation='' scope='instance_level' visibility='public_vis'
> isChangeable='true' type='a90' referencedEnd='a91'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>-1</XMI.field> <!-- upper -->
> <XMI.field>true</XMI.field> <!-- is_ordered -->
> <XMI.field>true</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Reference>
> <Model:Reference xmi.id='a92' name='stereotype' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> type='a93' referencedEnd='a94'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>-1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>true</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Reference>
> <Model:Reference xmi.id='a95' name='taggedValue' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> type='a96' referencedEnd='a97'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>-1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>true</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Reference>
> </Model:Namespace.contents>
> </Model:Class>
> <Model:Import xmi.id='a98' name='Data_Types' annotation=''
> visibility='public_vis' isClustered='true' importedNamespace='a4'>
> </Model:Import>
> <Model:Tag xmi.id='a99'
> name='org.omg.mof.idl_substitute_name=umlConstraint' annotation=''
> tagId='org.omg.mof.idl_substitute_name' elements='a78 a80'>
> <Model:Tag.values>
> <XMI.any xmi.type='string'>umlConstraint</XMI.any>
> </Model:Tag.values>
> </Model:Tag>
> <Model:Class xmi.id='a100' name='GeneralizableElement'
> annotation='' isRoot='false' isLeaf='false' isAbstract='true'
> visibility='public_vis' isSingleton='false' supertypes='a68'>
> <Model:Namespace.contents>
> <Model:Attribute xmi.id='a101' name='isRoot' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> isDerived='false' type='a26'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>1</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Attribute>
> <Model:Attribute xmi.id='a102' name='isLeaf' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> isDerived='false' type='a26'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>1</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Attribute>
> <Model:Attribute xmi.id='a103' name='isAbstract' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> isDerived='false' type='a26'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>1</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Attribute>
> <Model:Reference xmi.id='a104' name='generalization'
> annotation='' scope='instance_level' visibility='public_vis'
> isChangeable='true' type='a105' referencedEnd='a106'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>-1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>true</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Reference>
> </Model:Namespace.contents>
> </Model:Class>
> <Model:Class xmi.id='a73' name='Namespace' annotation=''
> isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis'
> isSingleton='false' supertypes='a68'>
> <Model:Namespace.contents>
> <Model:Reference xmi.id='a107' name='ownedElement'
> annotation='' scope='instance_level' visibility='public_vis'
> isChangeable='true' type='a68' referencedEnd='a108'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>-1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>true</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Reference>
> </Model:Namespace.contents>
> </Model:Class>
> <Model:Class xmi.id='a109' name='Classifier' annotation=''
> isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis'
> isSingleton='false' supertypes='a100 a73'>
> <Model:Namespace.contents>
> <Model:Reference xmi.id='a110' name='feature' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> type='a111' referencedEnd='a112'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>-1</XMI.field> <!-- upper -->
> <XMI.field>true</XMI.field> <!-- is_ordered -->
> <XMI.field>true</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Reference>
> <Model:Reference xmi.id='a113' name='powertypeRange'
> annotation='' scope='instance_level' visibility='public_vis'
> isChangeable='true' type='a105' referencedEnd='a114'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>-1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>true</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Reference>
> </Model:Namespace.contents>
> </Model:Class>
> <Model:Class xmi.id='a115' name='Class' annotation=''
> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
> isSingleton='false' supertypes='a109'>
> <Model:Namespace.contents>
> <Model:Attribute xmi.id='a116' name='isActive' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> isDerived='false' type='a26'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>1</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Attribute>
> </Model:Namespace.contents>
> </Model:Class>
> <Model:Class xmi.id='a117' name='DataType' annotation=''
> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
> isSingleton='false' supertypes='a109'>
> </Model:Class>
> <Model:Class xmi.id='a111' name='Feature' annotation=''
> isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis'
> isSingleton='false' supertypes='a68'>
> <Model:Namespace.contents>
> <Model:Attribute xmi.id='a118' name='ownerScope' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> isDerived='false' type='a35'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>1</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Attribute>
> <Model:Reference xmi.id='a119' name='owner' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> type='a109' referencedEnd='a120'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Reference>
> </Model:Namespace.contents>
> </Model:Class>
> <Model:Class xmi.id='a121' name='StructuralFeature' annotation=''
> isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis'
> isSingleton='false' supertypes='a111'>
> <Model:Namespace.contents>
> <Model:Attribute xmi.id='a122' name='multiplicity'
> annotation='' scope='instance_level' visibility='public_vis'
> isChangeable='true' isDerived='false' type='a40'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Attribute>
> <Model:Attribute xmi.id='a123' name='changeability'
> annotation='' scope='instance_level' visibility='public_vis'
> isChangeable='true' isDerived='false' type='a29'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Attribute>
> <Model:Attribute xmi.id='a124' name='targetScope' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> isDerived='false' type='a35'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Attribute>
> <Model:Attribute xmi.id='a125' name='ordering' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> isDerived='false' type='a31'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Attribute>
> <Model:Reference xmi.id='a126' name='type' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> type='a109' referencedEnd='a127'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>1</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Reference>
> </Model:Namespace.contents>
> </Model:Class>
> <Model:Class xmi.id='a128' name='AssociationEnd' annotation=''
> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
> isSingleton='false' supertypes='a68'>
> <Model:Namespace.contents>
> <Model:Attribute xmi.id='a129' name='isNavigable' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> isDerived='false' type='a26'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>1</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Attribute>
> <Model:Attribute xmi.id='a130' name='ordering' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> isDerived='false' type='a31'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Attribute>
> <Model:Attribute xmi.id='a131' name='aggregation' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> isDerived='false' type='a24'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Attribute>
> <Model:Attribute xmi.id='a132' name='targetScope' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> isDerived='false' type='a35'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Attribute>
> <Model:Attribute xmi.id='a133' name='multiplicity'
> annotation='' scope='instance_level' visibility='public_vis'
> isChangeable='true' isDerived='false' type='a40'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Attribute>
> <Model:Attribute xmi.id='a134' name='changeability'
> annotation='' scope='instance_level' visibility='public_vis'
> isChangeable='true' isDerived='false' type='a29'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Attribute>
> <Model:Reference xmi.id='a135' name='association' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> type='a136' referencedEnd='a137'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>1</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Reference>
> <Model:Reference xmi.id='a138' name='qualifier' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> type='a139' referencedEnd='a140'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>-1</XMI.field> <!-- upper -->
> <XMI.field>true</XMI.field> <!-- is_ordered -->
> <XMI.field>true</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Reference>
> <Model:Reference xmi.id='a141' name='partici
Re: [Epsilon] Using OCL in Meta-Model level [message #378025 is a reply to message #378020] Sat, 19 May 2007 21:20 Go to previous messageGo to next message
Dimitrios Kolovos is currently offline Dimitrios KolovosFriend
Messages: 1776
Registered: July 2009
Senior Member
Hi Bahman,

(A) describes *MOF itself* while (B) and (C) describe *UML using MOF*.
(The common *NamedElement* thing is a result of MOF emerging from UML at
some point, but you can consider it as an unlucky coincidence).

As for the differences between (B) and (C), with regard to the
attributes/references of the UML ModelElement, any differences may be
due to the fact that (B) refers to version 1.4 of UML and (C) to version
1.5. BTW, if you find/have the UML 1.5 metamodel in XMI, we can use it
to generate a similar javadoc-like set of pages.

As for the operations part, (B) doesn't document operations at all
because since MOF lacks an action semantics, MOF-level operations are
not executable - and thus useless to Epsilon.

I hope this helps.

Cheers,
Dimitrios

Bahman wrote:
> Hi Dimitrios,
>
> Thanks for the comment and the link.
> I'm not sure what makes me confused! Would you please consider the following
> concrete example and let me know your idea?
>
> A) Considering the MOF Model structure depicted by figure3-2 on page 3-13 of
> the MOF1.4 specification (http://www.omg.org/docs/formal/02-04-03.pdf), each
> Model Element has specific attributes, references, and operations (as
> explained in section 3.4.1).
> B) Considering the description of class ModelElement from the link you
> introduced (http://www-users.cs.york.ac.uk/~dkolovos/uml14/), the attributes
> and references are totally different than what is specified in (A).
> C) Considering UML1.5 metamodel of OCLE 2.0 tool, I find a class
> ModelElement with just one attribute (name) and six operations which seems
> almost different that operations or references in (A) or (B).
>
> best,
> Bahman
>
>
> "Dimitrios Kolovos" <dskolovos@gmail.com> wrote in message
> news:f2fjdg$p0d$1@build.eclipse.org...
>> Hi Bahman,
>>
>> The properties of each metaclass (e.g. Class, ModelElement etc) are
>> defined in the metamodel of the language. For ArgoUML the metamodel is a
>> MOF1.4/XMI 1.1 file (attached). From this, I've generated a set of
>> JavaDoc-like HTML pages available at
>> http://www-users.cs.york.ac.uk/~dkolovos/uml14/ which you may find more
>> usable than the XMI metamodel itself :)
>>
>> Cheers,
>> Dimitrios
>>
>> Bahman wrote:
>>> Hi everybody,
>>>
>>> I have a problem understanding how to use OCL (especially in MetaModel
>>> level), if you have time to guide me, that would be appreciated.
>>>
>>> So far I've worked with some tools such as ArgoUML (adding some critics
>>> to
>>> it), OCLE (checking OCLs in model level and metamodel level), and
>>> recently
>>> Epsilon (Adding some more functionalities on its ArgoUML version).
>>>
>>> My problem is that I don't know from where can I find all the OPERATIONS
>>> and
>>> FUNCTIONS that I can apply on a model (Meta-Model). Let me make it clear
>>> by
>>> an example:
>>>
>>> 1) In Epsilon, I've written the following operation to check whether or
>>> not
>>> a class own an attribute. But I knew nothing about the FEATURE property
>>> that
>>> could be applied on a class. I just found it by reviewing existing
>>> similar
>>> codes.
>>>
>>> operation Class hasAttribute (name : String) : Boolean {
>>> return self.feature.exists (a:Attribute | a.name = name);
>>> }
>>>
>>> 2) In ArgoUML, I had to write the following method to check the above
>>> condition. However, since it was in Eclipse, I could see which methods
>>> are
>>> available by Model's Facade class (thanks to Eclipse assistance).
>>>
>>> public static boolean classHasAtt (Object cls) {
>>> boolean found = false;
>>> Collection atts = Model.getFacade().getAttributes(cls);
>>> if ( atts.size() > 0 ) {
>>> found = true ;
>>> }
>>> return found;
>>> }
>>>
>>> Again my question is: "let say the context is a class, how can I access
>>> to
>>> all its attributes? its operations? its stereotypes?" The same question
>>> applies for every ModelElement.
>>>
>>> best,
>>> Bahman
>>>
>>>
>>>
>
>
> ------------------------------------------------------------ --------------------
>
>
>> <?xml version="1.0" encoding="UTF-8" ?>
>> <!-- <!DOCTYPE XMI SYSTEM 'Model.dtd'> -->
>> <XMI xmi.version='1.1' xmlns:Model='omg.org/mof.Model/1.3'>
>> <XMI.header>
>> <XMI.model xmi.name='UML' xmi.version='1.4'/>
>> <XMI.metamodel xmi.name='Model' xmi.version='1.3'/>
>> </XMI.header>
>> <XMI.content>
>> <Model:Package xmi.id='a0' name='UML' annotation='' isRoot='false'
>> isLeaf='false' isAbstract='false' visibility='public_vis'>
>> <Model:Namespace.contents>
>> <Model:Tag xmi.id='a1' name='org.omg.mof.idl_prefix=org.omg'
>> annotation='' tagId='org.omg.mof.idl_prefix' elements='a0'>
>> <Model:Tag.values>
>> <XMI.any xmi.type='string'>org.omg</XMI.any>
>> </Model:Tag.values>
>> </Model:Tag>
>> <Model:Tag xmi.id='a2' name='org.omg.xmi.namespace=UML'
>> annotation='' tagId='org.omg.xmi.namespace' elements='a0'>
>> <Model:Tag.values>
>> <XMI.any xmi.type='string'>UML</XMI.any>
>> </Model:Tag.values>
>> </Model:Tag>
>> <Model:Import xmi.id='a3' name='Data_Types' annotation=''
>> visibility='public_vis' isClustered='true' importedNamespace='a4'>
>> </Model:Import>
>> <Model:Import xmi.id='a5' name='Core' annotation=''
>> visibility='public_vis' isClustered='true' importedNamespace='a6'>
>> </Model:Import>
>> <Model:Import xmi.id='a7' name='Common_Behavior' annotation=''
>> visibility='public_vis' isClustered='true' importedNamespace='a8'>
>> </Model:Import>
>> <Model:Import xmi.id='a9' name='Use_Cases' annotation=''
>> visibility='public_vis' isClustered='true' importedNamespace='a10'>
>> </Model:Import>
>> <Model:Import xmi.id='a11' name='State_Machines' annotation=''
>> visibility='public_vis' isClustered='true' importedNamespace='a12'>
>> </Model:Import>
>> <Model:Import xmi.id='a13' name='Collaborations' annotation=''
>> visibility='public_vis' isClustered='true' importedNamespace='a14'>
>> </Model:Import>
>> <Model:Import xmi.id='a15' name='Activity_Graphs' annotation=''
>> visibility='public_vis' isClustered='true' importedNamespace='a16'>
>> </Model:Import>
>> <Model:Import xmi.id='a17' name='Model_Management' annotation=''
>> visibility='public_vis' isClustered='true' importedNamespace='a18'>
>> </Model:Import>
>> </Model:Namespace.contents>
>> </Model:Package>
>> <Model:Package xmi.id='a4' name='Data_Types' annotation=''
>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'>
>> <Model:Namespace.contents>
>> <Model:Tag xmi.id='a19'
>> name='org.omg.mof.idl_prefix=org.omg.uml.Foundation' annotation=''
>> tagId='org.omg.mof.idl_prefix' elements='a4'>
>> <Model:Tag.values>
>> <XMI.any xmi.type='string'>org.omg.uml.Foundation</XMI.any>
>> </Model:Tag.values>
>> </Model:Tag>
>> <Model:Tag xmi.id='a20' name='org.omg.xmi.namespace=UML'
>> annotation='' tagId='org.omg.xmi.namespace' elements='a4'>
>> <Model:Tag.values>
>> <XMI.any xmi.type='string'>UML</XMI.any>
>> </Model:Tag.values>
>> </Model:Tag>
>> <Model:DataType xmi.id='a21' name='Integer' annotation=''
>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>> <Model:DataType.typeCode>
>> <XMI.CorbaTypeCode>
>> <XMI.CorbaTcLong/>
>> </XMI.CorbaTypeCode>
>> </Model:DataType.typeCode>
>> </Model:DataType>
>> <Model:DataType xmi.id='a22' name='UnlimitedInteger' annotation=''
>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>> <Model:DataType.typeCode>
>> <XMI.CorbaTypeCode>
>> <XMI.CorbaTcAlias xmi.tcName='UnlimitedInteger'
>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/UnlimitedInt eger:1.0' >
>> <XMI.CorbaTypeCode>
>> <XMI.CorbaTcLong/>
>> </XMI.CorbaTypeCode>
>> </XMI.CorbaTcAlias>
>> </XMI.CorbaTypeCode>
>> </Model:DataType.typeCode>
>> </Model:DataType>
>> <Model:DataType xmi.id='a23' name='String' annotation=''
>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>> <Model:DataType.typeCode>
>> <XMI.CorbaTypeCode>
>> <XMI.CorbaTcString xmi.tcLength='0'/>
>> </XMI.CorbaTypeCode>
>> </Model:DataType.typeCode>
>> </Model:DataType>
>> <Model:DataType xmi.id='a24' name='AggregationKind' annotation=''
>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>> <Model:DataType.typeCode>
>> <XMI.CorbaTypeCode>
>> <XMI.CorbaTcEnum xmi.tcName='AggregationKind'
>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/AggregationK ind:1.0' >
>> <XMI.CorbaTcEnumLabel xmi.tcName='ak_none'/>
>> <XMI.CorbaTcEnumLabel xmi.tcName='ak_aggregate'/>
>> <XMI.CorbaTcEnumLabel xmi.tcName='ak_composite'/>
>> </XMI.CorbaTcEnum>
>> </XMI.CorbaTypeCode>
>> </Model:DataType.typeCode>
>> </Model:DataType>
>> <Model:Tag xmi.id='a25' name='org.omg.xmi.enumerationUnprefix=ak_'
>> annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a24'>
>> <Model:Tag.values>
>> <XMI.any xmi.type='string'>ak_</XMI.any>
>> </Model:Tag.values>
>> </Model:Tag>
>> <Model:DataType xmi.id='a26' name='Boolean' annotation=''
>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>> <Model:DataType.typeCode>
>> <XMI.CorbaTypeCode>
>> <XMI.CorbaTcBoolean/>
>> </XMI.CorbaTypeCode>
>> </Model:DataType.typeCode>
>> </Model:DataType>
>> <Model:DataType xmi.id='a27' name='CallConcurrencyKind'
>> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
>> visibility='public_vis'>
>> <Model:DataType.typeCode>
>> <XMI.CorbaTypeCode>
>> <XMI.CorbaTcEnum xmi.tcName='CallConcurrencyKind'
>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/CallConcurre ncyKind:1.0' >
>> <XMI.CorbaTcEnumLabel xmi.tcName='cck_sequential'/>
>> <XMI.CorbaTcEnumLabel xmi.tcName='cck_guarded'/>
>> <XMI.CorbaTcEnumLabel xmi.tcName='cck_concurrent'/>
>> </XMI.CorbaTcEnum>
>> </XMI.CorbaTypeCode>
>> </Model:DataType.typeCode>
>> </Model:DataType>
>> <Model:Tag xmi.id='a28' name='org.omg.xmi.enumerationUnprefix=cck_'
>> annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a27'>
>> <Model:Tag.values>
>> <XMI.any xmi.type='string'>cck_</XMI.any>
>> </Model:Tag.values>
>> </Model:Tag>
>> <Model:DataType xmi.id='a29' name='ChangeableKind' annotation=''
>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>> <Model:DataType.typeCode>
>> <XMI.CorbaTypeCode>
>> <XMI.CorbaTcEnum xmi.tcName='ChangeableKind'
>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/ChangeableKi nd:1.0' >
>> <XMI.CorbaTcEnumLabel xmi.tcName='ck_changeable'/>
>> <XMI.CorbaTcEnumLabel xmi.tcName='ck_frozen'/>
>> <XMI.CorbaTcEnumLabel xmi.tcName='ck_addOnly'/>
>> </XMI.CorbaTcEnum>
>> </XMI.CorbaTypeCode>
>> </Model:DataType.typeCode>
>> </Model:DataType>
>> <Model:Tag xmi.id='a30' name='org.omg.xmi.enumerationUnprefix=ck_'
>> annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a29'>
>> <Model:Tag.values>
>> <XMI.any xmi.type='string'>ck_</XMI.any>
>> </Model:Tag.values>
>> </Model:Tag>
>> <Model:DataType xmi.id='a31' name='OrderingKind' annotation=''
>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>> <Model:DataType.typeCode>
>> <XMI.CorbaTypeCode>
>> <XMI.CorbaTcEnum xmi.tcName='OrderingKind'
>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/OrderingKind :1.0' >
>> <XMI.CorbaTcEnumLabel xmi.tcName='ok_unordered'/>
>> <XMI.CorbaTcEnumLabel xmi.tcName='ok_ordered'/>
>> </XMI.CorbaTcEnum>
>> </XMI.CorbaTypeCode>
>> </Model:DataType.typeCode>
>> </Model:DataType>
>> <Model:Tag xmi.id='a32' name='org.omg.xmi.enumerationUnprefix=ok_'
>> annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a31'>
>> <Model:Tag.values>
>> <XMI.any xmi.type='string'>ok_</XMI.any>
>> </Model:Tag.values>
>> </Model:Tag>
>> <Model:DataType xmi.id='a33' name='ParameterDirectionKind'
>> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
>> visibility='public_vis'>
>> <Model:DataType.typeCode>
>> <XMI.CorbaTypeCode>
>> <XMI.CorbaTcEnum xmi.tcName='ParameterDirectionKind'
>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/ParameterDir ectionKind:1.0' >
>> <XMI.CorbaTcEnumLabel xmi.tcName='pdk_in'/>
>> <XMI.CorbaTcEnumLabel xmi.tcName='pdk_inout'/>
>> <XMI.CorbaTcEnumLabel xmi.tcName='pdk_out'/>
>> <XMI.CorbaTcEnumLabel xmi.tcName='pdk_return'/>
>> </XMI.CorbaTcEnum>
>> </XMI.CorbaTypeCode>
>> </Model:DataType.typeCode>
>> </Model:DataType>
>> <Model:Tag xmi.id='a34' name='org.omg.xmi.enumerationUnprefix=pdk_'
>> annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a33'>
>> <Model:Tag.values>
>> <XMI.any xmi.type='string'>pdk_</XMI.any>
>> </Model:Tag.values>
>> </Model:Tag>
>> <Model:DataType xmi.id='a35' name='ScopeKind' annotation=''
>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>> <Model:DataType.typeCode>
>> <XMI.CorbaTypeCode>
>> <XMI.CorbaTcEnum xmi.tcName='ScopeKind'
>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/ScopeKind:1. 0' >
>> <XMI.CorbaTcEnumLabel xmi.tcName='sk_instance'/>
>> <XMI.CorbaTcEnumLabel xmi.tcName='sk_classifier'/>
>> </XMI.CorbaTcEnum>
>> </XMI.CorbaTypeCode>
>> </Model:DataType.typeCode>
>> </Model:DataType>
>> <Model:Tag xmi.id='a36' name='org.omg.xmi.enumerationUnprefix=sk_'
>> annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a35'>
>> <Model:Tag.values>
>> <XMI.any xmi.type='string'>sk_</XMI.any>
>> </Model:Tag.values>
>> </Model:Tag>
>> <Model:DataType xmi.id='a37' name='VisibilityKind' annotation=''
>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>> <Model:DataType.typeCode>
>> <XMI.CorbaTypeCode>
>> <XMI.CorbaTcEnum xmi.tcName='VisibilityKind'
>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/VisibilityKi nd:1.0' >
>> <XMI.CorbaTcEnumLabel xmi.tcName='vk_public'/>
>> <XMI.CorbaTcEnumLabel xmi.tcName='vk_protected'/>
>> <XMI.CorbaTcEnumLabel xmi.tcName='vk_private'/>
>> <XMI.CorbaTcEnumLabel xmi.tcName='vk_package'/>
>> </XMI.CorbaTcEnum>
>> </XMI.CorbaTypeCode>
>> </Model:DataType.typeCode>
>> </Model:DataType>
>> <Model:Tag xmi.id='a38' name='org.omg.xmi.enumerationUnprefix=vk_'
>> annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a37'>
>> <Model:Tag.values>
>> <XMI.any xmi.type='string'>vk_</XMI.any>
>> </Model:Tag.values>
>> </Model:Tag>
>> <Model:DataType xmi.id='a39' name='Name' annotation=''
>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>> <Model:DataType.typeCode>
>> <XMI.CorbaTypeCode>
>> <XMI.CorbaTcAlias xmi.tcName='Name'
>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/Name:1.0'>
>> <XMI.CorbaTypeCode>
>> <XMI.CorbaTcString xmi.tcLength='0'/>
>> </XMI.CorbaTypeCode>
>> </XMI.CorbaTcAlias>
>> </XMI.CorbaTypeCode>
>> </Model:DataType.typeCode>
>> </Model:DataType>
>> <Model:Class xmi.id='a40' name='Multiplicity' annotation=''
>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>> isSingleton='false'>
>> <Model:Namespace.contents>
>> <Model:Reference xmi.id='a41' name='range' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> type='a42' referencedEnd='a43'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>1</XMI.field> <!-- lower -->
>> <XMI.field>-1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>true</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Reference>
>> </Model:Namespace.contents>
>> </Model:Class>
>> <Model:Class xmi.id='a42' name='MultiplicityRange' annotation=''
>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>> isSingleton='false'>
>> <Model:Namespace.contents>
>> <Model:Attribute xmi.id='a44' name='lower' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> isDerived='false' type='a21'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>1</XMI.field> <!-- lower -->
>> <XMI.field>1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>false</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Attribute>
>> <Model:Attribute xmi.id='a45' name='upper' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> isDerived='false' type='a22'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>1</XMI.field> <!-- lower -->
>> <XMI.field>1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>false</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Attribute>
>> <Model:Reference xmi.id='a46' name='multiplicity' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> type='a40' referencedEnd='a47'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>1</XMI.field> <!-- lower -->
>> <XMI.field>1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>false</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Reference>
>> </Model:Namespace.contents>
>> </Model:Class>
>> <Model:Class xmi.id='a48' name='Expression' annotation=''
>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>> isSingleton='false'>
>> <Model:Namespace.contents>
>> <Model:Attribute xmi.id='a49' name='language' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> isDerived='false' type='a39'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>0</XMI.field> <!-- lower -->
>> <XMI.field>1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>false</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Attribute>
>> <Model:Attribute xmi.id='a50' name='body' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> isDerived='false' type='a23'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>1</XMI.field> <!-- lower -->
>> <XMI.field>1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>false</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Attribute>
>> </Model:Namespace.contents>
>> </Model:Class>
>> <Model:Class xmi.id='a51' name='BooleanExpression' annotation=''
>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>> isSingleton='false' supertypes='a48'>
>> </Model:Class>
>> <Model:Class xmi.id='a52' name='TypeExpression' annotation=''
>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>> isSingleton='false' supertypes='a48'>
>> </Model:Class>
>> <Model:Class xmi.id='a53' name='MappingExpression' annotation=''
>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>> isSingleton='false' supertypes='a48'>
>> </Model:Class>
>> <Model:Class xmi.id='a54' name='ProcedureExpression' annotation=''
>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>> isSingleton='false' supertypes='a48'>
>> </Model:Class>
>> <Model:Class xmi.id='a55' name='ObjectSetExpression' annotation=''
>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>> isSingleton='false' supertypes='a48'>
>> </Model:Class>
>> <Model:Class xmi.id='a56' name='ActionExpression' annotation=''
>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>> isSingleton='false' supertypes='a48'>
>> </Model:Class>
>> <Model:Class xmi.id='a57' name='IterationExpression' annotation=''
>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>> isSingleton='false' supertypes='a48'>
>> </Model:Class>
>> <Model:Class xmi.id='a58' name='TimeExpression' annotation=''
>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>> isSingleton='false' supertypes='a48'>
>> </Model:Class>
>> <Model:Class xmi.id='a59' name='ArgListsExpression' annotation=''
>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>> isSingleton='false' supertypes='a48'>
>> </Model:Class>
>> <Model:DataType xmi.id='a60' name='LocationReference' annotation=''
>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>> <Model:DataType.typeCode>
>> <XMI.CorbaTypeCode>
>> <XMI.CorbaTcAlias xmi.tcName='LocationReference'
>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/LocationRefe rence:1.0' >
>> <XMI.CorbaTypeCode>
>> <XMI.CorbaTcString xmi.tcLength='0'/>
>> </XMI.CorbaTypeCode>
>> </XMI.CorbaTcAlias>
>> </XMI.CorbaTypeCode>
>> </Model:DataType.typeCode>
>> </Model:DataType>
>> <Model:DataType xmi.id='a61' name='PseudostateKind' annotation=''
>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>> <Model:DataType.typeCode>
>> <XMI.CorbaTypeCode>
>> <XMI.CorbaTcEnum xmi.tcName='PseudostateKind'
>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/PseudostateK ind:1.0' >
>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_choice'/>
>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_deepHistory'/>
>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_fork'/>
>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_initial'/>
>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_join'/>
>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_junction'/>
>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_shallowHistory'/>
>> </XMI.CorbaTcEnum>
>> </XMI.CorbaTypeCode>
>> </Model:DataType.typeCode>
>> </Model:DataType>
>> <Model:Tag xmi.id='a62' name='org.omg.xmi.enumerationUnprefix=pk_'
>> annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a61'>
>> <Model:Tag.values>
>> <XMI.any xmi.type='string'>pk_</XMI.any>
>> </Model:Tag.values>
>> </Model:Tag>
>> <Model:DataType xmi.id='a63' name='Geometry' annotation=''
>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>> <Model:DataType.typeCode>
>> <XMI.CorbaTypeCode>
>> <XMI.CorbaTcAlias xmi.tcName='Geometry'
>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/Geometry:1.0 ' >
>> <XMI.CorbaTypeCode>
>> <XMI.CorbaTcString xmi.tcLength='0'/>
>> </XMI.CorbaTypeCode>
>> </XMI.CorbaTcAlias>
>> </XMI.CorbaTypeCode>
>> </Model:DataType.typeCode>
>> </Model:DataType>
>> <Model:Association xmi.id='a64' name='A_multiplicity_range'
>> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
>> visibility='public_vis' isDerived='false'>
>> <Model:Namespace.contents>
>> <Model:AssociationEnd xmi.id='a47' name='multiplicity'
>> annotation='' isNavigable='true' aggregation='composite'
>> isChangeable='true' type='a40'>
>> <Model:AssociationEnd.multiplicity>
>> <XMI.field>1</XMI.field> <!-- lower -->
>> <XMI.field>1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>false</XMI.field> <!-- is_unique -->
>> </Model:AssociationEnd.multiplicity>
>> </Model:AssociationEnd>
>> <Model:AssociationEnd xmi.id='a43' name='range' annotation=''
>> isNavigable='true' aggregation='none' isChangeable='true' type='a42'>
>> <Model:AssociationEnd.multiplicity>
>> <XMI.field>1</XMI.field> <!-- lower -->
>> <XMI.field>-1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>true</XMI.field> <!-- is_unique -->
>> </Model:AssociationEnd.multiplicity>
>> </Model:AssociationEnd>
>> </Model:Namespace.contents>
>> </Model:Association>
>> </Model:Namespace.contents>
>> </Model:Package>
>> <Model:Package xmi.id='a6' name='Core' annotation='' isRoot='false'
>> isLeaf='false' isAbstract='false' visibility='public_vis'>
>> <Model:Namespace.contents>
>> <Model:Tag xmi.id='a65'
>> name='org.omg.mof.idl_prefix=org.omg.uml.Foundation' annotation=''
>> tagId='org.omg.mof.idl_prefix' elements='a6'>
>> <Model:Tag.values>
>> <XMI.any xmi.type='string'>org.omg.uml.Foundation</XMI.any>
>> </Model:Tag.values>
>> </Model:Tag>
>> <Model:Tag xmi.id='a66' name='org.omg.xmi.namespace=UML'
>> annotation='' tagId='org.omg.xmi.namespace' elements='a6'>
>> <Model:Tag.values>
>> <XMI.any xmi.type='string'>UML</XMI.any>
>> </Model:Tag.values>
>> </Model:Tag>
>> <Model:Class xmi.id='a67' name='Element' annotation=''
>> isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis'
>> isSingleton='false'>
>> </Model:Class>
>> <Model:Class xmi.id='a68' name='ModelElement' annotation=''
>> isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis'
>> isSingleton='false' supertypes='a67'>
>> <Model:Namespace.contents>
>> <Model:Attribute xmi.id='a69' name='name' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> isDerived='false' type='a39'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>0</XMI.field> <!-- lower -->
>> <XMI.field>1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>false</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Attribute>
>> <Model:Attribute xmi.id='a70' name='visibility' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> isDerived='false' type='a37'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>0</XMI.field> <!-- lower -->
>> <XMI.field>1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>false</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Attribute>
>> <Model:Attribute xmi.id='a71' name='isSpecification'
>> annotation='' scope='instance_level' visibility='public_vis'
>> isChangeable='true' isDerived='false' type='a26'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>1</XMI.field> <!-- lower -->
>> <XMI.field>1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>false</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Attribute>
>> <Model:Reference xmi.id='a72' name='namespace' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> type='a73' referencedEnd='a74'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>0</XMI.field> <!-- lower -->
>> <XMI.field>1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>false</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Reference>
>> <Model:Reference xmi.id='a75' name='clientDependency'
>> annotation='' scope='instance_level' visibility='public_vis'
>> isChangeable='true' type='a76' referencedEnd='a77'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>0</XMI.field> <!-- lower -->
>> <XMI.field>-1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>true</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Reference>
>> <Model:Reference xmi.id='a78' name='constraint' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> type='a79' referencedEnd='a80'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>0</XMI.field> <!-- lower -->
>> <XMI.field>-1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>true</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Reference>
>> <Model:Reference xmi.id='a81' name='targetFlow' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> type='a82' referencedEnd='a83'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>0</XMI.field> <!-- lower -->
>> <XMI.field>-1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>true</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Reference>
>> <Model:Reference xmi.id='a84' name='sourceFlow' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> type='a82' referencedEnd='a85'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>0</XMI.field> <!-- lower -->
>> <XMI.field>-1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>true</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Reference>
>> <Model:Reference xmi.id='a86' name='comment' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> type='a87' referencedEnd='a88'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>0</XMI.field> <!-- lower -->
>> <XMI.field>-1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>true</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Reference>
>> <Model:Reference xmi.id='a89' name='templateParameter'
>> annotation='' scope='instance_level' visibility='public_vis'
>> isChangeable='true' type='a90' referencedEnd='a91'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>0</XMI.field> <!-- lower -->
>> <XMI.field>-1</XMI.field> <!-- upper -->
>> <XMI.field>true</XMI.field> <!-- is_ordered -->
>> <XMI.field>true</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Reference>
>> <Model:Reference xmi.id='a92' name='stereotype' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> type='a93' referencedEnd='a94'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>0</XMI.field> <!-- lower -->
>> <XMI.field>-1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>true</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Reference>
>> <Model:Reference xmi.id='a95' name='taggedValue' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> type='a96' referencedEnd='a97'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>0</XMI.field> <!-- lower -->
>> <XMI.field>-1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>true</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Reference>
>> </Model:Namespace.contents>
>> </Model:Class>
>> <Model:Import xmi.id='a98' name='Data_Types' annotation=''
>> visibility='public_vis' isClustered='true' importedNamespace='a4'>
>> </Model:Import>
>> <Model:Tag xmi.id='a99'
>> name='org.omg.mof.idl_substitute_name=umlConstraint' annotation=''
>> tagId='org.omg.mof.idl_substitute_name' elements='a78 a80'>
>> <Model:Tag.values>
>> <XMI.any xmi.type='string'>umlConstraint</XMI.any>
>> </Model:Tag.values>
>> </Model:Tag>
>> <Model:Class xmi.id='a100' name='GeneralizableElement'
>> annotation='' isRoot='false' isLeaf='false' isAbstract='true'
>> visibility='public_vis' isSingleton='false' supertypes='a68'>
>> <Model:Namespace.contents>
>> <Model:Attribute xmi.id='a101' name='isRoot' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> isDerived='false' type='a26'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>1</XMI.field> <!-- lower -->
>> <XMI.field>1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>false</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Attribute>
>> <Model:Attribute xmi.id='a102' name='isLeaf' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> isDerived='false' type='a26'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>1</XMI.field> <!-- lower -->
>> <XMI.field>1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>false</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Attribute>
>> <Model:Attribute xmi.id='a103' name='isAbstract' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> isDerived='false' type='a26'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>1</XMI.field> <!-- lower -->
>> <XMI.field>1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>false</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Attribute>
>> <Model:Reference xmi.id='a104' name='generalization'
>> annotation='' scope='instance_level' visibility='public_vis'
>> isChangeable='true' type='a105' referencedEnd='a106'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>0</XMI.field> <!-- lower -->
>> <XMI.field>-1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>true</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Reference>
>> </Model:Namespace.contents>
>> </Model:Class>
>> <Model:Class xmi.id='a73' name='Namespace' annotation=''
>> isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis'
>> isSingleton='false' supertypes='a68'>
>> <Model:Namespace.contents>
>> <Model:Reference xmi.id='a107' name='ownedElement'
>> annotation='' scope='instance_level' visibility='public_vis'
>> isChangeable='true' type='a68' referencedEnd='a108'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>0</XMI.field> <!-- lower -->
>> <XMI.field>-1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>true</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Reference>
>> </Model:Namespace.contents>
>> </Model:Class>
>> <Model:Class xmi.id='a109' name='Classifier' annotation=''
>> isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis'
>> isSingleton='false' supertypes='a100 a73'>
>> <Model:Namespace.contents>
>> <Model:Reference xmi.id='a110' name='feature' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> type='a111' referencedEnd='a112'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>0</XMI.field> <!-- lower -->
>> <XMI.field>-1</XMI.field> <!-- upper -->
>> <XMI.field>true</XMI.field> <!-- is_ordered -->
>> <XMI.field>true</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Reference>
>> <Model:Reference xmi.id='a113' name='powertypeRange'
>> annotation='' scope='instance_level' visibility='public_vis'
>> isChangeable='true' type='a105' referencedEnd='a114'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>0</XMI.field> <!-- lower -->
>> <XMI.field>-1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>true</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Reference>
>> </Model:Namespace.contents>
>> </Model:Class>
>> <Model:Class xmi.id='a115' name='Class' annotation=''
>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>> isSingleton='false' supertypes='a109'>
>> <Model:Namespace.contents>
>> <Model:Attribute xmi.id='a116' name='isActive' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> isDerived='false' type='a26'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>1</XMI.field> <!-- lower -->
>> <XMI.field>1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>false</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Attribute>
>> </Model:Namespace.contents>
>> </Model:Class>
>> <Model:Class xmi.id='a117' name='DataType' annotation=''
>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>> isSingleton='false' supertypes='a109'>
>> </Model:Class>
>> <Model:Class xmi.id='a111' name='Feature' annotation=''
>> isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis'
>> isSingleton='false' supertypes='a68'>
>> <Model:Namespace.contents>
>> <Model:Attribute xmi.id='a118' name='ownerScope' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> isDerived='false' type='a35'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>1</XMI.field> <!-- lower -->
>> <XMI.field>1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>false</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Attribute>
>> <Model:Reference xmi.id='a119' name='owner' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> type='a109' referencedEnd='a120'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>0</XMI.field> <!-- lower -->
>> <XMI.field>1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>false</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Reference>
>> </Model:Namespace.contents>
>> </Model:Class>
>> <Model:Class xmi.id='a121' name='StructuralFeature' annotation=''
>> isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis'
>> isSingleton='false' supertypes='a111'>
>> <Model:Namespace.contents>
>> <Model:Attribute xmi.id='a122' name='multiplicity'
>> annotation='' scope='instance_level' visibility='public_vis'
>> isChangeable='true' isDerived='false' type='a40'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>0</XMI.field> <!-- lower -->
>> <XMI.field>1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>false</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Attribute>
>> <Model:Attribute xmi.id='a123' name='changeability'
>> annotation='' scope='instance_level' visibility='public_vis'
>> isChangeable='true' isDerived='false' type='a29'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>0</XMI.field> <!-- lower -->
>> <XMI.field>1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>false</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Attribute>
>> <Model:Attribute xmi.id='a124' name='targetScope' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> isDerived='false' type='a35'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>0</XMI.field> <!-- lower -->
>> <XMI.field>1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>false</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Attribute>
>> <Model:Attribute xmi.id='a125' name='ordering' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> isDerived='false' type='a31'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>0</XMI.field> <!-- lower -->
>> <XMI.field>1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>false</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Attribute>
>> <Model:Reference xmi.id='a126' name='type' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> type='a109' referencedEnd='a127'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>1</XMI.field> <!-- lower -->
>> <XMI.field>1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>false</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Reference>
>> </Model:Namespace.contents>
>> </Model:Class>
>> <Model:Class xmi.id='a128' name='AssociationEnd' annotation=''
>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>> isSingleton='false' supertypes='a68'>
>> <Model:Namespace.contents>
>> <Model:Attribute xmi.id='a129' name='isNavigable' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> isDerived='false' type='a26'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>1</XMI.field> <!-- lower -->
>> <XMI.field>1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>false</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Attribute>
>> <Model:Attribute xmi.id='a130' name='ordering' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> isDerived='false' type='a31'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>0</XMI.field> <!-- lower -->
>> <XMI.field>1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>false</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Attribute>
>> <Model:Attribute xmi.id='a131' name='aggregation' annotation=''
>> scope='instance_level' visibi
Re: [Epsilon] Using OCL in Meta-Model level [message #378026 is a reply to message #378025] Sat, 19 May 2007 22:32 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: b_zamani.encs.concordia.ca

Hi Dimitrios,

For A&B) My understanding was that since MOF1.4 is the metamodel of UML1.4,
everybody who wants to implement MOF1.4, should consider its structure (e.g.
Model structure depicted in figure3-2) and implement it. So, I expected to
see the same attributes and operations as there is in that figure.
For B&C) It's true that B is for UML1.4 and C is for UML1.5, but I don't
think there should be so much changes from 1.4 to 1.5! Do you?

best,
Bahman


"Dimitrios Kolovos" <dskolovos@gmail.com> wrote in message
news:f2npn3$6um$1@build.eclipse.org...
> Hi Bahman,
>
> (A) describes *MOF itself* while (B) and (C) describe *UML using MOF*.
> (The common *NamedElement* thing is a result of MOF emerging from UML at
> some point, but you can consider it as an unlucky coincidence).
>
> As for the differences between (B) and (C), with regard to the
> attributes/references of the UML ModelElement, any differences may be due
> to the fact that (B) refers to version 1.4 of UML and (C) to version 1.5.
> BTW, if you find/have the UML 1.5 metamodel in XMI, we can use it to
> generate a similar javadoc-like set of pages.
>
> As for the operations part, (B) doesn't document operations at all because
> since MOF lacks an action semantics, MOF-level operations are not
> executable - and thus useless to Epsilon.
>
> I hope this helps.
>
> Cheers,
> Dimitrios
>
> Bahman wrote:
>> Hi Dimitrios,
>>
>> Thanks for the comment and the link.
>> I'm not sure what makes me confused! Would you please consider the
>> following concrete example and let me know your idea?
>>
>> A) Considering the MOF Model structure depicted by figure3-2 on page 3-13
>> of the MOF1.4 specification
>> (http://www.omg.org/docs/formal/02-04-03.pdf), each Model Element has
>> specific attributes, references, and operations (as explained in section
>> 3.4.1).
>> B) Considering the description of class ModelElement from the link you
>> introduced (http://www-users.cs.york.ac.uk/~dkolovos/uml14/), the
>> attributes and references are totally different than what is specified in
>> (A).
>> C) Considering UML1.5 metamodel of OCLE 2.0 tool, I find a class
>> ModelElement with just one attribute (name) and six operations which
>> seems almost different that operations or references in (A) or (B).
>>
>> best,
>> Bahman
>>
>>
>> "Dimitrios Kolovos" <dskolovos@gmail.com> wrote in message
>> news:f2fjdg$p0d$1@build.eclipse.org...
>>> Hi Bahman,
>>>
>>> The properties of each metaclass (e.g. Class, ModelElement etc) are
>>> defined in the metamodel of the language. For ArgoUML the metamodel is a
>>> MOF1.4/XMI 1.1 file (attached). From this, I've generated a set of
>>> JavaDoc-like HTML pages available at
>>> http://www-users.cs.york.ac.uk/~dkolovos/uml14/ which you may find more
>>> usable than the XMI metamodel itself :)
>>>
>>> Cheers,
>>> Dimitrios
>>>
>>> Bahman wrote:
>>>> Hi everybody,
>>>>
>>>> I have a problem understanding how to use OCL (especially in MetaModel
>>>> level), if you have time to guide me, that would be appreciated.
>>>>
>>>> So far I've worked with some tools such as ArgoUML (adding some critics
>>>> to
>>>> it), OCLE (checking OCLs in model level and metamodel level), and
>>>> recently
>>>> Epsilon (Adding some more functionalities on its ArgoUML version).
>>>>
>>>> My problem is that I don't know from where can I find all the
>>>> OPERATIONS and
>>>> FUNCTIONS that I can apply on a model (Meta-Model). Let me make it
>>>> clear by
>>>> an example:
>>>>
>>>> 1) In Epsilon, I've written the following operation to check whether or
>>>> not
>>>> a class own an attribute. But I knew nothing about the FEATURE property
>>>> that
>>>> could be applied on a class. I just found it by reviewing existing
>>>> similar
>>>> codes.
>>>>
>>>> operation Class hasAttribute (name : String) : Boolean {
>>>> return self.feature.exists (a:Attribute | a.name = name);
>>>> }
>>>>
>>>> 2) In ArgoUML, I had to write the following method to check the above
>>>> condition. However, since it was in Eclipse, I could see which methods
>>>> are
>>>> available by Model's Facade class (thanks to Eclipse assistance).
>>>>
>>>> public static boolean classHasAtt (Object cls) {
>>>> boolean found = false;
>>>> Collection atts = Model.getFacade().getAttributes(cls);
>>>> if ( atts.size() > 0 ) {
>>>> found = true ;
>>>> }
>>>> return found;
>>>> }
>>>>
>>>> Again my question is: "let say the context is a class, how can I access
>>>> to
>>>> all its attributes? its operations? its stereotypes?" The same question
>>>> applies for every ModelElement.
>>>>
>>>> best,
>>>> Bahman
>>>>
>>>>
>>>>
>>
>>
>> ------------------------------------------------------------ --------------------
>>
>>
>>> <?xml version="1.0" encoding="UTF-8" ?>
>>> <!-- <!DOCTYPE XMI SYSTEM 'Model.dtd'> -->
>>> <XMI xmi.version='1.1' xmlns:Model='omg.org/mof.Model/1.3'>
>>> <XMI.header>
>>> <XMI.model xmi.name='UML' xmi.version='1.4'/>
>>> <XMI.metamodel xmi.name='Model' xmi.version='1.3'/>
>>> </XMI.header>
>>> <XMI.content>
>>> <Model:Package xmi.id='a0' name='UML' annotation='' isRoot='false'
>>> isLeaf='false' isAbstract='false' visibility='public_vis'>
>>> <Model:Namespace.contents>
>>> <Model:Tag xmi.id='a1' name='org.omg.mof.idl_prefix=org.omg'
>>> annotation='' tagId='org.omg.mof.idl_prefix' elements='a0'>
>>> <Model:Tag.values>
>>> <XMI.any xmi.type='string'>org.omg</XMI.any>
>>> </Model:Tag.values>
>>> </Model:Tag>
>>> <Model:Tag xmi.id='a2' name='org.omg.xmi.namespace=UML'
>>> annotation='' tagId='org.omg.xmi.namespace' elements='a0'>
>>> <Model:Tag.values>
>>> <XMI.any xmi.type='string'>UML</XMI.any>
>>> </Model:Tag.values>
>>> </Model:Tag>
>>> <Model:Import xmi.id='a3' name='Data_Types' annotation=''
>>> visibility='public_vis' isClustered='true' importedNamespace='a4'>
>>> </Model:Import>
>>> <Model:Import xmi.id='a5' name='Core' annotation=''
>>> visibility='public_vis' isClustered='true' importedNamespace='a6'>
>>> </Model:Import>
>>> <Model:Import xmi.id='a7' name='Common_Behavior' annotation=''
>>> visibility='public_vis' isClustered='true' importedNamespace='a8'>
>>> </Model:Import>
>>> <Model:Import xmi.id='a9' name='Use_Cases' annotation=''
>>> visibility='public_vis' isClustered='true' importedNamespace='a10'>
>>> </Model:Import>
>>> <Model:Import xmi.id='a11' name='State_Machines' annotation=''
>>> visibility='public_vis' isClustered='true' importedNamespace='a12'>
>>> </Model:Import>
>>> <Model:Import xmi.id='a13' name='Collaborations' annotation=''
>>> visibility='public_vis' isClustered='true' importedNamespace='a14'>
>>> </Model:Import>
>>> <Model:Import xmi.id='a15' name='Activity_Graphs' annotation=''
>>> visibility='public_vis' isClustered='true' importedNamespace='a16'>
>>> </Model:Import>
>>> <Model:Import xmi.id='a17' name='Model_Management' annotation=''
>>> visibility='public_vis' isClustered='true' importedNamespace='a18'>
>>> </Model:Import>
>>> </Model:Namespace.contents>
>>> </Model:Package>
>>> <Model:Package xmi.id='a4' name='Data_Types' annotation=''
>>> isRoot='false' isLeaf='false' isAbstract='false'
>>> visibility='public_vis'>
>>> <Model:Namespace.contents>
>>> <Model:Tag xmi.id='a19'
>>> name='org.omg.mof.idl_prefix=org.omg.uml.Foundation' annotation=''
>>> tagId='org.omg.mof.idl_prefix' elements='a4'>
>>> <Model:Tag.values>
>>> <XMI.any xmi.type='string'>org.omg.uml.Foundation</XMI.any>
>>> </Model:Tag.values>
>>> </Model:Tag>
>>> <Model:Tag xmi.id='a20' name='org.omg.xmi.namespace=UML'
>>> annotation='' tagId='org.omg.xmi.namespace' elements='a4'>
>>> <Model:Tag.values>
>>> <XMI.any xmi.type='string'>UML</XMI.any>
>>> </Model:Tag.values>
>>> </Model:Tag>
>>> <Model:DataType xmi.id='a21' name='Integer' annotation=''
>>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>>> <Model:DataType.typeCode>
>>> <XMI.CorbaTypeCode>
>>> <XMI.CorbaTcLong/>
>>> </XMI.CorbaTypeCode>
>>> </Model:DataType.typeCode>
>>> </Model:DataType>
>>> <Model:DataType xmi.id='a22' name='UnlimitedInteger'
>>> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
>>> visibility='public_vis'>
>>> <Model:DataType.typeCode>
>>> <XMI.CorbaTypeCode>
>>> <XMI.CorbaTcAlias xmi.tcName='UnlimitedInteger'
>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/UnlimitedInt eger:1.0' >
>>> <XMI.CorbaTypeCode>
>>> <XMI.CorbaTcLong/>
>>> </XMI.CorbaTypeCode>
>>> </XMI.CorbaTcAlias>
>>> </XMI.CorbaTypeCode>
>>> </Model:DataType.typeCode>
>>> </Model:DataType>
>>> <Model:DataType xmi.id='a23' name='String' annotation=''
>>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>>> <Model:DataType.typeCode>
>>> <XMI.CorbaTypeCode>
>>> <XMI.CorbaTcString xmi.tcLength='0'/>
>>> </XMI.CorbaTypeCode>
>>> </Model:DataType.typeCode>
>>> </Model:DataType>
>>> <Model:DataType xmi.id='a24' name='AggregationKind' annotation=''
>>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>>> <Model:DataType.typeCode>
>>> <XMI.CorbaTypeCode>
>>> <XMI.CorbaTcEnum xmi.tcName='AggregationKind'
>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/AggregationK ind:1.0' >
>>> <XMI.CorbaTcEnumLabel xmi.tcName='ak_none'/>
>>> <XMI.CorbaTcEnumLabel xmi.tcName='ak_aggregate'/>
>>> <XMI.CorbaTcEnumLabel xmi.tcName='ak_composite'/>
>>> </XMI.CorbaTcEnum>
>>> </XMI.CorbaTypeCode>
>>> </Model:DataType.typeCode>
>>> </Model:DataType>
>>> <Model:Tag xmi.id='a25'
>>> name='org.omg.xmi.enumerationUnprefix=ak_' annotation=''
>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a24'>
>>> <Model:Tag.values>
>>> <XMI.any xmi.type='string'>ak_</XMI.any>
>>> </Model:Tag.values>
>>> </Model:Tag>
>>> <Model:DataType xmi.id='a26' name='Boolean' annotation=''
>>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>>> <Model:DataType.typeCode>
>>> <XMI.CorbaTypeCode>
>>> <XMI.CorbaTcBoolean/>
>>> </XMI.CorbaTypeCode>
>>> </Model:DataType.typeCode>
>>> </Model:DataType>
>>> <Model:DataType xmi.id='a27' name='CallConcurrencyKind'
>>> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
>>> visibility='public_vis'>
>>> <Model:DataType.typeCode>
>>> <XMI.CorbaTypeCode>
>>> <XMI.CorbaTcEnum xmi.tcName='CallConcurrencyKind'
>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/CallConcurre ncyKind:1.0' >
>>> <XMI.CorbaTcEnumLabel xmi.tcName='cck_sequential'/>
>>> <XMI.CorbaTcEnumLabel xmi.tcName='cck_guarded'/>
>>> <XMI.CorbaTcEnumLabel xmi.tcName='cck_concurrent'/>
>>> </XMI.CorbaTcEnum>
>>> </XMI.CorbaTypeCode>
>>> </Model:DataType.typeCode>
>>> </Model:DataType>
>>> <Model:Tag xmi.id='a28'
>>> name='org.omg.xmi.enumerationUnprefix=cck_' annotation=''
>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a27'>
>>> <Model:Tag.values>
>>> <XMI.any xmi.type='string'>cck_</XMI.any>
>>> </Model:Tag.values>
>>> </Model:Tag>
>>> <Model:DataType xmi.id='a29' name='ChangeableKind' annotation=''
>>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>>> <Model:DataType.typeCode>
>>> <XMI.CorbaTypeCode>
>>> <XMI.CorbaTcEnum xmi.tcName='ChangeableKind'
>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/ChangeableKi nd:1.0' >
>>> <XMI.CorbaTcEnumLabel xmi.tcName='ck_changeable'/>
>>> <XMI.CorbaTcEnumLabel xmi.tcName='ck_frozen'/>
>>> <XMI.CorbaTcEnumLabel xmi.tcName='ck_addOnly'/>
>>> </XMI.CorbaTcEnum>
>>> </XMI.CorbaTypeCode>
>>> </Model:DataType.typeCode>
>>> </Model:DataType>
>>> <Model:Tag xmi.id='a30'
>>> name='org.omg.xmi.enumerationUnprefix=ck_' annotation=''
>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a29'>
>>> <Model:Tag.values>
>>> <XMI.any xmi.type='string'>ck_</XMI.any>
>>> </Model:Tag.values>
>>> </Model:Tag>
>>> <Model:DataType xmi.id='a31' name='OrderingKind' annotation=''
>>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>>> <Model:DataType.typeCode>
>>> <XMI.CorbaTypeCode>
>>> <XMI.CorbaTcEnum xmi.tcName='OrderingKind'
>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/OrderingKind :1.0' >
>>> <XMI.CorbaTcEnumLabel xmi.tcName='ok_unordered'/>
>>> <XMI.CorbaTcEnumLabel xmi.tcName='ok_ordered'/>
>>> </XMI.CorbaTcEnum>
>>> </XMI.CorbaTypeCode>
>>> </Model:DataType.typeCode>
>>> </Model:DataType>
>>> <Model:Tag xmi.id='a32'
>>> name='org.omg.xmi.enumerationUnprefix=ok_' annotation=''
>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a31'>
>>> <Model:Tag.values>
>>> <XMI.any xmi.type='string'>ok_</XMI.any>
>>> </Model:Tag.values>
>>> </Model:Tag>
>>> <Model:DataType xmi.id='a33' name='ParameterDirectionKind'
>>> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
>>> visibility='public_vis'>
>>> <Model:DataType.typeCode>
>>> <XMI.CorbaTypeCode>
>>> <XMI.CorbaTcEnum xmi.tcName='ParameterDirectionKind'
>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/ParameterDir ectionKind:1.0' >
>>> <XMI.CorbaTcEnumLabel xmi.tcName='pdk_in'/>
>>> <XMI.CorbaTcEnumLabel xmi.tcName='pdk_inout'/>
>>> <XMI.CorbaTcEnumLabel xmi.tcName='pdk_out'/>
>>> <XMI.CorbaTcEnumLabel xmi.tcName='pdk_return'/>
>>> </XMI.CorbaTcEnum>
>>> </XMI.CorbaTypeCode>
>>> </Model:DataType.typeCode>
>>> </Model:DataType>
>>> <Model:Tag xmi.id='a34'
>>> name='org.omg.xmi.enumerationUnprefix=pdk_' annotation=''
>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a33'>
>>> <Model:Tag.values>
>>> <XMI.any xmi.type='string'>pdk_</XMI.any>
>>> </Model:Tag.values>
>>> </Model:Tag>
>>> <Model:DataType xmi.id='a35' name='ScopeKind' annotation=''
>>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>>> <Model:DataType.typeCode>
>>> <XMI.CorbaTypeCode>
>>> <XMI.CorbaTcEnum xmi.tcName='ScopeKind'
>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/ScopeKind:1. 0' >
>>> <XMI.CorbaTcEnumLabel xmi.tcName='sk_instance'/>
>>> <XMI.CorbaTcEnumLabel xmi.tcName='sk_classifier'/>
>>> </XMI.CorbaTcEnum>
>>> </XMI.CorbaTypeCode>
>>> </Model:DataType.typeCode>
>>> </Model:DataType>
>>> <Model:Tag xmi.id='a36'
>>> name='org.omg.xmi.enumerationUnprefix=sk_' annotation=''
>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a35'>
>>> <Model:Tag.values>
>>> <XMI.any xmi.type='string'>sk_</XMI.any>
>>> </Model:Tag.values>
>>> </Model:Tag>
>>> <Model:DataType xmi.id='a37' name='VisibilityKind' annotation=''
>>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>>> <Model:DataType.typeCode>
>>> <XMI.CorbaTypeCode>
>>> <XMI.CorbaTcEnum xmi.tcName='VisibilityKind'
>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/VisibilityKi nd:1.0' >
>>> <XMI.CorbaTcEnumLabel xmi.tcName='vk_public'/>
>>> <XMI.CorbaTcEnumLabel xmi.tcName='vk_protected'/>
>>> <XMI.CorbaTcEnumLabel xmi.tcName='vk_private'/>
>>> <XMI.CorbaTcEnumLabel xmi.tcName='vk_package'/>
>>> </XMI.CorbaTcEnum>
>>> </XMI.CorbaTypeCode>
>>> </Model:DataType.typeCode>
>>> </Model:DataType>
>>> <Model:Tag xmi.id='a38'
>>> name='org.omg.xmi.enumerationUnprefix=vk_' annotation=''
>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a37'>
>>> <Model:Tag.values>
>>> <XMI.any xmi.type='string'>vk_</XMI.any>
>>> </Model:Tag.values>
>>> </Model:Tag>
>>> <Model:DataType xmi.id='a39' name='Name' annotation=''
>>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>>> <Model:DataType.typeCode>
>>> <XMI.CorbaTypeCode>
>>> <XMI.CorbaTcAlias xmi.tcName='Name'
>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/Name:1.0'>
>>> <XMI.CorbaTypeCode>
>>> <XMI.CorbaTcString xmi.tcLength='0'/>
>>> </XMI.CorbaTypeCode>
>>> </XMI.CorbaTcAlias>
>>> </XMI.CorbaTypeCode>
>>> </Model:DataType.typeCode>
>>> </Model:DataType>
>>> <Model:Class xmi.id='a40' name='Multiplicity' annotation=''
>>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>>> isSingleton='false'>
>>> <Model:Namespace.contents>
>>> <Model:Reference xmi.id='a41' name='range' annotation=''
>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>> type='a42' referencedEnd='a43'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>1</XMI.field> <!-- lower -->
>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Reference>
>>> </Model:Namespace.contents>
>>> </Model:Class>
>>> <Model:Class xmi.id='a42' name='MultiplicityRange' annotation=''
>>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>>> isSingleton='false'>
>>> <Model:Namespace.contents>
>>> <Model:Attribute xmi.id='a44' name='lower' annotation=''
>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>> isDerived='false' type='a21'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>1</XMI.field> <!-- lower -->
>>> <XMI.field>1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Attribute>
>>> <Model:Attribute xmi.id='a45' name='upper' annotation=''
>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>> isDerived='false' type='a22'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>1</XMI.field> <!-- lower -->
>>> <XMI.field>1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Attribute>
>>> <Model:Reference xmi.id='a46' name='multiplicity'
>>> annotation='' scope='instance_level' visibility='public_vis'
>>> isChangeable='true' type='a40' referencedEnd='a47'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>1</XMI.field> <!-- lower -->
>>> <XMI.field>1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Reference>
>>> </Model:Namespace.contents>
>>> </Model:Class>
>>> <Model:Class xmi.id='a48' name='Expression' annotation=''
>>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>>> isSingleton='false'>
>>> <Model:Namespace.contents>
>>> <Model:Attribute xmi.id='a49' name='language' annotation=''
>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>> isDerived='false' type='a39'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>0</XMI.field> <!-- lower -->
>>> <XMI.field>1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Attribute>
>>> <Model:Attribute xmi.id='a50' name='body' annotation=''
>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>> isDerived='false' type='a23'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>1</XMI.field> <!-- lower -->
>>> <XMI.field>1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Attribute>
>>> </Model:Namespace.contents>
>>> </Model:Class>
>>> <Model:Class xmi.id='a51' name='BooleanExpression' annotation=''
>>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>>> isSingleton='false' supertypes='a48'>
>>> </Model:Class>
>>> <Model:Class xmi.id='a52' name='TypeExpression' annotation=''
>>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>>> isSingleton='false' supertypes='a48'>
>>> </Model:Class>
>>> <Model:Class xmi.id='a53' name='MappingExpression' annotation=''
>>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>>> isSingleton='false' supertypes='a48'>
>>> </Model:Class>
>>> <Model:Class xmi.id='a54' name='ProcedureExpression'
>>> annotation='' isRoot='false' isLeaf='false' isAbstract='false'
>>> visibility='public_vis' isSingleton='false' supertypes='a48'>
>>> </Model:Class>
>>> <Model:Class xmi.id='a55' name='ObjectSetExpression'
>>> annotation='' isRoot='false' isLeaf='false' isAbstract='false'
>>> visibility='public_vis' isSingleton='false' supertypes='a48'>
>>> </Model:Class>
>>> <Model:Class xmi.id='a56' name='ActionExpression' annotation=''
>>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>>> isSingleton='false' supertypes='a48'>
>>> </Model:Class>
>>> <Model:Class xmi.id='a57' name='IterationExpression'
>>> annotation='' isRoot='false' isLeaf='false' isAbstract='false'
>>> visibility='public_vis' isSingleton='false' supertypes='a48'>
>>> </Model:Class>
>>> <Model:Class xmi.id='a58' name='TimeExpression' annotation=''
>>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>>> isSingleton='false' supertypes='a48'>
>>> </Model:Class>
>>> <Model:Class xmi.id='a59' name='ArgListsExpression' annotation=''
>>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>>> isSingleton='false' supertypes='a48'>
>>> </Model:Class>
>>> <Model:DataType xmi.id='a60' name='LocationReference'
>>> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
>>> visibility='public_vis'>
>>> <Model:DataType.typeCode>
>>> <XMI.CorbaTypeCode>
>>> <XMI.CorbaTcAlias xmi.tcName='LocationReference'
>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/LocationRefe rence:1.0' >
>>> <XMI.CorbaTypeCode>
>>> <XMI.CorbaTcString xmi.tcLength='0'/>
>>> </XMI.CorbaTypeCode>
>>> </XMI.CorbaTcAlias>
>>> </XMI.CorbaTypeCode>
>>> </Model:DataType.typeCode>
>>> </Model:DataType>
>>> <Model:DataType xmi.id='a61' name='PseudostateKind' annotation=''
>>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>>> <Model:DataType.typeCode>
>>> <XMI.CorbaTypeCode>
>>> <XMI.CorbaTcEnum xmi.tcName='PseudostateKind'
>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/PseudostateK ind:1.0' >
>>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_choice'/>
>>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_deepHistory'/>
>>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_fork'/>
>>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_initial'/>
>>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_join'/>
>>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_junction'/>
>>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_shallowHistory'/>
>>> </XMI.CorbaTcEnum>
>>> </XMI.CorbaTypeCode>
>>> </Model:DataType.typeCode>
>>> </Model:DataType>
>>> <Model:Tag xmi.id='a62'
>>> name='org.omg.xmi.enumerationUnprefix=pk_' annotation=''
>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a61'>
>>> <Model:Tag.values>
>>> <XMI.any xmi.type='string'>pk_</XMI.any>
>>> </Model:Tag.values>
>>> </Model:Tag>
>>> <Model:DataType xmi.id='a63' name='Geometry' annotation=''
>>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>>> <Model:DataType.typeCode>
>>> <XMI.CorbaTypeCode>
>>> <XMI.CorbaTcAlias xmi.tcName='Geometry'
>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/Geometry:1.0 ' >
>>> <XMI.CorbaTypeCode>
>>> <XMI.CorbaTcString xmi.tcLength='0'/>
>>> </XMI.CorbaTypeCode>
>>> </XMI.CorbaTcAlias>
>>> </XMI.CorbaTypeCode>
>>> </Model:DataType.typeCode>
>>> </Model:DataType>
>>> <Model:Association xmi.id='a64' name='A_multiplicity_range'
>>> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
>>> visibility='public_vis' isDerived='false'>
>>> <Model:Namespace.contents>
>>> <Model:AssociationEnd xmi.id='a47' name='multiplicity'
>>> annotation='' isNavigable='true' aggregation='composite'
>>> isChangeable='true' type='a40'>
>>> <Model:AssociationEnd.multiplicity>
>>> <XMI.field>1</XMI.field> <!-- lower -->
>>> <XMI.field>1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>> </Model:AssociationEnd.multiplicity>
>>> </Model:AssociationEnd>
>>> <Model:AssociationEnd xmi.id='a43' name='range' annotation=''
>>> isNavigable='true' aggregation='none' isChangeable='true' type='a42'>
>>> <Model:AssociationEnd.multiplicity>
>>> <XMI.field>1</XMI.field> <!-- lower -->
>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>> </Model:AssociationEnd.multiplicity>
>>> </Model:AssociationEnd>
>>> </Model:Namespace.contents>
>>> </Model:Association>
>>> </Model:Namespace.contents>
>>> </Model:Package>
>>> <Model:Package xmi.id='a6' name='Core' annotation='' isRoot='false'
>>> isLeaf='false' isAbstract='false' visibility='public_vis'>
>>> <Model:Namespace.contents>
>>> <Model:Tag xmi.id='a65'
>>> name='org.omg.mof.idl_prefix=org.omg.uml.Foundation' annotation=''
>>> tagId='org.omg.mof.idl_prefix' elements='a6'>
>>> <Model:Tag.values>
>>> <XMI.any xmi.type='string'>org.omg.uml.Foundation</XMI.any>
>>> </Model:Tag.values>
>>> </Model:Tag>
>>> <Model:Tag xmi.id='a66' name='org.omg.xmi.namespace=UML'
>>> annotation='' tagId='org.omg.xmi.namespace' elements='a6'>
>>> <Model:Tag.values>
>>> <XMI.any xmi.type='string'>UML</XMI.any>
>>> </Model:Tag.values>
>>> </Model:Tag>
>>> <Model:Class xmi.id='a67' name='Element' annotation=''
>>> isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis'
>>> isSingleton='false'>
>>> </Model:Class>
>>> <Model:Class xmi.id='a68' name='ModelElement' annotation=''
>>> isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis'
>>> isSingleton='false' supertypes='a67'>
>>> <Model:Namespace.contents>
>>> <Model:Attribute xmi.id='a69' name='name' annotation=''
>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>> isDerived='false' type='a39'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>0</XMI.field> <!-- lower -->
>>> <XMI.field>1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Attribute>
>>> <Model:Attribute xmi.id='a70' name='visibility' annotation=''
>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>> isDerived='false' type='a37'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>0</XMI.field> <!-- lower -->
>>> <XMI.field>1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Attribute>
>>> <Model:Attribute xmi.id='a71' name='isSpecification'
>>> annotation='' scope='instance_level' visibility='public_vis'
>>> isChangeable='true' isDerived='false' type='a26'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>1</XMI.field> <!-- lower -->
>>> <XMI.field>1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Attribute>
>>> <Model:Reference xmi.id='a72' name='namespace' annotation=''
>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>> type='a73' referencedEnd='a74'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>0</XMI.field> <!-- lower -->
>>> <XMI.field>1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Reference>
>>> <Model:Reference xmi.id='a75' name='clientDependency'
>>> annotation='' scope='instance_level' visibility='public_vis'
>>> isChangeable='true' type='a76' referencedEnd='a77'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>0</XMI.field> <!-- lower -->
>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Reference>
>>> <Model:Reference xmi.id='a78' name='constraint' annotation=''
>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>> type='a79' referencedEnd='a80'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>0</XMI.field> <!-- lower -->
>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Reference>
>>> <Model:Reference xmi.id='a81' name='targetFlow' annotation=''
>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>> type='a82' referencedEnd='a83'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>0</XMI.field> <!-- lower -->
>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Reference>
>>> <Model:Reference xmi.id='a84' name='sourceFlow' annotation=''
>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>> type='a82' referencedEnd='a85'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>0</XMI.field> <!-- lower -->
>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Reference>
>>> <Model:Reference xmi.id='a86' name='comment' annotation=''
>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>> type='a87' referencedEnd='a88'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>0</XMI.field> <!-- lower -->
>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Reference>
>>> <Model:Reference xmi.id='a89' name='templateParameter'
>>> annotation='' scope='instance_level' visibility='public_vis'
>>> isChangeable='true' type='a90' referencedEnd='a91'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>0</XMI.field> <!-- lower -->
>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>> <XMI.field>true</XMI.field> <!-- is_ordered -->
>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Reference>
>>> <Model:Reference xmi.id='a92' name='stereotype' annotation=''
>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>> type='a93' referencedEnd='a94'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>0</XMI.field> <!-- lower -->
>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Reference>
>>> <Model:Reference xmi.id='a95' name='taggedValue'
>>> annotation='' scope='instance_level' visibility='public_vis'
>>> isChangeable='true' type='a96' referencedEnd='a97'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>0</XMI.field> <!-- lower -->
>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Reference>
>>> </Model:Namespace.contents>
>>> </Model:Class>
>>> <Model:Import xmi.id='a98' name='Data_Types' annotation=''
>>> visibility='public_vis' isClustered='true' importedNamespace='a4'>
>>> </Model:Import>
>>> <Model:Tag xmi.id='a99'
>>> name='org.omg.mof.idl_substitute_name=umlConstraint' annotation=''
>>> tagId='org.omg.mof.idl_substitute_name' elements='a78 a80'>
>>> <Model:Tag.values>
>>> <XMI.any xmi.type='string'>umlConstraint</XMI.any>
>>> </Model:Tag.values>
>>> </Model:Tag>
>>> <Model:Class xmi.id='a100' name='GeneralizableElement'
>>> annotation='' isRoot='false' isLeaf='false' isAbstract='true'
>>> visibility='public_vis' isSingleton='false' supertypes='a68'>
>>> <Model:Namespace.contents>
>>> <Model:Attribute xmi.id='a101' name='isRoot' annotation=''
>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>> isDerived='false' type='a26'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>1</XMI.field> <!-- lower -->
>>> <XMI.field>1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Attribute>
>>> <Model:Attribute xmi.id='a102' name='isLeaf' annotation=''
>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>> isDerived='false' type='a26'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>1</XMI.field> <!-- lower -->
>>> <XMI.field>1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Attribute>
>>> <Model:Attribute xmi.id='a103' name='isAbstract'
>>> annotation='' scope='instance_level' visibility='public_vis'
>>> isChangeable='true' isDerived='false' type='a26'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>1</XMI.field> <!-- lower -->
>>> <XMI.field>1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Attribute>
>>> <Model:Reference xmi.id='a104' name='generalization'
>>> annotation='' scope='instance_level' visibility='public_vis'
>>> isChangeable='true' type='a105' referencedEnd='a106'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>0</XMI.field> <!-- lower -->
>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Reference>
>>> </Model:Namespace.contents>
>>> </Model:Class>
>>> <Model:Class xmi.id='a73' name='Namespace' annotation=''
>>> isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis'
>>> isSingleton='false' supertypes='a68'>
>>> <Model:Namespace.contents>
>>> <Model:Reference xmi.id='a107' name='ownedElement'
>>> annotation='' scope='instance_level' visibility='public_vis'
>>> isChangeable='true' type='a68' referencedEnd='a108'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>0</XMI.field> <!-- lower -->
>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Reference>
>>> </Model:Namespace.contents>
>>> </Model:Class>
>>> <Model:Class xmi.id='a109' name='Classifier' annotation=''
>>> isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis'
>>> isSingleton='false' supertypes='a100 a73'>
>>> <Model:Namespace.contents>
>>> <Model:Reference xmi.id='a110' name='feature' annotation=''
>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>> type='a111' referencedEnd='a112'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>0</XMI.field> <!-- lower -->
>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>> <XMI.field>true</XMI.field> <!-- is_ordered -->
>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Reference>
>>> <Model:Reference xmi.id='a113' name='powertypeRange'
>>> annotation='' scope='instance_level' visibility='public_vis'
>>> isChangeable='true' type='a105' referencedEnd='a114'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>0</XMI.field> <!-- lower -->
>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Reference>
>>> </Model:Namespace.contents>
>>> </Model:Class>
>>> <Model:Class xmi.id='a115' name='Class' annotation=''
>>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>>> isSingleton='false' supertypes='a109'>
>>> <Model:Namespace.contents>
>>> <Model:Attribute xmi.id='a116' name='isActive' annotation=''
>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>> isDerived='false' type='a26'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>1</XMI.field> <!-- lower -->
>>> <XMI.field>1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Attribute>
>>> </Model:Namespace.contents>
>>> </Model:Class>
>>> <Model:Class xmi.id='a117' name='DataType' annotation=''
>>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>>> isSingleton='false' supertypes='a109'>
>>> </Model:Class>
>>> <Model:Class xmi.id='a111' name='Feature' annotation=''
>>> isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis'
>>> isSingleton='false' supertypes='a68'>
>>> <Model:Namespace.contents>
>>> <Model:Attribute xmi.id='a118' name='ownerScope'
>>> annotation='' scope='instance_level' visibility='public_vis'
>>> isChangeable='true' isDerived='false' type='a35'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>1</XMI.field> <!-- lower -->
>>> <XMI.field>1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Attribute>
>>> <Model:Reference xmi.id='a119' name='owner' annotation=''
>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>> type='a109' referencedEnd='a120'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>0</XMI.field> <!-- lower -->
>>> <XMI.field>1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Reference>
>>> </Model:Namespace.contents>
>>> </Model:Class>
>>> <Model:Class xmi.id='a121' name='StructuralFeature' annotation=''
>>> isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis'
>>> isSingleton='false' supertypes='a111'>
>>> <Model:Namespace.contents>
>>> <Model:Attribute xmi.id='a122' name='multiplicity'
>>> annotation='' scope='instance_level' visibility='public_vis'
>>> isChangeable='true' isDerived='false' type='a40'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>0</XMI.field> <!-- lower -->
>>> <XMI.field>1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Attribute>
>>> <Model:Attribute xmi.id='a123' name='changeability'
>>> annotation='' scope='instance_level' visibility='public_vis'
>>> isChangeable='true' isDerived='false' type='a29'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>0</XMI.field> <!-- lower -->
>>> <XMI.field>1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>
Re: [Epsilon] Using OCL in Meta-Model level [message #378032 is a reply to message #378026] Sat, 19 May 2007 22:43 Go to previous messageGo to next message
Dimitrios Kolovos is currently offline Dimitrios KolovosFriend
Messages: 1776
Registered: July 2009
Senior Member
Hi Bahman,

Bahman wrote:
> Hi Dimitrios,
>
> For A&B) My understanding was that since MOF1.4 is the metamodel of UML1.4,
> everybody who wants to implement MOF1.4, should consider its structure (e.g.
> Model structure depicted in figure3-2) and implement it. So, I expected to
> see the same attributes and operations as there is in that figure.

I understand the confusion introduced by the similarity between MOF and
UML, but I should stress again that MOF!ModelElement != UML!NamedElement
(they are two constructs in two *different* metamodels that happen to
have the same name).

> For B&C) It's true that B is for UML1.4 and C is for UML1.5, but I don't
> think there should be so much changes from 1.4 to 1.5! Do you?
>

I'm not familiar with the metamodel of UML 1.5 but I don't expect it to
be drastically different to that of UML 1.4. Getting hands on the actual
metamodel in XMI would help a lot in locating the exact differences.

> best,
> Bahman
>

Cheers,
Dimitrios

> "Dimitrios Kolovos" <dskolovos@gmail.com> wrote in message
> news:f2npn3$6um$1@build.eclipse.org...
>> Hi Bahman,
>>
>> (A) describes *MOF itself* while (B) and (C) describe *UML using MOF*.
>> (The common *NamedElement* thing is a result of MOF emerging from UML at
>> some point, but you can consider it as an unlucky coincidence).
>>
>> As for the differences between (B) and (C), with regard to the
>> attributes/references of the UML ModelElement, any differences may be due
>> to the fact that (B) refers to version 1.4 of UML and (C) to version 1.5.
>> BTW, if you find/have the UML 1.5 metamodel in XMI, we can use it to
>> generate a similar javadoc-like set of pages.
>>
>> As for the operations part, (B) doesn't document operations at all because
>> since MOF lacks an action semantics, MOF-level operations are not
>> executable - and thus useless to Epsilon.
>>
>> I hope this helps.
>>
>> Cheers,
>> Dimitrios
>>
>> Bahman wrote:
>>> Hi Dimitrios,
>>>
>>> Thanks for the comment and the link.
>>> I'm not sure what makes me confused! Would you please consider the
>>> following concrete example and let me know your idea?
>>>
>>> A) Considering the MOF Model structure depicted by figure3-2 on page 3-13
>>> of the MOF1.4 specification
>>> (http://www.omg.org/docs/formal/02-04-03.pdf), each Model Element has
>>> specific attributes, references, and operations (as explained in section
>>> 3.4.1).
>>> B) Considering the description of class ModelElement from the link you
>>> introduced (http://www-users.cs.york.ac.uk/~dkolovos/uml14/), the
>>> attributes and references are totally different than what is specified in
>>> (A).
>>> C) Considering UML1.5 metamodel of OCLE 2.0 tool, I find a class
>>> ModelElement with just one attribute (name) and six operations which
>>> seems almost different that operations or references in (A) or (B).
>>>
>>> best,
>>> Bahman
>>>
>>>
>>> "Dimitrios Kolovos" <dskolovos@gmail.com> wrote in message
>>> news:f2fjdg$p0d$1@build.eclipse.org...
>>>> Hi Bahman,
>>>>
>>>> The properties of each metaclass (e.g. Class, ModelElement etc) are
>>>> defined in the metamodel of the language. For ArgoUML the metamodel is a
>>>> MOF1.4/XMI 1.1 file (attached). From this, I've generated a set of
>>>> JavaDoc-like HTML pages available at
>>>> http://www-users.cs.york.ac.uk/~dkolovos/uml14/ which you may find more
>>>> usable than the XMI metamodel itself :)
>>>>
>>>> Cheers,
>>>> Dimitrios
>>>>
>>>> Bahman wrote:
>>>>> Hi everybody,
>>>>>
>>>>> I have a problem understanding how to use OCL (especially in MetaModel
>>>>> level), if you have time to guide me, that would be appreciated.
>>>>>
>>>>> So far I've worked with some tools such as ArgoUML (adding some critics
>>>>> to
>>>>> it), OCLE (checking OCLs in model level and metamodel level), and
>>>>> recently
>>>>> Epsilon (Adding some more functionalities on its ArgoUML version).
>>>>>
>>>>> My problem is that I don't know from where can I find all the
>>>>> OPERATIONS and
>>>>> FUNCTIONS that I can apply on a model (Meta-Model). Let me make it
>>>>> clear by
>>>>> an example:
>>>>>
>>>>> 1) In Epsilon, I've written the following operation to check whether or
>>>>> not
>>>>> a class own an attribute. But I knew nothing about the FEATURE property
>>>>> that
>>>>> could be applied on a class. I just found it by reviewing existing
>>>>> similar
>>>>> codes.
>>>>>
>>>>> operation Class hasAttribute (name : String) : Boolean {
>>>>> return self.feature.exists (a:Attribute | a.name = name);
>>>>> }
>>>>>
>>>>> 2) In ArgoUML, I had to write the following method to check the above
>>>>> condition. However, since it was in Eclipse, I could see which methods
>>>>> are
>>>>> available by Model's Facade class (thanks to Eclipse assistance).
>>>>>
>>>>> public static boolean classHasAtt (Object cls) {
>>>>> boolean found = false;
>>>>> Collection atts = Model.getFacade().getAttributes(cls);
>>>>> if ( atts.size() > 0 ) {
>>>>> found = true ;
>>>>> }
>>>>> return found;
>>>>> }
>>>>>
>>>>> Again my question is: "let say the context is a class, how can I access
>>>>> to
>>>>> all its attributes? its operations? its stereotypes?" The same question
>>>>> applies for every ModelElement.
>>>>>
>>>>> best,
>>>>> Bahman
>>>>>
>>>>>
>>>>>
>>>
>>> ------------------------------------------------------------ --------------------
>>>
>>>
>>>> <?xml version="1.0" encoding="UTF-8" ?>
>>>> <!-- <!DOCTYPE XMI SYSTEM 'Model.dtd'> -->
>>>> <XMI xmi.version='1.1' xmlns:Model='omg.org/mof.Model/1.3'>
>>>> <XMI.header>
>>>> <XMI.model xmi.name='UML' xmi.version='1.4'/>
>>>> <XMI.metamodel xmi.name='Model' xmi.version='1.3'/>
>>>> </XMI.header>
>>>> <XMI.content>
>>>> <Model:Package xmi.id='a0' name='UML' annotation='' isRoot='false'
>>>> isLeaf='false' isAbstract='false' visibility='public_vis'>
>>>> <Model:Namespace.contents>
>>>> <Model:Tag xmi.id='a1' name='org.omg.mof.idl_prefix=org.omg'
>>>> annotation='' tagId='org.omg.mof.idl_prefix' elements='a0'>
>>>> <Model:Tag.values>
>>>> <XMI.any xmi.type='string'>org.omg</XMI.any>
>>>> </Model:Tag.values>
>>>> </Model:Tag>
>>>> <Model:Tag xmi.id='a2' name='org.omg.xmi.namespace=UML'
>>>> annotation='' tagId='org.omg.xmi.namespace' elements='a0'>
>>>> <Model:Tag.values>
>>>> <XMI.any xmi.type='string'>UML</XMI.any>
>>>> </Model:Tag.values>
>>>> </Model:Tag>
>>>> <Model:Import xmi.id='a3' name='Data_Types' annotation=''
>>>> visibility='public_vis' isClustered='true' importedNamespace='a4'>
>>>> </Model:Import>
>>>> <Model:Import xmi.id='a5' name='Core' annotation=''
>>>> visibility='public_vis' isClustered='true' importedNamespace='a6'>
>>>> </Model:Import>
>>>> <Model:Import xmi.id='a7' name='Common_Behavior' annotation=''
>>>> visibility='public_vis' isClustered='true' importedNamespace='a8'>
>>>> </Model:Import>
>>>> <Model:Import xmi.id='a9' name='Use_Cases' annotation=''
>>>> visibility='public_vis' isClustered='true' importedNamespace='a10'>
>>>> </Model:Import>
>>>> <Model:Import xmi.id='a11' name='State_Machines' annotation=''
>>>> visibility='public_vis' isClustered='true' importedNamespace='a12'>
>>>> </Model:Import>
>>>> <Model:Import xmi.id='a13' name='Collaborations' annotation=''
>>>> visibility='public_vis' isClustered='true' importedNamespace='a14'>
>>>> </Model:Import>
>>>> <Model:Import xmi.id='a15' name='Activity_Graphs' annotation=''
>>>> visibility='public_vis' isClustered='true' importedNamespace='a16'>
>>>> </Model:Import>
>>>> <Model:Import xmi.id='a17' name='Model_Management' annotation=''
>>>> visibility='public_vis' isClustered='true' importedNamespace='a18'>
>>>> </Model:Import>
>>>> </Model:Namespace.contents>
>>>> </Model:Package>
>>>> <Model:Package xmi.id='a4' name='Data_Types' annotation=''
>>>> isRoot='false' isLeaf='false' isAbstract='false'
>>>> visibility='public_vis'>
>>>> <Model:Namespace.contents>
>>>> <Model:Tag xmi.id='a19'
>>>> name='org.omg.mof.idl_prefix=org.omg.uml.Foundation' annotation=''
>>>> tagId='org.omg.mof.idl_prefix' elements='a4'>
>>>> <Model:Tag.values>
>>>> <XMI.any xmi.type='string'>org.omg.uml.Foundation</XMI.any>
>>>> </Model:Tag.values>
>>>> </Model:Tag>
>>>> <Model:Tag xmi.id='a20' name='org.omg.xmi.namespace=UML'
>>>> annotation='' tagId='org.omg.xmi.namespace' elements='a4'>
>>>> <Model:Tag.values>
>>>> <XMI.any xmi.type='string'>UML</XMI.any>
>>>> </Model:Tag.values>
>>>> </Model:Tag>
>>>> <Model:DataType xmi.id='a21' name='Integer' annotation=''
>>>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>>>> <Model:DataType.typeCode>
>>>> <XMI.CorbaTypeCode>
>>>> <XMI.CorbaTcLong/>
>>>> </XMI.CorbaTypeCode>
>>>> </Model:DataType.typeCode>
>>>> </Model:DataType>
>>>> <Model:DataType xmi.id='a22' name='UnlimitedInteger'
>>>> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
>>>> visibility='public_vis'>
>>>> <Model:DataType.typeCode>
>>>> <XMI.CorbaTypeCode>
>>>> <XMI.CorbaTcAlias xmi.tcName='UnlimitedInteger'
>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/UnlimitedInt eger:1.0' >
>>>> <XMI.CorbaTypeCode>
>>>> <XMI.CorbaTcLong/>
>>>> </XMI.CorbaTypeCode>
>>>> </XMI.CorbaTcAlias>
>>>> </XMI.CorbaTypeCode>
>>>> </Model:DataType.typeCode>
>>>> </Model:DataType>
>>>> <Model:DataType xmi.id='a23' name='String' annotation=''
>>>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>>>> <Model:DataType.typeCode>
>>>> <XMI.CorbaTypeCode>
>>>> <XMI.CorbaTcString xmi.tcLength='0'/>
>>>> </XMI.CorbaTypeCode>
>>>> </Model:DataType.typeCode>
>>>> </Model:DataType>
>>>> <Model:DataType xmi.id='a24' name='AggregationKind' annotation=''
>>>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>>>> <Model:DataType.typeCode>
>>>> <XMI.CorbaTypeCode>
>>>> <XMI.CorbaTcEnum xmi.tcName='AggregationKind'
>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/AggregationK ind:1.0' >
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='ak_none'/>
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='ak_aggregate'/>
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='ak_composite'/>
>>>> </XMI.CorbaTcEnum>
>>>> </XMI.CorbaTypeCode>
>>>> </Model:DataType.typeCode>
>>>> </Model:DataType>
>>>> <Model:Tag xmi.id='a25'
>>>> name='org.omg.xmi.enumerationUnprefix=ak_' annotation=''
>>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a24'>
>>>> <Model:Tag.values>
>>>> <XMI.any xmi.type='string'>ak_</XMI.any>
>>>> </Model:Tag.values>
>>>> </Model:Tag>
>>>> <Model:DataType xmi.id='a26' name='Boolean' annotation=''
>>>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>>>> <Model:DataType.typeCode>
>>>> <XMI.CorbaTypeCode>
>>>> <XMI.CorbaTcBoolean/>
>>>> </XMI.CorbaTypeCode>
>>>> </Model:DataType.typeCode>
>>>> </Model:DataType>
>>>> <Model:DataType xmi.id='a27' name='CallConcurrencyKind'
>>>> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
>>>> visibility='public_vis'>
>>>> <Model:DataType.typeCode>
>>>> <XMI.CorbaTypeCode>
>>>> <XMI.CorbaTcEnum xmi.tcName='CallConcurrencyKind'
>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/CallConcurre ncyKind:1.0' >
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='cck_sequential'/>
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='cck_guarded'/>
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='cck_concurrent'/>
>>>> </XMI.CorbaTcEnum>
>>>> </XMI.CorbaTypeCode>
>>>> </Model:DataType.typeCode>
>>>> </Model:DataType>
>>>> <Model:Tag xmi.id='a28'
>>>> name='org.omg.xmi.enumerationUnprefix=cck_' annotation=''
>>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a27'>
>>>> <Model:Tag.values>
>>>> <XMI.any xmi.type='string'>cck_</XMI.any>
>>>> </Model:Tag.values>
>>>> </Model:Tag>
>>>> <Model:DataType xmi.id='a29' name='ChangeableKind' annotation=''
>>>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>>>> <Model:DataType.typeCode>
>>>> <XMI.CorbaTypeCode>
>>>> <XMI.CorbaTcEnum xmi.tcName='ChangeableKind'
>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/ChangeableKi nd:1.0' >
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='ck_changeable'/>
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='ck_frozen'/>
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='ck_addOnly'/>
>>>> </XMI.CorbaTcEnum>
>>>> </XMI.CorbaTypeCode>
>>>> </Model:DataType.typeCode>
>>>> </Model:DataType>
>>>> <Model:Tag xmi.id='a30'
>>>> name='org.omg.xmi.enumerationUnprefix=ck_' annotation=''
>>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a29'>
>>>> <Model:Tag.values>
>>>> <XMI.any xmi.type='string'>ck_</XMI.any>
>>>> </Model:Tag.values>
>>>> </Model:Tag>
>>>> <Model:DataType xmi.id='a31' name='OrderingKind' annotation=''
>>>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>>>> <Model:DataType.typeCode>
>>>> <XMI.CorbaTypeCode>
>>>> <XMI.CorbaTcEnum xmi.tcName='OrderingKind'
>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/OrderingKind :1.0' >
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='ok_unordered'/>
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='ok_ordered'/>
>>>> </XMI.CorbaTcEnum>
>>>> </XMI.CorbaTypeCode>
>>>> </Model:DataType.typeCode>
>>>> </Model:DataType>
>>>> <Model:Tag xmi.id='a32'
>>>> name='org.omg.xmi.enumerationUnprefix=ok_' annotation=''
>>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a31'>
>>>> <Model:Tag.values>
>>>> <XMI.any xmi.type='string'>ok_</XMI.any>
>>>> </Model:Tag.values>
>>>> </Model:Tag>
>>>> <Model:DataType xmi.id='a33' name='ParameterDirectionKind'
>>>> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
>>>> visibility='public_vis'>
>>>> <Model:DataType.typeCode>
>>>> <XMI.CorbaTypeCode>
>>>> <XMI.CorbaTcEnum xmi.tcName='ParameterDirectionKind'
>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/ParameterDir ectionKind:1.0' >
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='pdk_in'/>
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='pdk_inout'/>
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='pdk_out'/>
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='pdk_return'/>
>>>> </XMI.CorbaTcEnum>
>>>> </XMI.CorbaTypeCode>
>>>> </Model:DataType.typeCode>
>>>> </Model:DataType>
>>>> <Model:Tag xmi.id='a34'
>>>> name='org.omg.xmi.enumerationUnprefix=pdk_' annotation=''
>>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a33'>
>>>> <Model:Tag.values>
>>>> <XMI.any xmi.type='string'>pdk_</XMI.any>
>>>> </Model:Tag.values>
>>>> </Model:Tag>
>>>> <Model:DataType xmi.id='a35' name='ScopeKind' annotation=''
>>>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>>>> <Model:DataType.typeCode>
>>>> <XMI.CorbaTypeCode>
>>>> <XMI.CorbaTcEnum xmi.tcName='ScopeKind'
>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/ScopeKind:1. 0' >
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='sk_instance'/>
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='sk_classifier'/>
>>>> </XMI.CorbaTcEnum>
>>>> </XMI.CorbaTypeCode>
>>>> </Model:DataType.typeCode>
>>>> </Model:DataType>
>>>> <Model:Tag xmi.id='a36'
>>>> name='org.omg.xmi.enumerationUnprefix=sk_' annotation=''
>>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a35'>
>>>> <Model:Tag.values>
>>>> <XMI.any xmi.type='string'>sk_</XMI.any>
>>>> </Model:Tag.values>
>>>> </Model:Tag>
>>>> <Model:DataType xmi.id='a37' name='VisibilityKind' annotation=''
>>>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>>>> <Model:DataType.typeCode>
>>>> <XMI.CorbaTypeCode>
>>>> <XMI.CorbaTcEnum xmi.tcName='VisibilityKind'
>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/VisibilityKi nd:1.0' >
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='vk_public'/>
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='vk_protected'/>
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='vk_private'/>
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='vk_package'/>
>>>> </XMI.CorbaTcEnum>
>>>> </XMI.CorbaTypeCode>
>>>> </Model:DataType.typeCode>
>>>> </Model:DataType>
>>>> <Model:Tag xmi.id='a38'
>>>> name='org.omg.xmi.enumerationUnprefix=vk_' annotation=''
>>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a37'>
>>>> <Model:Tag.values>
>>>> <XMI.any xmi.type='string'>vk_</XMI.any>
>>>> </Model:Tag.values>
>>>> </Model:Tag>
>>>> <Model:DataType xmi.id='a39' name='Name' annotation=''
>>>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>>>> <Model:DataType.typeCode>
>>>> <XMI.CorbaTypeCode>
>>>> <XMI.CorbaTcAlias xmi.tcName='Name'
>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/Name:1.0'>
>>>> <XMI.CorbaTypeCode>
>>>> <XMI.CorbaTcString xmi.tcLength='0'/>
>>>> </XMI.CorbaTypeCode>
>>>> </XMI.CorbaTcAlias>
>>>> </XMI.CorbaTypeCode>
>>>> </Model:DataType.typeCode>
>>>> </Model:DataType>
>>>> <Model:Class xmi.id='a40' name='Multiplicity' annotation=''
>>>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>>>> isSingleton='false'>
>>>> <Model:Namespace.contents>
>>>> <Model:Reference xmi.id='a41' name='range' annotation=''
>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>> type='a42' referencedEnd='a43'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>1</XMI.field> <!-- lower -->
>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Reference>
>>>> </Model:Namespace.contents>
>>>> </Model:Class>
>>>> <Model:Class xmi.id='a42' name='MultiplicityRange' annotation=''
>>>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>>>> isSingleton='false'>
>>>> <Model:Namespace.contents>
>>>> <Model:Attribute xmi.id='a44' name='lower' annotation=''
>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>> isDerived='false' type='a21'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>1</XMI.field> <!-- lower -->
>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Attribute>
>>>> <Model:Attribute xmi.id='a45' name='upper' annotation=''
>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>> isDerived='false' type='a22'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>1</XMI.field> <!-- lower -->
>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Attribute>
>>>> <Model:Reference xmi.id='a46' name='multiplicity'
>>>> annotation='' scope='instance_level' visibility='public_vis'
>>>> isChangeable='true' type='a40' referencedEnd='a47'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>1</XMI.field> <!-- lower -->
>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Reference>
>>>> </Model:Namespace.contents>
>>>> </Model:Class>
>>>> <Model:Class xmi.id='a48' name='Expression' annotation=''
>>>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>>>> isSingleton='false'>
>>>> <Model:Namespace.contents>
>>>> <Model:Attribute xmi.id='a49' name='language' annotation=''
>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>> isDerived='false' type='a39'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Attribute>
>>>> <Model:Attribute xmi.id='a50' name='body' annotation=''
>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>> isDerived='false' type='a23'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>1</XMI.field> <!-- lower -->
>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Attribute>
>>>> </Model:Namespace.contents>
>>>> </Model:Class>
>>>> <Model:Class xmi.id='a51' name='BooleanExpression' annotation=''
>>>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>>>> isSingleton='false' supertypes='a48'>
>>>> </Model:Class>
>>>> <Model:Class xmi.id='a52' name='TypeExpression' annotation=''
>>>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>>>> isSingleton='false' supertypes='a48'>
>>>> </Model:Class>
>>>> <Model:Class xmi.id='a53' name='MappingExpression' annotation=''
>>>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>>>> isSingleton='false' supertypes='a48'>
>>>> </Model:Class>
>>>> <Model:Class xmi.id='a54' name='ProcedureExpression'
>>>> annotation='' isRoot='false' isLeaf='false' isAbstract='false'
>>>> visibility='public_vis' isSingleton='false' supertypes='a48'>
>>>> </Model:Class>
>>>> <Model:Class xmi.id='a55' name='ObjectSetExpression'
>>>> annotation='' isRoot='false' isLeaf='false' isAbstract='false'
>>>> visibility='public_vis' isSingleton='false' supertypes='a48'>
>>>> </Model:Class>
>>>> <Model:Class xmi.id='a56' name='ActionExpression' annotation=''
>>>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>>>> isSingleton='false' supertypes='a48'>
>>>> </Model:Class>
>>>> <Model:Class xmi.id='a57' name='IterationExpression'
>>>> annotation='' isRoot='false' isLeaf='false' isAbstract='false'
>>>> visibility='public_vis' isSingleton='false' supertypes='a48'>
>>>> </Model:Class>
>>>> <Model:Class xmi.id='a58' name='TimeExpression' annotation=''
>>>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>>>> isSingleton='false' supertypes='a48'>
>>>> </Model:Class>
>>>> <Model:Class xmi.id='a59' name='ArgListsExpression' annotation=''
>>>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>>>> isSingleton='false' supertypes='a48'>
>>>> </Model:Class>
>>>> <Model:DataType xmi.id='a60' name='LocationReference'
>>>> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
>>>> visibility='public_vis'>
>>>> <Model:DataType.typeCode>
>>>> <XMI.CorbaTypeCode>
>>>> <XMI.CorbaTcAlias xmi.tcName='LocationReference'
>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/LocationRefe rence:1.0' >
>>>> <XMI.CorbaTypeCode>
>>>> <XMI.CorbaTcString xmi.tcLength='0'/>
>>>> </XMI.CorbaTypeCode>
>>>> </XMI.CorbaTcAlias>
>>>> </XMI.CorbaTypeCode>
>>>> </Model:DataType.typeCode>
>>>> </Model:DataType>
>>>> <Model:DataType xmi.id='a61' name='PseudostateKind' annotation=''
>>>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>>>> <Model:DataType.typeCode>
>>>> <XMI.CorbaTypeCode>
>>>> <XMI.CorbaTcEnum xmi.tcName='PseudostateKind'
>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/PseudostateK ind:1.0' >
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_choice'/>
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_deepHistory'/>
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_fork'/>
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_initial'/>
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_join'/>
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_junction'/>
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_shallowHistory'/>
>>>> </XMI.CorbaTcEnum>
>>>> </XMI.CorbaTypeCode>
>>>> </Model:DataType.typeCode>
>>>> </Model:DataType>
>>>> <Model:Tag xmi.id='a62'
>>>> name='org.omg.xmi.enumerationUnprefix=pk_' annotation=''
>>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a61'>
>>>> <Model:Tag.values>
>>>> <XMI.any xmi.type='string'>pk_</XMI.any>
>>>> </Model:Tag.values>
>>>> </Model:Tag>
>>>> <Model:DataType xmi.id='a63' name='Geometry' annotation=''
>>>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>>>> <Model:DataType.typeCode>
>>>> <XMI.CorbaTypeCode>
>>>> <XMI.CorbaTcAlias xmi.tcName='Geometry'
>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/Geometry:1.0 ' >
>>>> <XMI.CorbaTypeCode>
>>>> <XMI.CorbaTcString xmi.tcLength='0'/>
>>>> </XMI.CorbaTypeCode>
>>>> </XMI.CorbaTcAlias>
>>>> </XMI.CorbaTypeCode>
>>>> </Model:DataType.typeCode>
>>>> </Model:DataType>
>>>> <Model:Association xmi.id='a64' name='A_multiplicity_range'
>>>> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
>>>> visibility='public_vis' isDerived='false'>
>>>> <Model:Namespace.contents>
>>>> <Model:AssociationEnd xmi.id='a47' name='multiplicity'
>>>> annotation='' isNavigable='true' aggregation='composite'
>>>> isChangeable='true' type='a40'>
>>>> <Model:AssociationEnd.multiplicity>
>>>> <XMI.field>1</XMI.field> <!-- lower -->
>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>> </Model:AssociationEnd.multiplicity>
>>>> </Model:AssociationEnd>
>>>> <Model:AssociationEnd xmi.id='a43' name='range' annotation=''
>>>> isNavigable='true' aggregation='none' isChangeable='true' type='a42'>
>>>> <Model:AssociationEnd.multiplicity>
>>>> <XMI.field>1</XMI.field> <!-- lower -->
>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>> </Model:AssociationEnd.multiplicity>
>>>> </Model:AssociationEnd>
>>>> </Model:Namespace.contents>
>>>> </Model:Association>
>>>> </Model:Namespace.contents>
>>>> </Model:Package>
>>>> <Model:Package xmi.id='a6' name='Core' annotation='' isRoot='false'
>>>> isLeaf='false' isAbstract='false' visibility='public_vis'>
>>>> <Model:Namespace.contents>
>>>> <Model:Tag xmi.id='a65'
>>>> name='org.omg.mof.idl_prefix=org.omg.uml.Foundation' annotation=''
>>>> tagId='org.omg.mof.idl_prefix' elements='a6'>
>>>> <Model:Tag.values>
>>>> <XMI.any xmi.type='string'>org.omg.uml.Foundation</XMI.any>
>>>> </Model:Tag.values>
>>>> </Model:Tag>
>>>> <Model:Tag xmi.id='a66' name='org.omg.xmi.namespace=UML'
>>>> annotation='' tagId='org.omg.xmi.namespace' elements='a6'>
>>>> <Model:Tag.values>
>>>> <XMI.any xmi.type='string'>UML</XMI.any>
>>>> </Model:Tag.values>
>>>> </Model:Tag>
>>>> <Model:Class xmi.id='a67' name='Element' annotation=''
>>>> isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis'
>>>> isSingleton='false'>
>>>> </Model:Class>
>>>> <Model:Class xmi.id='a68' name='ModelElement' annotation=''
>>>> isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis'
>>>> isSingleton='false' supertypes='a67'>
>>>> <Model:Namespace.contents>
>>>> <Model:Attribute xmi.id='a69' name='name' annotation=''
>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>> isDerived='false' type='a39'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Attribute>
>>>> <Model:Attribute xmi.id='a70' name='visibility' annotation=''
>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>> isDerived='false' type='a37'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Attribute>
>>>> <Model:Attribute xmi.id='a71' name='isSpecification'
>>>> annotation='' scope='instance_level' visibility='public_vis'
>>>> isChangeable='true' isDerived='false' type='a26'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>1</XMI.field> <!-- lower -->
>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Attribute>
>>>> <Model:Reference xmi.id='a72' name='namespace' annotation=''
>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>> type='a73' referencedEnd='a74'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Reference>
>>>> <Model:Reference xmi.id='a75' name='clientDependency'
>>>> annotation='' scope='instance_level' visibility='public_vis'
>>>> isChangeable='true' type='a76' referencedEnd='a77'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Reference>
>>>> <Model:Reference xmi.id='a78' name='constraint' annotation=''
>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>> type='a79' referencedEnd='a80'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Reference>
>>>> <Model:Reference xmi.id='a81' name='targetFlow' annotation=''
>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>> type='a82' referencedEnd='a83'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Reference>
>>>> <Model:Reference xmi.id='a84' name='sourceFlow' annotation=''
>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>> type='a82' referencedEnd='a85'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Reference>
>>>> <Model:Reference xmi.id='a86' name='comment' annotation=''
>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>> type='a87' referencedEnd='a88'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Reference>
>>>> <Model:Reference xmi.id='a89' name='templateParameter'
>>>> annotation='' scope='instance_level' visibility='public_vis'
>>>> isChangeable='true' type='a90' referencedEnd='a91'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>> <XMI.field>true</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Reference>
>>>> <Model:Reference xmi.id='a92' name='stereotype' annotation=''
>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>> type='a93' referencedEnd='a94'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Reference>
>>>> <Model:Reference xmi.id='a95' name='taggedValue'
>>>> annotation='' scope='instance_level' visibility='public_vis'
>>>> isChangeable='true' type='a96' referencedEnd='a97'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Reference>
>>>> </Model:Namespace.contents>
>>>> </Model:Class>
>>>> <Model:Import xmi.id='a98' name='Data_Types' annotation=''
>>>> visibility='public_vis' isClustered='true' importedNamespace='a4'>
>>>> </Model:Import>
>>>> <Model:Tag xmi.id='a99'
>>>> name='org.omg.mof.idl_substitute_name=umlConstraint' annotation=''
>>>> tagId='org.omg.mof.idl_substitute_name' elements='a78 a80'>
>>>> <Model:Tag.values>
>>>> <XMI.any xmi.type='string'>umlConstraint</XMI.any>
>>>> </Model:Tag.values>
>>>> </Model:Tag>
>>>> <Model:Class xmi.id='a100' name='GeneralizableElement'
>>>> annotation='' isRoot='false' isLeaf='false' isAbstract='true'
>>>> visibility='public_vis' isSingleton='false' supertypes='a68'>
>>>> <Model:Namespace.contents>
>>>> <Model:Attribute xmi.id='a101' name='isRoot' annotation=''
>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>> isDerived='false' type='a26'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>1</XMI.field> <!-- lower -->
>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Attribute>
>>>> <Model:Attribute xmi.id='a102' name='isLeaf' annotation=''
>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>> isDerived='false' type='a26'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>1</XMI.field> <!-- lower -->
>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Attribute>
>>>> <Model:Attribute xmi.id='a103' name='isAbstract'
>>>> annotation='' scope='instance_level' visibility='public_vis'
>>>> isChangeable='true' isDerived='false' type='a26'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>1</XMI.field> <!-- lower -->
>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Attribute>
>>>> <Model:Reference xmi.id='a104' name='generalization'
>>>> annotation='' scope='instance_level' visibility='public_vis'
>>>> isChangeable='true' type='a105' referencedEnd='a106'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Reference>
>>>> </Model:Namespace.contents>
>>>> </Model:Class>
>>>> <Model:Class xmi.id='a73' name='Namespace' annotation=''
>>>> isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis'
>>>> isSingleton='false' supertypes='a68'>
>>>> <Model:Namespace.contents>
>>>> <Model:Reference xmi.id='a107' name='ownedElement'
>>>> annotation='' scope='instance_level' visibility='public_vis'
>>>> isChangeable='true' type='a68' referencedEnd='a108'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Reference>
>>>> </Model:Namespace.contents>
>>>> </Model:Class>
>>>> <Model:Class xmi.id='a109' name='Classifier' annotation=''
>>>> isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis'
>>>> isSingleton='false' supertypes='a100 a73'>
>>>> <Model:Namespace.contents>
>>>> <Model:Reference xmi.id='a110' name='feature' annotation=''
>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>> type='a111' referencedEnd='a112'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>> <XMI.field>true</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Reference>
>>>> <Model:Reference xmi.id='a113' name='powertypeRange'
>>>> annotation='' scope='instance_level' visibility='public_vis'
>>>> isChangeable='true' type='a105' referencedEnd='a114'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Reference>
>>>> </Model:Namespace.contents>
>>>> </Model:Class>
>>>> <Model:Class xmi.id='a115' name='Class' annotation=''
>>>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>>>> isSingleton='false' supertypes='a109'>
>>>> <Model:Namespace.contents>
>>>> <Model:Attribute xmi.id='a116' name='isActive' annotation=''
>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>> isDerived='false' type='a26'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>1</XMI.field> <!-- lower -->
>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Attribute>
>>>> </Model:Namespace.contents>
>>>> </Model:Class>
>>>> <Model:Class xmi.id='a117' name='DataType' annotation=''
>>>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>>>> isSingleton='false' supertypes='a109'>
>>>> </Model:Class>
>>>> <Model:Class xmi.i
Re: [Epsilon] Using OCL in Meta-Model level [message #378039 is a reply to message #378032] Sun, 20 May 2007 00:27 Go to previous message
Eclipse UserFriend
Originally posted by: b_zamani.encs.concordia.ca

Thank you Dimitrios,

It seems that I've totally mixed those two meta-models!
I hope OMG one day fixes these confusions as it is emphasized on page xii of
MOF1.4 specification:
"In the future, it is anticipated that OMG processes will eventually
accomplish a merging of the UML and MOF (meta-)metamodels."

good luck,
Bahman

"Dimitrios Kolovos" <dskolovos@gmail.com> wrote in message
news:f2nuid$uod$1@build.eclipse.org...
> Hi Bahman,
>
> Bahman wrote:
>> Hi Dimitrios,
>>
>> For A&B) My understanding was that since MOF1.4 is the metamodel of
>> UML1.4, everybody who wants to implement MOF1.4, should consider its
>> structure (e.g. Model structure depicted in figure3-2) and implement it.
>> So, I expected to see the same attributes and operations as there is in
>> that figure.
>
> I understand the confusion introduced by the similarity between MOF and
> UML, but I should stress again that MOF!ModelElement != UML!NamedElement
> (they are two constructs in two *different* metamodels that happen to have
> the same name).
>
>> For B&C) It's true that B is for UML1.4 and C is for UML1.5, but I don't
>> think there should be so much changes from 1.4 to 1.5! Do you?
>>
>
> I'm not familiar with the metamodel of UML 1.5 but I don't expect it to be
> drastically different to that of UML 1.4. Getting hands on the actual
> metamodel in XMI would help a lot in locating the exact differences.
>
>> best,
>> Bahman
>>
>
> Cheers,
> Dimitrios
>
>> "Dimitrios Kolovos" <dskolovos@gmail.com> wrote in message
>> news:f2npn3$6um$1@build.eclipse.org...
>>> Hi Bahman,
>>>
>>> (A) describes *MOF itself* while (B) and (C) describe *UML using MOF*.
>>> (The common *NamedElement* thing is a result of MOF emerging from UML at
>>> some point, but you can consider it as an unlucky coincidence).
>>>
>>> As for the differences between (B) and (C), with regard to the
>>> attributes/references of the UML ModelElement, any differences may be
>>> due to the fact that (B) refers to version 1.4 of UML and (C) to version
>>> 1.5. BTW, if you find/have the UML 1.5 metamodel in XMI, we can use it
>>> to generate a similar javadoc-like set of pages.
>>>
>>> As for the operations part, (B) doesn't document operations at all
>>> because since MOF lacks an action semantics, MOF-level operations are
>>> not executable - and thus useless to Epsilon.
>>>
>>> I hope this helps.
>>>
>>> Cheers,
>>> Dimitrios
>>>
>>> Bahman wrote:
>>>> Hi Dimitrios,
>>>>
>>>> Thanks for the comment and the link.
>>>> I'm not sure what makes me confused! Would you please consider the
>>>> following concrete example and let me know your idea?
>>>>
>>>> A) Considering the MOF Model structure depicted by figure3-2 on page
>>>> 3-13 of the MOF1.4 specification
>>>> (http://www.omg.org/docs/formal/02-04-03.pdf), each Model Element has
>>>> specific attributes, references, and operations (as explained in
>>>> section 3.4.1).
>>>> B) Considering the description of class ModelElement from the link you
>>>> introduced (http://www-users.cs.york.ac.uk/~dkolovos/uml14/), the
>>>> attributes and references are totally different than what is specified
>>>> in (A).
>>>> C) Considering UML1.5 metamodel of OCLE 2.0 tool, I find a class
>>>> ModelElement with just one attribute (name) and six operations which
>>>> seems almost different that operations or references in (A) or (B).
>>>>
>>>> best,
>>>> Bahman
>>>>
>>>>
>>>> "Dimitrios Kolovos" <dskolovos@gmail.com> wrote in message
>>>> news:f2fjdg$p0d$1@build.eclipse.org...
>>>>> Hi Bahman,
>>>>>
>>>>> The properties of each metaclass (e.g. Class, ModelElement etc) are
>>>>> defined in the metamodel of the language. For ArgoUML the metamodel is
>>>>> a
>>>>> MOF1.4/XMI 1.1 file (attached). From this, I've generated a set of
>>>>> JavaDoc-like HTML pages available at
>>>>> http://www-users.cs.york.ac.uk/~dkolovos/uml14/ which you may find
>>>>> more
>>>>> usable than the XMI metamodel itself :)
>>>>>
>>>>> Cheers,
>>>>> Dimitrios
>>>>>
>>>>> Bahman wrote:
>>>>>> Hi everybody,
>>>>>>
>>>>>> I have a problem understanding how to use OCL (especially in
>>>>>> MetaModel
>>>>>> level), if you have time to guide me, that would be appreciated.
>>>>>>
>>>>>> So far I've worked with some tools such as ArgoUML (adding some
>>>>>> critics to
>>>>>> it), OCLE (checking OCLs in model level and metamodel level), and
>>>>>> recently
>>>>>> Epsilon (Adding some more functionalities on its ArgoUML version).
>>>>>>
>>>>>> My problem is that I don't know from where can I find all the
>>>>>> OPERATIONS and
>>>>>> FUNCTIONS that I can apply on a model (Meta-Model). Let me make it
>>>>>> clear by
>>>>>> an example:
>>>>>>
>>>>>> 1) In Epsilon, I've written the following operation to check whether
>>>>>> or not
>>>>>> a class own an attribute. But I knew nothing about the FEATURE
>>>>>> property that
>>>>>> could be applied on a class. I just found it by reviewing existing
>>>>>> similar
>>>>>> codes.
>>>>>>
>>>>>> operation Class hasAttribute (name : String) : Boolean {
>>>>>> return self.feature.exists (a:Attribute | a.name = name);
>>>>>> }
>>>>>>
>>>>>> 2) In ArgoUML, I had to write the following method to check the above
>>>>>> condition. However, since it was in Eclipse, I could see which
>>>>>> methods are
>>>>>> available by Model's Facade class (thanks to Eclipse assistance).
>>>>>>
>>>>>> public static boolean classHasAtt (Object cls) {
>>>>>> boolean found = false;
>>>>>> Collection atts = Model.getFacade().getAttributes(cls);
>>>>>> if ( atts.size() > 0 ) {
>>>>>> found = true ;
>>>>>> }
>>>>>> return found;
>>>>>> }
>>>>>>
>>>>>> Again my question is: "let say the context is a class, how can I
>>>>>> access to
>>>>>> all its attributes? its operations? its stereotypes?" The same
>>>>>> question
>>>>>> applies for every ModelElement.
>>>>>>
>>>>>> best,
>>>>>> Bahman
>>>>>>
>>>>>>
>>>>>>
>>>>
>>>> ------------------------------------------------------------ --------------------
>>>>
>>>>
>>>>> <?xml version="1.0" encoding="UTF-8" ?>
>>>>> <!-- <!DOCTYPE XMI SYSTEM 'Model.dtd'> -->
>>>>> <XMI xmi.version='1.1' xmlns:Model='omg.org/mof.Model/1.3'>
>>>>> <XMI.header>
>>>>> <XMI.model xmi.name='UML' xmi.version='1.4'/>
>>>>> <XMI.metamodel xmi.name='Model' xmi.version='1.3'/>
>>>>> </XMI.header>
>>>>> <XMI.content>
>>>>> <Model:Package xmi.id='a0' name='UML' annotation='' isRoot='false'
>>>>> isLeaf='false' isAbstract='false' visibility='public_vis'>
>>>>> <Model:Namespace.contents>
>>>>> <Model:Tag xmi.id='a1' name='org.omg.mof.idl_prefix=org.omg'
>>>>> annotation='' tagId='org.omg.mof.idl_prefix' elements='a0'>
>>>>> <Model:Tag.values>
>>>>> <XMI.any xmi.type='string'>org.omg</XMI.any>
>>>>> </Model:Tag.values>
>>>>> </Model:Tag>
>>>>> <Model:Tag xmi.id='a2' name='org.omg.xmi.namespace=UML'
>>>>> annotation='' tagId='org.omg.xmi.namespace' elements='a0'>
>>>>> <Model:Tag.values>
>>>>> <XMI.any xmi.type='string'>UML</XMI.any>
>>>>> </Model:Tag.values>
>>>>> </Model:Tag>
>>>>> <Model:Import xmi.id='a3' name='Data_Types' annotation=''
>>>>> visibility='public_vis' isClustered='true' importedNamespace='a4'>
>>>>> </Model:Import>
>>>>> <Model:Import xmi.id='a5' name='Core' annotation=''
>>>>> visibility='public_vis' isClustered='true' importedNamespace='a6'>
>>>>> </Model:Import>
>>>>> <Model:Import xmi.id='a7' name='Common_Behavior' annotation=''
>>>>> visibility='public_vis' isClustered='true' importedNamespace='a8'>
>>>>> </Model:Import>
>>>>> <Model:Import xmi.id='a9' name='Use_Cases' annotation=''
>>>>> visibility='public_vis' isClustered='true' importedNamespace='a10'>
>>>>> </Model:Import>
>>>>> <Model:Import xmi.id='a11' name='State_Machines' annotation=''
>>>>> visibility='public_vis' isClustered='true' importedNamespace='a12'>
>>>>> </Model:Import>
>>>>> <Model:Import xmi.id='a13' name='Collaborations' annotation=''
>>>>> visibility='public_vis' isClustered='true' importedNamespace='a14'>
>>>>> </Model:Import>
>>>>> <Model:Import xmi.id='a15' name='Activity_Graphs' annotation=''
>>>>> visibility='public_vis' isClustered='true' importedNamespace='a16'>
>>>>> </Model:Import>
>>>>> <Model:Import xmi.id='a17' name='Model_Management'
>>>>> annotation='' visibility='public_vis' isClustered='true'
>>>>> importedNamespace='a18'>
>>>>> </Model:Import>
>>>>> </Model:Namespace.contents>
>>>>> </Model:Package>
>>>>> <Model:Package xmi.id='a4' name='Data_Types' annotation=''
>>>>> isRoot='false' isLeaf='false' isAbstract='false'
>>>>> visibility='public_vis'>
>>>>> <Model:Namespace.contents>
>>>>> <Model:Tag xmi.id='a19'
>>>>> name='org.omg.mof.idl_prefix=org.omg.uml.Foundation' annotation=''
>>>>> tagId='org.omg.mof.idl_prefix' elements='a4'>
>>>>> <Model:Tag.values>
>>>>> <XMI.any xmi.type='string'>org.omg.uml.Foundation</XMI.any>
>>>>> </Model:Tag.values>
>>>>> </Model:Tag>
>>>>> <Model:Tag xmi.id='a20' name='org.omg.xmi.namespace=UML'
>>>>> annotation='' tagId='org.omg.xmi.namespace' elements='a4'>
>>>>> <Model:Tag.values>
>>>>> <XMI.any xmi.type='string'>UML</XMI.any>
>>>>> </Model:Tag.values>
>>>>> </Model:Tag>
>>>>> <Model:DataType xmi.id='a21' name='Integer' annotation=''
>>>>> isRoot='true' isLeaf='true' isAbstract='false'
>>>>> visibility='public_vis'>
>>>>> <Model:DataType.typeCode>
>>>>> <XMI.CorbaTypeCode>
>>>>> <XMI.CorbaTcLong/>
>>>>> </XMI.CorbaTypeCode>
>>>>> </Model:DataType.typeCode>
>>>>> </Model:DataType>
>>>>> <Model:DataType xmi.id='a22' name='UnlimitedInteger'
>>>>> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
>>>>> visibility='public_vis'>
>>>>> <Model:DataType.typeCode>
>>>>> <XMI.CorbaTypeCode>
>>>>> <XMI.CorbaTcAlias xmi.tcName='UnlimitedInteger'
>>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/UnlimitedInt eger:1.0' >
>>>>> <XMI.CorbaTypeCode>
>>>>> <XMI.CorbaTcLong/>
>>>>> </XMI.CorbaTypeCode>
>>>>> </XMI.CorbaTcAlias>
>>>>> </XMI.CorbaTypeCode>
>>>>> </Model:DataType.typeCode>
>>>>> </Model:DataType>
>>>>> <Model:DataType xmi.id='a23' name='String' annotation=''
>>>>> isRoot='true' isLeaf='true' isAbstract='false'
>>>>> visibility='public_vis'>
>>>>> <Model:DataType.typeCode>
>>>>> <XMI.CorbaTypeCode>
>>>>> <XMI.CorbaTcString xmi.tcLength='0'/>
>>>>> </XMI.CorbaTypeCode>
>>>>> </Model:DataType.typeCode>
>>>>> </Model:DataType>
>>>>> <Model:DataType xmi.id='a24' name='AggregationKind'
>>>>> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
>>>>> visibility='public_vis'>
>>>>> <Model:DataType.typeCode>
>>>>> <XMI.CorbaTypeCode>
>>>>> <XMI.CorbaTcEnum xmi.tcName='AggregationKind'
>>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/AggregationK ind:1.0' >
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='ak_none'/>
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='ak_aggregate'/>
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='ak_composite'/>
>>>>> </XMI.CorbaTcEnum>
>>>>> </XMI.CorbaTypeCode>
>>>>> </Model:DataType.typeCode>
>>>>> </Model:DataType>
>>>>> <Model:Tag xmi.id='a25'
>>>>> name='org.omg.xmi.enumerationUnprefix=ak_' annotation=''
>>>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a24'>
>>>>> <Model:Tag.values>
>>>>> <XMI.any xmi.type='string'>ak_</XMI.any>
>>>>> </Model:Tag.values>
>>>>> </Model:Tag>
>>>>> <Model:DataType xmi.id='a26' name='Boolean' annotation=''
>>>>> isRoot='true' isLeaf='true' isAbstract='false'
>>>>> visibility='public_vis'>
>>>>> <Model:DataType.typeCode>
>>>>> <XMI.CorbaTypeCode>
>>>>> <XMI.CorbaTcBoolean/>
>>>>> </XMI.CorbaTypeCode>
>>>>> </Model:DataType.typeCode>
>>>>> </Model:DataType>
>>>>> <Model:DataType xmi.id='a27' name='CallConcurrencyKind'
>>>>> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
>>>>> visibility='public_vis'>
>>>>> <Model:DataType.typeCode>
>>>>> <XMI.CorbaTypeCode>
>>>>> <XMI.CorbaTcEnum xmi.tcName='CallConcurrencyKind'
>>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/CallConcurre ncyKind:1.0' >
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='cck_sequential'/>
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='cck_guarded'/>
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='cck_concurrent'/>
>>>>> </XMI.CorbaTcEnum>
>>>>> </XMI.CorbaTypeCode>
>>>>> </Model:DataType.typeCode>
>>>>> </Model:DataType>
>>>>> <Model:Tag xmi.id='a28'
>>>>> name='org.omg.xmi.enumerationUnprefix=cck_' annotation=''
>>>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a27'>
>>>>> <Model:Tag.values>
>>>>> <XMI.any xmi.type='string'>cck_</XMI.any>
>>>>> </Model:Tag.values>
>>>>> </Model:Tag>
>>>>> <Model:DataType xmi.id='a29' name='ChangeableKind'
>>>>> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
>>>>> visibility='public_vis'>
>>>>> <Model:DataType.typeCode>
>>>>> <XMI.CorbaTypeCode>
>>>>> <XMI.CorbaTcEnum xmi.tcName='ChangeableKind'
>>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/ChangeableKi nd:1.0' >
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='ck_changeable'/>
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='ck_frozen'/>
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='ck_addOnly'/>
>>>>> </XMI.CorbaTcEnum>
>>>>> </XMI.CorbaTypeCode>
>>>>> </Model:DataType.typeCode>
>>>>> </Model:DataType>
>>>>> <Model:Tag xmi.id='a30'
>>>>> name='org.omg.xmi.enumerationUnprefix=ck_' annotation=''
>>>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a29'>
>>>>> <Model:Tag.values>
>>>>> <XMI.any xmi.type='string'>ck_</XMI.any>
>>>>> </Model:Tag.values>
>>>>> </Model:Tag>
>>>>> <Model:DataType xmi.id='a31' name='OrderingKind' annotation=''
>>>>> isRoot='true' isLeaf='true' isAbstract='false'
>>>>> visibility='public_vis'>
>>>>> <Model:DataType.typeCode>
>>>>> <XMI.CorbaTypeCode>
>>>>> <XMI.CorbaTcEnum xmi.tcName='OrderingKind'
>>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/OrderingKind :1.0' >
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='ok_unordered'/>
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='ok_ordered'/>
>>>>> </XMI.CorbaTcEnum>
>>>>> </XMI.CorbaTypeCode>
>>>>> </Model:DataType.typeCode>
>>>>> </Model:DataType>
>>>>> <Model:Tag xmi.id='a32'
>>>>> name='org.omg.xmi.enumerationUnprefix=ok_' annotation=''
>>>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a31'>
>>>>> <Model:Tag.values>
>>>>> <XMI.any xmi.type='string'>ok_</XMI.any>
>>>>> </Model:Tag.values>
>>>>> </Model:Tag>
>>>>> <Model:DataType xmi.id='a33' name='ParameterDirectionKind'
>>>>> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
>>>>> visibility='public_vis'>
>>>>> <Model:DataType.typeCode>
>>>>> <XMI.CorbaTypeCode>
>>>>> <XMI.CorbaTcEnum xmi.tcName='ParameterDirectionKind'
>>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/ParameterDir ectionKind:1.0' >
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='pdk_in'/>
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='pdk_inout'/>
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='pdk_out'/>
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='pdk_return'/>
>>>>> </XMI.CorbaTcEnum>
>>>>> </XMI.CorbaTypeCode>
>>>>> </Model:DataType.typeCode>
>>>>> </Model:DataType>
>>>>> <Model:Tag xmi.id='a34'
>>>>> name='org.omg.xmi.enumerationUnprefix=pdk_' annotation=''
>>>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a33'>
>>>>> <Model:Tag.values>
>>>>> <XMI.any xmi.type='string'>pdk_</XMI.any>
>>>>> </Model:Tag.values>
>>>>> </Model:Tag>
>>>>> <Model:DataType xmi.id='a35' name='ScopeKind' annotation=''
>>>>> isRoot='true' isLeaf='true' isAbstract='false'
>>>>> visibility='public_vis'>
>>>>> <Model:DataType.typeCode>
>>>>> <XMI.CorbaTypeCode>
>>>>> <XMI.CorbaTcEnum xmi.tcName='ScopeKind'
>>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/ScopeKind:1. 0' >
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='sk_instance'/>
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='sk_classifier'/>
>>>>> </XMI.CorbaTcEnum>
>>>>> </XMI.CorbaTypeCode>
>>>>> </Model:DataType.typeCode>
>>>>> </Model:DataType>
>>>>> <Model:Tag xmi.id='a36'
>>>>> name='org.omg.xmi.enumerationUnprefix=sk_' annotation=''
>>>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a35'>
>>>>> <Model:Tag.values>
>>>>> <XMI.any xmi.type='string'>sk_</XMI.any>
>>>>> </Model:Tag.values>
>>>>> </Model:Tag>
>>>>> <Model:DataType xmi.id='a37' name='VisibilityKind'
>>>>> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
>>>>> visibility='public_vis'>
>>>>> <Model:DataType.typeCode>
>>>>> <XMI.CorbaTypeCode>
>>>>> <XMI.CorbaTcEnum xmi.tcName='VisibilityKind'
>>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/VisibilityKi nd:1.0' >
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='vk_public'/>
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='vk_protected'/>
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='vk_private'/>
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='vk_package'/>
>>>>> </XMI.CorbaTcEnum>
>>>>> </XMI.CorbaTypeCode>
>>>>> </Model:DataType.typeCode>
>>>>> </Model:DataType>
>>>>> <Model:Tag xmi.id='a38'
>>>>> name='org.omg.xmi.enumerationUnprefix=vk_' annotation=''
>>>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a37'>
>>>>> <Model:Tag.values>
>>>>> <XMI.any xmi.type='string'>vk_</XMI.any>
>>>>> </Model:Tag.values>
>>>>> </Model:Tag>
>>>>> <Model:DataType xmi.id='a39' name='Name' annotation=''
>>>>> isRoot='true' isLeaf='true' isAbstract='false'
>>>>> visibility='public_vis'>
>>>>> <Model:DataType.typeCode>
>>>>> <XMI.CorbaTypeCode>
>>>>> <XMI.CorbaTcAlias xmi.tcName='Name'
>>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/Name:1.0'>
>>>>> <XMI.CorbaTypeCode>
>>>>> <XMI.CorbaTcString xmi.tcLength='0'/>
>>>>> </XMI.CorbaTypeCode>
>>>>> </XMI.CorbaTcAlias>
>>>>> </XMI.CorbaTypeCode>
>>>>> </Model:DataType.typeCode>
>>>>> </Model:DataType>
>>>>> <Model:Class xmi.id='a40' name='Multiplicity' annotation=''
>>>>> isRoot='false' isLeaf='false' isAbstract='false'
>>>>> visibility='public_vis' isSingleton='false'>
>>>>> <Model:Namespace.contents>
>>>>> <Model:Reference xmi.id='a41' name='range' annotation=''
>>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>>> type='a42' referencedEnd='a43'>
>>>>> <Model:StructuralFeature.multiplicity>
>>>>> <XMI.field>1</XMI.field> <!-- lower -->
>>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>>> </Model:StructuralFeature.multiplicity>
>>>>> </Model:Reference>
>>>>> </Model:Namespace.contents>
>>>>> </Model:Class>
>>>>> <Model:Class xmi.id='a42' name='MultiplicityRange'
>>>>> annotation='' isRoot='false' isLeaf='false' isAbstract='false'
>>>>> visibility='public_vis' isSingleton='false'>
>>>>> <Model:Namespace.contents>
>>>>> <Model:Attribute xmi.id='a44' name='lower' annotation=''
>>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>>> isDerived='false' type='a21'>
>>>>> <Model:StructuralFeature.multiplicity>
>>>>> <XMI.field>1</XMI.field> <!-- lower -->
>>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>>> </Model:StructuralFeature.multiplicity>
>>>>> </Model:Attribute>
>>>>> <Model:Attribute xmi.id='a45' name='upper' annotation=''
>>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>>> isDerived='false' type='a22'>
>>>>> <Model:StructuralFeature.multiplicity>
>>>>> <XMI.field>1</XMI.field> <!-- lower -->
>>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>>> </Model:StructuralFeature.multiplicity>
>>>>> </Model:Attribute>
>>>>> <Model:Reference xmi.id='a46' name='multiplicity'
>>>>> annotation='' scope='instance_level' visibility='public_vis'
>>>>> isChangeable='true' type='a40' referencedEnd='a47'>
>>>>> <Model:StructuralFeature.multiplicity>
>>>>> <XMI.field>1</XMI.field> <!-- lower -->
>>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>>> </Model:StructuralFeature.multiplicity>
>>>>> </Model:Reference>
>>>>> </Model:Namespace.contents>
>>>>> </Model:Class>
>>>>> <Model:Class xmi.id='a48' name='Expression' annotation=''
>>>>> isRoot='false' isLeaf='false' isAbstract='false'
>>>>> visibility='public_vis' isSingleton='false'>
>>>>> <Model:Namespace.contents>
>>>>> <Model:Attribute xmi.id='a49' name='language' annotation=''
>>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>>> isDerived='false' type='a39'>
>>>>> <Model:StructuralFeature.multiplicity>
>>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>>> </Model:StructuralFeature.multiplicity>
>>>>> </Model:Attribute>
>>>>> <Model:Attribute xmi.id='a50' name='body' annotation=''
>>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>>> isDerived='false' type='a23'>
>>>>> <Model:StructuralFeature.multiplicity>
>>>>> <XMI.field>1</XMI.field> <!-- lower -->
>>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>>> </Model:StructuralFeature.multiplicity>
>>>>> </Model:Attribute>
>>>>> </Model:Namespace.contents>
>>>>> </Model:Class>
>>>>> <Model:Class xmi.id='a51' name='BooleanExpression'
>>>>> annotation='' isRoot='false' isLeaf='false' isAbstract='false'
>>>>> visibility='public_vis' isSingleton='false' supertypes='a48'>
>>>>> </Model:Class>
>>>>> <Model:Class xmi.id='a52' name='TypeExpression' annotation=''
>>>>> isRoot='false' isLeaf='false' isAbstract='false'
>>>>> visibility='public_vis' isSingleton='false' supertypes='a48'>
>>>>> </Model:Class>
>>>>> <Model:Class xmi.id='a53' name='MappingExpression'
>>>>> annotation='' isRoot='false' isLeaf='false' isAbstract='false'
>>>>> visibility='public_vis' isSingleton='false' supertypes='a48'>
>>>>> </Model:Class>
>>>>> <Model:Class xmi.id='a54' name='ProcedureExpression'
>>>>> annotation='' isRoot='false' isLeaf='false' isAbstract='false'
>>>>> visibility='public_vis' isSingleton='false' supertypes='a48'>
>>>>> </Model:Class>
>>>>> <Model:Class xmi.id='a55' name='ObjectSetExpression'
>>>>> annotation='' isRoot='false' isLeaf='false' isAbstract='false'
>>>>> visibility='public_vis' isSingleton='false' supertypes='a48'>
>>>>> </Model:Class>
>>>>> <Model:Class xmi.id='a56' name='ActionExpression' annotation=''
>>>>> isRoot='false' isLeaf='false' isAbstract='false'
>>>>> visibility='public_vis' isSingleton='false' supertypes='a48'>
>>>>> </Model:Class>
>>>>> <Model:Class xmi.id='a57' name='IterationExpression'
>>>>> annotation='' isRoot='false' isLeaf='false' isAbstract='false'
>>>>> visibility='public_vis' isSingleton='false' supertypes='a48'>
>>>>> </Model:Class>
>>>>> <Model:Class xmi.id='a58' name='TimeExpression' annotation=''
>>>>> isRoot='false' isLeaf='false' isAbstract='false'
>>>>> visibility='public_vis' isSingleton='false' supertypes='a48'>
>>>>> </Model:Class>
>>>>> <Model:Class xmi.id='a59' name='ArgListsExpression'
>>>>> annotation='' isRoot='false' isLeaf='false' isAbstract='false'
>>>>> visibility='public_vis' isSingleton='false' supertypes='a48'>
>>>>> </Model:Class>
>>>>> <Model:DataType xmi.id='a60' name='LocationReference'
>>>>> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
>>>>> visibility='public_vis'>
>>>>> <Model:DataType.typeCode>
>>>>> <XMI.CorbaTypeCode>
>>>>> <XMI.CorbaTcAlias xmi.tcName='LocationReference'
>>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/LocationRefe rence:1.0' >
>>>>> <XMI.CorbaTypeCode>
>>>>> <XMI.CorbaTcString xmi.tcLength='0'/>
>>>>> </XMI.CorbaTypeCode>
>>>>> </XMI.CorbaTcAlias>
>>>>> </XMI.CorbaTypeCode>
>>>>> </Model:DataType.typeCode>
>>>>> </Model:DataType>
>>>>> <Model:DataType xmi.id='a61' name='PseudostateKind'
>>>>> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
>>>>> visibility='public_vis'>
>>>>> <Model:DataType.typeCode>
>>>>> <XMI.CorbaTypeCode>
>>>>> <XMI.CorbaTcEnum xmi.tcName='PseudostateKind'
>>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/PseudostateK ind:1.0' >
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_choice'/>
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_deepHistory'/>
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_fork'/>
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_initial'/>
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_join'/>
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_junction'/>
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_shallowHistory'/>
>>>>> </XMI.CorbaTcEnum>
>>>>> </XMI.CorbaTypeCode>
>>>>> </Model:DataType.typeCode>
>>>>> </Model:DataType>
>>>>> <Model:Tag xmi.id='a62'
>>>>> name='org.omg.xmi.enumerationUnprefix=pk_' annotation=''
>>>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a61'>
>>>>> <Model:Tag.values>
>>>>> <XMI.any xmi.type='string'>pk_</XMI.any>
>>>>> </Model:Tag.values>
>>>>> </Model:Tag>
>>>>> <Model:DataType xmi.id='a63' name='Geometry' annotation=''
>>>>> isRoot='true' isLeaf='true' isAbstract='false'
>>>>> visibility='public_vis'>
>>>>> <Model:DataType.typeCode>
>>>>> <XMI.CorbaTypeCode>
>>>>> <XMI.CorbaTcAlias xmi.tcName='Geometry'
>>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/Geometry:1.0 ' >
>>>>> <XMI.CorbaTypeCode>
>>>>> <XMI.CorbaTcString xmi.tcLength='0'/>
>>>>> </XMI.CorbaTypeCode>
>>>>> </XMI.CorbaTcAlias>
>>>>> </XMI.CorbaTypeCode>
>>>>> </Model:DataType.typeCode>
>>>>> </Model:DataType>
>>>>> <Model:Association xmi.id='a64' name='A_multiplicity_range'
>>>>> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
>>>>> visibility='public_vis' isDerived='false'>
>>>>> <Model:Namespace.contents>
>>>>> <Model:AssociationEnd xmi.id='a47' name='multiplicity'
>>>>> annotation='' isNavigable='true' aggregation='composite'
>>>>> isChangeable='true' type='a40'>
>>>>> <Model:AssociationEnd.multiplicity>
>>>>> <XMI.field>1</XMI.field> <!-- lower -->
>>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>>> </Model:AssociationEnd.multiplicity>
>>>>> </Model:AssociationEnd>
>>>>> <Model:AssociationEnd xmi.id='a43' name='range'
>>>>> annotation='' isNavigable='true' aggregation='none'
>>>>> isChangeable='true' type='a42'>
>>>>> <Model:AssociationEnd.multiplicity>
>>>>> <XMI.field>1</XMI.field> <!-- lower -->
>>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>>> </Model:AssociationEnd.multiplicity>
>>>>> </Model:AssociationEnd>
>>>>> </Model:Namespace.contents>
>>>>> </Model:Association>
>>>>> </Model:Namespace.contents>
>>>>> </Model:Package>
>>>>> <Model:Package xmi.id='a6' name='Core' annotation='' isRoot='false'
>>>>> isLeaf='false' isAbstract='false' visibility='public_vis'>
>>>>> <Model:Namespace.contents>
>>>>> <Model:Tag xmi.id='a65'
>>>>> name='org.omg.mof.idl_prefix=org.omg.uml.Foundation' annotation=''
>>>>> tagId='org.omg.mof.idl_prefix' elements='a6'>
>>>>> <Model:Tag.values>
>>>>> <XMI.any xmi.type='string'>org.omg.uml.Foundation</XMI.any>
>>>>> </Model:Tag.values>
>>>>> </Model:Tag>
>>>>> <Model:Tag xmi.id='a66' name='org.omg.xmi.namespace=UML'
>>>>> annotation='' tagId='org.omg.xmi.namespace' elements='a6'>
>>>>> <Model:Tag.values>
>>>>> <XMI.any xmi.type='string'>UML</XMI.any>
>>>>> </Model:Tag.values>
>>>>> </Model:Tag>
>>>>> <Model:Class xmi.id='a67' name='Element' annotation=''
>>>>> isRoot='false' isLeaf='false' isAbstract='true'
>>>>> visibility='public_vis' isSingleton='false'>
>>>>> </Model:Class>
>>>>> <Model:Class xmi.id='a68' name='ModelElement' annotation=''
>>>>> isRoot='false' isLeaf='false' isAbstract='true'
>>>>> visibility='public_vis' isSingleton='false' supertypes='a67'>
>>>>> <Model:Namespace.contents>
>>>>> <Model:Attribute xmi.id='a69' name='name' annotation=''
>>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>>> isDerived='false' type='a39'>
>>>>> <Model:StructuralFeature.multiplicity>
>>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>>> </Model:StructuralFeature.multiplicity>
>>>>> </Model:Attribute>
>>>>> <Model:Attribute xmi.id='a70' name='visibility'
>>>>> annotation='' scope='instance_level' visibility='public_vis'
>>>>> isChangeable='true' isDerived='false' type='a37'>
>>>>> <Model:StructuralFeature.multiplicity>
>>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>>> </Model:StructuralFeature.multiplicity>
>>>>> </Model:Attribute>
>>>>> <Model:Attribute xmi.id='a71' name='isSpecification'
>>>>> annotation='' scope='instance_level' visibility='public_vis'
>>>>> isChangeable='true' isDerived='false' type='a26'>
>>>>> <Model:StructuralFeature.multiplicity>
>>>>> <XMI.field>1</XMI.field> <!-- lower -->
>>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>>> </Model:StructuralFeature.multiplicity>
>>>>> </Model:Attribute>
>>>>> <Model:Reference xmi.id='a72' name='namespace'
>>>>> annotation='' scope='instance_level' visibility='public_vis'
>>>>> isChangeable='true' type='a73' referencedEnd='a74'>
>>>>> <Model:StructuralFeature.multiplicity>
>>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>>> </Model:StructuralFeature.multiplicity>
>>>>> </Model:Reference>
>>>>> <Model:Reference xmi.id='a75' name='clientDependency'
>>>>> annotation='' scope='instance_level' visibility='public_vis'
>>>>> isChangeable='true' type='a76' referencedEnd='a77'>
>>>>> <Model:StructuralFeature.multiplicity>
>>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>>> </Model:StructuralFeature.multiplicity>
>>>>> </Model:Reference>
>>>>> <Model:Reference xmi.id='a78' name='constraint'
>>>>> annotation='' scope='instance_level' visibility='public_vis'
>>>>> isChangeable='true' type='a79' referencedEnd='a80'>
>>>>> <Model:StructuralFeature.multiplicity>
>>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>>> </Model:StructuralFeature.multiplicity>
>>>>> </Model:Reference>
>>>>> <Model:Reference xmi.id='a81' name='targetFlow'
>>>>> annotation='' scope='instance_level' visibility='public_vis'
>>>>> isChangeable='true' type='a82' referencedEnd='a83'>
>>>>> <Model:StructuralFeature.multiplicity>
>>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>>> </Model:StructuralFeature.multiplicity>
>>>>> </Model:Reference>
>>>>> <Model:Reference xmi.id='a84' name='sourceFlow'
>>>>> annotation='' scope='instance_level' visibility='public_vis'
>>>>> isChangeable='true' type='a82' referencedEnd='a85'>
>>>>> <Model:StructuralFeature.multiplicity>
>>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>>> </Model:StructuralFeature.multiplicity>
>>>>> </Model:Reference>
>>>>> <Model:Reference xmi.id='a86' name='comment' annotation=''
>>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>>> type='a87' referencedEnd='a88'>
>>>>> <Model:StructuralFeature.multiplicity>
>>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>>> </Model:StructuralFeature.multiplicity>
>>>>> </Model:Reference>
>>>>> <Model:Reference xmi.id='a89' name='templateParameter'
>>>>> annotation='' scope='instance_level' visibility='public_vis'
>>>>> isChangeable='true' type='a90' referencedEnd='a91'>
>>>>> <Model:StructuralFeature.multiplicity>
>>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>>> <XMI.field>true</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>>> </Model:StructuralFeature.multiplicity>
>>>>> </Model:Reference>
>>>>> <Model:Reference xmi.id='a92' name='stereotype'
>>>>> annotation='' scope='instance_level' visibility='public_vis'
>>>>> isChangeable='true' type='a93' referencedEnd='a94'>
>>>>> <Model:StructuralFeature.multiplicity>
>>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>>> </Model:StructuralFeature.multiplicity>
>>>>> </Model:Reference>
>>>>> <Model:Reference xmi.id='a95' name='taggedValue'
>>>>> annotation='' scope='instance_level' visibility='public_vis'
>>>>> isChangeable='true' type='a96' referencedEnd='a97'>
>>>>> <Model:StructuralFeature.multiplicity>
>>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>>> </Model:StructuralFeature.multiplicity>
>>>>> </Model:Reference>
>>>>> </Model:Namespace.contents>
>>>>> </Model:Class>
>>>>> <Model:Import xmi.id='a98' name='Data_Types' annotation=''
>>>>> visibility='public_vis' isClustered='true' importedNamespace='a4'>
>>>>> </Model:Import>
>>>>> <Model:Tag xmi.id='a99'
>>>>> name='org.omg.mof.idl_substitute_name=umlConstraint' annotation=''
>>>>> tagId='org.omg.mof.idl_substitute_name' elements='a78 a80'>
>>>>> <Model:Tag.values>
>>>>> <XMI.any xmi.type='string'>umlConstraint</XMI.any>
>>>>> </Model:Tag.values>
>>>>> </Model:Tag>
>>>>> <Model:Class xmi.id='a100' name='GeneralizableElement'
>>>>> annotation='' isRoot='false' isLeaf='false' isAbstract='true'
>>>>> visibility='public_vis' isSingleton='false' supertypes='a68'>
>>>>> <Model:Namespace.contents>
>>>>> <Model:Attribute xmi.id='a101' name='isRoot' annotation=''
>>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>>> isDerived='false' type='a26'>
>>>>> <Model:StructuralFeature.multiplicity>
>>>>> <XMI.field>1</XMI.field> <!-- lower -->
>>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>>> </Model:StructuralFeature.multiplicity>
>>>>> </Model:Attribute>
>>>>> <Model:Attribute xmi.id='a102' name='isLeaf' annotation=''
>>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>>> isDerived='false' type='a26'>
>>>>> <Model:StructuralFeature.multiplicity>
>>>>> <XMI.field>1</XMI.field> <!-- lower -->
>>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>>> </Model:StructuralFeature.multiplicity>
>>>>> </Model:Attribute>
>>>>> <Model:Attribute xmi.id='a103' name='isAbstract'
>>>>> annotation='' scope='instance_level' visibility='public_vis'
>>>>> isChangeable='true' isDerived='false' type='a26'>
>>>>> <Model:StructuralFeature.multiplicity>
>>>>> <XMI.field>1</XMI.field> <!-- lower -->
>>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>>> </Model:StructuralFeature.multiplicity>
>>>>> </Model:Attribute>
>>>>> <Model:Reference xmi.id='a104' name='generalization'
>>>>> annotation='' scope='instance_level' visibility='public_vis'
>>>>> isChangeable='true' type='a105' referencedEnd='a106'>
>>>>> <Model:StructuralFeature.multiplicity>
>>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>>> </Model:StructuralFeature.multiplicity>
>>>>> </Model:Reference>
>>>>> </Model:Namespace.contents>
>>>>> </Model:Class>
>>>>> <Model:Class xmi.id='a73' name='Namespace' annotation=''
>>>>> isRoot='false' isLeaf='false' isAbstract='true'
>>>>> visibility='public_vis' isSingleton='false' supertypes='a68'>
>>>>> <Model:Namespace.contents>
>>>>> <Model:Reference xmi.id='a107' name='ownedElement'
>>>>> annotation='' scope='instance_level' visibility='public_vis'
>>>>> isChangeable='true' type='a68' referencedEnd='a108'>
>>>>> <Model:StructuralFeature.multiplicity>
>>>>> <X
Re: [Epsilon] Using OCL in Meta-Model level [message #597001 is a reply to message #378002] Wed, 16 May 2007 18:43 Go to previous message
Dimitrios Kolovos is currently offline Dimitrios KolovosFriend
Messages: 1776
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------050402000706070903070803
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Hi Bahman,

The properties of each metaclass (e.g. Class, ModelElement etc) are
defined in the metamodel of the language. For ArgoUML the metamodel is a
MOF1.4/XMI 1.1 file (attached). From this, I've generated a set of
JavaDoc-like HTML pages available at
http://www-users.cs.york.ac.uk/~dkolovos/uml14/ which you may find more
usable than the XMI metamodel itself :)

Cheers,
Dimitrios

Bahman wrote:
> Hi everybody,
>
> I have a problem understanding how to use OCL (especially in MetaModel
> level), if you have time to guide me, that would be appreciated.
>
> So far I've worked with some tools such as ArgoUML (adding some critics to
> it), OCLE (checking OCLs in model level and metamodel level), and recently
> Epsilon (Adding some more functionalities on its ArgoUML version).
>
> My problem is that I don't know from where can I find all the OPERATIONS and
> FUNCTIONS that I can apply on a model (Meta-Model). Let me make it clear by
> an example:
>
> 1) In Epsilon, I've written the following operation to check whether or not
> a class own an attribute. But I knew nothing about the FEATURE property that
> could be applied on a class. I just found it by reviewing existing similar
> codes.
>
> operation Class hasAttribute (name : String) : Boolean {
> return self.feature.exists (a:Attribute | a.name = name);
> }
>
> 2) In ArgoUML, I had to write the following method to check the above
> condition. However, since it was in Eclipse, I could see which methods are
> available by Model's Facade class (thanks to Eclipse assistance).
>
> public static boolean classHasAtt (Object cls) {
> boolean found = false;
> Collection atts = Model.getFacade().getAttributes(cls);
> if ( atts.size() > 0 ) {
> found = true ;
> }
> return found;
> }
>
> Again my question is: "let say the context is a class, how can I access to
> all its attributes? its operations? its stereotypes?" The same question
> applies for every ModelElement.
>
> best,
> Bahman
>
>
>

--------------050402000706070903070803
Content-Type: text/xml;
name="uml14.xmi"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="uml14.xmi"

<?xml version="1.0" encoding="UTF-8" ?>
<!-- <!DOCTYPE XMI SYSTEM 'Model.dtd'> -->
<XMI xmi.version='1.1' xmlns:Model='omg.org/mof.Model/1.3'>
<XMI.header>
<XMI.model xmi.name='UML' xmi.version='1.4'/>
<XMI.metamodel xmi.name='Model' xmi.version='1.3'/>
</XMI.header>
<XMI.content>
<Model:Package xmi.id='a0' name='UML' annotation='' isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'>
<Model:Namespace.contents>
<Model:Tag xmi.id='a1' name='org.omg.mof.idl_prefix=org.omg' annotation='' tagId='org.omg.mof.idl_prefix' elements='a0'>
<Model:Tag.values>
<XMI.any xmi.type='string'>org.omg</XMI.any>
</Model:Tag.values>
</Model:Tag>
<Model:Tag xmi.id='a2' name='org.omg.xmi.namespace=UML' annotation='' tagId='org.omg.xmi.namespace' elements='a0'>
<Model:Tag.values>
<XMI.any xmi.type='string'>UML</XMI.any>
</Model:Tag.values>
</Model:Tag>
<Model:Import xmi.id='a3' name='Data_Types' annotation='' visibility='public_vis' isClustered='true' importedNamespace='a4'>
</Model:Import>
<Model:Import xmi.id='a5' name='Core' annotation='' visibility='public_vis' isClustered='true' importedNamespace='a6'>
</Model:Import>
<Model:Import xmi.id='a7' name='Common_Behavior' annotation='' visibility='public_vis' isClustered='true' importedNamespace='a8'>
</Model:Import>
<Model:Import xmi.id='a9' name='Use_Cases' annotation='' visibility='public_vis' isClustered='true' importedNamespace='a10'>
</Model:Import>
<Model:Import xmi.id='a11' name='State_Machines' annotation='' visibility='public_vis' isClustered='true' importedNamespace='a12'>
</Model:Import>
<Model:Import xmi.id='a13' name='Collaborations' annotation='' visibility='public_vis' isClustered='true' importedNamespace='a14'>
</Model:Import>
<Model:Import xmi.id='a15' name='Activity_Graphs' annotation='' visibility='public_vis' isClustered='true' importedNamespace='a16'>
</Model:Import>
<Model:Import xmi.id='a17' name='Model_Management' annotation='' visibility='public_vis' isClustered='true' importedNamespace='a18'>
</Model:Import>
</Model:Namespace.contents>
</Model:Package>
<Model:Package xmi.id='a4' name='Data_Types' annotation='' isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'>
<Model:Namespace.contents>
<Model:Tag xmi.id='a19' name='org.omg.mof.idl_prefix=org.omg.uml.Foundation' annotation='' tagId='org.omg.mof.idl_prefix' elements='a4'>
<Model:Tag.values>
<XMI.any xmi.type='string'>org.omg.uml.Foundation</XMI.any>
</Model:Tag.values>
</Model:Tag>
<Model:Tag xmi.id='a20' name='org.omg.xmi.namespace=UML' annotation='' tagId='org.omg.xmi.namespace' elements='a4'>
<Model:Tag.values>
<XMI.any xmi.type='string'>UML</XMI.any>
</Model:Tag.values>
</Model:Tag>
<Model:DataType xmi.id='a21' name='Integer' annotation='' isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
<Model:DataType.typeCode>
<XMI.CorbaTypeCode>
<XMI.CorbaTcLong/>
</XMI.CorbaTypeCode>
</Model:DataType.typeCode>
</Model:DataType>
<Model:DataType xmi.id='a22' name='UnlimitedInteger' annotation='' isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
<Model:DataType.typeCode>
<XMI.CorbaTypeCode>
<XMI.CorbaTcAlias xmi.tcName='UnlimitedInteger' xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/UnlimitedInt eger:1.0' >
<XMI.CorbaTypeCode>
<XMI.CorbaTcLong/>
</XMI.CorbaTypeCode>
</XMI.CorbaTcAlias>
</XMI.CorbaTypeCode>
</Model:DataType.typeCode>
</Model:DataType>
<Model:DataType xmi.id='a23' name='String' annotation='' isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
<Model:DataType.typeCode>
<XMI.CorbaTypeCode>
<XMI.CorbaTcString xmi.tcLength='0'/>
</XMI.CorbaTypeCode>
</Model:DataType.typeCode>
</Model:DataType>
<Model:DataType xmi.id='a24' name='AggregationKind' annotation='' isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
<Model:DataType.typeCode>
<XMI.CorbaTypeCode>
<XMI.CorbaTcEnum xmi.tcName='AggregationKind' xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/AggregationK ind:1.0' >
<XMI.CorbaTcEnumLabel xmi.tcName='ak_none'/>
<XMI.CorbaTcEnumLabel xmi.tcName='ak_aggregate'/>
<XMI.CorbaTcEnumLabel xmi.tcName='ak_composite'/>
</XMI.CorbaTcEnum>
</XMI.CorbaTypeCode>
</Model:DataType.typeCode>
</Model:DataType>
<Model:Tag xmi.id='a25' name='org.omg.xmi.enumerationUnprefix=ak_' annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a24'>
<Model:Tag.values>
<XMI.any xmi.type='string'>ak_</XMI.any>
</Model:Tag.values>
</Model:Tag>
<Model:DataType xmi.id='a26' name='Boolean' annotation='' isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
<Model:DataType.typeCode>
<XMI.CorbaTypeCode>
<XMI.CorbaTcBoolean/>
</XMI.CorbaTypeCode>
</Model:DataType.typeCode>
</Model:DataType>
<Model:DataType xmi.id='a27' name='CallConcurrencyKind' annotation='' isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
<Model:DataType.typeCode>
<XMI.CorbaTypeCode>
<XMI.CorbaTcEnum xmi.tcName='CallConcurrencyKind' xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/CallConcurre ncyKind:1.0' >
<XMI.CorbaTcEnumLabel xmi.tcName='cck_sequential'/>
<XMI.CorbaTcEnumLabel xmi.tcName='cck_guarded'/>
<XMI.CorbaTcEnumLabel xmi.tcName='cck_concurrent'/>
</XMI.CorbaTcEnum>
</XMI.CorbaTypeCode>
</Model:DataType.typeCode>
</Model:DataType>
<Model:Tag xmi.id='a28' name='org.omg.xmi.enumerationUnprefix=cck_' annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a27'>
<Model:Tag.values>
<XMI.any xmi.type='string'>cck_</XMI.any>
</Model:Tag.values>
</Model:Tag>
<Model:DataType xmi.id='a29' name='ChangeableKind' annotation='' isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
<Model:DataType.typeCode>
<XMI.CorbaTypeCode>
<XMI.CorbaTcEnum xmi.tcName='ChangeableKind' xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/ChangeableKi nd:1.0' >
<XMI.CorbaTcEnumLabel xmi.tcName='ck_changeable'/>
<XMI.CorbaTcEnumLabel xmi.tcName='ck_frozen'/>
<XMI.CorbaTcEnumLabel xmi.tcName='ck_addOnly'/>
</XMI.CorbaTcEnum>
</XMI.CorbaTypeCode>
</Model:DataType.typeCode>
</Model:DataType>
<Model:Tag xmi.id='a30' name='org.omg.xmi.enumerationUnprefix=ck_' annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a29'>
<Model:Tag.values>
<XMI.any xmi.type='string'>ck_</XMI.any>
</Model:Tag.values>
</Model:Tag>
<Model:DataType xmi.id='a31' name='OrderingKind' annotation='' isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
<Model:DataType.typeCode>
<XMI.CorbaTypeCode>
<XMI.CorbaTcEnum xmi.tcName='OrderingKind' xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/OrderingKind :1.0' >
<XMI.CorbaTcEnumLabel xmi.tcName='ok_unordered'/>
<XMI.CorbaTcEnumLabel xmi.tcName='ok_ordered'/>
</XMI.CorbaTcEnum>
</XMI.CorbaTypeCode>
</Model:DataType.typeCode>
</Model:DataType>
<Model:Tag xmi.id='a32' name='org.omg.xmi.enumerationUnprefix=ok_' annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a31'>
<Model:Tag.values>
<XMI.any xmi.type='string'>ok_</XMI.any>
</Model:Tag.values>
</Model:Tag>
<Model:DataType xmi.id='a33' name='ParameterDirectionKind' annotation='' isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
<Model:DataType.typeCode>
<XMI.CorbaTypeCode>
<XMI.CorbaTcEnum xmi.tcName='ParameterDirectionKind' xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/ParameterDir ectionKind:1.0' >
<XMI.CorbaTcEnumLabel xmi.tcName='pdk_in'/>
<XMI.CorbaTcEnumLabel xmi.tcName='pdk_inout'/>
<XMI.CorbaTcEnumLabel xmi.tcName='pdk_out'/>
<XMI.CorbaTcEnumLabel xmi.tcName='pdk_return'/>
</XMI.CorbaTcEnum>
</XMI.CorbaTypeCode>
</Model:DataType.typeCode>
</Model:DataType>
<Model:Tag xmi.id='a34' name='org.omg.xmi.enumerationUnprefix=pdk_' annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a33'>
<Model:Tag.values>
<XMI.any xmi.type='string'>pdk_</XMI.any>
</Model:Tag.values>
</Model:Tag>
<Model:DataType xmi.id='a35' name='ScopeKind' annotation='' isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
<Model:DataType.typeCode>
<XMI.CorbaTypeCode>
<XMI.CorbaTcEnum xmi.tcName='ScopeKind' xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/ScopeKind:1. 0' >
<XMI.CorbaTcEnumLabel xmi.tcName='sk_instance'/>
<XMI.CorbaTcEnumLabel xmi.tcName='sk_classifier'/>
</XMI.CorbaTcEnum>
</XMI.CorbaTypeCode>
</Model:DataType.typeCode>
</Model:DataType>
<Model:Tag xmi.id='a36' name='org.omg.xmi.enumerationUnprefix=sk_' annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a35'>
<Model:Tag.values>
<XMI.any xmi.type='string'>sk_</XMI.any>
</Model:Tag.values>
</Model:Tag>
<Model:DataType xmi.id='a37' name='VisibilityKind' annotation='' isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
<Model:DataType.typeCode>
<XMI.CorbaTypeCode>
<XMI.CorbaTcEnum xmi.tcName='VisibilityKind' xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/VisibilityKi nd:1.0' >
<XMI.CorbaTcEnumLabel xmi.tcName='vk_public'/>
<XMI.CorbaTcEnumLabel xmi.tcName='vk_protected'/>
<XMI.CorbaTcEnumLabel xmi.tcName='vk_private'/>
<XMI.CorbaTcEnumLabel xmi.tcName='vk_package'/>
</XMI.CorbaTcEnum>
</XMI.CorbaTypeCode>
</Model:DataType.typeCode>
</Model:DataType>
<Model:Tag xmi.id='a38' name='org.omg.xmi.enumerationUnprefix=vk_' annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a37'>
<Model:Tag.values>
<XMI.any xmi.type='string'>vk_</XMI.any>
</Model:Tag.values>
</Model:Tag>
<Model:DataType xmi.id='a39' name='Name' annotation='' isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
<Model:DataType.typeCode>
<XMI.CorbaTypeCode>
<XMI.CorbaTcAlias xmi.tcName='Name' xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/Name:1.0'>
<XMI.CorbaTypeCode>
<XMI.CorbaTcString xmi.tcLength='0'/>
</XMI.CorbaTypeCode>
</XMI.CorbaTcAlias>
</XMI.CorbaTypeCode>
</Model:DataType.typeCode>
</Model:DataType>
<Model:Class xmi.id='a40' name='Multiplicity' annotation='' isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis' isSingleton='false'>
<Model:Namespace.contents>
<Model:Reference xmi.id='a41' name='range' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a42' referencedEnd='a43'>
<Model:StructuralFeature.multiplicity>
<XMI.field>1</XMI.field> <!-- lower -->
<XMI.field>-1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>true</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Reference>
</Model:Namespace.contents>
</Model:Class>
<Model:Class xmi.id='a42' name='MultiplicityRange' annotation='' isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis' isSingleton='false'>
<Model:Namespace.contents>
<Model:Attribute xmi.id='a44' name='lower' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a21'>
<Model:StructuralFeature.multiplicity>
<XMI.field>1</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
<Model:Attribute xmi.id='a45' name='upper' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a22'>
<Model:StructuralFeature.multiplicity>
<XMI.field>1</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
<Model:Reference xmi.id='a46' name='multiplicity' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a40' referencedEnd='a47'>
<Model:StructuralFeature.multiplicity>
<XMI.field>1</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Reference>
</Model:Namespace.contents>
</Model:Class>
<Model:Class xmi.id='a48' name='Expression' annotation='' isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis' isSingleton='false'>
<Model:Namespace.contents>
<Model:Attribute xmi.id='a49' name='language' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a39'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
<Model:Attribute xmi.id='a50' name='body' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a23'>
<Model:StructuralFeature.multiplicity>
<XMI.field>1</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
</Model:Namespace.contents>
</Model:Class>
<Model:Class xmi.id='a51' name='BooleanExpression' annotation='' isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis' isSingleton='false' supertypes='a48'>
</Model:Class>
<Model:Class xmi.id='a52' name='TypeExpression' annotation='' isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis' isSingleton='false' supertypes='a48'>
</Model:Class>
<Model:Class xmi.id='a53' name='MappingExpression' annotation='' isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis' isSingleton='false' supertypes='a48'>
</Model:Class>
<Model:Class xmi.id='a54' name='ProcedureExpression' annotation='' isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis' isSingleton='false' supertypes='a48'>
</Model:Class>
<Model:Class xmi.id='a55' name='ObjectSetExpression' annotation='' isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis' isSingleton='false' supertypes='a48'>
</Model:Class>
<Model:Class xmi.id='a56' name='ActionExpression' annotation='' isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis' isSingleton='false' supertypes='a48'>
</Model:Class>
<Model:Class xmi.id='a57' name='IterationExpression' annotation='' isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis' isSingleton='false' supertypes='a48'>
</Model:Class>
<Model:Class xmi.id='a58' name='TimeExpression' annotation='' isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis' isSingleton='false' supertypes='a48'>
</Model:Class>
<Model:Class xmi.id='a59' name='ArgListsExpression' annotation='' isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis' isSingleton='false' supertypes='a48'>
</Model:Class>
<Model:DataType xmi.id='a60' name='LocationReference' annotation='' isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
<Model:DataType.typeCode>
<XMI.CorbaTypeCode>
<XMI.CorbaTcAlias xmi.tcName='LocationReference' xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/LocationRefe rence:1.0' >
<XMI.CorbaTypeCode>
<XMI.CorbaTcString xmi.tcLength='0'/>
</XMI.CorbaTypeCode>
</XMI.CorbaTcAlias>
</XMI.CorbaTypeCode>
</Model:DataType.typeCode>
</Model:DataType>
<Model:DataType xmi.id='a61' name='PseudostateKind' annotation='' isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
<Model:DataType.typeCode>
<XMI.CorbaTypeCode>
<XMI.CorbaTcEnum xmi.tcName='PseudostateKind' xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/PseudostateK ind:1.0' >
<XMI.CorbaTcEnumLabel xmi.tcName='pk_choice'/>
<XMI.CorbaTcEnumLabel xmi.tcName='pk_deepHistory'/>
<XMI.CorbaTcEnumLabel xmi.tcName='pk_fork'/>
<XMI.CorbaTcEnumLabel xmi.tcName='pk_initial'/>
<XMI.CorbaTcEnumLabel xmi.tcName='pk_join'/>
<XMI.CorbaTcEnumLabel xmi.tcName='pk_junction'/>
<XMI.CorbaTcEnumLabel xmi.tcName='pk_shallowHistory'/>
</XMI.CorbaTcEnum>
</XMI.CorbaTypeCode>
</Model:DataType.typeCode>
</Model:DataType>
<Model:Tag xmi.id='a62' name='org.omg.xmi.enumerationUnprefix=pk_' annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a61'>
<Model:Tag.values>
<XMI.any xmi.type='string'>pk_</XMI.any>
</Model:Tag.values>
</Model:Tag>
<Model:DataType xmi.id='a63' name='Geometry' annotation='' isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
<Model:DataType.typeCode>
<XMI.CorbaTypeCode>
<XMI.CorbaTcAlias xmi.tcName='Geometry' xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/Geometry:1.0 ' >
<XMI.CorbaTypeCode>
<XMI.CorbaTcString xmi.tcLength='0'/>
</XMI.CorbaTypeCode>
</XMI.CorbaTcAlias>
</XMI.CorbaTypeCode>
</Model:DataType.typeCode>
</Model:DataType>
<Model:Association xmi.id='a64' name='A_multiplicity_range' annotation='' isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis' isDerived='false'>
<Model:Namespace.contents>
<Model:AssociationEnd xmi.id='a47' name='multiplicity' annotation='' isNavigable='true' aggregation='composite' isChangeable='true' type='a40'>
<Model:AssociationEnd.multiplicity>
<XMI.field>1</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:AssociationEnd.multiplicity>
</Model:AssociationEnd>
<Model:AssociationEnd xmi.id='a43' name='range' annotation='' isNavigable='true' aggregation='none' isChangeable='true' type='a42'>
<Model:AssociationEnd.multiplicity>
<XMI.field>1</XMI.field> <!-- lower -->
<XMI.field>-1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>true</XMI.field> <!-- is_unique -->
</Model:AssociationEnd.multiplicity>
</Model:AssociationEnd>
</Model:Namespace.contents>
</Model:Association>
</Model:Namespace.contents>
</Model:Package>
<Model:Package xmi.id='a6' name='Core' annotation='' isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'>
<Model:Namespace.contents>
<Model:Tag xmi.id='a65' name='org.omg.mof.idl_prefix=org.omg.uml.Foundation' annotation='' tagId='org.omg.mof.idl_prefix' elements='a6'>
<Model:Tag.values>
<XMI.any xmi.type='string'>org.omg.uml.Foundation</XMI.any>
</Model:Tag.values>
</Model:Tag>
<Model:Tag xmi.id='a66' name='org.omg.xmi.namespace=UML' annotation='' tagId='org.omg.xmi.namespace' elements='a6'>
<Model:Tag.values>
<XMI.any xmi.type='string'>UML</XMI.any>
</Model:Tag.values>
</Model:Tag>
<Model:Class xmi.id='a67' name='Element' annotation='' isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis' isSingleton='false'>
</Model:Class>
<Model:Class xmi.id='a68' name='ModelElement' annotation='' isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis' isSingleton='false' supertypes='a67'>
<Model:Namespace.contents>
<Model:Attribute xmi.id='a69' name='name' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a39'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
<Model:Attribute xmi.id='a70' name='visibility' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a37'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
<Model:Attribute xmi.id='a71' name='isSpecification' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a26'>
<Model:StructuralFeature.multiplicity>
<XMI.field>1</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
<Model:Reference xmi.id='a72' name='namespace' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a73' referencedEnd='a74'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Reference>
<Model:Reference xmi.id='a75' name='clientDependency' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a76' referencedEnd='a77'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>-1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>true</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Reference>
<Model:Reference xmi.id='a78' name='constraint' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a79' referencedEnd='a80'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>-1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>true</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Reference>
<Model:Reference xmi.id='a81' name='targetFlow' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a82' referencedEnd='a83'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>-1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>true</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Reference>
<Model:Reference xmi.id='a84' name='sourceFlow' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a82' referencedEnd='a85'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>-1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>true</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Reference>
<Model:Reference xmi.id='a86' name='comment' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a87' referencedEnd='a88'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>-1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>true</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Reference>
<Model:Reference xmi.id='a89' name='templateParameter' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a90' referencedEnd='a91'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>-1</XMI.field> <!-- upper -->
<XMI.field>true</XMI.field> <!-- is_ordered -->
<XMI.field>true</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Reference>
<Model:Reference xmi.id='a92' name='stereotype' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a93' referencedEnd='a94'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>-1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>true</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Reference>
<Model:Reference xmi.id='a95' name='taggedValue' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a96' referencedEnd='a97'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>-1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>true</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Reference>
</Model:Namespace.contents>
</Model:Class>
<Model:Import xmi.id='a98' name='Data_Types' annotation='' visibility='public_vis' isClustered='true' importedNamespace='a4'>
</Model:Import>
<Model:Tag xmi.id='a99' name='org.omg.mof.idl_substitute_name=umlConstraint' annotation='' tagId='org.omg.mof.idl_substitute_name' elements='a78 a80'>
<Model:Tag.values>
<XMI.any xmi.type='string'>umlConstraint</XMI.any>
</Model:Tag.values>
</Model:Tag>
<Model:Class xmi.id='a100' name='GeneralizableElement' annotation='' isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis' isSingleton='false' supertypes='a68'>
<Model:Namespace.contents>
<Model:Attribute xmi.id='a101' name='isRoot' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a26'>
<Model:StructuralFeature.multiplicity>
<XMI.field>1</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
<Model:Attribute xmi.id='a102' name='isLeaf' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a26'>
<Model:StructuralFeature.multiplicity>
<XMI.field>1</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
<Model:Attribute xmi.id='a103' name='isAbstract' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a26'>
<Model:StructuralFeature.multiplicity>
<XMI.field>1</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
<Model:Reference xmi.id='a104' name='generalization' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a105' referencedEnd='a106'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>-1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>true</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Reference>
</Model:Namespace.contents>
</Model:Class>
<Model:Class xmi.id='a73' name='Namespace' annotation='' isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis' isSingleton='false' supertypes='a68'>
<Model:Namespace.contents>
<Model:Reference xmi.id='a107' name='ownedElement' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a68' referencedEnd='a108'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>-1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>true</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Reference>
</Model:Namespace.contents>
</Model:Class>
<Model:Class xmi.id='a109' name='Classifier' annotation='' isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis' isSingleton='false' supertypes='a100 a73'>
<Model:Namespace.contents>
<Model:Reference xmi.id='a110' name='feature' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a111' referencedEnd='a112'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>-1</XMI.field> <!-- upper -->
<XMI.field>true</XMI.field> <!-- is_ordered -->
<XMI.field>true</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Reference>
<Model:Reference xmi.id='a113' name='powertypeRange' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a105' referencedEnd='a114'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>-1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>true</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Reference>
</Model:Namespace.contents>
</Model:Class>
<Model:Class xmi.id='a115' name='Class' annotation='' isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis' isSingleton='false' supertypes='a109'>
<Model:Namespace.contents>
<Model:Attribute xmi.id='a116' name='isActive' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a26'>
<Model:StructuralFeature.multiplicity>
<XMI.field>1</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
</Model:Namespace.contents>
</Model:Class>
<Model:Class xmi.id='a117' name='DataType' annotation='' isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis' isSingleton='false' supertypes='a109'>
</Model:Class>
<Model:Class xmi.id='a111' name='Feature' annotation='' isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis' isSingleton='false' supertypes='a68'>
<Model:Namespace.contents>
<Model:Attribute xmi.id='a118' name='ownerScope' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a35'>
<Model:StructuralFeature.multiplicity>
<XMI.field>1</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
<Model:Reference xmi.id='a119' name='owner' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a109' referencedEnd='a120'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Reference>
</Model:Namespace.contents>
</Model:Class>
<Model:Class xmi.id='a121' name='StructuralFeature' annotation='' isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis' isSingleton='false' supertypes='a111'>
<Model:Namespace.contents>
<Model:Attribute xmi.id='a122' name='multiplicity' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a40'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
<Model:Attribute xmi.id='a123' name='changeability' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a29'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
<Model:Attribute xmi.id='a124' name='targetScope' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a35'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
<Model:Attribute xmi.id='a125' name='ordering' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a31'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
<Model:Reference xmi.id='a126' name='type' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a109' referencedEnd='a127'>
<Model:StructuralFeature.multiplicity>
<XMI.field>1</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Reference>
</Model:Namespace.contents>
</Model:Class>
<Model:Class xmi.id='a128' name='AssociationEnd' annotation='' isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis' isSingleton='false' supertypes='a68'>
<Model:Namespace.contents>
<Model:Attribute xmi.id='a129' name='isNavigable' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a26'>
<Model:StructuralFeature.multiplicity>
<XMI.field>1</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
<Model:Attribute xmi.id='a130' name='ordering' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a31'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
<Model:Attribute xmi.id='a131' name='aggregation' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a24'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
<Model:Attribute xmi.id='a132' name='targetScope' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a35'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
<Model:Attribute xmi.id='a133' name='multiplicity' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a40'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
<Model:Attribute xmi.id='a134' name='changeability' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a29'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
<Model:Reference xmi.id='a135' name='association' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a136' referencedEnd='a137'>
<Model:StructuralFeature.multiplicity>
<XMI.field>1</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Reference>
<Model:Reference xmi.id='a138' name='qualifier' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a139' referencedEnd='a140'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>-1</XMI.field> <!-- upper -->
<XMI.field>true</XMI.field> <!-- is_ordered -->
<XMI.field>true</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Reference>
<Model:Reference xmi.id='a141' name='participant' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a109' referencedEnd='a142'>
<Model:StructuralFeature.multiplicity>
<XMI.field>1</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Reference>
<Model:Reference xmi.id='a143' name='specification' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a109' referencedEnd='a144'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>-1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>true</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Reference>
</Model:Namespace.contents>
</Model:Class>
<Model:Class xmi.id='a145' name='Interface' annotation='' isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis' isSingleton='false' supertypes='a109'>
</Model:Class>
<Model:Tag xmi.id='a146' name='org.omg.mof.idl_substitute_name=UmlInterface' annotation='' tagId='org.omg.mof.idl_substitute_name' elements='a145'>
<Model:Tag.values>
<XMI.any xmi.type='string'>UmlInterface</XMI.any>
</Model:Tag.values>
</Model:Tag>
<Model:Class xmi.id='a79' name='Constraint' annotation='' isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis' isSingleton='false' supertypes='a68'>
<Model:Namespace.contents>
<Model:Attribute xmi.id='a147' name='body' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a51'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
<Model:Reference xmi.id='a148' name='constrainedElement' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a68' referencedEnd='a149'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>-1</XMI.field> <!-- upper -->
<XMI.field>true</XMI.field> <!-- is_ordered -->
<XMI.field>true</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Reference>
</Model:Namespace.contents>
</Model:Class>
<Model:Tag xmi.id='a150' name='org.omg.mof.idl_substitute_name=UmlConstraint' annotation='' tagId='org.omg.mof.idl_substitute_name' elements='a79'>
<Model:Tag.values>
<XMI.any xmi.type='string'>UmlConstraint</XMI.any>
</Model:Tag.values>
</Model:Tag>
<Model:Class xmi.id='a151' name='Relationship' annotation='' isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis' isSingleton='false' supertypes='a68'>
</Model:Class>
<Model:Class xmi.id='a136' name='Association' annotation='' isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis' isSingleton='false' supertypes='a100 a151'>
<Model:Namespace.contents>
<Model:Reference xmi.id='a152' name='connection' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a128' referencedEnd='a153'>
<Model:StructuralFeature.multiplicity>
<XMI.field>2</XMI.field> <!-- lower -->
<XMI.field>-1</XMI.field> <!-- upper -->
<XMI.field>true</XMI.field> <!-- is_ordered -->
<XMI.field>true</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Reference>
</Model:Namespace.contents>
</Model:Class>
<Model:Class xmi.id='a139' name='Attribute' annotation='' isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis' isSingleton='false' supertypes='a121'>
<Model:Namespace.contents>
<Model:Attribute xmi.id='a154' name='initialValue' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' isDerived='false' type='a48'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>1</XMI.field> <!-- upper -->
<XMI.field>false</XMI.field> <!-- is_ordered -->
<XMI.field>false</XMI.field> <!-- is_unique -->
</Model:StructuralFeature.multiplicity>
</Model:Attribute>
<Model:Reference xmi.id='a155' name='associationEnd' annotation='' scope='instance_level' visibility='public_vis' isChangeable='true' type='a128' referencedEnd='a156'>
<Model:StructuralFeature.multiplicity>
<XMI.field>0</XMI.field> <!-- lower -->
<XMI.field>1</XMI.fiel
Re: [Epsilon] Using OCL in Meta-Model level [message #597028 is a reply to message #378008] Sat, 19 May 2007 20:30 Go to previous message
Eclipse UserFriend
Originally posted by: b_zamani.encs.concordia.ca

Hi Dimitrios,

Thanks for the comment and the link.
I'm not sure what makes me confused! Would you please consider the following
concrete example and let me know your idea?

A) Considering the MOF Model structure depicted by figure3-2 on page 3-13 of
the MOF1.4 specification (http://www.omg.org/docs/formal/02-04-03.pdf), each
Model Element has specific attributes, references, and operations (as
explained in section 3.4.1).
B) Considering the description of class ModelElement from the link you
introduced (http://www-users.cs.york.ac.uk/~dkolovos/uml14/), the attributes
and references are totally different than what is specified in (A).
C) Considering UML1.5 metamodel of OCLE 2.0 tool, I find a class
ModelElement with just one attribute (name) and six operations which seems
almost different that operations or references in (A) or (B).

best,
Bahman


"Dimitrios Kolovos" <dskolovos@gmail.com> wrote in message
news:f2fjdg$p0d$1@build.eclipse.org...
> Hi Bahman,
>
> The properties of each metaclass (e.g. Class, ModelElement etc) are
> defined in the metamodel of the language. For ArgoUML the metamodel is a
> MOF1.4/XMI 1.1 file (attached). From this, I've generated a set of
> JavaDoc-like HTML pages available at
> http://www-users.cs.york.ac.uk/~dkolovos/uml14/ which you may find more
> usable than the XMI metamodel itself :)
>
> Cheers,
> Dimitrios
>
> Bahman wrote:
>> Hi everybody,
>>
>> I have a problem understanding how to use OCL (especially in MetaModel
>> level), if you have time to guide me, that would be appreciated.
>>
>> So far I've worked with some tools such as ArgoUML (adding some critics
>> to
>> it), OCLE (checking OCLs in model level and metamodel level), and
>> recently
>> Epsilon (Adding some more functionalities on its ArgoUML version).
>>
>> My problem is that I don't know from where can I find all the OPERATIONS
>> and
>> FUNCTIONS that I can apply on a model (Meta-Model). Let me make it clear
>> by
>> an example:
>>
>> 1) In Epsilon, I've written the following operation to check whether or
>> not
>> a class own an attribute. But I knew nothing about the FEATURE property
>> that
>> could be applied on a class. I just found it by reviewing existing
>> similar
>> codes.
>>
>> operation Class hasAttribute (name : String) : Boolean {
>> return self.feature.exists (a:Attribute | a.name = name);
>> }
>>
>> 2) In ArgoUML, I had to write the following method to check the above
>> condition. However, since it was in Eclipse, I could see which methods
>> are
>> available by Model's Facade class (thanks to Eclipse assistance).
>>
>> public static boolean classHasAtt (Object cls) {
>> boolean found = false;
>> Collection atts = Model.getFacade().getAttributes(cls);
>> if ( atts.size() > 0 ) {
>> found = true ;
>> }
>> return found;
>> }
>>
>> Again my question is: "let say the context is a class, how can I access
>> to
>> all its attributes? its operations? its stereotypes?" The same question
>> applies for every ModelElement.
>>
>> best,
>> Bahman
>>
>>
>>
>


------------------------------------------------------------ --------------------


> <?xml version="1.0" encoding="UTF-8" ?>
> <!-- <!DOCTYPE XMI SYSTEM 'Model.dtd'> -->
> <XMI xmi.version='1.1' xmlns:Model='omg.org/mof.Model/1.3'>
> <XMI.header>
> <XMI.model xmi.name='UML' xmi.version='1.4'/>
> <XMI.metamodel xmi.name='Model' xmi.version='1.3'/>
> </XMI.header>
> <XMI.content>
> <Model:Package xmi.id='a0' name='UML' annotation='' isRoot='false'
> isLeaf='false' isAbstract='false' visibility='public_vis'>
> <Model:Namespace.contents>
> <Model:Tag xmi.id='a1' name='org.omg.mof.idl_prefix=org.omg'
> annotation='' tagId='org.omg.mof.idl_prefix' elements='a0'>
> <Model:Tag.values>
> <XMI.any xmi.type='string'>org.omg</XMI.any>
> </Model:Tag.values>
> </Model:Tag>
> <Model:Tag xmi.id='a2' name='org.omg.xmi.namespace=UML'
> annotation='' tagId='org.omg.xmi.namespace' elements='a0'>
> <Model:Tag.values>
> <XMI.any xmi.type='string'>UML</XMI.any>
> </Model:Tag.values>
> </Model:Tag>
> <Model:Import xmi.id='a3' name='Data_Types' annotation=''
> visibility='public_vis' isClustered='true' importedNamespace='a4'>
> </Model:Import>
> <Model:Import xmi.id='a5' name='Core' annotation=''
> visibility='public_vis' isClustered='true' importedNamespace='a6'>
> </Model:Import>
> <Model:Import xmi.id='a7' name='Common_Behavior' annotation=''
> visibility='public_vis' isClustered='true' importedNamespace='a8'>
> </Model:Import>
> <Model:Import xmi.id='a9' name='Use_Cases' annotation=''
> visibility='public_vis' isClustered='true' importedNamespace='a10'>
> </Model:Import>
> <Model:Import xmi.id='a11' name='State_Machines' annotation=''
> visibility='public_vis' isClustered='true' importedNamespace='a12'>
> </Model:Import>
> <Model:Import xmi.id='a13' name='Collaborations' annotation=''
> visibility='public_vis' isClustered='true' importedNamespace='a14'>
> </Model:Import>
> <Model:Import xmi.id='a15' name='Activity_Graphs' annotation=''
> visibility='public_vis' isClustered='true' importedNamespace='a16'>
> </Model:Import>
> <Model:Import xmi.id='a17' name='Model_Management' annotation=''
> visibility='public_vis' isClustered='true' importedNamespace='a18'>
> </Model:Import>
> </Model:Namespace.contents>
> </Model:Package>
> <Model:Package xmi.id='a4' name='Data_Types' annotation=''
> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'>
> <Model:Namespace.contents>
> <Model:Tag xmi.id='a19'
> name='org.omg.mof.idl_prefix=org.omg.uml.Foundation' annotation=''
> tagId='org.omg.mof.idl_prefix' elements='a4'>
> <Model:Tag.values>
> <XMI.any xmi.type='string'>org.omg.uml.Foundation</XMI.any>
> </Model:Tag.values>
> </Model:Tag>
> <Model:Tag xmi.id='a20' name='org.omg.xmi.namespace=UML'
> annotation='' tagId='org.omg.xmi.namespace' elements='a4'>
> <Model:Tag.values>
> <XMI.any xmi.type='string'>UML</XMI.any>
> </Model:Tag.values>
> </Model:Tag>
> <Model:DataType xmi.id='a21' name='Integer' annotation=''
> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
> <Model:DataType.typeCode>
> <XMI.CorbaTypeCode>
> <XMI.CorbaTcLong/>
> </XMI.CorbaTypeCode>
> </Model:DataType.typeCode>
> </Model:DataType>
> <Model:DataType xmi.id='a22' name='UnlimitedInteger' annotation=''
> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
> <Model:DataType.typeCode>
> <XMI.CorbaTypeCode>
> <XMI.CorbaTcAlias xmi.tcName='UnlimitedInteger'
> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/UnlimitedInt eger:1.0' >
> <XMI.CorbaTypeCode>
> <XMI.CorbaTcLong/>
> </XMI.CorbaTypeCode>
> </XMI.CorbaTcAlias>
> </XMI.CorbaTypeCode>
> </Model:DataType.typeCode>
> </Model:DataType>
> <Model:DataType xmi.id='a23' name='String' annotation=''
> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
> <Model:DataType.typeCode>
> <XMI.CorbaTypeCode>
> <XMI.CorbaTcString xmi.tcLength='0'/>
> </XMI.CorbaTypeCode>
> </Model:DataType.typeCode>
> </Model:DataType>
> <Model:DataType xmi.id='a24' name='AggregationKind' annotation=''
> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
> <Model:DataType.typeCode>
> <XMI.CorbaTypeCode>
> <XMI.CorbaTcEnum xmi.tcName='AggregationKind'
> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/AggregationK ind:1.0' >
> <XMI.CorbaTcEnumLabel xmi.tcName='ak_none'/>
> <XMI.CorbaTcEnumLabel xmi.tcName='ak_aggregate'/>
> <XMI.CorbaTcEnumLabel xmi.tcName='ak_composite'/>
> </XMI.CorbaTcEnum>
> </XMI.CorbaTypeCode>
> </Model:DataType.typeCode>
> </Model:DataType>
> <Model:Tag xmi.id='a25' name='org.omg.xmi.enumerationUnprefix=ak_'
> annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a24'>
> <Model:Tag.values>
> <XMI.any xmi.type='string'>ak_</XMI.any>
> </Model:Tag.values>
> </Model:Tag>
> <Model:DataType xmi.id='a26' name='Boolean' annotation=''
> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
> <Model:DataType.typeCode>
> <XMI.CorbaTypeCode>
> <XMI.CorbaTcBoolean/>
> </XMI.CorbaTypeCode>
> </Model:DataType.typeCode>
> </Model:DataType>
> <Model:DataType xmi.id='a27' name='CallConcurrencyKind'
> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
> visibility='public_vis'>
> <Model:DataType.typeCode>
> <XMI.CorbaTypeCode>
> <XMI.CorbaTcEnum xmi.tcName='CallConcurrencyKind'
> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/CallConcurre ncyKind:1.0' >
> <XMI.CorbaTcEnumLabel xmi.tcName='cck_sequential'/>
> <XMI.CorbaTcEnumLabel xmi.tcName='cck_guarded'/>
> <XMI.CorbaTcEnumLabel xmi.tcName='cck_concurrent'/>
> </XMI.CorbaTcEnum>
> </XMI.CorbaTypeCode>
> </Model:DataType.typeCode>
> </Model:DataType>
> <Model:Tag xmi.id='a28' name='org.omg.xmi.enumerationUnprefix=cck_'
> annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a27'>
> <Model:Tag.values>
> <XMI.any xmi.type='string'>cck_</XMI.any>
> </Model:Tag.values>
> </Model:Tag>
> <Model:DataType xmi.id='a29' name='ChangeableKind' annotation=''
> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
> <Model:DataType.typeCode>
> <XMI.CorbaTypeCode>
> <XMI.CorbaTcEnum xmi.tcName='ChangeableKind'
> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/ChangeableKi nd:1.0' >
> <XMI.CorbaTcEnumLabel xmi.tcName='ck_changeable'/>
> <XMI.CorbaTcEnumLabel xmi.tcName='ck_frozen'/>
> <XMI.CorbaTcEnumLabel xmi.tcName='ck_addOnly'/>
> </XMI.CorbaTcEnum>
> </XMI.CorbaTypeCode>
> </Model:DataType.typeCode>
> </Model:DataType>
> <Model:Tag xmi.id='a30' name='org.omg.xmi.enumerationUnprefix=ck_'
> annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a29'>
> <Model:Tag.values>
> <XMI.any xmi.type='string'>ck_</XMI.any>
> </Model:Tag.values>
> </Model:Tag>
> <Model:DataType xmi.id='a31' name='OrderingKind' annotation=''
> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
> <Model:DataType.typeCode>
> <XMI.CorbaTypeCode>
> <XMI.CorbaTcEnum xmi.tcName='OrderingKind'
> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/OrderingKind :1.0' >
> <XMI.CorbaTcEnumLabel xmi.tcName='ok_unordered'/>
> <XMI.CorbaTcEnumLabel xmi.tcName='ok_ordered'/>
> </XMI.CorbaTcEnum>
> </XMI.CorbaTypeCode>
> </Model:DataType.typeCode>
> </Model:DataType>
> <Model:Tag xmi.id='a32' name='org.omg.xmi.enumerationUnprefix=ok_'
> annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a31'>
> <Model:Tag.values>
> <XMI.any xmi.type='string'>ok_</XMI.any>
> </Model:Tag.values>
> </Model:Tag>
> <Model:DataType xmi.id='a33' name='ParameterDirectionKind'
> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
> visibility='public_vis'>
> <Model:DataType.typeCode>
> <XMI.CorbaTypeCode>
> <XMI.CorbaTcEnum xmi.tcName='ParameterDirectionKind'
> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/ParameterDir ectionKind:1.0' >
> <XMI.CorbaTcEnumLabel xmi.tcName='pdk_in'/>
> <XMI.CorbaTcEnumLabel xmi.tcName='pdk_inout'/>
> <XMI.CorbaTcEnumLabel xmi.tcName='pdk_out'/>
> <XMI.CorbaTcEnumLabel xmi.tcName='pdk_return'/>
> </XMI.CorbaTcEnum>
> </XMI.CorbaTypeCode>
> </Model:DataType.typeCode>
> </Model:DataType>
> <Model:Tag xmi.id='a34' name='org.omg.xmi.enumerationUnprefix=pdk_'
> annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a33'>
> <Model:Tag.values>
> <XMI.any xmi.type='string'>pdk_</XMI.any>
> </Model:Tag.values>
> </Model:Tag>
> <Model:DataType xmi.id='a35' name='ScopeKind' annotation=''
> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
> <Model:DataType.typeCode>
> <XMI.CorbaTypeCode>
> <XMI.CorbaTcEnum xmi.tcName='ScopeKind'
> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/ScopeKind:1. 0' >
> <XMI.CorbaTcEnumLabel xmi.tcName='sk_instance'/>
> <XMI.CorbaTcEnumLabel xmi.tcName='sk_classifier'/>
> </XMI.CorbaTcEnum>
> </XMI.CorbaTypeCode>
> </Model:DataType.typeCode>
> </Model:DataType>
> <Model:Tag xmi.id='a36' name='org.omg.xmi.enumerationUnprefix=sk_'
> annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a35'>
> <Model:Tag.values>
> <XMI.any xmi.type='string'>sk_</XMI.any>
> </Model:Tag.values>
> </Model:Tag>
> <Model:DataType xmi.id='a37' name='VisibilityKind' annotation=''
> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
> <Model:DataType.typeCode>
> <XMI.CorbaTypeCode>
> <XMI.CorbaTcEnum xmi.tcName='VisibilityKind'
> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/VisibilityKi nd:1.0' >
> <XMI.CorbaTcEnumLabel xmi.tcName='vk_public'/>
> <XMI.CorbaTcEnumLabel xmi.tcName='vk_protected'/>
> <XMI.CorbaTcEnumLabel xmi.tcName='vk_private'/>
> <XMI.CorbaTcEnumLabel xmi.tcName='vk_package'/>
> </XMI.CorbaTcEnum>
> </XMI.CorbaTypeCode>
> </Model:DataType.typeCode>
> </Model:DataType>
> <Model:Tag xmi.id='a38' name='org.omg.xmi.enumerationUnprefix=vk_'
> annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a37'>
> <Model:Tag.values>
> <XMI.any xmi.type='string'>vk_</XMI.any>
> </Model:Tag.values>
> </Model:Tag>
> <Model:DataType xmi.id='a39' name='Name' annotation=''
> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
> <Model:DataType.typeCode>
> <XMI.CorbaTypeCode>
> <XMI.CorbaTcAlias xmi.tcName='Name'
> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/Name:1.0'>
> <XMI.CorbaTypeCode>
> <XMI.CorbaTcString xmi.tcLength='0'/>
> </XMI.CorbaTypeCode>
> </XMI.CorbaTcAlias>
> </XMI.CorbaTypeCode>
> </Model:DataType.typeCode>
> </Model:DataType>
> <Model:Class xmi.id='a40' name='Multiplicity' annotation=''
> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
> isSingleton='false'>
> <Model:Namespace.contents>
> <Model:Reference xmi.id='a41' name='range' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> type='a42' referencedEnd='a43'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>1</XMI.field> <!-- lower -->
> <XMI.field>-1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>true</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Reference>
> </Model:Namespace.contents>
> </Model:Class>
> <Model:Class xmi.id='a42' name='MultiplicityRange' annotation=''
> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
> isSingleton='false'>
> <Model:Namespace.contents>
> <Model:Attribute xmi.id='a44' name='lower' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> isDerived='false' type='a21'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>1</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Attribute>
> <Model:Attribute xmi.id='a45' name='upper' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> isDerived='false' type='a22'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>1</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Attribute>
> <Model:Reference xmi.id='a46' name='multiplicity' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> type='a40' referencedEnd='a47'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>1</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Reference>
> </Model:Namespace.contents>
> </Model:Class>
> <Model:Class xmi.id='a48' name='Expression' annotation=''
> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
> isSingleton='false'>
> <Model:Namespace.contents>
> <Model:Attribute xmi.id='a49' name='language' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> isDerived='false' type='a39'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Attribute>
> <Model:Attribute xmi.id='a50' name='body' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> isDerived='false' type='a23'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>1</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Attribute>
> </Model:Namespace.contents>
> </Model:Class>
> <Model:Class xmi.id='a51' name='BooleanExpression' annotation=''
> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
> isSingleton='false' supertypes='a48'>
> </Model:Class>
> <Model:Class xmi.id='a52' name='TypeExpression' annotation=''
> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
> isSingleton='false' supertypes='a48'>
> </Model:Class>
> <Model:Class xmi.id='a53' name='MappingExpression' annotation=''
> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
> isSingleton='false' supertypes='a48'>
> </Model:Class>
> <Model:Class xmi.id='a54' name='ProcedureExpression' annotation=''
> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
> isSingleton='false' supertypes='a48'>
> </Model:Class>
> <Model:Class xmi.id='a55' name='ObjectSetExpression' annotation=''
> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
> isSingleton='false' supertypes='a48'>
> </Model:Class>
> <Model:Class xmi.id='a56' name='ActionExpression' annotation=''
> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
> isSingleton='false' supertypes='a48'>
> </Model:Class>
> <Model:Class xmi.id='a57' name='IterationExpression' annotation=''
> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
> isSingleton='false' supertypes='a48'>
> </Model:Class>
> <Model:Class xmi.id='a58' name='TimeExpression' annotation=''
> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
> isSingleton='false' supertypes='a48'>
> </Model:Class>
> <Model:Class xmi.id='a59' name='ArgListsExpression' annotation=''
> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
> isSingleton='false' supertypes='a48'>
> </Model:Class>
> <Model:DataType xmi.id='a60' name='LocationReference' annotation=''
> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
> <Model:DataType.typeCode>
> <XMI.CorbaTypeCode>
> <XMI.CorbaTcAlias xmi.tcName='LocationReference'
> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/LocationRefe rence:1.0' >
> <XMI.CorbaTypeCode>
> <XMI.CorbaTcString xmi.tcLength='0'/>
> </XMI.CorbaTypeCode>
> </XMI.CorbaTcAlias>
> </XMI.CorbaTypeCode>
> </Model:DataType.typeCode>
> </Model:DataType>
> <Model:DataType xmi.id='a61' name='PseudostateKind' annotation=''
> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
> <Model:DataType.typeCode>
> <XMI.CorbaTypeCode>
> <XMI.CorbaTcEnum xmi.tcName='PseudostateKind'
> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/PseudostateK ind:1.0' >
> <XMI.CorbaTcEnumLabel xmi.tcName='pk_choice'/>
> <XMI.CorbaTcEnumLabel xmi.tcName='pk_deepHistory'/>
> <XMI.CorbaTcEnumLabel xmi.tcName='pk_fork'/>
> <XMI.CorbaTcEnumLabel xmi.tcName='pk_initial'/>
> <XMI.CorbaTcEnumLabel xmi.tcName='pk_join'/>
> <XMI.CorbaTcEnumLabel xmi.tcName='pk_junction'/>
> <XMI.CorbaTcEnumLabel xmi.tcName='pk_shallowHistory'/>
> </XMI.CorbaTcEnum>
> </XMI.CorbaTypeCode>
> </Model:DataType.typeCode>
> </Model:DataType>
> <Model:Tag xmi.id='a62' name='org.omg.xmi.enumerationUnprefix=pk_'
> annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a61'>
> <Model:Tag.values>
> <XMI.any xmi.type='string'>pk_</XMI.any>
> </Model:Tag.values>
> </Model:Tag>
> <Model:DataType xmi.id='a63' name='Geometry' annotation=''
> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
> <Model:DataType.typeCode>
> <XMI.CorbaTypeCode>
> <XMI.CorbaTcAlias xmi.tcName='Geometry'
> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/Geometry:1.0 ' >
> <XMI.CorbaTypeCode>
> <XMI.CorbaTcString xmi.tcLength='0'/>
> </XMI.CorbaTypeCode>
> </XMI.CorbaTcAlias>
> </XMI.CorbaTypeCode>
> </Model:DataType.typeCode>
> </Model:DataType>
> <Model:Association xmi.id='a64' name='A_multiplicity_range'
> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
> visibility='public_vis' isDerived='false'>
> <Model:Namespace.contents>
> <Model:AssociationEnd xmi.id='a47' name='multiplicity'
> annotation='' isNavigable='true' aggregation='composite'
> isChangeable='true' type='a40'>
> <Model:AssociationEnd.multiplicity>
> <XMI.field>1</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:AssociationEnd.multiplicity>
> </Model:AssociationEnd>
> <Model:AssociationEnd xmi.id='a43' name='range' annotation=''
> isNavigable='true' aggregation='none' isChangeable='true' type='a42'>
> <Model:AssociationEnd.multiplicity>
> <XMI.field>1</XMI.field> <!-- lower -->
> <XMI.field>-1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>true</XMI.field> <!-- is_unique -->
> </Model:AssociationEnd.multiplicity>
> </Model:AssociationEnd>
> </Model:Namespace.contents>
> </Model:Association>
> </Model:Namespace.contents>
> </Model:Package>
> <Model:Package xmi.id='a6' name='Core' annotation='' isRoot='false'
> isLeaf='false' isAbstract='false' visibility='public_vis'>
> <Model:Namespace.contents>
> <Model:Tag xmi.id='a65'
> name='org.omg.mof.idl_prefix=org.omg.uml.Foundation' annotation=''
> tagId='org.omg.mof.idl_prefix' elements='a6'>
> <Model:Tag.values>
> <XMI.any xmi.type='string'>org.omg.uml.Foundation</XMI.any>
> </Model:Tag.values>
> </Model:Tag>
> <Model:Tag xmi.id='a66' name='org.omg.xmi.namespace=UML'
> annotation='' tagId='org.omg.xmi.namespace' elements='a6'>
> <Model:Tag.values>
> <XMI.any xmi.type='string'>UML</XMI.any>
> </Model:Tag.values>
> </Model:Tag>
> <Model:Class xmi.id='a67' name='Element' annotation=''
> isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis'
> isSingleton='false'>
> </Model:Class>
> <Model:Class xmi.id='a68' name='ModelElement' annotation=''
> isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis'
> isSingleton='false' supertypes='a67'>
> <Model:Namespace.contents>
> <Model:Attribute xmi.id='a69' name='name' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> isDerived='false' type='a39'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Attribute>
> <Model:Attribute xmi.id='a70' name='visibility' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> isDerived='false' type='a37'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Attribute>
> <Model:Attribute xmi.id='a71' name='isSpecification'
> annotation='' scope='instance_level' visibility='public_vis'
> isChangeable='true' isDerived='false' type='a26'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>1</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Attribute>
> <Model:Reference xmi.id='a72' name='namespace' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> type='a73' referencedEnd='a74'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Reference>
> <Model:Reference xmi.id='a75' name='clientDependency'
> annotation='' scope='instance_level' visibility='public_vis'
> isChangeable='true' type='a76' referencedEnd='a77'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>-1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>true</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Reference>
> <Model:Reference xmi.id='a78' name='constraint' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> type='a79' referencedEnd='a80'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>-1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>true</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Reference>
> <Model:Reference xmi.id='a81' name='targetFlow' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> type='a82' referencedEnd='a83'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>-1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>true</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Reference>
> <Model:Reference xmi.id='a84' name='sourceFlow' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> type='a82' referencedEnd='a85'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>-1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>true</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Reference>
> <Model:Reference xmi.id='a86' name='comment' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> type='a87' referencedEnd='a88'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>-1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>true</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Reference>
> <Model:Reference xmi.id='a89' name='templateParameter'
> annotation='' scope='instance_level' visibility='public_vis'
> isChangeable='true' type='a90' referencedEnd='a91'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>-1</XMI.field> <!-- upper -->
> <XMI.field>true</XMI.field> <!-- is_ordered -->
> <XMI.field>true</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Reference>
> <Model:Reference xmi.id='a92' name='stereotype' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> type='a93' referencedEnd='a94'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>-1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>true</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Reference>
> <Model:Reference xmi.id='a95' name='taggedValue' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> type='a96' referencedEnd='a97'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>-1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>true</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Reference>
> </Model:Namespace.contents>
> </Model:Class>
> <Model:Import xmi.id='a98' name='Data_Types' annotation=''
> visibility='public_vis' isClustered='true' importedNamespace='a4'>
> </Model:Import>
> <Model:Tag xmi.id='a99'
> name='org.omg.mof.idl_substitute_name=umlConstraint' annotation=''
> tagId='org.omg.mof.idl_substitute_name' elements='a78 a80'>
> <Model:Tag.values>
> <XMI.any xmi.type='string'>umlConstraint</XMI.any>
> </Model:Tag.values>
> </Model:Tag>
> <Model:Class xmi.id='a100' name='GeneralizableElement'
> annotation='' isRoot='false' isLeaf='false' isAbstract='true'
> visibility='public_vis' isSingleton='false' supertypes='a68'>
> <Model:Namespace.contents>
> <Model:Attribute xmi.id='a101' name='isRoot' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> isDerived='false' type='a26'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>1</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Attribute>
> <Model:Attribute xmi.id='a102' name='isLeaf' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> isDerived='false' type='a26'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>1</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Attribute>
> <Model:Attribute xmi.id='a103' name='isAbstract' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> isDerived='false' type='a26'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>1</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Attribute>
> <Model:Reference xmi.id='a104' name='generalization'
> annotation='' scope='instance_level' visibility='public_vis'
> isChangeable='true' type='a105' referencedEnd='a106'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>-1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>true</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Reference>
> </Model:Namespace.contents>
> </Model:Class>
> <Model:Class xmi.id='a73' name='Namespace' annotation=''
> isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis'
> isSingleton='false' supertypes='a68'>
> <Model:Namespace.contents>
> <Model:Reference xmi.id='a107' name='ownedElement'
> annotation='' scope='instance_level' visibility='public_vis'
> isChangeable='true' type='a68' referencedEnd='a108'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>-1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>true</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Reference>
> </Model:Namespace.contents>
> </Model:Class>
> <Model:Class xmi.id='a109' name='Classifier' annotation=''
> isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis'
> isSingleton='false' supertypes='a100 a73'>
> <Model:Namespace.contents>
> <Model:Reference xmi.id='a110' name='feature' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> type='a111' referencedEnd='a112'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>-1</XMI.field> <!-- upper -->
> <XMI.field>true</XMI.field> <!-- is_ordered -->
> <XMI.field>true</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Reference>
> <Model:Reference xmi.id='a113' name='powertypeRange'
> annotation='' scope='instance_level' visibility='public_vis'
> isChangeable='true' type='a105' referencedEnd='a114'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>-1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>true</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Reference>
> </Model:Namespace.contents>
> </Model:Class>
> <Model:Class xmi.id='a115' name='Class' annotation=''
> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
> isSingleton='false' supertypes='a109'>
> <Model:Namespace.contents>
> <Model:Attribute xmi.id='a116' name='isActive' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> isDerived='false' type='a26'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>1</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Attribute>
> </Model:Namespace.contents>
> </Model:Class>
> <Model:Class xmi.id='a117' name='DataType' annotation=''
> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
> isSingleton='false' supertypes='a109'>
> </Model:Class>
> <Model:Class xmi.id='a111' name='Feature' annotation=''
> isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis'
> isSingleton='false' supertypes='a68'>
> <Model:Namespace.contents>
> <Model:Attribute xmi.id='a118' name='ownerScope' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> isDerived='false' type='a35'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>1</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Attribute>
> <Model:Reference xmi.id='a119' name='owner' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> type='a109' referencedEnd='a120'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Reference>
> </Model:Namespace.contents>
> </Model:Class>
> <Model:Class xmi.id='a121' name='StructuralFeature' annotation=''
> isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis'
> isSingleton='false' supertypes='a111'>
> <Model:Namespace.contents>
> <Model:Attribute xmi.id='a122' name='multiplicity'
> annotation='' scope='instance_level' visibility='public_vis'
> isChangeable='true' isDerived='false' type='a40'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Attribute>
> <Model:Attribute xmi.id='a123' name='changeability'
> annotation='' scope='instance_level' visibility='public_vis'
> isChangeable='true' isDerived='false' type='a29'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Attribute>
> <Model:Attribute xmi.id='a124' name='targetScope' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> isDerived='false' type='a35'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Attribute>
> <Model:Attribute xmi.id='a125' name='ordering' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> isDerived='false' type='a31'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Attribute>
> <Model:Reference xmi.id='a126' name='type' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> type='a109' referencedEnd='a127'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>1</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Reference>
> </Model:Namespace.contents>
> </Model:Class>
> <Model:Class xmi.id='a128' name='AssociationEnd' annotation=''
> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
> isSingleton='false' supertypes='a68'>
> <Model:Namespace.contents>
> <Model:Attribute xmi.id='a129' name='isNavigable' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> isDerived='false' type='a26'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>1</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Attribute>
> <Model:Attribute xmi.id='a130' name='ordering' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> isDerived='false' type='a31'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Attribute>
> <Model:Attribute xmi.id='a131' name='aggregation' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> isDerived='false' type='a24'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Attribute>
> <Model:Attribute xmi.id='a132' name='targetScope' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> isDerived='false' type='a35'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Attribute>
> <Model:Attribute xmi.id='a133' name='multiplicity'
> annotation='' scope='instance_level' visibility='public_vis'
> isChangeable='true' isDerived='false' type='a40'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Attribute>
> <Model:Attribute xmi.id='a134' name='changeability'
> annotation='' scope='instance_level' visibility='public_vis'
> isChangeable='true' isDerived='false' type='a29'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Attribute>
> <Model:Reference xmi.id='a135' name='association' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> type='a136' referencedEnd='a137'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>1</XMI.field> <!-- lower -->
> <XMI.field>1</XMI.field> <!-- upper -->
> <XMI.field>false</XMI.field> <!-- is_ordered -->
> <XMI.field>false</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Reference>
> <Model:Reference xmi.id='a138' name='qualifier' annotation=''
> scope='instance_level' visibility='public_vis' isChangeable='true'
> type='a139' referencedEnd='a140'>
> <Model:StructuralFeature.multiplicity>
> <XMI.field>0</XMI.field> <!-- lower -->
> <XMI.field>-1</XMI.field> <!-- upper -->
> <XMI.field>true</XMI.field> <!-- is_ordered -->
> <XMI.field>true</XMI.field> <!-- is_unique -->
> </Model:StructuralFeature.multiplicity>
> </Model:Reference>
> <Model:Reference xmi.id='a141' name='partici
Re: [Epsilon] Using OCL in Meta-Model level [message #599585 is a reply to message #378020] Sat, 19 May 2007 21:20 Go to previous message
Dimitrios Kolovos is currently offline Dimitrios KolovosFriend
Messages: 1776
Registered: July 2009
Senior Member
Hi Bahman,

(A) describes *MOF itself* while (B) and (C) describe *UML using MOF*.
(The common *NamedElement* thing is a result of MOF emerging from UML at
some point, but you can consider it as an unlucky coincidence).

As for the differences between (B) and (C), with regard to the
attributes/references of the UML ModelElement, any differences may be
due to the fact that (B) refers to version 1.4 of UML and (C) to version
1.5. BTW, if you find/have the UML 1.5 metamodel in XMI, we can use it
to generate a similar javadoc-like set of pages.

As for the operations part, (B) doesn't document operations at all
because since MOF lacks an action semantics, MOF-level operations are
not executable - and thus useless to Epsilon.

I hope this helps.

Cheers,
Dimitrios

Bahman wrote:
> Hi Dimitrios,
>
> Thanks for the comment and the link.
> I'm not sure what makes me confused! Would you please consider the following
> concrete example and let me know your idea?
>
> A) Considering the MOF Model structure depicted by figure3-2 on page 3-13 of
> the MOF1.4 specification (http://www.omg.org/docs/formal/02-04-03.pdf), each
> Model Element has specific attributes, references, and operations (as
> explained in section 3.4.1).
> B) Considering the description of class ModelElement from the link you
> introduced (http://www-users.cs.york.ac.uk/~dkolovos/uml14/), the attributes
> and references are totally different than what is specified in (A).
> C) Considering UML1.5 metamodel of OCLE 2.0 tool, I find a class
> ModelElement with just one attribute (name) and six operations which seems
> almost different that operations or references in (A) or (B).
>
> best,
> Bahman
>
>
> "Dimitrios Kolovos" <dskolovos@gmail.com> wrote in message
> news:f2fjdg$p0d$1@build.eclipse.org...
>> Hi Bahman,
>>
>> The properties of each metaclass (e.g. Class, ModelElement etc) are
>> defined in the metamodel of the language. For ArgoUML the metamodel is a
>> MOF1.4/XMI 1.1 file (attached). From this, I've generated a set of
>> JavaDoc-like HTML pages available at
>> http://www-users.cs.york.ac.uk/~dkolovos/uml14/ which you may find more
>> usable than the XMI metamodel itself :)
>>
>> Cheers,
>> Dimitrios
>>
>> Bahman wrote:
>>> Hi everybody,
>>>
>>> I have a problem understanding how to use OCL (especially in MetaModel
>>> level), if you have time to guide me, that would be appreciated.
>>>
>>> So far I've worked with some tools such as ArgoUML (adding some critics
>>> to
>>> it), OCLE (checking OCLs in model level and metamodel level), and
>>> recently
>>> Epsilon (Adding some more functionalities on its ArgoUML version).
>>>
>>> My problem is that I don't know from where can I find all the OPERATIONS
>>> and
>>> FUNCTIONS that I can apply on a model (Meta-Model). Let me make it clear
>>> by
>>> an example:
>>>
>>> 1) In Epsilon, I've written the following operation to check whether or
>>> not
>>> a class own an attribute. But I knew nothing about the FEATURE property
>>> that
>>> could be applied on a class. I just found it by reviewing existing
>>> similar
>>> codes.
>>>
>>> operation Class hasAttribute (name : String) : Boolean {
>>> return self.feature.exists (a:Attribute | a.name = name);
>>> }
>>>
>>> 2) In ArgoUML, I had to write the following method to check the above
>>> condition. However, since it was in Eclipse, I could see which methods
>>> are
>>> available by Model's Facade class (thanks to Eclipse assistance).
>>>
>>> public static boolean classHasAtt (Object cls) {
>>> boolean found = false;
>>> Collection atts = Model.getFacade().getAttributes(cls);
>>> if ( atts.size() > 0 ) {
>>> found = true ;
>>> }
>>> return found;
>>> }
>>>
>>> Again my question is: "let say the context is a class, how can I access
>>> to
>>> all its attributes? its operations? its stereotypes?" The same question
>>> applies for every ModelElement.
>>>
>>> best,
>>> Bahman
>>>
>>>
>>>
>
>
> ------------------------------------------------------------ --------------------
>
>
>> <?xml version="1.0" encoding="UTF-8" ?>
>> <!-- <!DOCTYPE XMI SYSTEM 'Model.dtd'> -->
>> <XMI xmi.version='1.1' xmlns:Model='omg.org/mof.Model/1.3'>
>> <XMI.header>
>> <XMI.model xmi.name='UML' xmi.version='1.4'/>
>> <XMI.metamodel xmi.name='Model' xmi.version='1.3'/>
>> </XMI.header>
>> <XMI.content>
>> <Model:Package xmi.id='a0' name='UML' annotation='' isRoot='false'
>> isLeaf='false' isAbstract='false' visibility='public_vis'>
>> <Model:Namespace.contents>
>> <Model:Tag xmi.id='a1' name='org.omg.mof.idl_prefix=org.omg'
>> annotation='' tagId='org.omg.mof.idl_prefix' elements='a0'>
>> <Model:Tag.values>
>> <XMI.any xmi.type='string'>org.omg</XMI.any>
>> </Model:Tag.values>
>> </Model:Tag>
>> <Model:Tag xmi.id='a2' name='org.omg.xmi.namespace=UML'
>> annotation='' tagId='org.omg.xmi.namespace' elements='a0'>
>> <Model:Tag.values>
>> <XMI.any xmi.type='string'>UML</XMI.any>
>> </Model:Tag.values>
>> </Model:Tag>
>> <Model:Import xmi.id='a3' name='Data_Types' annotation=''
>> visibility='public_vis' isClustered='true' importedNamespace='a4'>
>> </Model:Import>
>> <Model:Import xmi.id='a5' name='Core' annotation=''
>> visibility='public_vis' isClustered='true' importedNamespace='a6'>
>> </Model:Import>
>> <Model:Import xmi.id='a7' name='Common_Behavior' annotation=''
>> visibility='public_vis' isClustered='true' importedNamespace='a8'>
>> </Model:Import>
>> <Model:Import xmi.id='a9' name='Use_Cases' annotation=''
>> visibility='public_vis' isClustered='true' importedNamespace='a10'>
>> </Model:Import>
>> <Model:Import xmi.id='a11' name='State_Machines' annotation=''
>> visibility='public_vis' isClustered='true' importedNamespace='a12'>
>> </Model:Import>
>> <Model:Import xmi.id='a13' name='Collaborations' annotation=''
>> visibility='public_vis' isClustered='true' importedNamespace='a14'>
>> </Model:Import>
>> <Model:Import xmi.id='a15' name='Activity_Graphs' annotation=''
>> visibility='public_vis' isClustered='true' importedNamespace='a16'>
>> </Model:Import>
>> <Model:Import xmi.id='a17' name='Model_Management' annotation=''
>> visibility='public_vis' isClustered='true' importedNamespace='a18'>
>> </Model:Import>
>> </Model:Namespace.contents>
>> </Model:Package>
>> <Model:Package xmi.id='a4' name='Data_Types' annotation=''
>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'>
>> <Model:Namespace.contents>
>> <Model:Tag xmi.id='a19'
>> name='org.omg.mof.idl_prefix=org.omg.uml.Foundation' annotation=''
>> tagId='org.omg.mof.idl_prefix' elements='a4'>
>> <Model:Tag.values>
>> <XMI.any xmi.type='string'>org.omg.uml.Foundation</XMI.any>
>> </Model:Tag.values>
>> </Model:Tag>
>> <Model:Tag xmi.id='a20' name='org.omg.xmi.namespace=UML'
>> annotation='' tagId='org.omg.xmi.namespace' elements='a4'>
>> <Model:Tag.values>
>> <XMI.any xmi.type='string'>UML</XMI.any>
>> </Model:Tag.values>
>> </Model:Tag>
>> <Model:DataType xmi.id='a21' name='Integer' annotation=''
>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>> <Model:DataType.typeCode>
>> <XMI.CorbaTypeCode>
>> <XMI.CorbaTcLong/>
>> </XMI.CorbaTypeCode>
>> </Model:DataType.typeCode>
>> </Model:DataType>
>> <Model:DataType xmi.id='a22' name='UnlimitedInteger' annotation=''
>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>> <Model:DataType.typeCode>
>> <XMI.CorbaTypeCode>
>> <XMI.CorbaTcAlias xmi.tcName='UnlimitedInteger'
>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/UnlimitedInt eger:1.0' >
>> <XMI.CorbaTypeCode>
>> <XMI.CorbaTcLong/>
>> </XMI.CorbaTypeCode>
>> </XMI.CorbaTcAlias>
>> </XMI.CorbaTypeCode>
>> </Model:DataType.typeCode>
>> </Model:DataType>
>> <Model:DataType xmi.id='a23' name='String' annotation=''
>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>> <Model:DataType.typeCode>
>> <XMI.CorbaTypeCode>
>> <XMI.CorbaTcString xmi.tcLength='0'/>
>> </XMI.CorbaTypeCode>
>> </Model:DataType.typeCode>
>> </Model:DataType>
>> <Model:DataType xmi.id='a24' name='AggregationKind' annotation=''
>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>> <Model:DataType.typeCode>
>> <XMI.CorbaTypeCode>
>> <XMI.CorbaTcEnum xmi.tcName='AggregationKind'
>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/AggregationK ind:1.0' >
>> <XMI.CorbaTcEnumLabel xmi.tcName='ak_none'/>
>> <XMI.CorbaTcEnumLabel xmi.tcName='ak_aggregate'/>
>> <XMI.CorbaTcEnumLabel xmi.tcName='ak_composite'/>
>> </XMI.CorbaTcEnum>
>> </XMI.CorbaTypeCode>
>> </Model:DataType.typeCode>
>> </Model:DataType>
>> <Model:Tag xmi.id='a25' name='org.omg.xmi.enumerationUnprefix=ak_'
>> annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a24'>
>> <Model:Tag.values>
>> <XMI.any xmi.type='string'>ak_</XMI.any>
>> </Model:Tag.values>
>> </Model:Tag>
>> <Model:DataType xmi.id='a26' name='Boolean' annotation=''
>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>> <Model:DataType.typeCode>
>> <XMI.CorbaTypeCode>
>> <XMI.CorbaTcBoolean/>
>> </XMI.CorbaTypeCode>
>> </Model:DataType.typeCode>
>> </Model:DataType>
>> <Model:DataType xmi.id='a27' name='CallConcurrencyKind'
>> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
>> visibility='public_vis'>
>> <Model:DataType.typeCode>
>> <XMI.CorbaTypeCode>
>> <XMI.CorbaTcEnum xmi.tcName='CallConcurrencyKind'
>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/CallConcurre ncyKind:1.0' >
>> <XMI.CorbaTcEnumLabel xmi.tcName='cck_sequential'/>
>> <XMI.CorbaTcEnumLabel xmi.tcName='cck_guarded'/>
>> <XMI.CorbaTcEnumLabel xmi.tcName='cck_concurrent'/>
>> </XMI.CorbaTcEnum>
>> </XMI.CorbaTypeCode>
>> </Model:DataType.typeCode>
>> </Model:DataType>
>> <Model:Tag xmi.id='a28' name='org.omg.xmi.enumerationUnprefix=cck_'
>> annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a27'>
>> <Model:Tag.values>
>> <XMI.any xmi.type='string'>cck_</XMI.any>
>> </Model:Tag.values>
>> </Model:Tag>
>> <Model:DataType xmi.id='a29' name='ChangeableKind' annotation=''
>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>> <Model:DataType.typeCode>
>> <XMI.CorbaTypeCode>
>> <XMI.CorbaTcEnum xmi.tcName='ChangeableKind'
>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/ChangeableKi nd:1.0' >
>> <XMI.CorbaTcEnumLabel xmi.tcName='ck_changeable'/>
>> <XMI.CorbaTcEnumLabel xmi.tcName='ck_frozen'/>
>> <XMI.CorbaTcEnumLabel xmi.tcName='ck_addOnly'/>
>> </XMI.CorbaTcEnum>
>> </XMI.CorbaTypeCode>
>> </Model:DataType.typeCode>
>> </Model:DataType>
>> <Model:Tag xmi.id='a30' name='org.omg.xmi.enumerationUnprefix=ck_'
>> annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a29'>
>> <Model:Tag.values>
>> <XMI.any xmi.type='string'>ck_</XMI.any>
>> </Model:Tag.values>
>> </Model:Tag>
>> <Model:DataType xmi.id='a31' name='OrderingKind' annotation=''
>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>> <Model:DataType.typeCode>
>> <XMI.CorbaTypeCode>
>> <XMI.CorbaTcEnum xmi.tcName='OrderingKind'
>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/OrderingKind :1.0' >
>> <XMI.CorbaTcEnumLabel xmi.tcName='ok_unordered'/>
>> <XMI.CorbaTcEnumLabel xmi.tcName='ok_ordered'/>
>> </XMI.CorbaTcEnum>
>> </XMI.CorbaTypeCode>
>> </Model:DataType.typeCode>
>> </Model:DataType>
>> <Model:Tag xmi.id='a32' name='org.omg.xmi.enumerationUnprefix=ok_'
>> annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a31'>
>> <Model:Tag.values>
>> <XMI.any xmi.type='string'>ok_</XMI.any>
>> </Model:Tag.values>
>> </Model:Tag>
>> <Model:DataType xmi.id='a33' name='ParameterDirectionKind'
>> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
>> visibility='public_vis'>
>> <Model:DataType.typeCode>
>> <XMI.CorbaTypeCode>
>> <XMI.CorbaTcEnum xmi.tcName='ParameterDirectionKind'
>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/ParameterDir ectionKind:1.0' >
>> <XMI.CorbaTcEnumLabel xmi.tcName='pdk_in'/>
>> <XMI.CorbaTcEnumLabel xmi.tcName='pdk_inout'/>
>> <XMI.CorbaTcEnumLabel xmi.tcName='pdk_out'/>
>> <XMI.CorbaTcEnumLabel xmi.tcName='pdk_return'/>
>> </XMI.CorbaTcEnum>
>> </XMI.CorbaTypeCode>
>> </Model:DataType.typeCode>
>> </Model:DataType>
>> <Model:Tag xmi.id='a34' name='org.omg.xmi.enumerationUnprefix=pdk_'
>> annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a33'>
>> <Model:Tag.values>
>> <XMI.any xmi.type='string'>pdk_</XMI.any>
>> </Model:Tag.values>
>> </Model:Tag>
>> <Model:DataType xmi.id='a35' name='ScopeKind' annotation=''
>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>> <Model:DataType.typeCode>
>> <XMI.CorbaTypeCode>
>> <XMI.CorbaTcEnum xmi.tcName='ScopeKind'
>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/ScopeKind:1. 0' >
>> <XMI.CorbaTcEnumLabel xmi.tcName='sk_instance'/>
>> <XMI.CorbaTcEnumLabel xmi.tcName='sk_classifier'/>
>> </XMI.CorbaTcEnum>
>> </XMI.CorbaTypeCode>
>> </Model:DataType.typeCode>
>> </Model:DataType>
>> <Model:Tag xmi.id='a36' name='org.omg.xmi.enumerationUnprefix=sk_'
>> annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a35'>
>> <Model:Tag.values>
>> <XMI.any xmi.type='string'>sk_</XMI.any>
>> </Model:Tag.values>
>> </Model:Tag>
>> <Model:DataType xmi.id='a37' name='VisibilityKind' annotation=''
>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>> <Model:DataType.typeCode>
>> <XMI.CorbaTypeCode>
>> <XMI.CorbaTcEnum xmi.tcName='VisibilityKind'
>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/VisibilityKi nd:1.0' >
>> <XMI.CorbaTcEnumLabel xmi.tcName='vk_public'/>
>> <XMI.CorbaTcEnumLabel xmi.tcName='vk_protected'/>
>> <XMI.CorbaTcEnumLabel xmi.tcName='vk_private'/>
>> <XMI.CorbaTcEnumLabel xmi.tcName='vk_package'/>
>> </XMI.CorbaTcEnum>
>> </XMI.CorbaTypeCode>
>> </Model:DataType.typeCode>
>> </Model:DataType>
>> <Model:Tag xmi.id='a38' name='org.omg.xmi.enumerationUnprefix=vk_'
>> annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a37'>
>> <Model:Tag.values>
>> <XMI.any xmi.type='string'>vk_</XMI.any>
>> </Model:Tag.values>
>> </Model:Tag>
>> <Model:DataType xmi.id='a39' name='Name' annotation=''
>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>> <Model:DataType.typeCode>
>> <XMI.CorbaTypeCode>
>> <XMI.CorbaTcAlias xmi.tcName='Name'
>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/Name:1.0'>
>> <XMI.CorbaTypeCode>
>> <XMI.CorbaTcString xmi.tcLength='0'/>
>> </XMI.CorbaTypeCode>
>> </XMI.CorbaTcAlias>
>> </XMI.CorbaTypeCode>
>> </Model:DataType.typeCode>
>> </Model:DataType>
>> <Model:Class xmi.id='a40' name='Multiplicity' annotation=''
>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>> isSingleton='false'>
>> <Model:Namespace.contents>
>> <Model:Reference xmi.id='a41' name='range' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> type='a42' referencedEnd='a43'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>1</XMI.field> <!-- lower -->
>> <XMI.field>-1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>true</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Reference>
>> </Model:Namespace.contents>
>> </Model:Class>
>> <Model:Class xmi.id='a42' name='MultiplicityRange' annotation=''
>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>> isSingleton='false'>
>> <Model:Namespace.contents>
>> <Model:Attribute xmi.id='a44' name='lower' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> isDerived='false' type='a21'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>1</XMI.field> <!-- lower -->
>> <XMI.field>1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>false</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Attribute>
>> <Model:Attribute xmi.id='a45' name='upper' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> isDerived='false' type='a22'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>1</XMI.field> <!-- lower -->
>> <XMI.field>1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>false</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Attribute>
>> <Model:Reference xmi.id='a46' name='multiplicity' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> type='a40' referencedEnd='a47'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>1</XMI.field> <!-- lower -->
>> <XMI.field>1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>false</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Reference>
>> </Model:Namespace.contents>
>> </Model:Class>
>> <Model:Class xmi.id='a48' name='Expression' annotation=''
>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>> isSingleton='false'>
>> <Model:Namespace.contents>
>> <Model:Attribute xmi.id='a49' name='language' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> isDerived='false' type='a39'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>0</XMI.field> <!-- lower -->
>> <XMI.field>1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>false</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Attribute>
>> <Model:Attribute xmi.id='a50' name='body' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> isDerived='false' type='a23'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>1</XMI.field> <!-- lower -->
>> <XMI.field>1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>false</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Attribute>
>> </Model:Namespace.contents>
>> </Model:Class>
>> <Model:Class xmi.id='a51' name='BooleanExpression' annotation=''
>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>> isSingleton='false' supertypes='a48'>
>> </Model:Class>
>> <Model:Class xmi.id='a52' name='TypeExpression' annotation=''
>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>> isSingleton='false' supertypes='a48'>
>> </Model:Class>
>> <Model:Class xmi.id='a53' name='MappingExpression' annotation=''
>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>> isSingleton='false' supertypes='a48'>
>> </Model:Class>
>> <Model:Class xmi.id='a54' name='ProcedureExpression' annotation=''
>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>> isSingleton='false' supertypes='a48'>
>> </Model:Class>
>> <Model:Class xmi.id='a55' name='ObjectSetExpression' annotation=''
>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>> isSingleton='false' supertypes='a48'>
>> </Model:Class>
>> <Model:Class xmi.id='a56' name='ActionExpression' annotation=''
>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>> isSingleton='false' supertypes='a48'>
>> </Model:Class>
>> <Model:Class xmi.id='a57' name='IterationExpression' annotation=''
>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>> isSingleton='false' supertypes='a48'>
>> </Model:Class>
>> <Model:Class xmi.id='a58' name='TimeExpression' annotation=''
>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>> isSingleton='false' supertypes='a48'>
>> </Model:Class>
>> <Model:Class xmi.id='a59' name='ArgListsExpression' annotation=''
>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>> isSingleton='false' supertypes='a48'>
>> </Model:Class>
>> <Model:DataType xmi.id='a60' name='LocationReference' annotation=''
>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>> <Model:DataType.typeCode>
>> <XMI.CorbaTypeCode>
>> <XMI.CorbaTcAlias xmi.tcName='LocationReference'
>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/LocationRefe rence:1.0' >
>> <XMI.CorbaTypeCode>
>> <XMI.CorbaTcString xmi.tcLength='0'/>
>> </XMI.CorbaTypeCode>
>> </XMI.CorbaTcAlias>
>> </XMI.CorbaTypeCode>
>> </Model:DataType.typeCode>
>> </Model:DataType>
>> <Model:DataType xmi.id='a61' name='PseudostateKind' annotation=''
>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>> <Model:DataType.typeCode>
>> <XMI.CorbaTypeCode>
>> <XMI.CorbaTcEnum xmi.tcName='PseudostateKind'
>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/PseudostateK ind:1.0' >
>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_choice'/>
>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_deepHistory'/>
>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_fork'/>
>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_initial'/>
>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_join'/>
>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_junction'/>
>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_shallowHistory'/>
>> </XMI.CorbaTcEnum>
>> </XMI.CorbaTypeCode>
>> </Model:DataType.typeCode>
>> </Model:DataType>
>> <Model:Tag xmi.id='a62' name='org.omg.xmi.enumerationUnprefix=pk_'
>> annotation='' tagId='org.omg.xmi.enumerationUnprefix' elements='a61'>
>> <Model:Tag.values>
>> <XMI.any xmi.type='string'>pk_</XMI.any>
>> </Model:Tag.values>
>> </Model:Tag>
>> <Model:DataType xmi.id='a63' name='Geometry' annotation=''
>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>> <Model:DataType.typeCode>
>> <XMI.CorbaTypeCode>
>> <XMI.CorbaTcAlias xmi.tcName='Geometry'
>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/Geometry:1.0 ' >
>> <XMI.CorbaTypeCode>
>> <XMI.CorbaTcString xmi.tcLength='0'/>
>> </XMI.CorbaTypeCode>
>> </XMI.CorbaTcAlias>
>> </XMI.CorbaTypeCode>
>> </Model:DataType.typeCode>
>> </Model:DataType>
>> <Model:Association xmi.id='a64' name='A_multiplicity_range'
>> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
>> visibility='public_vis' isDerived='false'>
>> <Model:Namespace.contents>
>> <Model:AssociationEnd xmi.id='a47' name='multiplicity'
>> annotation='' isNavigable='true' aggregation='composite'
>> isChangeable='true' type='a40'>
>> <Model:AssociationEnd.multiplicity>
>> <XMI.field>1</XMI.field> <!-- lower -->
>> <XMI.field>1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>false</XMI.field> <!-- is_unique -->
>> </Model:AssociationEnd.multiplicity>
>> </Model:AssociationEnd>
>> <Model:AssociationEnd xmi.id='a43' name='range' annotation=''
>> isNavigable='true' aggregation='none' isChangeable='true' type='a42'>
>> <Model:AssociationEnd.multiplicity>
>> <XMI.field>1</XMI.field> <!-- lower -->
>> <XMI.field>-1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>true</XMI.field> <!-- is_unique -->
>> </Model:AssociationEnd.multiplicity>
>> </Model:AssociationEnd>
>> </Model:Namespace.contents>
>> </Model:Association>
>> </Model:Namespace.contents>
>> </Model:Package>
>> <Model:Package xmi.id='a6' name='Core' annotation='' isRoot='false'
>> isLeaf='false' isAbstract='false' visibility='public_vis'>
>> <Model:Namespace.contents>
>> <Model:Tag xmi.id='a65'
>> name='org.omg.mof.idl_prefix=org.omg.uml.Foundation' annotation=''
>> tagId='org.omg.mof.idl_prefix' elements='a6'>
>> <Model:Tag.values>
>> <XMI.any xmi.type='string'>org.omg.uml.Foundation</XMI.any>
>> </Model:Tag.values>
>> </Model:Tag>
>> <Model:Tag xmi.id='a66' name='org.omg.xmi.namespace=UML'
>> annotation='' tagId='org.omg.xmi.namespace' elements='a6'>
>> <Model:Tag.values>
>> <XMI.any xmi.type='string'>UML</XMI.any>
>> </Model:Tag.values>
>> </Model:Tag>
>> <Model:Class xmi.id='a67' name='Element' annotation=''
>> isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis'
>> isSingleton='false'>
>> </Model:Class>
>> <Model:Class xmi.id='a68' name='ModelElement' annotation=''
>> isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis'
>> isSingleton='false' supertypes='a67'>
>> <Model:Namespace.contents>
>> <Model:Attribute xmi.id='a69' name='name' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> isDerived='false' type='a39'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>0</XMI.field> <!-- lower -->
>> <XMI.field>1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>false</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Attribute>
>> <Model:Attribute xmi.id='a70' name='visibility' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> isDerived='false' type='a37'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>0</XMI.field> <!-- lower -->
>> <XMI.field>1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>false</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Attribute>
>> <Model:Attribute xmi.id='a71' name='isSpecification'
>> annotation='' scope='instance_level' visibility='public_vis'
>> isChangeable='true' isDerived='false' type='a26'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>1</XMI.field> <!-- lower -->
>> <XMI.field>1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>false</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Attribute>
>> <Model:Reference xmi.id='a72' name='namespace' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> type='a73' referencedEnd='a74'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>0</XMI.field> <!-- lower -->
>> <XMI.field>1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>false</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Reference>
>> <Model:Reference xmi.id='a75' name='clientDependency'
>> annotation='' scope='instance_level' visibility='public_vis'
>> isChangeable='true' type='a76' referencedEnd='a77'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>0</XMI.field> <!-- lower -->
>> <XMI.field>-1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>true</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Reference>
>> <Model:Reference xmi.id='a78' name='constraint' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> type='a79' referencedEnd='a80'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>0</XMI.field> <!-- lower -->
>> <XMI.field>-1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>true</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Reference>
>> <Model:Reference xmi.id='a81' name='targetFlow' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> type='a82' referencedEnd='a83'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>0</XMI.field> <!-- lower -->
>> <XMI.field>-1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>true</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Reference>
>> <Model:Reference xmi.id='a84' name='sourceFlow' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> type='a82' referencedEnd='a85'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>0</XMI.field> <!-- lower -->
>> <XMI.field>-1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>true</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Reference>
>> <Model:Reference xmi.id='a86' name='comment' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> type='a87' referencedEnd='a88'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>0</XMI.field> <!-- lower -->
>> <XMI.field>-1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>true</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Reference>
>> <Model:Reference xmi.id='a89' name='templateParameter'
>> annotation='' scope='instance_level' visibility='public_vis'
>> isChangeable='true' type='a90' referencedEnd='a91'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>0</XMI.field> <!-- lower -->
>> <XMI.field>-1</XMI.field> <!-- upper -->
>> <XMI.field>true</XMI.field> <!-- is_ordered -->
>> <XMI.field>true</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Reference>
>> <Model:Reference xmi.id='a92' name='stereotype' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> type='a93' referencedEnd='a94'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>0</XMI.field> <!-- lower -->
>> <XMI.field>-1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>true</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Reference>
>> <Model:Reference xmi.id='a95' name='taggedValue' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> type='a96' referencedEnd='a97'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>0</XMI.field> <!-- lower -->
>> <XMI.field>-1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>true</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Reference>
>> </Model:Namespace.contents>
>> </Model:Class>
>> <Model:Import xmi.id='a98' name='Data_Types' annotation=''
>> visibility='public_vis' isClustered='true' importedNamespace='a4'>
>> </Model:Import>
>> <Model:Tag xmi.id='a99'
>> name='org.omg.mof.idl_substitute_name=umlConstraint' annotation=''
>> tagId='org.omg.mof.idl_substitute_name' elements='a78 a80'>
>> <Model:Tag.values>
>> <XMI.any xmi.type='string'>umlConstraint</XMI.any>
>> </Model:Tag.values>
>> </Model:Tag>
>> <Model:Class xmi.id='a100' name='GeneralizableElement'
>> annotation='' isRoot='false' isLeaf='false' isAbstract='true'
>> visibility='public_vis' isSingleton='false' supertypes='a68'>
>> <Model:Namespace.contents>
>> <Model:Attribute xmi.id='a101' name='isRoot' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> isDerived='false' type='a26'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>1</XMI.field> <!-- lower -->
>> <XMI.field>1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>false</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Attribute>
>> <Model:Attribute xmi.id='a102' name='isLeaf' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> isDerived='false' type='a26'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>1</XMI.field> <!-- lower -->
>> <XMI.field>1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>false</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Attribute>
>> <Model:Attribute xmi.id='a103' name='isAbstract' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> isDerived='false' type='a26'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>1</XMI.field> <!-- lower -->
>> <XMI.field>1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>false</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Attribute>
>> <Model:Reference xmi.id='a104' name='generalization'
>> annotation='' scope='instance_level' visibility='public_vis'
>> isChangeable='true' type='a105' referencedEnd='a106'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>0</XMI.field> <!-- lower -->
>> <XMI.field>-1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>true</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Reference>
>> </Model:Namespace.contents>
>> </Model:Class>
>> <Model:Class xmi.id='a73' name='Namespace' annotation=''
>> isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis'
>> isSingleton='false' supertypes='a68'>
>> <Model:Namespace.contents>
>> <Model:Reference xmi.id='a107' name='ownedElement'
>> annotation='' scope='instance_level' visibility='public_vis'
>> isChangeable='true' type='a68' referencedEnd='a108'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>0</XMI.field> <!-- lower -->
>> <XMI.field>-1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>true</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Reference>
>> </Model:Namespace.contents>
>> </Model:Class>
>> <Model:Class xmi.id='a109' name='Classifier' annotation=''
>> isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis'
>> isSingleton='false' supertypes='a100 a73'>
>> <Model:Namespace.contents>
>> <Model:Reference xmi.id='a110' name='feature' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> type='a111' referencedEnd='a112'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>0</XMI.field> <!-- lower -->
>> <XMI.field>-1</XMI.field> <!-- upper -->
>> <XMI.field>true</XMI.field> <!-- is_ordered -->
>> <XMI.field>true</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Reference>
>> <Model:Reference xmi.id='a113' name='powertypeRange'
>> annotation='' scope='instance_level' visibility='public_vis'
>> isChangeable='true' type='a105' referencedEnd='a114'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>0</XMI.field> <!-- lower -->
>> <XMI.field>-1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>true</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Reference>
>> </Model:Namespace.contents>
>> </Model:Class>
>> <Model:Class xmi.id='a115' name='Class' annotation=''
>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>> isSingleton='false' supertypes='a109'>
>> <Model:Namespace.contents>
>> <Model:Attribute xmi.id='a116' name='isActive' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> isDerived='false' type='a26'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>1</XMI.field> <!-- lower -->
>> <XMI.field>1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>false</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Attribute>
>> </Model:Namespace.contents>
>> </Model:Class>
>> <Model:Class xmi.id='a117' name='DataType' annotation=''
>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>> isSingleton='false' supertypes='a109'>
>> </Model:Class>
>> <Model:Class xmi.id='a111' name='Feature' annotation=''
>> isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis'
>> isSingleton='false' supertypes='a68'>
>> <Model:Namespace.contents>
>> <Model:Attribute xmi.id='a118' name='ownerScope' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> isDerived='false' type='a35'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>1</XMI.field> <!-- lower -->
>> <XMI.field>1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>false</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Attribute>
>> <Model:Reference xmi.id='a119' name='owner' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> type='a109' referencedEnd='a120'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>0</XMI.field> <!-- lower -->
>> <XMI.field>1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>false</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Reference>
>> </Model:Namespace.contents>
>> </Model:Class>
>> <Model:Class xmi.id='a121' name='StructuralFeature' annotation=''
>> isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis'
>> isSingleton='false' supertypes='a111'>
>> <Model:Namespace.contents>
>> <Model:Attribute xmi.id='a122' name='multiplicity'
>> annotation='' scope='instance_level' visibility='public_vis'
>> isChangeable='true' isDerived='false' type='a40'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>0</XMI.field> <!-- lower -->
>> <XMI.field>1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>false</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Attribute>
>> <Model:Attribute xmi.id='a123' name='changeability'
>> annotation='' scope='instance_level' visibility='public_vis'
>> isChangeable='true' isDerived='false' type='a29'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>0</XMI.field> <!-- lower -->
>> <XMI.field>1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>false</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Attribute>
>> <Model:Attribute xmi.id='a124' name='targetScope' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> isDerived='false' type='a35'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>0</XMI.field> <!-- lower -->
>> <XMI.field>1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>false</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Attribute>
>> <Model:Attribute xmi.id='a125' name='ordering' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> isDerived='false' type='a31'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>0</XMI.field> <!-- lower -->
>> <XMI.field>1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>false</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Attribute>
>> <Model:Reference xmi.id='a126' name='type' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> type='a109' referencedEnd='a127'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>1</XMI.field> <!-- lower -->
>> <XMI.field>1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>false</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Reference>
>> </Model:Namespace.contents>
>> </Model:Class>
>> <Model:Class xmi.id='a128' name='AssociationEnd' annotation=''
>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>> isSingleton='false' supertypes='a68'>
>> <Model:Namespace.contents>
>> <Model:Attribute xmi.id='a129' name='isNavigable' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> isDerived='false' type='a26'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>1</XMI.field> <!-- lower -->
>> <XMI.field>1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>false</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Attribute>
>> <Model:Attribute xmi.id='a130' name='ordering' annotation=''
>> scope='instance_level' visibility='public_vis' isChangeable='true'
>> isDerived='false' type='a31'>
>> <Model:StructuralFeature.multiplicity>
>> <XMI.field>0</XMI.field> <!-- lower -->
>> <XMI.field>1</XMI.field> <!-- upper -->
>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>> <XMI.field>false</XMI.field> <!-- is_unique -->
>> </Model:StructuralFeature.multiplicity>
>> </Model:Attribute>
>> <Model:Attribute xmi.id='a131' name='aggregation' annotation=''
>> scope='instance_level' visibi
Re: [Epsilon] Using OCL in Meta-Model level [message #599610 is a reply to message #378025] Sat, 19 May 2007 22:32 Go to previous message
Eclipse UserFriend
Originally posted by: b_zamani.encs.concordia.ca

Hi Dimitrios,

For A&B) My understanding was that since MOF1.4 is the metamodel of UML1.4,
everybody who wants to implement MOF1.4, should consider its structure (e.g.
Model structure depicted in figure3-2) and implement it. So, I expected to
see the same attributes and operations as there is in that figure.
For B&C) It's true that B is for UML1.4 and C is for UML1.5, but I don't
think there should be so much changes from 1.4 to 1.5! Do you?

best,
Bahman


"Dimitrios Kolovos" <dskolovos@gmail.com> wrote in message
news:f2npn3$6um$1@build.eclipse.org...
> Hi Bahman,
>
> (A) describes *MOF itself* while (B) and (C) describe *UML using MOF*.
> (The common *NamedElement* thing is a result of MOF emerging from UML at
> some point, but you can consider it as an unlucky coincidence).
>
> As for the differences between (B) and (C), with regard to the
> attributes/references of the UML ModelElement, any differences may be due
> to the fact that (B) refers to version 1.4 of UML and (C) to version 1.5.
> BTW, if you find/have the UML 1.5 metamodel in XMI, we can use it to
> generate a similar javadoc-like set of pages.
>
> As for the operations part, (B) doesn't document operations at all because
> since MOF lacks an action semantics, MOF-level operations are not
> executable - and thus useless to Epsilon.
>
> I hope this helps.
>
> Cheers,
> Dimitrios
>
> Bahman wrote:
>> Hi Dimitrios,
>>
>> Thanks for the comment and the link.
>> I'm not sure what makes me confused! Would you please consider the
>> following concrete example and let me know your idea?
>>
>> A) Considering the MOF Model structure depicted by figure3-2 on page 3-13
>> of the MOF1.4 specification
>> (http://www.omg.org/docs/formal/02-04-03.pdf), each Model Element has
>> specific attributes, references, and operations (as explained in section
>> 3.4.1).
>> B) Considering the description of class ModelElement from the link you
>> introduced (http://www-users.cs.york.ac.uk/~dkolovos/uml14/), the
>> attributes and references are totally different than what is specified in
>> (A).
>> C) Considering UML1.5 metamodel of OCLE 2.0 tool, I find a class
>> ModelElement with just one attribute (name) and six operations which
>> seems almost different that operations or references in (A) or (B).
>>
>> best,
>> Bahman
>>
>>
>> "Dimitrios Kolovos" <dskolovos@gmail.com> wrote in message
>> news:f2fjdg$p0d$1@build.eclipse.org...
>>> Hi Bahman,
>>>
>>> The properties of each metaclass (e.g. Class, ModelElement etc) are
>>> defined in the metamodel of the language. For ArgoUML the metamodel is a
>>> MOF1.4/XMI 1.1 file (attached). From this, I've generated a set of
>>> JavaDoc-like HTML pages available at
>>> http://www-users.cs.york.ac.uk/~dkolovos/uml14/ which you may find more
>>> usable than the XMI metamodel itself :)
>>>
>>> Cheers,
>>> Dimitrios
>>>
>>> Bahman wrote:
>>>> Hi everybody,
>>>>
>>>> I have a problem understanding how to use OCL (especially in MetaModel
>>>> level), if you have time to guide me, that would be appreciated.
>>>>
>>>> So far I've worked with some tools such as ArgoUML (adding some critics
>>>> to
>>>> it), OCLE (checking OCLs in model level and metamodel level), and
>>>> recently
>>>> Epsilon (Adding some more functionalities on its ArgoUML version).
>>>>
>>>> My problem is that I don't know from where can I find all the
>>>> OPERATIONS and
>>>> FUNCTIONS that I can apply on a model (Meta-Model). Let me make it
>>>> clear by
>>>> an example:
>>>>
>>>> 1) In Epsilon, I've written the following operation to check whether or
>>>> not
>>>> a class own an attribute. But I knew nothing about the FEATURE property
>>>> that
>>>> could be applied on a class. I just found it by reviewing existing
>>>> similar
>>>> codes.
>>>>
>>>> operation Class hasAttribute (name : String) : Boolean {
>>>> return self.feature.exists (a:Attribute | a.name = name);
>>>> }
>>>>
>>>> 2) In ArgoUML, I had to write the following method to check the above
>>>> condition. However, since it was in Eclipse, I could see which methods
>>>> are
>>>> available by Model's Facade class (thanks to Eclipse assistance).
>>>>
>>>> public static boolean classHasAtt (Object cls) {
>>>> boolean found = false;
>>>> Collection atts = Model.getFacade().getAttributes(cls);
>>>> if ( atts.size() > 0 ) {
>>>> found = true ;
>>>> }
>>>> return found;
>>>> }
>>>>
>>>> Again my question is: "let say the context is a class, how can I access
>>>> to
>>>> all its attributes? its operations? its stereotypes?" The same question
>>>> applies for every ModelElement.
>>>>
>>>> best,
>>>> Bahman
>>>>
>>>>
>>>>
>>
>>
>> ------------------------------------------------------------ --------------------
>>
>>
>>> <?xml version="1.0" encoding="UTF-8" ?>
>>> <!-- <!DOCTYPE XMI SYSTEM 'Model.dtd'> -->
>>> <XMI xmi.version='1.1' xmlns:Model='omg.org/mof.Model/1.3'>
>>> <XMI.header>
>>> <XMI.model xmi.name='UML' xmi.version='1.4'/>
>>> <XMI.metamodel xmi.name='Model' xmi.version='1.3'/>
>>> </XMI.header>
>>> <XMI.content>
>>> <Model:Package xmi.id='a0' name='UML' annotation='' isRoot='false'
>>> isLeaf='false' isAbstract='false' visibility='public_vis'>
>>> <Model:Namespace.contents>
>>> <Model:Tag xmi.id='a1' name='org.omg.mof.idl_prefix=org.omg'
>>> annotation='' tagId='org.omg.mof.idl_prefix' elements='a0'>
>>> <Model:Tag.values>
>>> <XMI.any xmi.type='string'>org.omg</XMI.any>
>>> </Model:Tag.values>
>>> </Model:Tag>
>>> <Model:Tag xmi.id='a2' name='org.omg.xmi.namespace=UML'
>>> annotation='' tagId='org.omg.xmi.namespace' elements='a0'>
>>> <Model:Tag.values>
>>> <XMI.any xmi.type='string'>UML</XMI.any>
>>> </Model:Tag.values>
>>> </Model:Tag>
>>> <Model:Import xmi.id='a3' name='Data_Types' annotation=''
>>> visibility='public_vis' isClustered='true' importedNamespace='a4'>
>>> </Model:Import>
>>> <Model:Import xmi.id='a5' name='Core' annotation=''
>>> visibility='public_vis' isClustered='true' importedNamespace='a6'>
>>> </Model:Import>
>>> <Model:Import xmi.id='a7' name='Common_Behavior' annotation=''
>>> visibility='public_vis' isClustered='true' importedNamespace='a8'>
>>> </Model:Import>
>>> <Model:Import xmi.id='a9' name='Use_Cases' annotation=''
>>> visibility='public_vis' isClustered='true' importedNamespace='a10'>
>>> </Model:Import>
>>> <Model:Import xmi.id='a11' name='State_Machines' annotation=''
>>> visibility='public_vis' isClustered='true' importedNamespace='a12'>
>>> </Model:Import>
>>> <Model:Import xmi.id='a13' name='Collaborations' annotation=''
>>> visibility='public_vis' isClustered='true' importedNamespace='a14'>
>>> </Model:Import>
>>> <Model:Import xmi.id='a15' name='Activity_Graphs' annotation=''
>>> visibility='public_vis' isClustered='true' importedNamespace='a16'>
>>> </Model:Import>
>>> <Model:Import xmi.id='a17' name='Model_Management' annotation=''
>>> visibility='public_vis' isClustered='true' importedNamespace='a18'>
>>> </Model:Import>
>>> </Model:Namespace.contents>
>>> </Model:Package>
>>> <Model:Package xmi.id='a4' name='Data_Types' annotation=''
>>> isRoot='false' isLeaf='false' isAbstract='false'
>>> visibility='public_vis'>
>>> <Model:Namespace.contents>
>>> <Model:Tag xmi.id='a19'
>>> name='org.omg.mof.idl_prefix=org.omg.uml.Foundation' annotation=''
>>> tagId='org.omg.mof.idl_prefix' elements='a4'>
>>> <Model:Tag.values>
>>> <XMI.any xmi.type='string'>org.omg.uml.Foundation</XMI.any>
>>> </Model:Tag.values>
>>> </Model:Tag>
>>> <Model:Tag xmi.id='a20' name='org.omg.xmi.namespace=UML'
>>> annotation='' tagId='org.omg.xmi.namespace' elements='a4'>
>>> <Model:Tag.values>
>>> <XMI.any xmi.type='string'>UML</XMI.any>
>>> </Model:Tag.values>
>>> </Model:Tag>
>>> <Model:DataType xmi.id='a21' name='Integer' annotation=''
>>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>>> <Model:DataType.typeCode>
>>> <XMI.CorbaTypeCode>
>>> <XMI.CorbaTcLong/>
>>> </XMI.CorbaTypeCode>
>>> </Model:DataType.typeCode>
>>> </Model:DataType>
>>> <Model:DataType xmi.id='a22' name='UnlimitedInteger'
>>> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
>>> visibility='public_vis'>
>>> <Model:DataType.typeCode>
>>> <XMI.CorbaTypeCode>
>>> <XMI.CorbaTcAlias xmi.tcName='UnlimitedInteger'
>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/UnlimitedInt eger:1.0' >
>>> <XMI.CorbaTypeCode>
>>> <XMI.CorbaTcLong/>
>>> </XMI.CorbaTypeCode>
>>> </XMI.CorbaTcAlias>
>>> </XMI.CorbaTypeCode>
>>> </Model:DataType.typeCode>
>>> </Model:DataType>
>>> <Model:DataType xmi.id='a23' name='String' annotation=''
>>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>>> <Model:DataType.typeCode>
>>> <XMI.CorbaTypeCode>
>>> <XMI.CorbaTcString xmi.tcLength='0'/>
>>> </XMI.CorbaTypeCode>
>>> </Model:DataType.typeCode>
>>> </Model:DataType>
>>> <Model:DataType xmi.id='a24' name='AggregationKind' annotation=''
>>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>>> <Model:DataType.typeCode>
>>> <XMI.CorbaTypeCode>
>>> <XMI.CorbaTcEnum xmi.tcName='AggregationKind'
>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/AggregationK ind:1.0' >
>>> <XMI.CorbaTcEnumLabel xmi.tcName='ak_none'/>
>>> <XMI.CorbaTcEnumLabel xmi.tcName='ak_aggregate'/>
>>> <XMI.CorbaTcEnumLabel xmi.tcName='ak_composite'/>
>>> </XMI.CorbaTcEnum>
>>> </XMI.CorbaTypeCode>
>>> </Model:DataType.typeCode>
>>> </Model:DataType>
>>> <Model:Tag xmi.id='a25'
>>> name='org.omg.xmi.enumerationUnprefix=ak_' annotation=''
>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a24'>
>>> <Model:Tag.values>
>>> <XMI.any xmi.type='string'>ak_</XMI.any>
>>> </Model:Tag.values>
>>> </Model:Tag>
>>> <Model:DataType xmi.id='a26' name='Boolean' annotation=''
>>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>>> <Model:DataType.typeCode>
>>> <XMI.CorbaTypeCode>
>>> <XMI.CorbaTcBoolean/>
>>> </XMI.CorbaTypeCode>
>>> </Model:DataType.typeCode>
>>> </Model:DataType>
>>> <Model:DataType xmi.id='a27' name='CallConcurrencyKind'
>>> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
>>> visibility='public_vis'>
>>> <Model:DataType.typeCode>
>>> <XMI.CorbaTypeCode>
>>> <XMI.CorbaTcEnum xmi.tcName='CallConcurrencyKind'
>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/CallConcurre ncyKind:1.0' >
>>> <XMI.CorbaTcEnumLabel xmi.tcName='cck_sequential'/>
>>> <XMI.CorbaTcEnumLabel xmi.tcName='cck_guarded'/>
>>> <XMI.CorbaTcEnumLabel xmi.tcName='cck_concurrent'/>
>>> </XMI.CorbaTcEnum>
>>> </XMI.CorbaTypeCode>
>>> </Model:DataType.typeCode>
>>> </Model:DataType>
>>> <Model:Tag xmi.id='a28'
>>> name='org.omg.xmi.enumerationUnprefix=cck_' annotation=''
>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a27'>
>>> <Model:Tag.values>
>>> <XMI.any xmi.type='string'>cck_</XMI.any>
>>> </Model:Tag.values>
>>> </Model:Tag>
>>> <Model:DataType xmi.id='a29' name='ChangeableKind' annotation=''
>>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>>> <Model:DataType.typeCode>
>>> <XMI.CorbaTypeCode>
>>> <XMI.CorbaTcEnum xmi.tcName='ChangeableKind'
>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/ChangeableKi nd:1.0' >
>>> <XMI.CorbaTcEnumLabel xmi.tcName='ck_changeable'/>
>>> <XMI.CorbaTcEnumLabel xmi.tcName='ck_frozen'/>
>>> <XMI.CorbaTcEnumLabel xmi.tcName='ck_addOnly'/>
>>> </XMI.CorbaTcEnum>
>>> </XMI.CorbaTypeCode>
>>> </Model:DataType.typeCode>
>>> </Model:DataType>
>>> <Model:Tag xmi.id='a30'
>>> name='org.omg.xmi.enumerationUnprefix=ck_' annotation=''
>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a29'>
>>> <Model:Tag.values>
>>> <XMI.any xmi.type='string'>ck_</XMI.any>
>>> </Model:Tag.values>
>>> </Model:Tag>
>>> <Model:DataType xmi.id='a31' name='OrderingKind' annotation=''
>>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>>> <Model:DataType.typeCode>
>>> <XMI.CorbaTypeCode>
>>> <XMI.CorbaTcEnum xmi.tcName='OrderingKind'
>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/OrderingKind :1.0' >
>>> <XMI.CorbaTcEnumLabel xmi.tcName='ok_unordered'/>
>>> <XMI.CorbaTcEnumLabel xmi.tcName='ok_ordered'/>
>>> </XMI.CorbaTcEnum>
>>> </XMI.CorbaTypeCode>
>>> </Model:DataType.typeCode>
>>> </Model:DataType>
>>> <Model:Tag xmi.id='a32'
>>> name='org.omg.xmi.enumerationUnprefix=ok_' annotation=''
>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a31'>
>>> <Model:Tag.values>
>>> <XMI.any xmi.type='string'>ok_</XMI.any>
>>> </Model:Tag.values>
>>> </Model:Tag>
>>> <Model:DataType xmi.id='a33' name='ParameterDirectionKind'
>>> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
>>> visibility='public_vis'>
>>> <Model:DataType.typeCode>
>>> <XMI.CorbaTypeCode>
>>> <XMI.CorbaTcEnum xmi.tcName='ParameterDirectionKind'
>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/ParameterDir ectionKind:1.0' >
>>> <XMI.CorbaTcEnumLabel xmi.tcName='pdk_in'/>
>>> <XMI.CorbaTcEnumLabel xmi.tcName='pdk_inout'/>
>>> <XMI.CorbaTcEnumLabel xmi.tcName='pdk_out'/>
>>> <XMI.CorbaTcEnumLabel xmi.tcName='pdk_return'/>
>>> </XMI.CorbaTcEnum>
>>> </XMI.CorbaTypeCode>
>>> </Model:DataType.typeCode>
>>> </Model:DataType>
>>> <Model:Tag xmi.id='a34'
>>> name='org.omg.xmi.enumerationUnprefix=pdk_' annotation=''
>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a33'>
>>> <Model:Tag.values>
>>> <XMI.any xmi.type='string'>pdk_</XMI.any>
>>> </Model:Tag.values>
>>> </Model:Tag>
>>> <Model:DataType xmi.id='a35' name='ScopeKind' annotation=''
>>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>>> <Model:DataType.typeCode>
>>> <XMI.CorbaTypeCode>
>>> <XMI.CorbaTcEnum xmi.tcName='ScopeKind'
>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/ScopeKind:1. 0' >
>>> <XMI.CorbaTcEnumLabel xmi.tcName='sk_instance'/>
>>> <XMI.CorbaTcEnumLabel xmi.tcName='sk_classifier'/>
>>> </XMI.CorbaTcEnum>
>>> </XMI.CorbaTypeCode>
>>> </Model:DataType.typeCode>
>>> </Model:DataType>
>>> <Model:Tag xmi.id='a36'
>>> name='org.omg.xmi.enumerationUnprefix=sk_' annotation=''
>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a35'>
>>> <Model:Tag.values>
>>> <XMI.any xmi.type='string'>sk_</XMI.any>
>>> </Model:Tag.values>
>>> </Model:Tag>
>>> <Model:DataType xmi.id='a37' name='VisibilityKind' annotation=''
>>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>>> <Model:DataType.typeCode>
>>> <XMI.CorbaTypeCode>
>>> <XMI.CorbaTcEnum xmi.tcName='VisibilityKind'
>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/VisibilityKi nd:1.0' >
>>> <XMI.CorbaTcEnumLabel xmi.tcName='vk_public'/>
>>> <XMI.CorbaTcEnumLabel xmi.tcName='vk_protected'/>
>>> <XMI.CorbaTcEnumLabel xmi.tcName='vk_private'/>
>>> <XMI.CorbaTcEnumLabel xmi.tcName='vk_package'/>
>>> </XMI.CorbaTcEnum>
>>> </XMI.CorbaTypeCode>
>>> </Model:DataType.typeCode>
>>> </Model:DataType>
>>> <Model:Tag xmi.id='a38'
>>> name='org.omg.xmi.enumerationUnprefix=vk_' annotation=''
>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a37'>
>>> <Model:Tag.values>
>>> <XMI.any xmi.type='string'>vk_</XMI.any>
>>> </Model:Tag.values>
>>> </Model:Tag>
>>> <Model:DataType xmi.id='a39' name='Name' annotation=''
>>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>>> <Model:DataType.typeCode>
>>> <XMI.CorbaTypeCode>
>>> <XMI.CorbaTcAlias xmi.tcName='Name'
>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/Name:1.0'>
>>> <XMI.CorbaTypeCode>
>>> <XMI.CorbaTcString xmi.tcLength='0'/>
>>> </XMI.CorbaTypeCode>
>>> </XMI.CorbaTcAlias>
>>> </XMI.CorbaTypeCode>
>>> </Model:DataType.typeCode>
>>> </Model:DataType>
>>> <Model:Class xmi.id='a40' name='Multiplicity' annotation=''
>>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>>> isSingleton='false'>
>>> <Model:Namespace.contents>
>>> <Model:Reference xmi.id='a41' name='range' annotation=''
>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>> type='a42' referencedEnd='a43'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>1</XMI.field> <!-- lower -->
>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Reference>
>>> </Model:Namespace.contents>
>>> </Model:Class>
>>> <Model:Class xmi.id='a42' name='MultiplicityRange' annotation=''
>>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>>> isSingleton='false'>
>>> <Model:Namespace.contents>
>>> <Model:Attribute xmi.id='a44' name='lower' annotation=''
>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>> isDerived='false' type='a21'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>1</XMI.field> <!-- lower -->
>>> <XMI.field>1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Attribute>
>>> <Model:Attribute xmi.id='a45' name='upper' annotation=''
>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>> isDerived='false' type='a22'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>1</XMI.field> <!-- lower -->
>>> <XMI.field>1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Attribute>
>>> <Model:Reference xmi.id='a46' name='multiplicity'
>>> annotation='' scope='instance_level' visibility='public_vis'
>>> isChangeable='true' type='a40' referencedEnd='a47'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>1</XMI.field> <!-- lower -->
>>> <XMI.field>1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Reference>
>>> </Model:Namespace.contents>
>>> </Model:Class>
>>> <Model:Class xmi.id='a48' name='Expression' annotation=''
>>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>>> isSingleton='false'>
>>> <Model:Namespace.contents>
>>> <Model:Attribute xmi.id='a49' name='language' annotation=''
>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>> isDerived='false' type='a39'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>0</XMI.field> <!-- lower -->
>>> <XMI.field>1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Attribute>
>>> <Model:Attribute xmi.id='a50' name='body' annotation=''
>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>> isDerived='false' type='a23'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>1</XMI.field> <!-- lower -->
>>> <XMI.field>1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Attribute>
>>> </Model:Namespace.contents>
>>> </Model:Class>
>>> <Model:Class xmi.id='a51' name='BooleanExpression' annotation=''
>>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>>> isSingleton='false' supertypes='a48'>
>>> </Model:Class>
>>> <Model:Class xmi.id='a52' name='TypeExpression' annotation=''
>>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>>> isSingleton='false' supertypes='a48'>
>>> </Model:Class>
>>> <Model:Class xmi.id='a53' name='MappingExpression' annotation=''
>>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>>> isSingleton='false' supertypes='a48'>
>>> </Model:Class>
>>> <Model:Class xmi.id='a54' name='ProcedureExpression'
>>> annotation='' isRoot='false' isLeaf='false' isAbstract='false'
>>> visibility='public_vis' isSingleton='false' supertypes='a48'>
>>> </Model:Class>
>>> <Model:Class xmi.id='a55' name='ObjectSetExpression'
>>> annotation='' isRoot='false' isLeaf='false' isAbstract='false'
>>> visibility='public_vis' isSingleton='false' supertypes='a48'>
>>> </Model:Class>
>>> <Model:Class xmi.id='a56' name='ActionExpression' annotation=''
>>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>>> isSingleton='false' supertypes='a48'>
>>> </Model:Class>
>>> <Model:Class xmi.id='a57' name='IterationExpression'
>>> annotation='' isRoot='false' isLeaf='false' isAbstract='false'
>>> visibility='public_vis' isSingleton='false' supertypes='a48'>
>>> </Model:Class>
>>> <Model:Class xmi.id='a58' name='TimeExpression' annotation=''
>>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>>> isSingleton='false' supertypes='a48'>
>>> </Model:Class>
>>> <Model:Class xmi.id='a59' name='ArgListsExpression' annotation=''
>>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>>> isSingleton='false' supertypes='a48'>
>>> </Model:Class>
>>> <Model:DataType xmi.id='a60' name='LocationReference'
>>> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
>>> visibility='public_vis'>
>>> <Model:DataType.typeCode>
>>> <XMI.CorbaTypeCode>
>>> <XMI.CorbaTcAlias xmi.tcName='LocationReference'
>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/LocationRefe rence:1.0' >
>>> <XMI.CorbaTypeCode>
>>> <XMI.CorbaTcString xmi.tcLength='0'/>
>>> </XMI.CorbaTypeCode>
>>> </XMI.CorbaTcAlias>
>>> </XMI.CorbaTypeCode>
>>> </Model:DataType.typeCode>
>>> </Model:DataType>
>>> <Model:DataType xmi.id='a61' name='PseudostateKind' annotation=''
>>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>>> <Model:DataType.typeCode>
>>> <XMI.CorbaTypeCode>
>>> <XMI.CorbaTcEnum xmi.tcName='PseudostateKind'
>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/PseudostateK ind:1.0' >
>>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_choice'/>
>>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_deepHistory'/>
>>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_fork'/>
>>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_initial'/>
>>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_join'/>
>>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_junction'/>
>>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_shallowHistory'/>
>>> </XMI.CorbaTcEnum>
>>> </XMI.CorbaTypeCode>
>>> </Model:DataType.typeCode>
>>> </Model:DataType>
>>> <Model:Tag xmi.id='a62'
>>> name='org.omg.xmi.enumerationUnprefix=pk_' annotation=''
>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a61'>
>>> <Model:Tag.values>
>>> <XMI.any xmi.type='string'>pk_</XMI.any>
>>> </Model:Tag.values>
>>> </Model:Tag>
>>> <Model:DataType xmi.id='a63' name='Geometry' annotation=''
>>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>>> <Model:DataType.typeCode>
>>> <XMI.CorbaTypeCode>
>>> <XMI.CorbaTcAlias xmi.tcName='Geometry'
>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/Geometry:1.0 ' >
>>> <XMI.CorbaTypeCode>
>>> <XMI.CorbaTcString xmi.tcLength='0'/>
>>> </XMI.CorbaTypeCode>
>>> </XMI.CorbaTcAlias>
>>> </XMI.CorbaTypeCode>
>>> </Model:DataType.typeCode>
>>> </Model:DataType>
>>> <Model:Association xmi.id='a64' name='A_multiplicity_range'
>>> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
>>> visibility='public_vis' isDerived='false'>
>>> <Model:Namespace.contents>
>>> <Model:AssociationEnd xmi.id='a47' name='multiplicity'
>>> annotation='' isNavigable='true' aggregation='composite'
>>> isChangeable='true' type='a40'>
>>> <Model:AssociationEnd.multiplicity>
>>> <XMI.field>1</XMI.field> <!-- lower -->
>>> <XMI.field>1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>> </Model:AssociationEnd.multiplicity>
>>> </Model:AssociationEnd>
>>> <Model:AssociationEnd xmi.id='a43' name='range' annotation=''
>>> isNavigable='true' aggregation='none' isChangeable='true' type='a42'>
>>> <Model:AssociationEnd.multiplicity>
>>> <XMI.field>1</XMI.field> <!-- lower -->
>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>> </Model:AssociationEnd.multiplicity>
>>> </Model:AssociationEnd>
>>> </Model:Namespace.contents>
>>> </Model:Association>
>>> </Model:Namespace.contents>
>>> </Model:Package>
>>> <Model:Package xmi.id='a6' name='Core' annotation='' isRoot='false'
>>> isLeaf='false' isAbstract='false' visibility='public_vis'>
>>> <Model:Namespace.contents>
>>> <Model:Tag xmi.id='a65'
>>> name='org.omg.mof.idl_prefix=org.omg.uml.Foundation' annotation=''
>>> tagId='org.omg.mof.idl_prefix' elements='a6'>
>>> <Model:Tag.values>
>>> <XMI.any xmi.type='string'>org.omg.uml.Foundation</XMI.any>
>>> </Model:Tag.values>
>>> </Model:Tag>
>>> <Model:Tag xmi.id='a66' name='org.omg.xmi.namespace=UML'
>>> annotation='' tagId='org.omg.xmi.namespace' elements='a6'>
>>> <Model:Tag.values>
>>> <XMI.any xmi.type='string'>UML</XMI.any>
>>> </Model:Tag.values>
>>> </Model:Tag>
>>> <Model:Class xmi.id='a67' name='Element' annotation=''
>>> isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis'
>>> isSingleton='false'>
>>> </Model:Class>
>>> <Model:Class xmi.id='a68' name='ModelElement' annotation=''
>>> isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis'
>>> isSingleton='false' supertypes='a67'>
>>> <Model:Namespace.contents>
>>> <Model:Attribute xmi.id='a69' name='name' annotation=''
>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>> isDerived='false' type='a39'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>0</XMI.field> <!-- lower -->
>>> <XMI.field>1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Attribute>
>>> <Model:Attribute xmi.id='a70' name='visibility' annotation=''
>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>> isDerived='false' type='a37'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>0</XMI.field> <!-- lower -->
>>> <XMI.field>1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Attribute>
>>> <Model:Attribute xmi.id='a71' name='isSpecification'
>>> annotation='' scope='instance_level' visibility='public_vis'
>>> isChangeable='true' isDerived='false' type='a26'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>1</XMI.field> <!-- lower -->
>>> <XMI.field>1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Attribute>
>>> <Model:Reference xmi.id='a72' name='namespace' annotation=''
>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>> type='a73' referencedEnd='a74'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>0</XMI.field> <!-- lower -->
>>> <XMI.field>1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Reference>
>>> <Model:Reference xmi.id='a75' name='clientDependency'
>>> annotation='' scope='instance_level' visibility='public_vis'
>>> isChangeable='true' type='a76' referencedEnd='a77'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>0</XMI.field> <!-- lower -->
>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Reference>
>>> <Model:Reference xmi.id='a78' name='constraint' annotation=''
>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>> type='a79' referencedEnd='a80'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>0</XMI.field> <!-- lower -->
>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Reference>
>>> <Model:Reference xmi.id='a81' name='targetFlow' annotation=''
>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>> type='a82' referencedEnd='a83'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>0</XMI.field> <!-- lower -->
>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Reference>
>>> <Model:Reference xmi.id='a84' name='sourceFlow' annotation=''
>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>> type='a82' referencedEnd='a85'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>0</XMI.field> <!-- lower -->
>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Reference>
>>> <Model:Reference xmi.id='a86' name='comment' annotation=''
>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>> type='a87' referencedEnd='a88'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>0</XMI.field> <!-- lower -->
>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Reference>
>>> <Model:Reference xmi.id='a89' name='templateParameter'
>>> annotation='' scope='instance_level' visibility='public_vis'
>>> isChangeable='true' type='a90' referencedEnd='a91'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>0</XMI.field> <!-- lower -->
>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>> <XMI.field>true</XMI.field> <!-- is_ordered -->
>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Reference>
>>> <Model:Reference xmi.id='a92' name='stereotype' annotation=''
>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>> type='a93' referencedEnd='a94'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>0</XMI.field> <!-- lower -->
>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Reference>
>>> <Model:Reference xmi.id='a95' name='taggedValue'
>>> annotation='' scope='instance_level' visibility='public_vis'
>>> isChangeable='true' type='a96' referencedEnd='a97'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>0</XMI.field> <!-- lower -->
>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Reference>
>>> </Model:Namespace.contents>
>>> </Model:Class>
>>> <Model:Import xmi.id='a98' name='Data_Types' annotation=''
>>> visibility='public_vis' isClustered='true' importedNamespace='a4'>
>>> </Model:Import>
>>> <Model:Tag xmi.id='a99'
>>> name='org.omg.mof.idl_substitute_name=umlConstraint' annotation=''
>>> tagId='org.omg.mof.idl_substitute_name' elements='a78 a80'>
>>> <Model:Tag.values>
>>> <XMI.any xmi.type='string'>umlConstraint</XMI.any>
>>> </Model:Tag.values>
>>> </Model:Tag>
>>> <Model:Class xmi.id='a100' name='GeneralizableElement'
>>> annotation='' isRoot='false' isLeaf='false' isAbstract='true'
>>> visibility='public_vis' isSingleton='false' supertypes='a68'>
>>> <Model:Namespace.contents>
>>> <Model:Attribute xmi.id='a101' name='isRoot' annotation=''
>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>> isDerived='false' type='a26'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>1</XMI.field> <!-- lower -->
>>> <XMI.field>1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Attribute>
>>> <Model:Attribute xmi.id='a102' name='isLeaf' annotation=''
>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>> isDerived='false' type='a26'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>1</XMI.field> <!-- lower -->
>>> <XMI.field>1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Attribute>
>>> <Model:Attribute xmi.id='a103' name='isAbstract'
>>> annotation='' scope='instance_level' visibility='public_vis'
>>> isChangeable='true' isDerived='false' type='a26'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>1</XMI.field> <!-- lower -->
>>> <XMI.field>1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Attribute>
>>> <Model:Reference xmi.id='a104' name='generalization'
>>> annotation='' scope='instance_level' visibility='public_vis'
>>> isChangeable='true' type='a105' referencedEnd='a106'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>0</XMI.field> <!-- lower -->
>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Reference>
>>> </Model:Namespace.contents>
>>> </Model:Class>
>>> <Model:Class xmi.id='a73' name='Namespace' annotation=''
>>> isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis'
>>> isSingleton='false' supertypes='a68'>
>>> <Model:Namespace.contents>
>>> <Model:Reference xmi.id='a107' name='ownedElement'
>>> annotation='' scope='instance_level' visibility='public_vis'
>>> isChangeable='true' type='a68' referencedEnd='a108'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>0</XMI.field> <!-- lower -->
>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Reference>
>>> </Model:Namespace.contents>
>>> </Model:Class>
>>> <Model:Class xmi.id='a109' name='Classifier' annotation=''
>>> isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis'
>>> isSingleton='false' supertypes='a100 a73'>
>>> <Model:Namespace.contents>
>>> <Model:Reference xmi.id='a110' name='feature' annotation=''
>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>> type='a111' referencedEnd='a112'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>0</XMI.field> <!-- lower -->
>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>> <XMI.field>true</XMI.field> <!-- is_ordered -->
>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Reference>
>>> <Model:Reference xmi.id='a113' name='powertypeRange'
>>> annotation='' scope='instance_level' visibility='public_vis'
>>> isChangeable='true' type='a105' referencedEnd='a114'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>0</XMI.field> <!-- lower -->
>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Reference>
>>> </Model:Namespace.contents>
>>> </Model:Class>
>>> <Model:Class xmi.id='a115' name='Class' annotation=''
>>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>>> isSingleton='false' supertypes='a109'>
>>> <Model:Namespace.contents>
>>> <Model:Attribute xmi.id='a116' name='isActive' annotation=''
>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>> isDerived='false' type='a26'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>1</XMI.field> <!-- lower -->
>>> <XMI.field>1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Attribute>
>>> </Model:Namespace.contents>
>>> </Model:Class>
>>> <Model:Class xmi.id='a117' name='DataType' annotation=''
>>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>>> isSingleton='false' supertypes='a109'>
>>> </Model:Class>
>>> <Model:Class xmi.id='a111' name='Feature' annotation=''
>>> isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis'
>>> isSingleton='false' supertypes='a68'>
>>> <Model:Namespace.contents>
>>> <Model:Attribute xmi.id='a118' name='ownerScope'
>>> annotation='' scope='instance_level' visibility='public_vis'
>>> isChangeable='true' isDerived='false' type='a35'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>1</XMI.field> <!-- lower -->
>>> <XMI.field>1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Attribute>
>>> <Model:Reference xmi.id='a119' name='owner' annotation=''
>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>> type='a109' referencedEnd='a120'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>0</XMI.field> <!-- lower -->
>>> <XMI.field>1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Reference>
>>> </Model:Namespace.contents>
>>> </Model:Class>
>>> <Model:Class xmi.id='a121' name='StructuralFeature' annotation=''
>>> isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis'
>>> isSingleton='false' supertypes='a111'>
>>> <Model:Namespace.contents>
>>> <Model:Attribute xmi.id='a122' name='multiplicity'
>>> annotation='' scope='instance_level' visibility='public_vis'
>>> isChangeable='true' isDerived='false' type='a40'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>0</XMI.field> <!-- lower -->
>>> <XMI.field>1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>> </Model:StructuralFeature.multiplicity>
>>> </Model:Attribute>
>>> <Model:Attribute xmi.id='a123' name='changeability'
>>> annotation='' scope='instance_level' visibility='public_vis'
>>> isChangeable='true' isDerived='false' type='a29'>
>>> <Model:StructuralFeature.multiplicity>
>>> <XMI.field>0</XMI.field> <!-- lower -->
>>> <XMI.field>1</XMI.field> <!-- upper -->
>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>
Re: [Epsilon] Using OCL in Meta-Model level [message #599625 is a reply to message #378026] Sat, 19 May 2007 22:43 Go to previous message
Dimitrios Kolovos is currently offline Dimitrios KolovosFriend
Messages: 1776
Registered: July 2009
Senior Member
Hi Bahman,

Bahman wrote:
> Hi Dimitrios,
>
> For A&B) My understanding was that since MOF1.4 is the metamodel of UML1.4,
> everybody who wants to implement MOF1.4, should consider its structure (e.g.
> Model structure depicted in figure3-2) and implement it. So, I expected to
> see the same attributes and operations as there is in that figure.

I understand the confusion introduced by the similarity between MOF and
UML, but I should stress again that MOF!ModelElement != UML!NamedElement
(they are two constructs in two *different* metamodels that happen to
have the same name).

> For B&C) It's true that B is for UML1.4 and C is for UML1.5, but I don't
> think there should be so much changes from 1.4 to 1.5! Do you?
>

I'm not familiar with the metamodel of UML 1.5 but I don't expect it to
be drastically different to that of UML 1.4. Getting hands on the actual
metamodel in XMI would help a lot in locating the exact differences.

> best,
> Bahman
>

Cheers,
Dimitrios

> "Dimitrios Kolovos" <dskolovos@gmail.com> wrote in message
> news:f2npn3$6um$1@build.eclipse.org...
>> Hi Bahman,
>>
>> (A) describes *MOF itself* while (B) and (C) describe *UML using MOF*.
>> (The common *NamedElement* thing is a result of MOF emerging from UML at
>> some point, but you can consider it as an unlucky coincidence).
>>
>> As for the differences between (B) and (C), with regard to the
>> attributes/references of the UML ModelElement, any differences may be due
>> to the fact that (B) refers to version 1.4 of UML and (C) to version 1.5.
>> BTW, if you find/have the UML 1.5 metamodel in XMI, we can use it to
>> generate a similar javadoc-like set of pages.
>>
>> As for the operations part, (B) doesn't document operations at all because
>> since MOF lacks an action semantics, MOF-level operations are not
>> executable - and thus useless to Epsilon.
>>
>> I hope this helps.
>>
>> Cheers,
>> Dimitrios
>>
>> Bahman wrote:
>>> Hi Dimitrios,
>>>
>>> Thanks for the comment and the link.
>>> I'm not sure what makes me confused! Would you please consider the
>>> following concrete example and let me know your idea?
>>>
>>> A) Considering the MOF Model structure depicted by figure3-2 on page 3-13
>>> of the MOF1.4 specification
>>> (http://www.omg.org/docs/formal/02-04-03.pdf), each Model Element has
>>> specific attributes, references, and operations (as explained in section
>>> 3.4.1).
>>> B) Considering the description of class ModelElement from the link you
>>> introduced (http://www-users.cs.york.ac.uk/~dkolovos/uml14/), the
>>> attributes and references are totally different than what is specified in
>>> (A).
>>> C) Considering UML1.5 metamodel of OCLE 2.0 tool, I find a class
>>> ModelElement with just one attribute (name) and six operations which
>>> seems almost different that operations or references in (A) or (B).
>>>
>>> best,
>>> Bahman
>>>
>>>
>>> "Dimitrios Kolovos" <dskolovos@gmail.com> wrote in message
>>> news:f2fjdg$p0d$1@build.eclipse.org...
>>>> Hi Bahman,
>>>>
>>>> The properties of each metaclass (e.g. Class, ModelElement etc) are
>>>> defined in the metamodel of the language. For ArgoUML the metamodel is a
>>>> MOF1.4/XMI 1.1 file (attached). From this, I've generated a set of
>>>> JavaDoc-like HTML pages available at
>>>> http://www-users.cs.york.ac.uk/~dkolovos/uml14/ which you may find more
>>>> usable than the XMI metamodel itself :)
>>>>
>>>> Cheers,
>>>> Dimitrios
>>>>
>>>> Bahman wrote:
>>>>> Hi everybody,
>>>>>
>>>>> I have a problem understanding how to use OCL (especially in MetaModel
>>>>> level), if you have time to guide me, that would be appreciated.
>>>>>
>>>>> So far I've worked with some tools such as ArgoUML (adding some critics
>>>>> to
>>>>> it), OCLE (checking OCLs in model level and metamodel level), and
>>>>> recently
>>>>> Epsilon (Adding some more functionalities on its ArgoUML version).
>>>>>
>>>>> My problem is that I don't know from where can I find all the
>>>>> OPERATIONS and
>>>>> FUNCTIONS that I can apply on a model (Meta-Model). Let me make it
>>>>> clear by
>>>>> an example:
>>>>>
>>>>> 1) In Epsilon, I've written the following operation to check whether or
>>>>> not
>>>>> a class own an attribute. But I knew nothing about the FEATURE property
>>>>> that
>>>>> could be applied on a class. I just found it by reviewing existing
>>>>> similar
>>>>> codes.
>>>>>
>>>>> operation Class hasAttribute (name : String) : Boolean {
>>>>> return self.feature.exists (a:Attribute | a.name = name);
>>>>> }
>>>>>
>>>>> 2) In ArgoUML, I had to write the following method to check the above
>>>>> condition. However, since it was in Eclipse, I could see which methods
>>>>> are
>>>>> available by Model's Facade class (thanks to Eclipse assistance).
>>>>>
>>>>> public static boolean classHasAtt (Object cls) {
>>>>> boolean found = false;
>>>>> Collection atts = Model.getFacade().getAttributes(cls);
>>>>> if ( atts.size() > 0 ) {
>>>>> found = true ;
>>>>> }
>>>>> return found;
>>>>> }
>>>>>
>>>>> Again my question is: "let say the context is a class, how can I access
>>>>> to
>>>>> all its attributes? its operations? its stereotypes?" The same question
>>>>> applies for every ModelElement.
>>>>>
>>>>> best,
>>>>> Bahman
>>>>>
>>>>>
>>>>>
>>>
>>> ------------------------------------------------------------ --------------------
>>>
>>>
>>>> <?xml version="1.0" encoding="UTF-8" ?>
>>>> <!-- <!DOCTYPE XMI SYSTEM 'Model.dtd'> -->
>>>> <XMI xmi.version='1.1' xmlns:Model='omg.org/mof.Model/1.3'>
>>>> <XMI.header>
>>>> <XMI.model xmi.name='UML' xmi.version='1.4'/>
>>>> <XMI.metamodel xmi.name='Model' xmi.version='1.3'/>
>>>> </XMI.header>
>>>> <XMI.content>
>>>> <Model:Package xmi.id='a0' name='UML' annotation='' isRoot='false'
>>>> isLeaf='false' isAbstract='false' visibility='public_vis'>
>>>> <Model:Namespace.contents>
>>>> <Model:Tag xmi.id='a1' name='org.omg.mof.idl_prefix=org.omg'
>>>> annotation='' tagId='org.omg.mof.idl_prefix' elements='a0'>
>>>> <Model:Tag.values>
>>>> <XMI.any xmi.type='string'>org.omg</XMI.any>
>>>> </Model:Tag.values>
>>>> </Model:Tag>
>>>> <Model:Tag xmi.id='a2' name='org.omg.xmi.namespace=UML'
>>>> annotation='' tagId='org.omg.xmi.namespace' elements='a0'>
>>>> <Model:Tag.values>
>>>> <XMI.any xmi.type='string'>UML</XMI.any>
>>>> </Model:Tag.values>
>>>> </Model:Tag>
>>>> <Model:Import xmi.id='a3' name='Data_Types' annotation=''
>>>> visibility='public_vis' isClustered='true' importedNamespace='a4'>
>>>> </Model:Import>
>>>> <Model:Import xmi.id='a5' name='Core' annotation=''
>>>> visibility='public_vis' isClustered='true' importedNamespace='a6'>
>>>> </Model:Import>
>>>> <Model:Import xmi.id='a7' name='Common_Behavior' annotation=''
>>>> visibility='public_vis' isClustered='true' importedNamespace='a8'>
>>>> </Model:Import>
>>>> <Model:Import xmi.id='a9' name='Use_Cases' annotation=''
>>>> visibility='public_vis' isClustered='true' importedNamespace='a10'>
>>>> </Model:Import>
>>>> <Model:Import xmi.id='a11' name='State_Machines' annotation=''
>>>> visibility='public_vis' isClustered='true' importedNamespace='a12'>
>>>> </Model:Import>
>>>> <Model:Import xmi.id='a13' name='Collaborations' annotation=''
>>>> visibility='public_vis' isClustered='true' importedNamespace='a14'>
>>>> </Model:Import>
>>>> <Model:Import xmi.id='a15' name='Activity_Graphs' annotation=''
>>>> visibility='public_vis' isClustered='true' importedNamespace='a16'>
>>>> </Model:Import>
>>>> <Model:Import xmi.id='a17' name='Model_Management' annotation=''
>>>> visibility='public_vis' isClustered='true' importedNamespace='a18'>
>>>> </Model:Import>
>>>> </Model:Namespace.contents>
>>>> </Model:Package>
>>>> <Model:Package xmi.id='a4' name='Data_Types' annotation=''
>>>> isRoot='false' isLeaf='false' isAbstract='false'
>>>> visibility='public_vis'>
>>>> <Model:Namespace.contents>
>>>> <Model:Tag xmi.id='a19'
>>>> name='org.omg.mof.idl_prefix=org.omg.uml.Foundation' annotation=''
>>>> tagId='org.omg.mof.idl_prefix' elements='a4'>
>>>> <Model:Tag.values>
>>>> <XMI.any xmi.type='string'>org.omg.uml.Foundation</XMI.any>
>>>> </Model:Tag.values>
>>>> </Model:Tag>
>>>> <Model:Tag xmi.id='a20' name='org.omg.xmi.namespace=UML'
>>>> annotation='' tagId='org.omg.xmi.namespace' elements='a4'>
>>>> <Model:Tag.values>
>>>> <XMI.any xmi.type='string'>UML</XMI.any>
>>>> </Model:Tag.values>
>>>> </Model:Tag>
>>>> <Model:DataType xmi.id='a21' name='Integer' annotation=''
>>>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>>>> <Model:DataType.typeCode>
>>>> <XMI.CorbaTypeCode>
>>>> <XMI.CorbaTcLong/>
>>>> </XMI.CorbaTypeCode>
>>>> </Model:DataType.typeCode>
>>>> </Model:DataType>
>>>> <Model:DataType xmi.id='a22' name='UnlimitedInteger'
>>>> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
>>>> visibility='public_vis'>
>>>> <Model:DataType.typeCode>
>>>> <XMI.CorbaTypeCode>
>>>> <XMI.CorbaTcAlias xmi.tcName='UnlimitedInteger'
>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/UnlimitedInt eger:1.0' >
>>>> <XMI.CorbaTypeCode>
>>>> <XMI.CorbaTcLong/>
>>>> </XMI.CorbaTypeCode>
>>>> </XMI.CorbaTcAlias>
>>>> </XMI.CorbaTypeCode>
>>>> </Model:DataType.typeCode>
>>>> </Model:DataType>
>>>> <Model:DataType xmi.id='a23' name='String' annotation=''
>>>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>>>> <Model:DataType.typeCode>
>>>> <XMI.CorbaTypeCode>
>>>> <XMI.CorbaTcString xmi.tcLength='0'/>
>>>> </XMI.CorbaTypeCode>
>>>> </Model:DataType.typeCode>
>>>> </Model:DataType>
>>>> <Model:DataType xmi.id='a24' name='AggregationKind' annotation=''
>>>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>>>> <Model:DataType.typeCode>
>>>> <XMI.CorbaTypeCode>
>>>> <XMI.CorbaTcEnum xmi.tcName='AggregationKind'
>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/AggregationK ind:1.0' >
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='ak_none'/>
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='ak_aggregate'/>
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='ak_composite'/>
>>>> </XMI.CorbaTcEnum>
>>>> </XMI.CorbaTypeCode>
>>>> </Model:DataType.typeCode>
>>>> </Model:DataType>
>>>> <Model:Tag xmi.id='a25'
>>>> name='org.omg.xmi.enumerationUnprefix=ak_' annotation=''
>>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a24'>
>>>> <Model:Tag.values>
>>>> <XMI.any xmi.type='string'>ak_</XMI.any>
>>>> </Model:Tag.values>
>>>> </Model:Tag>
>>>> <Model:DataType xmi.id='a26' name='Boolean' annotation=''
>>>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>>>> <Model:DataType.typeCode>
>>>> <XMI.CorbaTypeCode>
>>>> <XMI.CorbaTcBoolean/>
>>>> </XMI.CorbaTypeCode>
>>>> </Model:DataType.typeCode>
>>>> </Model:DataType>
>>>> <Model:DataType xmi.id='a27' name='CallConcurrencyKind'
>>>> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
>>>> visibility='public_vis'>
>>>> <Model:DataType.typeCode>
>>>> <XMI.CorbaTypeCode>
>>>> <XMI.CorbaTcEnum xmi.tcName='CallConcurrencyKind'
>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/CallConcurre ncyKind:1.0' >
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='cck_sequential'/>
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='cck_guarded'/>
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='cck_concurrent'/>
>>>> </XMI.CorbaTcEnum>
>>>> </XMI.CorbaTypeCode>
>>>> </Model:DataType.typeCode>
>>>> </Model:DataType>
>>>> <Model:Tag xmi.id='a28'
>>>> name='org.omg.xmi.enumerationUnprefix=cck_' annotation=''
>>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a27'>
>>>> <Model:Tag.values>
>>>> <XMI.any xmi.type='string'>cck_</XMI.any>
>>>> </Model:Tag.values>
>>>> </Model:Tag>
>>>> <Model:DataType xmi.id='a29' name='ChangeableKind' annotation=''
>>>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>>>> <Model:DataType.typeCode>
>>>> <XMI.CorbaTypeCode>
>>>> <XMI.CorbaTcEnum xmi.tcName='ChangeableKind'
>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/ChangeableKi nd:1.0' >
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='ck_changeable'/>
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='ck_frozen'/>
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='ck_addOnly'/>
>>>> </XMI.CorbaTcEnum>
>>>> </XMI.CorbaTypeCode>
>>>> </Model:DataType.typeCode>
>>>> </Model:DataType>
>>>> <Model:Tag xmi.id='a30'
>>>> name='org.omg.xmi.enumerationUnprefix=ck_' annotation=''
>>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a29'>
>>>> <Model:Tag.values>
>>>> <XMI.any xmi.type='string'>ck_</XMI.any>
>>>> </Model:Tag.values>
>>>> </Model:Tag>
>>>> <Model:DataType xmi.id='a31' name='OrderingKind' annotation=''
>>>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>>>> <Model:DataType.typeCode>
>>>> <XMI.CorbaTypeCode>
>>>> <XMI.CorbaTcEnum xmi.tcName='OrderingKind'
>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/OrderingKind :1.0' >
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='ok_unordered'/>
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='ok_ordered'/>
>>>> </XMI.CorbaTcEnum>
>>>> </XMI.CorbaTypeCode>
>>>> </Model:DataType.typeCode>
>>>> </Model:DataType>
>>>> <Model:Tag xmi.id='a32'
>>>> name='org.omg.xmi.enumerationUnprefix=ok_' annotation=''
>>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a31'>
>>>> <Model:Tag.values>
>>>> <XMI.any xmi.type='string'>ok_</XMI.any>
>>>> </Model:Tag.values>
>>>> </Model:Tag>
>>>> <Model:DataType xmi.id='a33' name='ParameterDirectionKind'
>>>> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
>>>> visibility='public_vis'>
>>>> <Model:DataType.typeCode>
>>>> <XMI.CorbaTypeCode>
>>>> <XMI.CorbaTcEnum xmi.tcName='ParameterDirectionKind'
>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/ParameterDir ectionKind:1.0' >
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='pdk_in'/>
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='pdk_inout'/>
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='pdk_out'/>
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='pdk_return'/>
>>>> </XMI.CorbaTcEnum>
>>>> </XMI.CorbaTypeCode>
>>>> </Model:DataType.typeCode>
>>>> </Model:DataType>
>>>> <Model:Tag xmi.id='a34'
>>>> name='org.omg.xmi.enumerationUnprefix=pdk_' annotation=''
>>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a33'>
>>>> <Model:Tag.values>
>>>> <XMI.any xmi.type='string'>pdk_</XMI.any>
>>>> </Model:Tag.values>
>>>> </Model:Tag>
>>>> <Model:DataType xmi.id='a35' name='ScopeKind' annotation=''
>>>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>>>> <Model:DataType.typeCode>
>>>> <XMI.CorbaTypeCode>
>>>> <XMI.CorbaTcEnum xmi.tcName='ScopeKind'
>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/ScopeKind:1. 0' >
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='sk_instance'/>
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='sk_classifier'/>
>>>> </XMI.CorbaTcEnum>
>>>> </XMI.CorbaTypeCode>
>>>> </Model:DataType.typeCode>
>>>> </Model:DataType>
>>>> <Model:Tag xmi.id='a36'
>>>> name='org.omg.xmi.enumerationUnprefix=sk_' annotation=''
>>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a35'>
>>>> <Model:Tag.values>
>>>> <XMI.any xmi.type='string'>sk_</XMI.any>
>>>> </Model:Tag.values>
>>>> </Model:Tag>
>>>> <Model:DataType xmi.id='a37' name='VisibilityKind' annotation=''
>>>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>>>> <Model:DataType.typeCode>
>>>> <XMI.CorbaTypeCode>
>>>> <XMI.CorbaTcEnum xmi.tcName='VisibilityKind'
>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/VisibilityKi nd:1.0' >
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='vk_public'/>
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='vk_protected'/>
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='vk_private'/>
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='vk_package'/>
>>>> </XMI.CorbaTcEnum>
>>>> </XMI.CorbaTypeCode>
>>>> </Model:DataType.typeCode>
>>>> </Model:DataType>
>>>> <Model:Tag xmi.id='a38'
>>>> name='org.omg.xmi.enumerationUnprefix=vk_' annotation=''
>>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a37'>
>>>> <Model:Tag.values>
>>>> <XMI.any xmi.type='string'>vk_</XMI.any>
>>>> </Model:Tag.values>
>>>> </Model:Tag>
>>>> <Model:DataType xmi.id='a39' name='Name' annotation=''
>>>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>>>> <Model:DataType.typeCode>
>>>> <XMI.CorbaTypeCode>
>>>> <XMI.CorbaTcAlias xmi.tcName='Name'
>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/Name:1.0'>
>>>> <XMI.CorbaTypeCode>
>>>> <XMI.CorbaTcString xmi.tcLength='0'/>
>>>> </XMI.CorbaTypeCode>
>>>> </XMI.CorbaTcAlias>
>>>> </XMI.CorbaTypeCode>
>>>> </Model:DataType.typeCode>
>>>> </Model:DataType>
>>>> <Model:Class xmi.id='a40' name='Multiplicity' annotation=''
>>>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>>>> isSingleton='false'>
>>>> <Model:Namespace.contents>
>>>> <Model:Reference xmi.id='a41' name='range' annotation=''
>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>> type='a42' referencedEnd='a43'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>1</XMI.field> <!-- lower -->
>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Reference>
>>>> </Model:Namespace.contents>
>>>> </Model:Class>
>>>> <Model:Class xmi.id='a42' name='MultiplicityRange' annotation=''
>>>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>>>> isSingleton='false'>
>>>> <Model:Namespace.contents>
>>>> <Model:Attribute xmi.id='a44' name='lower' annotation=''
>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>> isDerived='false' type='a21'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>1</XMI.field> <!-- lower -->
>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Attribute>
>>>> <Model:Attribute xmi.id='a45' name='upper' annotation=''
>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>> isDerived='false' type='a22'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>1</XMI.field> <!-- lower -->
>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Attribute>
>>>> <Model:Reference xmi.id='a46' name='multiplicity'
>>>> annotation='' scope='instance_level' visibility='public_vis'
>>>> isChangeable='true' type='a40' referencedEnd='a47'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>1</XMI.field> <!-- lower -->
>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Reference>
>>>> </Model:Namespace.contents>
>>>> </Model:Class>
>>>> <Model:Class xmi.id='a48' name='Expression' annotation=''
>>>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>>>> isSingleton='false'>
>>>> <Model:Namespace.contents>
>>>> <Model:Attribute xmi.id='a49' name='language' annotation=''
>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>> isDerived='false' type='a39'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Attribute>
>>>> <Model:Attribute xmi.id='a50' name='body' annotation=''
>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>> isDerived='false' type='a23'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>1</XMI.field> <!-- lower -->
>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Attribute>
>>>> </Model:Namespace.contents>
>>>> </Model:Class>
>>>> <Model:Class xmi.id='a51' name='BooleanExpression' annotation=''
>>>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>>>> isSingleton='false' supertypes='a48'>
>>>> </Model:Class>
>>>> <Model:Class xmi.id='a52' name='TypeExpression' annotation=''
>>>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>>>> isSingleton='false' supertypes='a48'>
>>>> </Model:Class>
>>>> <Model:Class xmi.id='a53' name='MappingExpression' annotation=''
>>>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>>>> isSingleton='false' supertypes='a48'>
>>>> </Model:Class>
>>>> <Model:Class xmi.id='a54' name='ProcedureExpression'
>>>> annotation='' isRoot='false' isLeaf='false' isAbstract='false'
>>>> visibility='public_vis' isSingleton='false' supertypes='a48'>
>>>> </Model:Class>
>>>> <Model:Class xmi.id='a55' name='ObjectSetExpression'
>>>> annotation='' isRoot='false' isLeaf='false' isAbstract='false'
>>>> visibility='public_vis' isSingleton='false' supertypes='a48'>
>>>> </Model:Class>
>>>> <Model:Class xmi.id='a56' name='ActionExpression' annotation=''
>>>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>>>> isSingleton='false' supertypes='a48'>
>>>> </Model:Class>
>>>> <Model:Class xmi.id='a57' name='IterationExpression'
>>>> annotation='' isRoot='false' isLeaf='false' isAbstract='false'
>>>> visibility='public_vis' isSingleton='false' supertypes='a48'>
>>>> </Model:Class>
>>>> <Model:Class xmi.id='a58' name='TimeExpression' annotation=''
>>>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>>>> isSingleton='false' supertypes='a48'>
>>>> </Model:Class>
>>>> <Model:Class xmi.id='a59' name='ArgListsExpression' annotation=''
>>>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>>>> isSingleton='false' supertypes='a48'>
>>>> </Model:Class>
>>>> <Model:DataType xmi.id='a60' name='LocationReference'
>>>> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
>>>> visibility='public_vis'>
>>>> <Model:DataType.typeCode>
>>>> <XMI.CorbaTypeCode>
>>>> <XMI.CorbaTcAlias xmi.tcName='LocationReference'
>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/LocationRefe rence:1.0' >
>>>> <XMI.CorbaTypeCode>
>>>> <XMI.CorbaTcString xmi.tcLength='0'/>
>>>> </XMI.CorbaTypeCode>
>>>> </XMI.CorbaTcAlias>
>>>> </XMI.CorbaTypeCode>
>>>> </Model:DataType.typeCode>
>>>> </Model:DataType>
>>>> <Model:DataType xmi.id='a61' name='PseudostateKind' annotation=''
>>>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>>>> <Model:DataType.typeCode>
>>>> <XMI.CorbaTypeCode>
>>>> <XMI.CorbaTcEnum xmi.tcName='PseudostateKind'
>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/PseudostateK ind:1.0' >
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_choice'/>
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_deepHistory'/>
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_fork'/>
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_initial'/>
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_join'/>
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_junction'/>
>>>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_shallowHistory'/>
>>>> </XMI.CorbaTcEnum>
>>>> </XMI.CorbaTypeCode>
>>>> </Model:DataType.typeCode>
>>>> </Model:DataType>
>>>> <Model:Tag xmi.id='a62'
>>>> name='org.omg.xmi.enumerationUnprefix=pk_' annotation=''
>>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a61'>
>>>> <Model:Tag.values>
>>>> <XMI.any xmi.type='string'>pk_</XMI.any>
>>>> </Model:Tag.values>
>>>> </Model:Tag>
>>>> <Model:DataType xmi.id='a63' name='Geometry' annotation=''
>>>> isRoot='true' isLeaf='true' isAbstract='false' visibility='public_vis'>
>>>> <Model:DataType.typeCode>
>>>> <XMI.CorbaTypeCode>
>>>> <XMI.CorbaTcAlias xmi.tcName='Geometry'
>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/Geometry:1.0 ' >
>>>> <XMI.CorbaTypeCode>
>>>> <XMI.CorbaTcString xmi.tcLength='0'/>
>>>> </XMI.CorbaTypeCode>
>>>> </XMI.CorbaTcAlias>
>>>> </XMI.CorbaTypeCode>
>>>> </Model:DataType.typeCode>
>>>> </Model:DataType>
>>>> <Model:Association xmi.id='a64' name='A_multiplicity_range'
>>>> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
>>>> visibility='public_vis' isDerived='false'>
>>>> <Model:Namespace.contents>
>>>> <Model:AssociationEnd xmi.id='a47' name='multiplicity'
>>>> annotation='' isNavigable='true' aggregation='composite'
>>>> isChangeable='true' type='a40'>
>>>> <Model:AssociationEnd.multiplicity>
>>>> <XMI.field>1</XMI.field> <!-- lower -->
>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>> </Model:AssociationEnd.multiplicity>
>>>> </Model:AssociationEnd>
>>>> <Model:AssociationEnd xmi.id='a43' name='range' annotation=''
>>>> isNavigable='true' aggregation='none' isChangeable='true' type='a42'>
>>>> <Model:AssociationEnd.multiplicity>
>>>> <XMI.field>1</XMI.field> <!-- lower -->
>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>> </Model:AssociationEnd.multiplicity>
>>>> </Model:AssociationEnd>
>>>> </Model:Namespace.contents>
>>>> </Model:Association>
>>>> </Model:Namespace.contents>
>>>> </Model:Package>
>>>> <Model:Package xmi.id='a6' name='Core' annotation='' isRoot='false'
>>>> isLeaf='false' isAbstract='false' visibility='public_vis'>
>>>> <Model:Namespace.contents>
>>>> <Model:Tag xmi.id='a65'
>>>> name='org.omg.mof.idl_prefix=org.omg.uml.Foundation' annotation=''
>>>> tagId='org.omg.mof.idl_prefix' elements='a6'>
>>>> <Model:Tag.values>
>>>> <XMI.any xmi.type='string'>org.omg.uml.Foundation</XMI.any>
>>>> </Model:Tag.values>
>>>> </Model:Tag>
>>>> <Model:Tag xmi.id='a66' name='org.omg.xmi.namespace=UML'
>>>> annotation='' tagId='org.omg.xmi.namespace' elements='a6'>
>>>> <Model:Tag.values>
>>>> <XMI.any xmi.type='string'>UML</XMI.any>
>>>> </Model:Tag.values>
>>>> </Model:Tag>
>>>> <Model:Class xmi.id='a67' name='Element' annotation=''
>>>> isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis'
>>>> isSingleton='false'>
>>>> </Model:Class>
>>>> <Model:Class xmi.id='a68' name='ModelElement' annotation=''
>>>> isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis'
>>>> isSingleton='false' supertypes='a67'>
>>>> <Model:Namespace.contents>
>>>> <Model:Attribute xmi.id='a69' name='name' annotation=''
>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>> isDerived='false' type='a39'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Attribute>
>>>> <Model:Attribute xmi.id='a70' name='visibility' annotation=''
>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>> isDerived='false' type='a37'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Attribute>
>>>> <Model:Attribute xmi.id='a71' name='isSpecification'
>>>> annotation='' scope='instance_level' visibility='public_vis'
>>>> isChangeable='true' isDerived='false' type='a26'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>1</XMI.field> <!-- lower -->
>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Attribute>
>>>> <Model:Reference xmi.id='a72' name='namespace' annotation=''
>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>> type='a73' referencedEnd='a74'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Reference>
>>>> <Model:Reference xmi.id='a75' name='clientDependency'
>>>> annotation='' scope='instance_level' visibility='public_vis'
>>>> isChangeable='true' type='a76' referencedEnd='a77'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Reference>
>>>> <Model:Reference xmi.id='a78' name='constraint' annotation=''
>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>> type='a79' referencedEnd='a80'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Reference>
>>>> <Model:Reference xmi.id='a81' name='targetFlow' annotation=''
>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>> type='a82' referencedEnd='a83'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Reference>
>>>> <Model:Reference xmi.id='a84' name='sourceFlow' annotation=''
>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>> type='a82' referencedEnd='a85'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Reference>
>>>> <Model:Reference xmi.id='a86' name='comment' annotation=''
>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>> type='a87' referencedEnd='a88'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Reference>
>>>> <Model:Reference xmi.id='a89' name='templateParameter'
>>>> annotation='' scope='instance_level' visibility='public_vis'
>>>> isChangeable='true' type='a90' referencedEnd='a91'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>> <XMI.field>true</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Reference>
>>>> <Model:Reference xmi.id='a92' name='stereotype' annotation=''
>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>> type='a93' referencedEnd='a94'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Reference>
>>>> <Model:Reference xmi.id='a95' name='taggedValue'
>>>> annotation='' scope='instance_level' visibility='public_vis'
>>>> isChangeable='true' type='a96' referencedEnd='a97'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Reference>
>>>> </Model:Namespace.contents>
>>>> </Model:Class>
>>>> <Model:Import xmi.id='a98' name='Data_Types' annotation=''
>>>> visibility='public_vis' isClustered='true' importedNamespace='a4'>
>>>> </Model:Import>
>>>> <Model:Tag xmi.id='a99'
>>>> name='org.omg.mof.idl_substitute_name=umlConstraint' annotation=''
>>>> tagId='org.omg.mof.idl_substitute_name' elements='a78 a80'>
>>>> <Model:Tag.values>
>>>> <XMI.any xmi.type='string'>umlConstraint</XMI.any>
>>>> </Model:Tag.values>
>>>> </Model:Tag>
>>>> <Model:Class xmi.id='a100' name='GeneralizableElement'
>>>> annotation='' isRoot='false' isLeaf='false' isAbstract='true'
>>>> visibility='public_vis' isSingleton='false' supertypes='a68'>
>>>> <Model:Namespace.contents>
>>>> <Model:Attribute xmi.id='a101' name='isRoot' annotation=''
>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>> isDerived='false' type='a26'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>1</XMI.field> <!-- lower -->
>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Attribute>
>>>> <Model:Attribute xmi.id='a102' name='isLeaf' annotation=''
>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>> isDerived='false' type='a26'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>1</XMI.field> <!-- lower -->
>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Attribute>
>>>> <Model:Attribute xmi.id='a103' name='isAbstract'
>>>> annotation='' scope='instance_level' visibility='public_vis'
>>>> isChangeable='true' isDerived='false' type='a26'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>1</XMI.field> <!-- lower -->
>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Attribute>
>>>> <Model:Reference xmi.id='a104' name='generalization'
>>>> annotation='' scope='instance_level' visibility='public_vis'
>>>> isChangeable='true' type='a105' referencedEnd='a106'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Reference>
>>>> </Model:Namespace.contents>
>>>> </Model:Class>
>>>> <Model:Class xmi.id='a73' name='Namespace' annotation=''
>>>> isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis'
>>>> isSingleton='false' supertypes='a68'>
>>>> <Model:Namespace.contents>
>>>> <Model:Reference xmi.id='a107' name='ownedElement'
>>>> annotation='' scope='instance_level' visibility='public_vis'
>>>> isChangeable='true' type='a68' referencedEnd='a108'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Reference>
>>>> </Model:Namespace.contents>
>>>> </Model:Class>
>>>> <Model:Class xmi.id='a109' name='Classifier' annotation=''
>>>> isRoot='false' isLeaf='false' isAbstract='true' visibility='public_vis'
>>>> isSingleton='false' supertypes='a100 a73'>
>>>> <Model:Namespace.contents>
>>>> <Model:Reference xmi.id='a110' name='feature' annotation=''
>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>> type='a111' referencedEnd='a112'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>> <XMI.field>true</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Reference>
>>>> <Model:Reference xmi.id='a113' name='powertypeRange'
>>>> annotation='' scope='instance_level' visibility='public_vis'
>>>> isChangeable='true' type='a105' referencedEnd='a114'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Reference>
>>>> </Model:Namespace.contents>
>>>> </Model:Class>
>>>> <Model:Class xmi.id='a115' name='Class' annotation=''
>>>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>>>> isSingleton='false' supertypes='a109'>
>>>> <Model:Namespace.contents>
>>>> <Model:Attribute xmi.id='a116' name='isActive' annotation=''
>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>> isDerived='false' type='a26'>
>>>> <Model:StructuralFeature.multiplicity>
>>>> <XMI.field>1</XMI.field> <!-- lower -->
>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>> </Model:StructuralFeature.multiplicity>
>>>> </Model:Attribute>
>>>> </Model:Namespace.contents>
>>>> </Model:Class>
>>>> <Model:Class xmi.id='a117' name='DataType' annotation=''
>>>> isRoot='false' isLeaf='false' isAbstract='false' visibility='public_vis'
>>>> isSingleton='false' supertypes='a109'>
>>>> </Model:Class>
>>>> <Model:Class xmi.i
Re: [Epsilon] Using OCL in Meta-Model level [message #599653 is a reply to message #378032] Sun, 20 May 2007 00:27 Go to previous message
Eclipse UserFriend
Originally posted by: b_zamani.encs.concordia.ca

Thank you Dimitrios,

It seems that I've totally mixed those two meta-models!
I hope OMG one day fixes these confusions as it is emphasized on page xii of
MOF1.4 specification:
"In the future, it is anticipated that OMG processes will eventually
accomplish a merging of the UML and MOF (meta-)metamodels."

good luck,
Bahman

"Dimitrios Kolovos" <dskolovos@gmail.com> wrote in message
news:f2nuid$uod$1@build.eclipse.org...
> Hi Bahman,
>
> Bahman wrote:
>> Hi Dimitrios,
>>
>> For A&B) My understanding was that since MOF1.4 is the metamodel of
>> UML1.4, everybody who wants to implement MOF1.4, should consider its
>> structure (e.g. Model structure depicted in figure3-2) and implement it.
>> So, I expected to see the same attributes and operations as there is in
>> that figure.
>
> I understand the confusion introduced by the similarity between MOF and
> UML, but I should stress again that MOF!ModelElement != UML!NamedElement
> (they are two constructs in two *different* metamodels that happen to have
> the same name).
>
>> For B&C) It's true that B is for UML1.4 and C is for UML1.5, but I don't
>> think there should be so much changes from 1.4 to 1.5! Do you?
>>
>
> I'm not familiar with the metamodel of UML 1.5 but I don't expect it to be
> drastically different to that of UML 1.4. Getting hands on the actual
> metamodel in XMI would help a lot in locating the exact differences.
>
>> best,
>> Bahman
>>
>
> Cheers,
> Dimitrios
>
>> "Dimitrios Kolovos" <dskolovos@gmail.com> wrote in message
>> news:f2npn3$6um$1@build.eclipse.org...
>>> Hi Bahman,
>>>
>>> (A) describes *MOF itself* while (B) and (C) describe *UML using MOF*.
>>> (The common *NamedElement* thing is a result of MOF emerging from UML at
>>> some point, but you can consider it as an unlucky coincidence).
>>>
>>> As for the differences between (B) and (C), with regard to the
>>> attributes/references of the UML ModelElement, any differences may be
>>> due to the fact that (B) refers to version 1.4 of UML and (C) to version
>>> 1.5. BTW, if you find/have the UML 1.5 metamodel in XMI, we can use it
>>> to generate a similar javadoc-like set of pages.
>>>
>>> As for the operations part, (B) doesn't document operations at all
>>> because since MOF lacks an action semantics, MOF-level operations are
>>> not executable - and thus useless to Epsilon.
>>>
>>> I hope this helps.
>>>
>>> Cheers,
>>> Dimitrios
>>>
>>> Bahman wrote:
>>>> Hi Dimitrios,
>>>>
>>>> Thanks for the comment and the link.
>>>> I'm not sure what makes me confused! Would you please consider the
>>>> following concrete example and let me know your idea?
>>>>
>>>> A) Considering the MOF Model structure depicted by figure3-2 on page
>>>> 3-13 of the MOF1.4 specification
>>>> (http://www.omg.org/docs/formal/02-04-03.pdf), each Model Element has
>>>> specific attributes, references, and operations (as explained in
>>>> section 3.4.1).
>>>> B) Considering the description of class ModelElement from the link you
>>>> introduced (http://www-users.cs.york.ac.uk/~dkolovos/uml14/), the
>>>> attributes and references are totally different than what is specified
>>>> in (A).
>>>> C) Considering UML1.5 metamodel of OCLE 2.0 tool, I find a class
>>>> ModelElement with just one attribute (name) and six operations which
>>>> seems almost different that operations or references in (A) or (B).
>>>>
>>>> best,
>>>> Bahman
>>>>
>>>>
>>>> "Dimitrios Kolovos" <dskolovos@gmail.com> wrote in message
>>>> news:f2fjdg$p0d$1@build.eclipse.org...
>>>>> Hi Bahman,
>>>>>
>>>>> The properties of each metaclass (e.g. Class, ModelElement etc) are
>>>>> defined in the metamodel of the language. For ArgoUML the metamodel is
>>>>> a
>>>>> MOF1.4/XMI 1.1 file (attached). From this, I've generated a set of
>>>>> JavaDoc-like HTML pages available at
>>>>> http://www-users.cs.york.ac.uk/~dkolovos/uml14/ which you may find
>>>>> more
>>>>> usable than the XMI metamodel itself :)
>>>>>
>>>>> Cheers,
>>>>> Dimitrios
>>>>>
>>>>> Bahman wrote:
>>>>>> Hi everybody,
>>>>>>
>>>>>> I have a problem understanding how to use OCL (especially in
>>>>>> MetaModel
>>>>>> level), if you have time to guide me, that would be appreciated.
>>>>>>
>>>>>> So far I've worked with some tools such as ArgoUML (adding some
>>>>>> critics to
>>>>>> it), OCLE (checking OCLs in model level and metamodel level), and
>>>>>> recently
>>>>>> Epsilon (Adding some more functionalities on its ArgoUML version).
>>>>>>
>>>>>> My problem is that I don't know from where can I find all the
>>>>>> OPERATIONS and
>>>>>> FUNCTIONS that I can apply on a model (Meta-Model). Let me make it
>>>>>> clear by
>>>>>> an example:
>>>>>>
>>>>>> 1) In Epsilon, I've written the following operation to check whether
>>>>>> or not
>>>>>> a class own an attribute. But I knew nothing about the FEATURE
>>>>>> property that
>>>>>> could be applied on a class. I just found it by reviewing existing
>>>>>> similar
>>>>>> codes.
>>>>>>
>>>>>> operation Class hasAttribute (name : String) : Boolean {
>>>>>> return self.feature.exists (a:Attribute | a.name = name);
>>>>>> }
>>>>>>
>>>>>> 2) In ArgoUML, I had to write the following method to check the above
>>>>>> condition. However, since it was in Eclipse, I could see which
>>>>>> methods are
>>>>>> available by Model's Facade class (thanks to Eclipse assistance).
>>>>>>
>>>>>> public static boolean classHasAtt (Object cls) {
>>>>>> boolean found = false;
>>>>>> Collection atts = Model.getFacade().getAttributes(cls);
>>>>>> if ( atts.size() > 0 ) {
>>>>>> found = true ;
>>>>>> }
>>>>>> return found;
>>>>>> }
>>>>>>
>>>>>> Again my question is: "let say the context is a class, how can I
>>>>>> access to
>>>>>> all its attributes? its operations? its stereotypes?" The same
>>>>>> question
>>>>>> applies for every ModelElement.
>>>>>>
>>>>>> best,
>>>>>> Bahman
>>>>>>
>>>>>>
>>>>>>
>>>>
>>>> ------------------------------------------------------------ --------------------
>>>>
>>>>
>>>>> <?xml version="1.0" encoding="UTF-8" ?>
>>>>> <!-- <!DOCTYPE XMI SYSTEM 'Model.dtd'> -->
>>>>> <XMI xmi.version='1.1' xmlns:Model='omg.org/mof.Model/1.3'>
>>>>> <XMI.header>
>>>>> <XMI.model xmi.name='UML' xmi.version='1.4'/>
>>>>> <XMI.metamodel xmi.name='Model' xmi.version='1.3'/>
>>>>> </XMI.header>
>>>>> <XMI.content>
>>>>> <Model:Package xmi.id='a0' name='UML' annotation='' isRoot='false'
>>>>> isLeaf='false' isAbstract='false' visibility='public_vis'>
>>>>> <Model:Namespace.contents>
>>>>> <Model:Tag xmi.id='a1' name='org.omg.mof.idl_prefix=org.omg'
>>>>> annotation='' tagId='org.omg.mof.idl_prefix' elements='a0'>
>>>>> <Model:Tag.values>
>>>>> <XMI.any xmi.type='string'>org.omg</XMI.any>
>>>>> </Model:Tag.values>
>>>>> </Model:Tag>
>>>>> <Model:Tag xmi.id='a2' name='org.omg.xmi.namespace=UML'
>>>>> annotation='' tagId='org.omg.xmi.namespace' elements='a0'>
>>>>> <Model:Tag.values>
>>>>> <XMI.any xmi.type='string'>UML</XMI.any>
>>>>> </Model:Tag.values>
>>>>> </Model:Tag>
>>>>> <Model:Import xmi.id='a3' name='Data_Types' annotation=''
>>>>> visibility='public_vis' isClustered='true' importedNamespace='a4'>
>>>>> </Model:Import>
>>>>> <Model:Import xmi.id='a5' name='Core' annotation=''
>>>>> visibility='public_vis' isClustered='true' importedNamespace='a6'>
>>>>> </Model:Import>
>>>>> <Model:Import xmi.id='a7' name='Common_Behavior' annotation=''
>>>>> visibility='public_vis' isClustered='true' importedNamespace='a8'>
>>>>> </Model:Import>
>>>>> <Model:Import xmi.id='a9' name='Use_Cases' annotation=''
>>>>> visibility='public_vis' isClustered='true' importedNamespace='a10'>
>>>>> </Model:Import>
>>>>> <Model:Import xmi.id='a11' name='State_Machines' annotation=''
>>>>> visibility='public_vis' isClustered='true' importedNamespace='a12'>
>>>>> </Model:Import>
>>>>> <Model:Import xmi.id='a13' name='Collaborations' annotation=''
>>>>> visibility='public_vis' isClustered='true' importedNamespace='a14'>
>>>>> </Model:Import>
>>>>> <Model:Import xmi.id='a15' name='Activity_Graphs' annotation=''
>>>>> visibility='public_vis' isClustered='true' importedNamespace='a16'>
>>>>> </Model:Import>
>>>>> <Model:Import xmi.id='a17' name='Model_Management'
>>>>> annotation='' visibility='public_vis' isClustered='true'
>>>>> importedNamespace='a18'>
>>>>> </Model:Import>
>>>>> </Model:Namespace.contents>
>>>>> </Model:Package>
>>>>> <Model:Package xmi.id='a4' name='Data_Types' annotation=''
>>>>> isRoot='false' isLeaf='false' isAbstract='false'
>>>>> visibility='public_vis'>
>>>>> <Model:Namespace.contents>
>>>>> <Model:Tag xmi.id='a19'
>>>>> name='org.omg.mof.idl_prefix=org.omg.uml.Foundation' annotation=''
>>>>> tagId='org.omg.mof.idl_prefix' elements='a4'>
>>>>> <Model:Tag.values>
>>>>> <XMI.any xmi.type='string'>org.omg.uml.Foundation</XMI.any>
>>>>> </Model:Tag.values>
>>>>> </Model:Tag>
>>>>> <Model:Tag xmi.id='a20' name='org.omg.xmi.namespace=UML'
>>>>> annotation='' tagId='org.omg.xmi.namespace' elements='a4'>
>>>>> <Model:Tag.values>
>>>>> <XMI.any xmi.type='string'>UML</XMI.any>
>>>>> </Model:Tag.values>
>>>>> </Model:Tag>
>>>>> <Model:DataType xmi.id='a21' name='Integer' annotation=''
>>>>> isRoot='true' isLeaf='true' isAbstract='false'
>>>>> visibility='public_vis'>
>>>>> <Model:DataType.typeCode>
>>>>> <XMI.CorbaTypeCode>
>>>>> <XMI.CorbaTcLong/>
>>>>> </XMI.CorbaTypeCode>
>>>>> </Model:DataType.typeCode>
>>>>> </Model:DataType>
>>>>> <Model:DataType xmi.id='a22' name='UnlimitedInteger'
>>>>> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
>>>>> visibility='public_vis'>
>>>>> <Model:DataType.typeCode>
>>>>> <XMI.CorbaTypeCode>
>>>>> <XMI.CorbaTcAlias xmi.tcName='UnlimitedInteger'
>>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/UnlimitedInt eger:1.0' >
>>>>> <XMI.CorbaTypeCode>
>>>>> <XMI.CorbaTcLong/>
>>>>> </XMI.CorbaTypeCode>
>>>>> </XMI.CorbaTcAlias>
>>>>> </XMI.CorbaTypeCode>
>>>>> </Model:DataType.typeCode>
>>>>> </Model:DataType>
>>>>> <Model:DataType xmi.id='a23' name='String' annotation=''
>>>>> isRoot='true' isLeaf='true' isAbstract='false'
>>>>> visibility='public_vis'>
>>>>> <Model:DataType.typeCode>
>>>>> <XMI.CorbaTypeCode>
>>>>> <XMI.CorbaTcString xmi.tcLength='0'/>
>>>>> </XMI.CorbaTypeCode>
>>>>> </Model:DataType.typeCode>
>>>>> </Model:DataType>
>>>>> <Model:DataType xmi.id='a24' name='AggregationKind'
>>>>> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
>>>>> visibility='public_vis'>
>>>>> <Model:DataType.typeCode>
>>>>> <XMI.CorbaTypeCode>
>>>>> <XMI.CorbaTcEnum xmi.tcName='AggregationKind'
>>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/AggregationK ind:1.0' >
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='ak_none'/>
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='ak_aggregate'/>
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='ak_composite'/>
>>>>> </XMI.CorbaTcEnum>
>>>>> </XMI.CorbaTypeCode>
>>>>> </Model:DataType.typeCode>
>>>>> </Model:DataType>
>>>>> <Model:Tag xmi.id='a25'
>>>>> name='org.omg.xmi.enumerationUnprefix=ak_' annotation=''
>>>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a24'>
>>>>> <Model:Tag.values>
>>>>> <XMI.any xmi.type='string'>ak_</XMI.any>
>>>>> </Model:Tag.values>
>>>>> </Model:Tag>
>>>>> <Model:DataType xmi.id='a26' name='Boolean' annotation=''
>>>>> isRoot='true' isLeaf='true' isAbstract='false'
>>>>> visibility='public_vis'>
>>>>> <Model:DataType.typeCode>
>>>>> <XMI.CorbaTypeCode>
>>>>> <XMI.CorbaTcBoolean/>
>>>>> </XMI.CorbaTypeCode>
>>>>> </Model:DataType.typeCode>
>>>>> </Model:DataType>
>>>>> <Model:DataType xmi.id='a27' name='CallConcurrencyKind'
>>>>> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
>>>>> visibility='public_vis'>
>>>>> <Model:DataType.typeCode>
>>>>> <XMI.CorbaTypeCode>
>>>>> <XMI.CorbaTcEnum xmi.tcName='CallConcurrencyKind'
>>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/CallConcurre ncyKind:1.0' >
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='cck_sequential'/>
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='cck_guarded'/>
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='cck_concurrent'/>
>>>>> </XMI.CorbaTcEnum>
>>>>> </XMI.CorbaTypeCode>
>>>>> </Model:DataType.typeCode>
>>>>> </Model:DataType>
>>>>> <Model:Tag xmi.id='a28'
>>>>> name='org.omg.xmi.enumerationUnprefix=cck_' annotation=''
>>>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a27'>
>>>>> <Model:Tag.values>
>>>>> <XMI.any xmi.type='string'>cck_</XMI.any>
>>>>> </Model:Tag.values>
>>>>> </Model:Tag>
>>>>> <Model:DataType xmi.id='a29' name='ChangeableKind'
>>>>> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
>>>>> visibility='public_vis'>
>>>>> <Model:DataType.typeCode>
>>>>> <XMI.CorbaTypeCode>
>>>>> <XMI.CorbaTcEnum xmi.tcName='ChangeableKind'
>>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/ChangeableKi nd:1.0' >
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='ck_changeable'/>
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='ck_frozen'/>
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='ck_addOnly'/>
>>>>> </XMI.CorbaTcEnum>
>>>>> </XMI.CorbaTypeCode>
>>>>> </Model:DataType.typeCode>
>>>>> </Model:DataType>
>>>>> <Model:Tag xmi.id='a30'
>>>>> name='org.omg.xmi.enumerationUnprefix=ck_' annotation=''
>>>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a29'>
>>>>> <Model:Tag.values>
>>>>> <XMI.any xmi.type='string'>ck_</XMI.any>
>>>>> </Model:Tag.values>
>>>>> </Model:Tag>
>>>>> <Model:DataType xmi.id='a31' name='OrderingKind' annotation=''
>>>>> isRoot='true' isLeaf='true' isAbstract='false'
>>>>> visibility='public_vis'>
>>>>> <Model:DataType.typeCode>
>>>>> <XMI.CorbaTypeCode>
>>>>> <XMI.CorbaTcEnum xmi.tcName='OrderingKind'
>>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/OrderingKind :1.0' >
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='ok_unordered'/>
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='ok_ordered'/>
>>>>> </XMI.CorbaTcEnum>
>>>>> </XMI.CorbaTypeCode>
>>>>> </Model:DataType.typeCode>
>>>>> </Model:DataType>
>>>>> <Model:Tag xmi.id='a32'
>>>>> name='org.omg.xmi.enumerationUnprefix=ok_' annotation=''
>>>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a31'>
>>>>> <Model:Tag.values>
>>>>> <XMI.any xmi.type='string'>ok_</XMI.any>
>>>>> </Model:Tag.values>
>>>>> </Model:Tag>
>>>>> <Model:DataType xmi.id='a33' name='ParameterDirectionKind'
>>>>> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
>>>>> visibility='public_vis'>
>>>>> <Model:DataType.typeCode>
>>>>> <XMI.CorbaTypeCode>
>>>>> <XMI.CorbaTcEnum xmi.tcName='ParameterDirectionKind'
>>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/ParameterDir ectionKind:1.0' >
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='pdk_in'/>
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='pdk_inout'/>
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='pdk_out'/>
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='pdk_return'/>
>>>>> </XMI.CorbaTcEnum>
>>>>> </XMI.CorbaTypeCode>
>>>>> </Model:DataType.typeCode>
>>>>> </Model:DataType>
>>>>> <Model:Tag xmi.id='a34'
>>>>> name='org.omg.xmi.enumerationUnprefix=pdk_' annotation=''
>>>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a33'>
>>>>> <Model:Tag.values>
>>>>> <XMI.any xmi.type='string'>pdk_</XMI.any>
>>>>> </Model:Tag.values>
>>>>> </Model:Tag>
>>>>> <Model:DataType xmi.id='a35' name='ScopeKind' annotation=''
>>>>> isRoot='true' isLeaf='true' isAbstract='false'
>>>>> visibility='public_vis'>
>>>>> <Model:DataType.typeCode>
>>>>> <XMI.CorbaTypeCode>
>>>>> <XMI.CorbaTcEnum xmi.tcName='ScopeKind'
>>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/ScopeKind:1. 0' >
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='sk_instance'/>
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='sk_classifier'/>
>>>>> </XMI.CorbaTcEnum>
>>>>> </XMI.CorbaTypeCode>
>>>>> </Model:DataType.typeCode>
>>>>> </Model:DataType>
>>>>> <Model:Tag xmi.id='a36'
>>>>> name='org.omg.xmi.enumerationUnprefix=sk_' annotation=''
>>>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a35'>
>>>>> <Model:Tag.values>
>>>>> <XMI.any xmi.type='string'>sk_</XMI.any>
>>>>> </Model:Tag.values>
>>>>> </Model:Tag>
>>>>> <Model:DataType xmi.id='a37' name='VisibilityKind'
>>>>> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
>>>>> visibility='public_vis'>
>>>>> <Model:DataType.typeCode>
>>>>> <XMI.CorbaTypeCode>
>>>>> <XMI.CorbaTcEnum xmi.tcName='VisibilityKind'
>>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/VisibilityKi nd:1.0' >
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='vk_public'/>
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='vk_protected'/>
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='vk_private'/>
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='vk_package'/>
>>>>> </XMI.CorbaTcEnum>
>>>>> </XMI.CorbaTypeCode>
>>>>> </Model:DataType.typeCode>
>>>>> </Model:DataType>
>>>>> <Model:Tag xmi.id='a38'
>>>>> name='org.omg.xmi.enumerationUnprefix=vk_' annotation=''
>>>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a37'>
>>>>> <Model:Tag.values>
>>>>> <XMI.any xmi.type='string'>vk_</XMI.any>
>>>>> </Model:Tag.values>
>>>>> </Model:Tag>
>>>>> <Model:DataType xmi.id='a39' name='Name' annotation=''
>>>>> isRoot='true' isLeaf='true' isAbstract='false'
>>>>> visibility='public_vis'>
>>>>> <Model:DataType.typeCode>
>>>>> <XMI.CorbaTypeCode>
>>>>> <XMI.CorbaTcAlias xmi.tcName='Name'
>>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/Name:1.0'>
>>>>> <XMI.CorbaTypeCode>
>>>>> <XMI.CorbaTcString xmi.tcLength='0'/>
>>>>> </XMI.CorbaTypeCode>
>>>>> </XMI.CorbaTcAlias>
>>>>> </XMI.CorbaTypeCode>
>>>>> </Model:DataType.typeCode>
>>>>> </Model:DataType>
>>>>> <Model:Class xmi.id='a40' name='Multiplicity' annotation=''
>>>>> isRoot='false' isLeaf='false' isAbstract='false'
>>>>> visibility='public_vis' isSingleton='false'>
>>>>> <Model:Namespace.contents>
>>>>> <Model:Reference xmi.id='a41' name='range' annotation=''
>>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>>> type='a42' referencedEnd='a43'>
>>>>> <Model:StructuralFeature.multiplicity>
>>>>> <XMI.field>1</XMI.field> <!-- lower -->
>>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>>> </Model:StructuralFeature.multiplicity>
>>>>> </Model:Reference>
>>>>> </Model:Namespace.contents>
>>>>> </Model:Class>
>>>>> <Model:Class xmi.id='a42' name='MultiplicityRange'
>>>>> annotation='' isRoot='false' isLeaf='false' isAbstract='false'
>>>>> visibility='public_vis' isSingleton='false'>
>>>>> <Model:Namespace.contents>
>>>>> <Model:Attribute xmi.id='a44' name='lower' annotation=''
>>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>>> isDerived='false' type='a21'>
>>>>> <Model:StructuralFeature.multiplicity>
>>>>> <XMI.field>1</XMI.field> <!-- lower -->
>>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>>> </Model:StructuralFeature.multiplicity>
>>>>> </Model:Attribute>
>>>>> <Model:Attribute xmi.id='a45' name='upper' annotation=''
>>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>>> isDerived='false' type='a22'>
>>>>> <Model:StructuralFeature.multiplicity>
>>>>> <XMI.field>1</XMI.field> <!-- lower -->
>>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>>> </Model:StructuralFeature.multiplicity>
>>>>> </Model:Attribute>
>>>>> <Model:Reference xmi.id='a46' name='multiplicity'
>>>>> annotation='' scope='instance_level' visibility='public_vis'
>>>>> isChangeable='true' type='a40' referencedEnd='a47'>
>>>>> <Model:StructuralFeature.multiplicity>
>>>>> <XMI.field>1</XMI.field> <!-- lower -->
>>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>>> </Model:StructuralFeature.multiplicity>
>>>>> </Model:Reference>
>>>>> </Model:Namespace.contents>
>>>>> </Model:Class>
>>>>> <Model:Class xmi.id='a48' name='Expression' annotation=''
>>>>> isRoot='false' isLeaf='false' isAbstract='false'
>>>>> visibility='public_vis' isSingleton='false'>
>>>>> <Model:Namespace.contents>
>>>>> <Model:Attribute xmi.id='a49' name='language' annotation=''
>>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>>> isDerived='false' type='a39'>
>>>>> <Model:StructuralFeature.multiplicity>
>>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>>> </Model:StructuralFeature.multiplicity>
>>>>> </Model:Attribute>
>>>>> <Model:Attribute xmi.id='a50' name='body' annotation=''
>>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>>> isDerived='false' type='a23'>
>>>>> <Model:StructuralFeature.multiplicity>
>>>>> <XMI.field>1</XMI.field> <!-- lower -->
>>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>>> </Model:StructuralFeature.multiplicity>
>>>>> </Model:Attribute>
>>>>> </Model:Namespace.contents>
>>>>> </Model:Class>
>>>>> <Model:Class xmi.id='a51' name='BooleanExpression'
>>>>> annotation='' isRoot='false' isLeaf='false' isAbstract='false'
>>>>> visibility='public_vis' isSingleton='false' supertypes='a48'>
>>>>> </Model:Class>
>>>>> <Model:Class xmi.id='a52' name='TypeExpression' annotation=''
>>>>> isRoot='false' isLeaf='false' isAbstract='false'
>>>>> visibility='public_vis' isSingleton='false' supertypes='a48'>
>>>>> </Model:Class>
>>>>> <Model:Class xmi.id='a53' name='MappingExpression'
>>>>> annotation='' isRoot='false' isLeaf='false' isAbstract='false'
>>>>> visibility='public_vis' isSingleton='false' supertypes='a48'>
>>>>> </Model:Class>
>>>>> <Model:Class xmi.id='a54' name='ProcedureExpression'
>>>>> annotation='' isRoot='false' isLeaf='false' isAbstract='false'
>>>>> visibility='public_vis' isSingleton='false' supertypes='a48'>
>>>>> </Model:Class>
>>>>> <Model:Class xmi.id='a55' name='ObjectSetExpression'
>>>>> annotation='' isRoot='false' isLeaf='false' isAbstract='false'
>>>>> visibility='public_vis' isSingleton='false' supertypes='a48'>
>>>>> </Model:Class>
>>>>> <Model:Class xmi.id='a56' name='ActionExpression' annotation=''
>>>>> isRoot='false' isLeaf='false' isAbstract='false'
>>>>> visibility='public_vis' isSingleton='false' supertypes='a48'>
>>>>> </Model:Class>
>>>>> <Model:Class xmi.id='a57' name='IterationExpression'
>>>>> annotation='' isRoot='false' isLeaf='false' isAbstract='false'
>>>>> visibility='public_vis' isSingleton='false' supertypes='a48'>
>>>>> </Model:Class>
>>>>> <Model:Class xmi.id='a58' name='TimeExpression' annotation=''
>>>>> isRoot='false' isLeaf='false' isAbstract='false'
>>>>> visibility='public_vis' isSingleton='false' supertypes='a48'>
>>>>> </Model:Class>
>>>>> <Model:Class xmi.id='a59' name='ArgListsExpression'
>>>>> annotation='' isRoot='false' isLeaf='false' isAbstract='false'
>>>>> visibility='public_vis' isSingleton='false' supertypes='a48'>
>>>>> </Model:Class>
>>>>> <Model:DataType xmi.id='a60' name='LocationReference'
>>>>> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
>>>>> visibility='public_vis'>
>>>>> <Model:DataType.typeCode>
>>>>> <XMI.CorbaTypeCode>
>>>>> <XMI.CorbaTcAlias xmi.tcName='LocationReference'
>>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/LocationRefe rence:1.0' >
>>>>> <XMI.CorbaTypeCode>
>>>>> <XMI.CorbaTcString xmi.tcLength='0'/>
>>>>> </XMI.CorbaTypeCode>
>>>>> </XMI.CorbaTcAlias>
>>>>> </XMI.CorbaTypeCode>
>>>>> </Model:DataType.typeCode>
>>>>> </Model:DataType>
>>>>> <Model:DataType xmi.id='a61' name='PseudostateKind'
>>>>> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
>>>>> visibility='public_vis'>
>>>>> <Model:DataType.typeCode>
>>>>> <XMI.CorbaTypeCode>
>>>>> <XMI.CorbaTcEnum xmi.tcName='PseudostateKind'
>>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/PseudostateK ind:1.0' >
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_choice'/>
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_deepHistory'/>
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_fork'/>
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_initial'/>
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_join'/>
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_junction'/>
>>>>> <XMI.CorbaTcEnumLabel xmi.tcName='pk_shallowHistory'/>
>>>>> </XMI.CorbaTcEnum>
>>>>> </XMI.CorbaTypeCode>
>>>>> </Model:DataType.typeCode>
>>>>> </Model:DataType>
>>>>> <Model:Tag xmi.id='a62'
>>>>> name='org.omg.xmi.enumerationUnprefix=pk_' annotation=''
>>>>> tagId='org.omg.xmi.enumerationUnprefix' elements='a61'>
>>>>> <Model:Tag.values>
>>>>> <XMI.any xmi.type='string'>pk_</XMI.any>
>>>>> </Model:Tag.values>
>>>>> </Model:Tag>
>>>>> <Model:DataType xmi.id='a63' name='Geometry' annotation=''
>>>>> isRoot='true' isLeaf='true' isAbstract='false'
>>>>> visibility='public_vis'>
>>>>> <Model:DataType.typeCode>
>>>>> <XMI.CorbaTypeCode>
>>>>> <XMI.CorbaTcAlias xmi.tcName='Geometry'
>>>>> xmi.tcId='IDL:org.omg.uml.Foundation/Data_Types/Geometry:1.0 ' >
>>>>> <XMI.CorbaTypeCode>
>>>>> <XMI.CorbaTcString xmi.tcLength='0'/>
>>>>> </XMI.CorbaTypeCode>
>>>>> </XMI.CorbaTcAlias>
>>>>> </XMI.CorbaTypeCode>
>>>>> </Model:DataType.typeCode>
>>>>> </Model:DataType>
>>>>> <Model:Association xmi.id='a64' name='A_multiplicity_range'
>>>>> annotation='' isRoot='true' isLeaf='true' isAbstract='false'
>>>>> visibility='public_vis' isDerived='false'>
>>>>> <Model:Namespace.contents>
>>>>> <Model:AssociationEnd xmi.id='a47' name='multiplicity'
>>>>> annotation='' isNavigable='true' aggregation='composite'
>>>>> isChangeable='true' type='a40'>
>>>>> <Model:AssociationEnd.multiplicity>
>>>>> <XMI.field>1</XMI.field> <!-- lower -->
>>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>>> </Model:AssociationEnd.multiplicity>
>>>>> </Model:AssociationEnd>
>>>>> <Model:AssociationEnd xmi.id='a43' name='range'
>>>>> annotation='' isNavigable='true' aggregation='none'
>>>>> isChangeable='true' type='a42'>
>>>>> <Model:AssociationEnd.multiplicity>
>>>>> <XMI.field>1</XMI.field> <!-- lower -->
>>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>>> </Model:AssociationEnd.multiplicity>
>>>>> </Model:AssociationEnd>
>>>>> </Model:Namespace.contents>
>>>>> </Model:Association>
>>>>> </Model:Namespace.contents>
>>>>> </Model:Package>
>>>>> <Model:Package xmi.id='a6' name='Core' annotation='' isRoot='false'
>>>>> isLeaf='false' isAbstract='false' visibility='public_vis'>
>>>>> <Model:Namespace.contents>
>>>>> <Model:Tag xmi.id='a65'
>>>>> name='org.omg.mof.idl_prefix=org.omg.uml.Foundation' annotation=''
>>>>> tagId='org.omg.mof.idl_prefix' elements='a6'>
>>>>> <Model:Tag.values>
>>>>> <XMI.any xmi.type='string'>org.omg.uml.Foundation</XMI.any>
>>>>> </Model:Tag.values>
>>>>> </Model:Tag>
>>>>> <Model:Tag xmi.id='a66' name='org.omg.xmi.namespace=UML'
>>>>> annotation='' tagId='org.omg.xmi.namespace' elements='a6'>
>>>>> <Model:Tag.values>
>>>>> <XMI.any xmi.type='string'>UML</XMI.any>
>>>>> </Model:Tag.values>
>>>>> </Model:Tag>
>>>>> <Model:Class xmi.id='a67' name='Element' annotation=''
>>>>> isRoot='false' isLeaf='false' isAbstract='true'
>>>>> visibility='public_vis' isSingleton='false'>
>>>>> </Model:Class>
>>>>> <Model:Class xmi.id='a68' name='ModelElement' annotation=''
>>>>> isRoot='false' isLeaf='false' isAbstract='true'
>>>>> visibility='public_vis' isSingleton='false' supertypes='a67'>
>>>>> <Model:Namespace.contents>
>>>>> <Model:Attribute xmi.id='a69' name='name' annotation=''
>>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>>> isDerived='false' type='a39'>
>>>>> <Model:StructuralFeature.multiplicity>
>>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>>> </Model:StructuralFeature.multiplicity>
>>>>> </Model:Attribute>
>>>>> <Model:Attribute xmi.id='a70' name='visibility'
>>>>> annotation='' scope='instance_level' visibility='public_vis'
>>>>> isChangeable='true' isDerived='false' type='a37'>
>>>>> <Model:StructuralFeature.multiplicity>
>>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>>> </Model:StructuralFeature.multiplicity>
>>>>> </Model:Attribute>
>>>>> <Model:Attribute xmi.id='a71' name='isSpecification'
>>>>> annotation='' scope='instance_level' visibility='public_vis'
>>>>> isChangeable='true' isDerived='false' type='a26'>
>>>>> <Model:StructuralFeature.multiplicity>
>>>>> <XMI.field>1</XMI.field> <!-- lower -->
>>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>>> </Model:StructuralFeature.multiplicity>
>>>>> </Model:Attribute>
>>>>> <Model:Reference xmi.id='a72' name='namespace'
>>>>> annotation='' scope='instance_level' visibility='public_vis'
>>>>> isChangeable='true' type='a73' referencedEnd='a74'>
>>>>> <Model:StructuralFeature.multiplicity>
>>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>>> </Model:StructuralFeature.multiplicity>
>>>>> </Model:Reference>
>>>>> <Model:Reference xmi.id='a75' name='clientDependency'
>>>>> annotation='' scope='instance_level' visibility='public_vis'
>>>>> isChangeable='true' type='a76' referencedEnd='a77'>
>>>>> <Model:StructuralFeature.multiplicity>
>>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>>> </Model:StructuralFeature.multiplicity>
>>>>> </Model:Reference>
>>>>> <Model:Reference xmi.id='a78' name='constraint'
>>>>> annotation='' scope='instance_level' visibility='public_vis'
>>>>> isChangeable='true' type='a79' referencedEnd='a80'>
>>>>> <Model:StructuralFeature.multiplicity>
>>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>>> </Model:StructuralFeature.multiplicity>
>>>>> </Model:Reference>
>>>>> <Model:Reference xmi.id='a81' name='targetFlow'
>>>>> annotation='' scope='instance_level' visibility='public_vis'
>>>>> isChangeable='true' type='a82' referencedEnd='a83'>
>>>>> <Model:StructuralFeature.multiplicity>
>>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>>> </Model:StructuralFeature.multiplicity>
>>>>> </Model:Reference>
>>>>> <Model:Reference xmi.id='a84' name='sourceFlow'
>>>>> annotation='' scope='instance_level' visibility='public_vis'
>>>>> isChangeable='true' type='a82' referencedEnd='a85'>
>>>>> <Model:StructuralFeature.multiplicity>
>>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>>> </Model:StructuralFeature.multiplicity>
>>>>> </Model:Reference>
>>>>> <Model:Reference xmi.id='a86' name='comment' annotation=''
>>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>>> type='a87' referencedEnd='a88'>
>>>>> <Model:StructuralFeature.multiplicity>
>>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>>> </Model:StructuralFeature.multiplicity>
>>>>> </Model:Reference>
>>>>> <Model:Reference xmi.id='a89' name='templateParameter'
>>>>> annotation='' scope='instance_level' visibility='public_vis'
>>>>> isChangeable='true' type='a90' referencedEnd='a91'>
>>>>> <Model:StructuralFeature.multiplicity>
>>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>>> <XMI.field>true</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>>> </Model:StructuralFeature.multiplicity>
>>>>> </Model:Reference>
>>>>> <Model:Reference xmi.id='a92' name='stereotype'
>>>>> annotation='' scope='instance_level' visibility='public_vis'
>>>>> isChangeable='true' type='a93' referencedEnd='a94'>
>>>>> <Model:StructuralFeature.multiplicity>
>>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>>> </Model:StructuralFeature.multiplicity>
>>>>> </Model:Reference>
>>>>> <Model:Reference xmi.id='a95' name='taggedValue'
>>>>> annotation='' scope='instance_level' visibility='public_vis'
>>>>> isChangeable='true' type='a96' referencedEnd='a97'>
>>>>> <Model:StructuralFeature.multiplicity>
>>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>>> </Model:StructuralFeature.multiplicity>
>>>>> </Model:Reference>
>>>>> </Model:Namespace.contents>
>>>>> </Model:Class>
>>>>> <Model:Import xmi.id='a98' name='Data_Types' annotation=''
>>>>> visibility='public_vis' isClustered='true' importedNamespace='a4'>
>>>>> </Model:Import>
>>>>> <Model:Tag xmi.id='a99'
>>>>> name='org.omg.mof.idl_substitute_name=umlConstraint' annotation=''
>>>>> tagId='org.omg.mof.idl_substitute_name' elements='a78 a80'>
>>>>> <Model:Tag.values>
>>>>> <XMI.any xmi.type='string'>umlConstraint</XMI.any>
>>>>> </Model:Tag.values>
>>>>> </Model:Tag>
>>>>> <Model:Class xmi.id='a100' name='GeneralizableElement'
>>>>> annotation='' isRoot='false' isLeaf='false' isAbstract='true'
>>>>> visibility='public_vis' isSingleton='false' supertypes='a68'>
>>>>> <Model:Namespace.contents>
>>>>> <Model:Attribute xmi.id='a101' name='isRoot' annotation=''
>>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>>> isDerived='false' type='a26'>
>>>>> <Model:StructuralFeature.multiplicity>
>>>>> <XMI.field>1</XMI.field> <!-- lower -->
>>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>>> </Model:StructuralFeature.multiplicity>
>>>>> </Model:Attribute>
>>>>> <Model:Attribute xmi.id='a102' name='isLeaf' annotation=''
>>>>> scope='instance_level' visibility='public_vis' isChangeable='true'
>>>>> isDerived='false' type='a26'>
>>>>> <Model:StructuralFeature.multiplicity>
>>>>> <XMI.field>1</XMI.field> <!-- lower -->
>>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>>> </Model:StructuralFeature.multiplicity>
>>>>> </Model:Attribute>
>>>>> <Model:Attribute xmi.id='a103' name='isAbstract'
>>>>> annotation='' scope='instance_level' visibility='public_vis'
>>>>> isChangeable='true' isDerived='false' type='a26'>
>>>>> <Model:StructuralFeature.multiplicity>
>>>>> <XMI.field>1</XMI.field> <!-- lower -->
>>>>> <XMI.field>1</XMI.field> <!-- upper -->
>>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>false</XMI.field> <!-- is_unique -->
>>>>> </Model:StructuralFeature.multiplicity>
>>>>> </Model:Attribute>
>>>>> <Model:Reference xmi.id='a104' name='generalization'
>>>>> annotation='' scope='instance_level' visibility='public_vis'
>>>>> isChangeable='true' type='a105' referencedEnd='a106'>
>>>>> <Model:StructuralFeature.multiplicity>
>>>>> <XMI.field>0</XMI.field> <!-- lower -->
>>>>> <XMI.field>-1</XMI.field> <!-- upper -->
>>>>> <XMI.field>false</XMI.field> <!-- is_ordered -->
>>>>> <XMI.field>true</XMI.field> <!-- is_unique -->
>>>>> </Model:StructuralFeature.multiplicity>
>>>>> </Model:Reference>
>>>>> </Model:Namespace.contents>
>>>>> </Model:Class>
>>>>> <Model:Class xmi.id='a73' name='Namespace' annotation=''
>>>>> isRoot='false' isLeaf='false' isAbstract='true'
>>>>> visibility='public_vis' isSingleton='false' supertypes='a68'>
>>>>> <Model:Namespace.contents>
>>>>> <Model:Reference xmi.id='a107' name='ownedElement'
>>>>> annotation='' scope='instance_level' visibility='public_vis'
>>>>> isChangeable='true' type='a68' referencedEnd='a108'>
>>>>> <Model:StructuralFeature.multiplicity>
>>>>> <X
Previous Topic:[Epsilon] Using OCL in Meta-Model level
Next Topic:Dynamic Expand
Goto Forum:
  


Current Time: Tue Apr 16 14:26:37 GMT 2024

Powered by FUDForum. Page generated in 1.66976 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top