ontomde-core 2.0.0 → 2.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. data/Manifest.txt +6 -7
  2. data/lib/ontomde-core/completion.rb +4 -4
  3. data/lib/ontomde-core/converter-ea/{XMI2RDFS.xslt → 7_1_829/XMI2RDFS.xslt} +39 -34
  4. data/lib/ontomde-core/converter-ea/7_1_829/XMI2RDFS_step2.xslt +24 -0
  5. data/lib/ontomde-core/converter-ea/7_1_833/XMI2RDFS.xslt +817 -0
  6. data/lib/ontomde-core/converter-ea/7_1_833/XMI2RDFS_step2.xslt +24 -0
  7. data/lib/ontomde-core/converter-ea/7_5_843/XMI2RDFS.xslt +817 -0
  8. data/lib/ontomde-core/converter-ea/7_5_843/XMI2RDFS_step2.xslt +24 -0
  9. data/lib/ontomde-core/customERB.rb +1 -1
  10. data/lib/ontomde-core/custom_method_missing.rb +6 -6
  11. data/lib/ontomde-core/fileLoader.rb +49 -34
  12. data/lib/ontomde-core/fileTypes.rb +10 -10
  13. data/lib/ontomde-core/helper.rb +46 -21
  14. data/lib/ontomde-core/inspector.rb +2 -2
  15. data/lib/ontomde-core/log.rb +1 -1
  16. data/lib/ontomde-core/meta.rb +15 -15
  17. data/lib/ontomde-core/resource.rb +12 -10
  18. data/lib/ontomde-core/resourceSet.rb +3 -1
  19. data/lib/ontomde-core/triplet.rb +2 -0
  20. data/lib/ontomde-core/version.rb +1 -1
  21. metadata +8 -9
  22. data/lib/ontomde-core/inspector/rails/vendor/plugins/auto_complete/README +0 -23
  23. data/lib/ontomde-core/inspector/rails/vendor/plugins/auto_complete/Rakefile +0 -22
  24. data/lib/ontomde-core/inspector/rails/vendor/plugins/auto_complete/init.rb +0 -2
  25. data/lib/ontomde-core/inspector/rails/vendor/plugins/auto_complete/lib/auto_complete.rb +0 -47
  26. data/lib/ontomde-core/inspector/rails/vendor/plugins/auto_complete/lib/auto_complete_macros_helper.rb +0 -143
  27. data/lib/ontomde-core/inspector/rails/vendor/plugins/auto_complete/test/auto_complete_test.rb +0 -67
