[Uml-devel] TagDefinition/TaggedValue

Anastasios Hatzis ah at hatzis.de
Wed May 9 19:57:00 UTC 2007

Hi :)

I'm author of pyswarm, a light-weight MDA tool written in Python and 
generating Python apps and SQL for PostgreSQL databases. (see end of mail for 
some links)

AFAIK, currently the prototype can only import UML2 PIMs stored in the XMI 2.1 
format by MagicDraw 11.0. Since pyswarm is a GPL tool I would like to add 
support for other, Free Software UML tools, such as Umbrello. Future release 
should also be able to export to other XMI formats.

Due to partially significant differences between XMI dialects of tools I think 
of a two-step exchange approach:

    (A) XMI differences (e.g. missing features, ambigious specs, bugs) are 
handled in a kind of XMI mapping layer
    (B) UML differences (e.g. missing features, ambigious specs, bugs) are 
handled in a layer between XMI and my tool's own UML2 model layer. I expect 
that this is harder to work with.

I have built a platform-independent model (PIM) named "PetStore" which uses 
all pyswarm features currently supported and is the example project in the 
pyswarm tutorial for newbies. Now I started to re-create the same model in 
other tools, and also started one in Umbrello 1.5.5 (which is the latest 
version on my Kubuntu 6.10) in order to examine the practical differences in 
the XMI outputs.

As it seems to me, I already have discovered some missing features in Umbrello 
but where some of them I can easily work-around, such as that Profile is 
missing (work-around: use Package instead and give a specific name which my 
importer willl look for). Others are more difficult, so TagDefinition / 
TaggedValue are.

PIMs for pyswarm are expected to have TagDefinitions that are owned by 
stereotypes and can be of different type: enumeration, string, boolean.

Stereotypes can't be assigned to any UML elements. For example «pyswarm.zone» 
is for uml:class only, «pyswarm.component.database» for uml:package.

Most of the stereotypes have TagDefinitions and if stereotype is applied to an 
element in PIM the user usually also needs to define one or more TaggedValue 
for the particular element. For example connection data 
for «pyswarm.component.database» are specified with tags: user, password, 
host, port, ...

Thus I can't replace missing tags in PIMs with some default values for. So I 
need an alternative.

Do you have any idea how an Umbrello user would be able to add some kinda 
TaggedValue information to a model element? I can change the SDK to work 
with-out TagDefinitions but instead process just plain properties assigned to 
an element. Each "pseudo-tag" would be just a pair: (name:string, 

Would be great if this would be possible somehow.

Thank you,

Information, overview + download: http://pyswarm.sourceforge.net/
Documentation 0.7.1: http://pyswarm.sourceforge.net/doc/0.7.1/
Drafts regarding 1.0: http://pyswarm.wiki.sourceforge.net/

More information about the umbrello-devel mailing list