@@ -0,0 +1,817 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xsl:stylesheet version="2.0" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:uml="http://schema.omg.org/spec/UML/2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ns0="http://uml/2#">
3
+ <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
4
+
5
+ <!-- Create Defined and used Stereotypes for later creation of missing stereotype definitions -->
6
+ <xsl:key name="definedStereotypes" match="packagedElement[@xmi:type='uml:Stereotype']" use="@name"/>
7
+ <xsl:key name="usedStereotypes" match="*[@stereotype]" use="@stereotype" />
8
+ <xsl:key name="ExtensionElementIdRef" match="//xmi:Extension//element" use="@xmi:idref"/>
9
+ <xsl:key name="ExtensionAttributeIdRef" match="//xmi:Extension//attribute" use="@xmi:idref"/>
10
+ <xsl:key name="ExtensionConnectorIdRef" match="//xmi:Extension//connector" use="@xmi:idref"/>
11
+ <xsl:key name="ExtensionOperationIdRef" match="//xmi:Extension//operation" use="@xmi:idref"/>
12
+ <xsl:key name="ExtensionParameterIdRef" match="//xmi:Extension//parameter" use="@xmi:idref"/>
13
+
14
+ <!-- Profile -->
15
+ <xsl:template name="Profile" xmlns:uml="http://schema.omg.org/spec/UML/2.1/uml.xml">
16
+ <!-- profile structure is not used
17
+ <rdf:Description rdf:about="{@xmi:id}" ns0:name="{@name}">
18
+ <rdf:type rdf:resource="http://uml/2#Profile"/>
19
+ <ns0:visibility rdf:resource="http://uml/2#visibilityKind_public"/>
20
+ </rdf:Description>
21
+ -->
22
+ <!-- Stereotype -->
23
+ <xsl:apply-templates select="packagedElement[@xmi:type='uml:Stereotype']"/>
24
+ </xsl:template>
25
+ <!-- Stereotype -->
26
+ <xsl:template name="Stereotype">
27
+ <xsl:variable name="id" select="string(translate(@xmi:id, ' ', ''))"/>
28
+ <!--
29
+ <rdf:Description rdf:about="{../@xmi:id}">
30
+ <ns0:ownedMember rdf:resource="{$id}"/>
31
+ </rdf:Description>
32
+ -->
33
+ <rdf:Description rdf:about="{$id}" ns0:name="{@name}">
34
+ <rdf:type rdf:resource="http://uml/2#Stereotype"/>
35
+ <ns0:visibility rdf:resource="http://uml/2#visibilityKind_public"/>
36
+ </rdf:Description>
37
+ </xsl:template>
38
+
39
+ <!-- Add Stereotyped used but not defined -->
40
+ <xsl:template name="addStereotypeFromLabelIfDefinitionIsMissing">
41
+ <xsl:variable name="id" select="string(translate(., ' ', ''))"/>
42
+ <xsl:if test="not(key('definedStereotypes',$id))">
43
+ <rdf:Description rdf:about="{$id}" ns0:name="{.}">
44
+ <rdf:type rdf:resource="http://uml/2#Stereotype"/>
45
+ </rdf:Description>
46
+ </xsl:if>
47
+ </xsl:template>
48
+
49
+ <!-- GeneralClass -->
50
+ <xsl:template name="GeneralClass">
51
+ <!-- Documentation -->
52
+ <xsl:if test="key('ExtensionElementIdRef',current()/@xmi:id)/properties/@documentation">
53
+ <xsl:call-template name="Comment">
54
+ <xsl:with-param name="body" select="key('ExtensionElementIdRef',current()/@xmi:id)/properties/@documentation"/>
55
+ </xsl:call-template>
56
+ </xsl:if>
57
+ <!-- Stereotype -->
58
+ <rdf:Description rdf:about="{@xmi:id}" ns0:name="{@name}">
59
+ <xsl:if test="key('ExtensionElementIdRef',current()/@xmi:id)/properties/@stereotype">
60
+ <ns0:appliedStereotype rdf:resource="{key('ExtensionElementIdRef',current()/@xmi:id)/properties/@stereotype}"/>
61
+ </xsl:if>
62
+ <ns0:visibility rdf:resource="http://uml/2#visibilityKind_{@visibility}"/>
63
+ <xsl:if test="@isAbstract='true'">
64
+ <ns0:isAbstract>true</ns0:isAbstract>
65
+ </xsl:if>
66
+ </rdf:Description>
67
+
68
+ <!-- generalization -->
69
+ <xsl:apply-templates select="generalization"/>
70
+ <xsl:variable name="id" select="string(@xmi:id)"/>
71
+ <!-- ownedMember => uml:Realization -->
72
+ <xsl:for-each select="//packagedElement[@xmi:type='uml:Realization' and @client=$id]">
73
+ <rdf:Description rdf:about="{$id}">
74
+ <ns0:implementation rdf:resource="{@xmi:id}"/>
75
+ </rdf:Description>
76
+ <rdf:Description rdf:about="{@xmi:id}">
77
+ <rdf:type rdf:resource="http://uml/2#Implementation"/>
78
+ <ns0:visibility rdf:resource="http://uml/2#visibilityKind_public"/>
79
+ <ns0:client rdf:resource="{@client}"/>
80
+ <ns0:supplier rdf:resource="{@supplier}"/>
81
+ <ns0:realizingClassifier rdf:resource="{@realizingClassifier}"/>
82
+ <ns0:implementingClassifier rdf:resource="{@client}"/>
83
+ </rdf:Description>
84
+ </xsl:for-each>
85
+ <!-- ownedAttribute -->
86
+ <xsl:apply-templates select="ownedAttribute"/>
87
+ <!-- ownedOperation -->
88
+ <xsl:apply-templates select="ownedOperation"/>
89
+ </xsl:template>
90
+ <!-- Comment -->
91
+ <xsl:template name="Comment">
92
+ <xsl:param name="body"/>
93
+ <rdf:Description rdf:about="{@xmi:id}">
94
+ <xsl:call-template name="CommentDescription">
95
+ <xsl:with-param name="body" select="$body"/>
96
+ </xsl:call-template>
97
+ </rdf:Description>
98
+ </xsl:template>
99
+ <xsl:template name="CommentDescription">
100
+ <xsl:param name="body"/>
101
+ <ns0:ownedComment>
102
+ <rdf:Description rdf:about="_comment{@xmi:id}">
103
+ <rdf:type rdf:resource="http://uml/2#Comment"/>
104
+ <ns0:body>
105
+ <xsl:text disable-output-escaping="yes">&lt;![CDATA[</xsl:text>
106
+ <xsl:value-of disable-output-escaping="yes" select="$body"/>
107
+ <xsl:text disable-output-escaping="yes">]]&gt;</xsl:text>
108
+ </ns0:body>
109
+ <ns0:annotatedElement rdf:resource="{../@xmi:id}"/>
110
+ </rdf:Description>
111
+ </ns0:ownedComment>
112
+ </xsl:template>
113
+ <!-- Package -->
114
+ <xsl:template name="Package">
115
+ <rdf:Description rdf:about="{@xmi:id}">
116
+ <rdf:type rdf:resource="http://uml/2#Package"/>
117
+ </rdf:Description>
118
+ <xsl:call-template name="GeneralClass"/>
119
+ </xsl:template>
120
+ <!-- Class -->
121
+ <xsl:template name="Class">
122
+ <rdf:Description rdf:about="{@xmi:id}">
123
+ <rdf:type rdf:resource="http://uml/2#Class"/>
124
+ </rdf:Description>
125
+ <xsl:call-template name="GeneralClass"/>
126
+ <!-- nestedClassifier -->
127
+ <xsl:apply-templates select="nestedClassifier"/>
128
+ </xsl:template>
129
+ <!-- Interface -->
130
+ <xsl:template name="Interface">
131
+ <rdf:Description rdf:about="{@xmi:id}">
132
+ <rdf:type rdf:resource="http://uml/2#Interface"/>
133
+ </rdf:Description>
134
+ <xsl:call-template name="GeneralClass"/>
135
+ </xsl:template>
136
+ <!-- Component -->
137
+ <xsl:template name="Component">
138
+ <rdf:Description rdf:about="{@xmi:id}">
139
+ <rdf:type rdf:resource="http://uml/2#Component"/>
140
+ </rdf:Description>
141
+ <xsl:call-template name="GeneralClass"/>
142
+ </xsl:template>
143
+ <!-- Signal -->
144
+ <xsl:template name="Signal">
145
+ <rdf:Description rdf:about="{@xmi:id}">
146
+ <rdf:type rdf:resource="http://uml/2#Signal"/>
147
+ </rdf:Description>
148
+ <xsl:call-template name="GeneralClass"/>
149
+ </xsl:template>
150
+ <!-- UseCase -->
151
+ <xsl:template name="UseCase">
152
+ <rdf:Description rdf:about="{@xmi:id}">
153
+ <rdf:type rdf:resource="http://uml/2#UseCase"/>
154
+ </rdf:Description>
155
+ <xsl:call-template name="GeneralClass"/>
156
+ </xsl:template>
157
+ <!-- Association -->
158
+ <xsl:template name="Association">
159
+ <rdf:Description rdf:about="{@xmi:id}">
160
+ <rdf:type rdf:resource="http://uml/2#Association"/>
161
+ <xsl:if test="@name">
162
+ <ns0:name>
163
+ <xsl:value-of select="@name"/>
164
+ </ns0:name>
165
+ </xsl:if>
166
+ <!-- Destination -->
167
+ <ns0:memberEnd rdf:resource="{memberEnd[1]/@xmi:idref}"/>
168
+ <!-- Source -->
169
+ <ns0:memberEnd rdf:resource="{memberEnd[2]/@xmi:idref}"/>
170
+ </rdf:Description>
171
+ <!-- Owner -->
172
+ <xsl:apply-templates select="ownedEnd"/>
173
+ </xsl:template>
174
+ <!-- Enumeration -->
175
+ <xsl:template name="Enumeration">
176
+ <!-- Documentation -->
177
+ <xsl:if test="key('ExtensionElementIdRef',current()/@xmi:id)/properties/@documentation">
178
+ <xsl:call-template name="Comment">
179
+ <xsl:with-param name="body" select="key('ExtensionElementIdRef',current()/@xmi:id)/properties/@documentation"/>
180
+ </xsl:call-template>
181
+ </xsl:if>
182
+ <rdf:Description rdf:about="{@xmi:id}" ns0:name="{@name}">
183
+ <rdf:type rdf:resource="http://uml/2#Enumeration"/>
184
+ <ns0:visibility rdf:resource="http://uml/2#visibilityKind_{@visibility}"/>
185
+ </rdf:Description>
186
+ <xsl:for-each select="ownedLiteral">
187
+ <!-- ownedLiteral -->
188
+ <xsl:if test="key('ExtensionAttributeIdRef',current()/@xmi:id)/stereotype/@stereotype='enum'">
189
+ <xsl:call-template name="Literal"/>
190
+ </xsl:if>
191
+ </xsl:for-each>
192
+ <xsl:for-each select="ownedAttribute">
193
+ <!-- ownedAttribute -->
194
+ <xsl:if test="not(key('ExtensionAttributeIdRef',current()/@xmi:id)/stereotype/@stereotype='enum')">
195
+ <rdf:Description rdf:about="{../@xmi:id}">
196
+ <ns0:ownedAttribute rdf:resource="{@xmi:id}"/>
197
+ </rdf:Description>
198
+ <xsl:call-template name="Attribute"/>
199
+ </xsl:if>
200
+ </xsl:for-each>
201
+ <!-- ownedOperation -->
202
+ <xsl:apply-templates select="ownedOperation"/>
203
+ </xsl:template>
204
+ <!-- Attribute -->
205
+ <xsl:template name="Attribute">
206
+ <rdf:Description rdf:about="{@xmi:id}">
207
+ <rdf:type rdf:resource="http://uml/2#Property"/>
208
+ </rdf:Description>
209
+ <xsl:choose>
210
+ <xsl:when test="@association">
211
+ <xsl:variable name="connector" select="key('ExtensionConnectorIdRef',current()/@association)"/>
212
+ <xsl:variable name="thisEnd" select="$connector/source[role/@name=current()/@name]|$connector/target[role/@name=current()/@name]"/>
213
+ <xsl:variable name="otherEnd" select="$connector/source[not(role/@name=current()/@name)]|$connector/target[not(role/@name=current()/@name)]"/>
214
+
215
+ <!-- Documentation -->
216
+ <xsl:if test="$connector/documentation/@value">
217
+ <xsl:call-template name="Comment">
218
+ <xsl:with-param name="body" select="$connector/documentation/@value"/>
219
+ </xsl:call-template>
220
+ </xsl:if>
221
+ <xsl:if test="@name">
222
+ <rdf:Description rdf:about="{@xmi:id}" ns0:name="{@name}"/>
223
+ </xsl:if>
224
+ <xsl:if test="@isDerived='true'">
225
+ <rdf:Description rdf:about="{@xmi:id}" ns0:isDerived="true" />
226
+ </xsl:if>
227
+ <xsl:if test="@isOrdered='true'">
228
+ <rdf:Description rdf:about="{@xmi:id}" ns0:isOrdered="true"/>
229
+ </xsl:if>
230
+ <!-- TaggedValue isUnique -->
231
+ <xsl:choose>
232
+ <xsl:when test="contains($thisEnd/style/@value,'AllowDuplicates=1')">
233
+ <rdf:Description rdf:about="{@xmi:id}">
234
+ <ns0:isUnique>false</ns0:isUnique>
235
+ </rdf:Description>
236
+ </xsl:when>
237
+ <xsl:otherwise>
238
+ <rdf:Description rdf:about="{@xmi:id}">
239
+ <ns0:isUnique>true</ns0:isUnique>
240
+ </rdf:Description>
241
+ </xsl:otherwise>
242
+ </xsl:choose>
243
+ <rdf:Description rdf:about="{@xmi:id}">
244
+ <ns0:visibility rdf:resource="http://uml/2#visibilityKind_{@visibility}"/>
245
+ <!-- Stereotype -->
246
+ <xsl:if test="$thisEnd/role/@stereotype">
247
+ <ns0:appliedStereotype rdf:resource="{$thisEnd/role/@stereotype}"/>
248
+ </xsl:if>
249
+ <ns0:association rdf:resource="{@association}"/>
250
+ <ns0:aggregation rdf:resource="http://uml/2#aggregationKind_{$connector/source/type/@aggregation}"/>
251
+ </rdf:Description>
252
+ <xsl:variable name="qual" select="$otherEnd/constraints/@qualifier"/>
253
+ <xsl:if test="$qual">
254
+ <rdf:Description rdf:about="{@xmi:id}">
255
+ <ns0:qualifier rdf:resource="_qualifier{@xmi:id}"/>
256
+ </rdf:Description>
257
+ <rdf:Description rdf:about="_qualifier{@xmi:id}" ns0:name="{substring-before($qual, ':')}" ns0:isUnique="true">
258
+ <rdf:type rdf:resource="http://uml/2#Property"/>
259
+ <ns0:type rdf:resource="EAJava_{substring-after($qual, ':')}"/>
260
+ <ns0:visibility rdf:resource="http://uml/2#visibilityKind_private"/>
261
+ <ns0:aggregation rdf:resource="http://uml/2#aggregationKind_none"/>
262
+ <ns0:associationEnd rdf:resource="{@xmi:id}"/>
263
+ </rdf:Description>
264
+ </xsl:if>
265
+ <xsl:if test="$thisEnd/modifiers/@changeable='frozen'">
266
+ <!-- TODO : not in testsuite -->
267
+ <rdf:Description rdf:about="{@xmi:id}" ns0:isReadOnly="true"/>
268
+ </xsl:if>
269
+ <rdf:Description rdf:about="{@xmi:id}">
270
+ <ns0:lowerValue rdf:resource="_lowerValue{@xmi:id}"/>
271
+ <ns0:upperValue rdf:resource="_upperValue{@xmi:id}"/>
272
+ </rdf:Description>
273
+ <!-- <xsl:variable name="card" select="string($connector/target/type/@multiplicity)"/>
274
+
275
+ <xsl:variable name="lower" select="string(substring-before($card, '..'))"/>
276
+ <xsl:variable name="upper" select="string(substring-after($card, '..'))"/>
277
+ -->
278
+ <rdf:Description rdf:about="_lowerValue{@xmi:id}">
279
+ <rdf:type rdf:resource="http://uml/2#LiteralUnlimitedNatural"/>
280
+ <ns0:value>
281
+ <xsl:value-of select="lowerValue/@value"/>
282
+ </ns0:value>
283
+ </rdf:Description>
284
+ <rdf:Description rdf:about="_upperValue{@xmi:id}">
285
+ <rdf:type rdf:resource="http://uml/2#LiteralUnlimitedNatural"/>
286
+ <ns0:value>
287
+ <xsl:value-of select="upperValue/@value"/>
288
+ </ns0:value>
289
+ </rdf:Description>
290
+ </xsl:when>
291
+ <xsl:otherwise>
292
+ <xsl:variable name="attribute" select="key('ExtensionAttributeIdRef',current()/@xmi:id)"/>
293
+ <!-- Documentation -->
294
+ <xsl:if test="$attribute/documentation/@value">
295
+ <xsl:call-template name="Comment">
296
+ <xsl:with-param name="body" select="$attribute/documentation/@value"/>
297
+ </xsl:call-template>
298
+ </xsl:if>
299
+ <xsl:if test="@name">
300
+ <rdf:Description rdf:about="{@xmi:id}" ns0:name="{@name}"/>
301
+ </xsl:if>
302
+ <xsl:if test="@isStatic='true'">
303
+ <rdf:Description rdf:about="{@xmi:id}">
304
+ <ns0:isStatic>true</ns0:isStatic>
305
+ </rdf:Description>
306
+ </xsl:if>
307
+ <xsl:if test="@isDerived='true'">
308
+ <rdf:Description rdf:about="{@xmi:id}">
309
+ <ns0:isDerived>true</ns0:isDerived>
310
+ </rdf:Description>
311
+ </xsl:if>
312
+ <xsl:if test="@isOrdered='true'">
313
+ <rdf:Description rdf:about="{@xmi:id}">
314
+ <ns0:isOrdered>true</ns0:isOrdered>
315
+ </rdf:Description>
316
+ </xsl:if>
317
+ <!-- TaggedValue isUnique -->
318
+ <xsl:choose>
319
+ <xsl:when test="$attribute/properties/@duplicates='1'">
320
+ <rdf:Description rdf:about="{@xmi:id}">
321
+ <ns0:isUnique>false</ns0:isUnique>
322
+ </rdf:Description>
323
+ </xsl:when>
324
+ <xsl:otherwise>
325
+ <rdf:Description rdf:about="{@xmi:id}">
326
+ <ns0:isUnique>true</ns0:isUnique>
327
+ </rdf:Description>
328
+ </xsl:otherwise>
329
+ </xsl:choose>
330
+ <rdf:Description rdf:about="{@xmi:id}">
331
+ <ns0:visibility rdf:resource="http://uml/2#visibilityKind_{@visibility}"/>
332
+ </rdf:Description>
333
+ <!-- Stereotype -->
334
+ <xsl:if test="$attribute/stereotype/@stereotype">
335
+ <rdf:Description rdf:about="{@xmi:id}">
336
+ <ns0:appliedStereotype rdf:resource="{$attribute/stereotype/@stereotype}"/>
337
+ </rdf:Description>
338
+ </xsl:if>
339
+ <rdf:Description rdf:about="{@xmi:id}">
340
+ <ns0:lowerValue rdf:resource="{lowerValue/@xmi:id}"/>
341
+ <ns0:upperValue rdf:resource="{upperValue/@xmi:id}"/>
342
+ </rdf:Description>
343
+ <rdf:Description rdf:about="{lowerValue/@xmi:id}">
344
+ <rdf:type rdf:resource="http://uml/2#{substring-after(lowerValue/@xmi:type, ':')}"/>
345
+ <ns0:value>
346
+ <xsl:value-of select="lowerValue/@value"/>
347
+ </ns0:value>
348
+ </rdf:Description>
349
+ <rdf:Description rdf:about="{upperValue/@xmi:id}">
350
+ <rdf:type rdf:resource="http://uml/2#{substring-after(upperValue/@xmi:type, ':')}"/>
351
+ <ns0:value>
352
+ <xsl:value-of select="upperValue/@value"/>
353
+ </ns0:value>
354
+ </rdf:Description>
355
+ </xsl:otherwise>
356
+ </xsl:choose>
357
+ <xsl:if test="type">
358
+ <rdf:Description rdf:about="{@xmi:id}">
359
+ <ns0:type rdf:resource="{type/@xmi:idref}"/>
360
+ </rdf:Description>
361
+ </xsl:if>
362
+ </xsl:template>
363
+ <!-- Literal -->
364
+ <xsl:template name="Literal">
365
+ <!-- Documentation -->
366
+ <xsl:if test="key('ExtensionAttributeIdRef',current()/@xmi:id)/documentation/@value">
367
+ <xsl:call-template name="Comment">
368
+ <xsl:with-param name="body" select="key('ExtensionAttributeIdRef', current()/@xmi:id)/documentation/@value"/>
369
+ </xsl:call-template>
370
+ </xsl:if>
371
+ <rdf:Description rdf:about="{../@xmi:id}">
372
+ <ns0:ownedLiteral rdf:resource="{@xmi:id}"/>
373
+ </rdf:Description>
374
+ <rdf:Description rdf:about="{@xmi:id}" ns0:name="{@name}">
375
+ <rdf:type rdf:resource="http://uml/2#EnumerationLiteral"/>
376
+ <ns0:visibility rdf:resource="http://uml/2#visibilityKind_{@visibility}"/>
377
+ <ns0:enumeration rdf:resource="{../@xmi:id}"/>
378
+ </rdf:Description>
379
+ </xsl:template>
380
+ <!-- ownedEnd -->
381
+ <xsl:template name="ownedEnd">
382
+ <xsl:variable name="connector" select="key('ExtensionConnectorIdRef',current()/@association)"/>
383
+ <rdf:Description rdf:about="{@xmi:id}">
384
+ <rdf:type rdf:resource="http://uml/2#Property"/>
385
+ <xsl:if test="@name">
386
+ <ns0:name>
387
+ <xsl:value-of select="@name"/>
388
+ </ns0:name>
389
+ </xsl:if>
390
+ <xsl:if test="@isDerived='true'">
391
+ <ns0:isDerived>true</ns0:isDerived>
392
+ </xsl:if>
393
+ <xsl:if test="@isOrdered='true'">
394
+ <ns0:isOrdered>true</ns0:isOrdered>
395
+ </xsl:if>
396
+ </rdf:Description>
397
+
398
+ <!-- TaggedValue isUnique -->
399
+ <xsl:choose>
400
+ <xsl:when test="contains($connector/source/style/@value,'AllowDuplicates=1')">
401
+ <rdf:Description rdf:about="{@xmi:id}">
402
+ <ns0:isUnique>false</ns0:isUnique>
403
+ </rdf:Description>
404
+ </xsl:when>
405
+ <xsl:otherwise>
406
+ <rdf:Description rdf:about="{@xmi:id}">
407
+ <ns0:isUnique>true</ns0:isUnique>
408
+ </rdf:Description>
409
+ </xsl:otherwise>
410
+ </xsl:choose>
411
+ <rdf:Description rdf:about="{@xmi:id}">
412
+ <ns0:visibility rdf:resource="http://uml/2#visibilityKind_{@visibility}"/>
413
+ </rdf:Description>
414
+ <rdf:Description rdf:about="{@xmi:id}">
415
+ <ns0:association rdf:resource="{@association}"/>
416
+ </rdf:Description>
417
+ <rdf:Description rdf:about="{@xmi:id}">
418
+ <ns0:aggregation rdf:resource="http://uml/2#aggregationKind_{@aggregation}"/>
419
+ </rdf:Description>
420
+ <rdf:Description rdf:about="{@xmi:id}">
421
+ <ns0:lowerValue rdf:resource="_lowerValue{@xmi:id}"/>
422
+ </rdf:Description>
423
+ <rdf:Description rdf:about="_lowerValue{@xmi:id}">
424
+ <rdf:type rdf:resource="http://uml/2#LiteralUnlimitedNatural"/>
425
+ </rdf:Description>
426
+ <rdf:Description rdf:about="_lowerValue{@xmi:id}">
427
+ <ns0:value>
428
+ <xsl:value-of select="lowerValue/@value"/>
429
+ </ns0:value>
430
+ </rdf:Description>
431
+ <rdf:Description rdf:about="{@xmi:id}">
432
+ <ns0:upperValue rdf:resource="_upperValue{@xmi:id}"/>
433
+ </rdf:Description>
434
+ <rdf:Description rdf:about="_upperValue{@xmi:id}">
435
+ <rdf:type rdf:resource="http://uml/2#LiteralUnlimitedNatural"/>
436
+ </rdf:Description>
437
+ <rdf:Description rdf:about="_upperValue{@xmi:id}">
438
+ <ns0:value>
439
+ <xsl:value-of select="upperValue/@value"/>
440
+ </ns0:value>
441
+ </rdf:Description>
442
+ <xsl:if test="type">
443
+ <rdf:Description rdf:about="{@xmi:id}">
444
+ <ns0:type rdf:resource="{type/@xmi:idref}"/>
445
+ </rdf:Description>
446
+ </xsl:if>
447
+ </xsl:template>
448
+ <!-- Operation -->
449
+ <xsl:template name="Operation">
450
+ <!-- Documentation -->
451
+ <xsl:if test="key('ExtensionOperationIdRef',current()/@xmi:id)/documentation/@value">
452
+ <xsl:call-template name="Comment">
453
+ <xsl:with-param name="body" select="key('ExtensionOperationIdRef',current()/@xmi:id)/documentation/@value"/>
454
+ </xsl:call-template>
455
+ </xsl:if>
456
+ <rdf:Description rdf:about="{@xmi:id}" ns0:name="{@name}">
457
+ <rdf:type rdf:resource="http://uml/2#Operation"/>
458
+ <ns0:visibility rdf:resource="http://uml/2#visibilityKind_{@visibility}"/>
459
+ </rdf:Description>
460
+ <!-- Stereotype -->
461
+ <xsl:if test="key('ExtensionOperationIdRef',current()/@xmi:id)/stereotype/@stereotype">
462
+ <rdf:Description rdf:about="{@xmi:id}">
463
+ <ns0:appliedStereotype rdf:resource="{key('ExtensionOperationIdRef',current()/@xmi:id)/stereotype/@stereotype}"/>
464
+ </rdf:Description>
465
+ </xsl:if>
466
+ <xsl:if test="@isAbstract='true'">
467
+ <rdf:Description rdf:about="{@xmi:id}">
468
+ <ns0:isAbstract>true</ns0:isAbstract>
469
+ </rdf:Description>
470
+ </xsl:if>
471
+ <xsl:if test="@isStatic='true'">
472
+ <rdf:Description rdf:about="{@xmi:id}">
473
+ <ns0:isStatic>true</ns0:isStatic>
474
+ </rdf:Description>
475
+ </xsl:if>
476
+ <!-- ownedParameter -->
477
+ <xsl:variable name="method" select="."/>
478
+ <xsl:apply-templates select="ownedParameter"/>
479
+ <!-- raisedException -->
480
+ <xsl:variable name="id" select="string(@xmi:id)"/>
481
+
482
+ <xsl:for-each select="key('ExtensionOperationIdRef',current()/@xmi:id)/tags/tag[@name='throws']">
483
+ <xsl:variable name="exceptionName" select="current()"/>
484
+ <xsl:variable name="classRaised" select="//packagedElement[@xmi:type='uml:Class' and @name=current()/@value]/@xmi:id"/>
485
+ <xsl:choose>
486
+ <xsl:when test="$classRaised">
487
+ <rdf:Description rdf:about="{$id}">
488
+ <ns0:raisedException rdf:resource="{$classRaised}"/>
489
+ </rdf:Description>
490
+ </xsl:when>
491
+ <xsl:otherwise>
492
+ <!-- Method raised an exception but we were not able to find it in model -->
493
+ <!-- We are going to create a class for this exception with a meaningful name so user knows what to fix -->
494
+ <!-- Class will be stored in the same package as the one containing our method -->
495
+ <!-- TODO: support case when method is in an inner class -->
496
+ <xsl:variable name="gid" select="string($method/@xmi:id)"/>
497
+ <rdf:Description rdf:about="{$id}">
498
+ <ns0:raisedException rdf:resource="{$method/@xmi:id}_{generate-id($exceptionName)}"/>
499
+ </rdf:Description>
500
+ <rdf:Description rdf:about="{$method/../../@xmi:id}">
501
+ <ns0:ownedMember rdf:resource="{$method/@xmi:id}_{generate-id($exceptionName)}"/>
502
+ </rdf:Description>
503
+ <rdf:Description rdf:about="{$method/@xmi:id}_{generate-id($exceptionName)}">
504
+ <rdf:type rdf:resource="http://uml/2#Class"/>
505
+ <ns0:name>FIX_UML_MODEL_unknown_exception_<xsl:value-of select="$exceptionName"/>_thrown_by_<xsl:value-of select="$method/@name"/></ns0:name>
506
+ </rdf:Description>
507
+ </xsl:otherwise>
508
+ </xsl:choose>
509
+ </xsl:for-each>
510
+ </xsl:template>
511
+ <!-- Parameter -->
512
+ <xsl:template name="Parameter">
513
+ <!-- Documentation -->
514
+ <xsl:if test="key('ExtensionParameterIdRef',current()/@xmi:id)/documentation/@value">
515
+ <xsl:call-template name="Comment">
516
+ <xsl:with-param name="body" select="key('ExtensionParameterIdRef',current()/@xmi:id)/documentation/@value"/>
517
+ </xsl:call-template>
518
+ </xsl:if>
519
+ <rdf:Description rdf:about="{@xmi:id}" ns0:name="{@name}">
520
+ <rdf:type rdf:resource="http://uml/2#Parameter"/>
521
+ <ns0:direction rdf:resource="http://uml/2#parameterDirectionKind_{@direction}"/>
522
+ <xsl:if test="@type">
523
+ <ns0:type rdf:resource="{@type}"/>
524
+ </xsl:if>
525
+ </rdf:Description>
526
+ <!-- BUG Export XMI EA
527
+ <xsl:if test="not(@type)">
528
+ <xsl:if test="key('ExtensionParameterIdRef',current()/@xmi:id)/properties/@type != 'void'">
529
+ <rdf:Description rdf:about="{@xmi:id}">
530
+ <ns0:type rdf:resource="_{key('ExtensionParameterIdRef',current()/@xmi:id)/properties/@type}DataType"/>
531
+ </rdf:Description>
532
+ </xsl:if>
533
+
534
+ </xsl:if>
535
+ -->
536
+ </xsl:template>
537
+ <!-- xmi:XMI -->
538
+ <xsl:template match="xmi:XMI">
539
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:uml="http://schema.omg.org/spec/UML/2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1">
540
+ <!-- ownedMember -->
541
+ <xsl:apply-templates select="uml:Model"/>
542
+
543
+ <xsl:for-each select="//packagedElement[@xmi:type='uml:Stereotype']">
544
+ <xsl:call-template name="Stereotype"/>
545
+ </xsl:for-each>
546
+
547
+ <!-- list every stereotype used and call template which will add it if EA has forgotten to do so -->
548
+ <xsl:for-each select="//*[@stereotype][generate-id()=generate-id(key('usedStereotypes',@stereotype)[1])]/@stereotype">
549
+ <xsl:call-template name="addStereotypeFromLabelIfDefinitionIsMissing" />
550
+ </xsl:for-each>
551
+ </rdf:RDF>
552
+ </xsl:template>
553
+ <!-- uml:Model -->
554
+ <xsl:template match="uml:Model">
555
+ <!-- root model element is removed because it breaks incremental loading -->
556
+ <!-- (sub-packages are directly linked to model when in a fragment export -->
557
+ <!--
558
+ <rdf:Description rdf:about="_{@name}" ns0:name="{@name}">
559
+ <rdf:type rdf:resource="http://uml/2#Model"/>
560
+ <ns0:visibility rdf:resource="http://uml/2#visibilityKind_{@visibility}"/>
561
+ </rdf:Description>
562
+ -->
563
+ <!-- uml:Profile -->
564
+ <xsl:apply-templates select="uml:Profile" xmlns:uml="http://schema.omg.org/spec/UML/2.1/uml.xml"/>
565
+ <!-- ownedMember -->
566
+ <xsl:apply-templates select="packagedElement"/>
567
+ </xsl:template>
568
+
569
+ <xsl:template name="ownedMember" >
570
+ <rdf:Description rdf:about="{../@xmi:id}">
571
+ <ns0:ownedMember rdf:resource="{@xmi:id}"/>
572
+ </rdf:Description>
573
+ </xsl:template>
574
+
575
+ <xsl:template match="packagedElement[@xmi:type='uml:StateMachine']">
576
+ <xsl:call-template name="ownedMember"/>
577
+ <xsl:if test="key('ExtensionElementIdRef',current()/@xmi:id)/properties/@documentation">
578
+ <xsl:call-template name="Comment">
579
+ <xsl:with-param name="body" select="key('ExtensionElementIdRef',current()/@xmi:id)/properties/@documentation"/>
580
+ </xsl:call-template>
581
+ </xsl:if>
582
+
583
+ <rdf:Description rdf:about="{@xmi:id}" ns0:name="{@name}">
584
+ <rdf:type rdf:resource="http://uml/2#StateMachine"/>
585
+ <xsl:for-each select="region">
586
+ <ns0:region>
587
+ <rdf:Description rdf:about="{@xmi:id}" ns0:name="{@name}">
588
+ <rdf:type rdf:resource="http://uml/2#Region"/>
589
+ <xsl:for-each select="subvertex">
590
+ <ns0:subvertex>
591
+ <xsl:call-template name="vertex"/>
592
+ </ns0:subvertex>
593
+ </xsl:for-each>
594
+ <xsl:for-each select="transition">
595
+ <ns0:transition>
596
+ <xsl:call-template name="transition"/>
597
+ </ns0:transition>
598
+ </xsl:for-each>
599
+ <xsl:if test="key('ExtensionElementIdRef',current()/@xmi:id)/properties/@documentation">
600
+ <xsl:call-template name="CommentDescription">
601
+ <xsl:with-param name="body" select="key('ExtensionElementIdRef',current()/@xmi:id)/properties/@documentation"/>
602
+ </xsl:call-template>
603
+ </xsl:if>
604
+ </rdf:Description>
605
+ </ns0:region>
606
+ </xsl:for-each>
607
+ </rdf:Description>
608
+ </xsl:template>
609
+
610
+ <xsl:template name="vertex">
611
+ <rdf:Description rdf:about="{@xmi:id}" ns0:name="{@name}">
612
+ <xsl:choose>
613
+ <xsl:when test="@xmi:type='uml:FinalState'">
614
+ <rdf:type rdf:resource="http://uml/2#FinalState"/>
615
+ </xsl:when>
616
+ <xsl:when test="@xmi:type='uml:Pseudostate'">
617
+ <rdf:type rdf:resource="http://uml/2#Pseudostate"/>
618
+ <xsl:if test="@kind='choice'">
619
+ <ns0:kind rdf:resource="http://uml/2#pseudostateKind_choice"/>
620
+ </xsl:if>
621
+ <xsl:if test="@kind='initial'">
622
+ <ns0:kind rdf:resource="http://uml/2#pseudostateKind_initial"/>
623
+ </xsl:if>
624
+ <xsl:if test="@kind='fork'">
625
+ <ns0:kind rdf:resource="http://uml/2#pseudostateKind_fork"/>
626
+ </xsl:if>
627
+ <!-- EA does not have pseudo state join -->
628
+ <xsl:if test="@kind='join'">
629
+ <ns0:kind rdf:resource="http://uml/2#pseudostateKind_join"/>
630
+ </xsl:if>
631
+ </xsl:when>
632
+ <xsl:otherwise>
633
+ <rdf:type rdf:resource="http://uml/2#State"/>
634
+ </xsl:otherwise>
635
+ </xsl:choose>
636
+ <xsl:if test="key('ExtensionElementIdRef',current()/@xmi:id)/properties/@documentation">
637
+ <xsl:call-template name="CommentDescription">
638
+ <xsl:with-param name="body" select="key('ExtensionElementIdRef',current()/@xmi:id)/properties/@documentation"/>
639
+ </xsl:call-template>
640
+ </xsl:if>
641
+ </rdf:Description>
642
+ </xsl:template>
643
+
644
+ <xsl:template name="transition">
645
+ <rdf:Description rdf:about="{@xmi:id}">
646
+ <rdf:type rdf:resource="http://uml/2#Transition"/>
647
+ <xsl:if test="@name">
648
+ <ns0:name><xsl:value-of select="@name"/></ns0:name>
649
+ </xsl:if>
650
+ <ns0:source rdf:resource="{@source}"/>
651
+ <ns0:target rdf:resource="{@target}"/>
652
+ <!--
653
+ <xsl:if test="key('ExtensionAttributeIdRef',current()/@xmi:id)/documentation/@value">
654
+ <xsl:call-template name="CommentDescription">
655
+ <xsl:with-param name="body" select="key('ExtensionAttributeIdRef',current()/@xmi:id)/documentation/@value"/>
656
+ </xsl:call-template>
657
+ </xsl:if>
658
+ -->
659
+ </rdf:Description>
660
+ </xsl:template>
661
+ <!-- ownedMember => uml:Package -->
662
+ <xsl:template match="packagedElement[@xmi:type='uml:Package']">
663
+ <xsl:choose>
664
+ <xsl:when test="../@xmi:id">
665
+ <xsl:call-template name="ownedMember"/>
666
+ </xsl:when>
667
+ <xsl:otherwise>
668
+ <!-- ignore root package -->
669
+ <!--
670
+ <rdf:Description rdf:about="_{../@name}">
671
+ <ns0:ownedMember rdf:resource="{@xmi:id}"/>
672
+ </rdf:Description>
673
+ -->
674
+ </xsl:otherwise>
675
+ </xsl:choose>
676
+ <xsl:call-template name="Package"/>
677
+ <!-- ownedMember -->
678
+ <xsl:apply-templates select="packagedElement"/>
679
+ </xsl:template>
680
+ <!-- ownedMember => uml:Class -->
681
+ <xsl:template match="packagedElement[@xmi:type='uml:Class']">
682
+ <xsl:call-template name="ownedMember"/>
683
+ <xsl:call-template name="Class"/>
684
+ </xsl:template>
685
+ <!-- ownedMember => uml:Interface -->
686
+ <xsl:template match="packagedElement[@xmi:type='uml:Interface']">
687
+ <xsl:call-template name="ownedMember"/>
688
+ <xsl:call-template name="Interface"/>
689
+ </xsl:template>
690
+ <!-- ownedMember => uml:Component -->
691
+ <xsl:template match="packagedElement[@xmi:type='uml:Component']">
692
+ <xsl:call-template name="ownedMember"/>
693
+ <xsl:call-template name="Component"/>
694
+ </xsl:template>
695
+
696
+ <!-- ownedMember => uml:Enumeration -->
697
+ <xsl:template match="packagedElement[@xmi:type='uml:Enumeration']">
698
+ <xsl:call-template name="ownedMember"/>
699
+ <xsl:call-template name="Enumeration"/>
700
+ </xsl:template>
701
+ <!-- ownedMember => uml:Signal -->
702
+ <xsl:template match="packagedElement[@xmi:type='uml:Signal']">
703
+ <xsl:call-template name="ownedMember"/>
704
+ <xsl:call-template name="Signal"/>
705
+ </xsl:template>
706
+ <!-- ownedMember => uml:UseCase -->
707
+ <xsl:template match="packagedElement[@xmi:type='uml:UseCase']">
708
+ <xsl:call-template name="ownedMember"/>
709
+ <xsl:call-template name="UseCase"/>
710
+ </xsl:template>
711
+ <!-- ownedMember => uml:Association -->
712
+ <xsl:template match="packagedElement[@xmi:type='uml:Association']">
713
+ <xsl:call-template name="ownedMember"/>
714
+ <xsl:call-template name="Association"/>
715
+ </xsl:template>
716
+ <!-- ownedMember => uml:PrimitiveType -->
717
+ <xsl:template match="packagedElement[@xmi:type='uml:PrimitiveType']">
718
+ <xsl:call-template name="ownedMember"/>
719
+ <rdf:Description rdf:about="{@xmi:id}" ns0:name="{@name}">
720
+ <rdf:type rdf:resource="http://uml/2#DataType"/>
721
+ <ns0:visibility rdf:resource="http://uml/2#visibilityKind_{@visibility}"/>
722
+ </rdf:Description>
723
+ </xsl:template>
724
+ <!-- ownedAttribute => uml:Property-->
725
+ <xsl:template match="ownedAttribute[@xmi:type='uml:Property']">
726
+ <rdf:Description rdf:about="{../@xmi:id}">
727
+ <ns0:ownedAttribute rdf:resource="{@xmi:id}"/>
728
+ </rdf:Description>
729
+ <xsl:call-template name="Attribute"/>
730
+ </xsl:template>
731
+ <!-- ownedEnd => uml:Property-->
732
+ <xsl:template match="ownedEnd[@xmi:type='uml:Property']">
733
+ <rdf:Description rdf:about="{../@xmi:id}">
734
+ <ns0:ownedEnd rdf:resource="{@xmi:id}"/>
735
+ </rdf:Description>
736
+ <xsl:call-template name="ownedEnd"/>
737
+ </xsl:template>
738
+ <!-- ownedOperation -->
739
+ <xsl:template match="ownedOperation">
740
+ <rdf:Description rdf:about="{../@xmi:id}">
741
+ <ns0:ownedOperation rdf:resource="{@xmi:id}"/>
742
+ </rdf:Description>
743
+ <xsl:call-template name="Operation"/>
744
+ </xsl:template>
745
+ <!-- ownedParameter -->
746
+ <xsl:template match="ownedParameter">
747
+ <xsl:if test="not(@type = 'EAJava_void')">
748
+ <rdf:Description rdf:about="{../@xmi:id}">
749
+ <ns0:ownedParameter rdf:resource="{@xmi:id}"/>
750
+ </rdf:Description>
751
+ <xsl:if test="@direction = 'return'">
752
+ <!-- returnTypeCardinality -->
753
+ <xsl:if test="key('ExtensionOperationIdRef',current()/../@xmi:id)/tags/tag[@name='returnTypeCardinality']">
754
+ <rdf:Description rdf:about="{@xmi:id}">
755
+ <ns0:lowerValue rdf:resource="_lowerValue{@xmi:id}"/>
756
+ <ns0:upperValue rdf:resource="_upperValue{@xmi:id}"/>
757
+ </rdf:Description>
758
+ <xsl:variable name="card" select="string(key('ExtensionOperationIdRef',current()/../@xmi:id)/tags/tag[@name='returnTypeCardinality']/@value)"/>
759
+ <xsl:variable name="lower" select="string(substring-before($card, '..'))"/>
760
+ <xsl:variable name="upper" select="string(substring-after($card, '..'))"/>
761
+ <rdf:Description rdf:about="_lowerValue{@xmi:id}">
762
+ <rdf:type rdf:resource="http://uml/2#LiteralUnlimitedNatural"/>
763
+ <ns0:value>
764
+ <xsl:value-of select="$lower"/>
765
+ <xsl:if test="not($lower)">
766
+ <xsl:value-of select="$card"/>
767
+ </xsl:if>
768
+ </ns0:value>
769
+ </rdf:Description>
770
+ <rdf:Description rdf:about="_upperValue{@xmi:id}">
771
+ <rdf:type rdf:resource="http://uml/2#LiteralUnlimitedNatural"/>
772
+ <ns0:value>
773
+ <xsl:value-of select="$upper"/>
774
+ <xsl:if test="not($upper)">
775
+ <xsl:value-of select="$card"/>
776
+ </xsl:if>
777
+ </ns0:value>
778
+ </rdf:Description>
779
+ </xsl:if>
780
+ <!-- returnTypeIsOrdered -->
781
+ <xsl:if test="key('ExtensionOperationIdRef',current()/../@xmi:id)/tags/tag[@name='returnTypeIsOrdered']">
782
+ <rdf:Description rdf:about="{@xmi:id}">
783
+ <ns0:isOrdered>true</ns0:isOrdered>
784
+ </rdf:Description>
785
+ </xsl:if>
786
+ </xsl:if>
787
+ <xsl:call-template name="Parameter"/>
788
+ </xsl:if>
789
+ </xsl:template>
790
+ <!-- generalization -->
791
+ <xsl:template match="generalization">
792
+ <rdf:Description rdf:about="{../@xmi:id}">
793
+ <ns0:generalization rdf:resource="{@xmi:id}"/>
794
+ </rdf:Description>
795
+ <rdf:Description rdf:about="{@xmi:id}">
796
+ <rdf:type rdf:resource="http://uml/2#Generalization"/>
797
+ <ns0:general rdf:resource="{@general}"/>
798
+ </rdf:Description>
799
+ </xsl:template>
800
+ <!-- nestedClassifier -->
801
+ <xsl:template match="nestedClassifier">
802
+ <rdf:Description rdf:about="{../@xmi:id}">
803
+ <ns0:nestedClassifier rdf:resource="{@xmi:id}"/>
804
+ </rdf:Description>
805
+ <xsl:call-template name="Class"/>
806
+ </xsl:template>
807
+ <!-- ######################## -->
808
+ <!-- uml:Profile -->
809
+ <xsl:template match="uml:Profile" xmlns:uml="http://schema.omg.org/spec/UML/2.1/uml.xml">
810
+ <xsl:call-template name="Profile"/>
811
+ </xsl:template>
812
+ <!-- uml:Profile -->
813
+ <xsl:template match="uml:Profile">
814
+
815
+ </xsl:template>
816
+ <!-- ownedMember => uml:Stereotype -->
817
+ </xsl:stylesheet>