ontomde-uml2 2.0.4 → 2.0.5
Sign up to get free protection for your applications and to get access to all the features.
@@ -41,12 +41,13 @@ module Muml_Class
|
|
41
41
|
#log.debug { "umlx_autoImplementProperty #{ia} for #{self} #{ia.umlx_isAssociation?}" }
|
42
42
|
next if impAttNames.include?(ia.uml_name.to_s)
|
43
43
|
if(ia.umlx_isAttribute?)
|
44
|
-
att=self.umlx_createAndAddProperty(self.rdf_uri+ia.
|
44
|
+
att=self.umlx_createAndAddProperty(self.rdf_uri+ia.rdf_uri.to_s.str_to_uri)
|
45
45
|
att.uml_name=ia.uml_name
|
46
46
|
att.uml_type=ia.uml_type
|
47
47
|
att.umlx_copyStereotypesFrom!(ia)
|
48
48
|
att.uml_upperValue=ia.uml_upperValue unless ia.uml_upperValue.empty?
|
49
49
|
att.uml_lowerValue=ia.uml_lowerValue unless ia.uml_lowerValue.empty?
|
50
|
+
att.uml_ownedComment=ia.uml_ownedComment unless ia.uml_ownedComment.empty?
|
50
51
|
else
|
51
52
|
#puts "create and add ..."
|
52
53
|
ms=ia.uml_association_one
|
@@ -55,7 +56,7 @@ module Muml_Class
|
|
55
56
|
#puts "ms=#{ms}"
|
56
57
|
#puts "ms1=#{ms1} #{ms1.uml_type}"
|
57
58
|
#puts "ms2=#{ms2} #{ms2.uml_type}"
|
58
|
-
m,m1,m2=self.umlx_createAndAddAssociation(self.rdf_uri+ia.
|
59
|
+
m,m1,m2=self.umlx_createAndAddAssociation(self.rdf_uri+ia.rdf_uri.to_s.str_to_uri,ia.uml_type)
|
59
60
|
m1.uml_aggregation=ms1.uml_aggregation
|
60
61
|
m2.uml_aggregation=ms2.uml_aggregation
|
61
62
|
m1.uml_name=ms1.uml_name
|
@@ -68,6 +69,9 @@ module Muml_Class
|
|
68
69
|
ms1.umlx_copyToAttributeProperty(m1)
|
69
70
|
ms2.umlx_copyToAttributeProperty(m2)
|
70
71
|
|
72
|
+
m1.uml_ownedComment=ms1.uml_ownedComment unless ms1.uml_ownedComment.empty?
|
73
|
+
m2.uml_ownedComment=ms2.uml_ownedComment unless ms2.uml_ownedComment.empty?
|
74
|
+
|
71
75
|
#puts "m=#{m}"
|
72
76
|
#puts "m1=#{m1} #{m1.uml_type}"
|
73
77
|
#puts "m2=#{m2} #{m2.uml_type}"
|
@@ -137,6 +141,7 @@ module Muml_Class
|
|
137
141
|
umlx_operationIShouldImplement.each { |sig,ia|
|
138
142
|
next if impOper.keys.include?(ia.umlx_signature)
|
139
143
|
c=umlx_createAndAddOperation(ia.rdf_uri+"_implem",ia.uml_name.to_s);
|
144
|
+
c.uml_ownedComment=ia.uml_ownedComment unless ia.uml_ownedComment.empty?
|
140
145
|
ia.umlx_autoImplementedBy_add(c) # used by javadoc
|
141
146
|
c.umlx_copyStereotypesFrom!(ia)
|
142
147
|
(ia.uml_ownedParameter+ia.uml_returnResult).each { |p|
|
@@ -95,8 +95,43 @@ module Muml_Element
|
|
95
95
|
end
|
96
96
|
end
|
97
97
|
|
98
|
+
module Mrdf_Resource
|
99
|
+
def prot_ignorePackage?
|
100
|
+
return (!kind_of?(Muml_Package)) || rdf_uri=="http://xmda-reserved"
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
module Muml_Package
|
105
|
+
def prot_writePackage
|
106
|
+
e=self
|
107
|
+
write("<#{e.prot_uri}> <#{RDF_TYPE_URI}> <#{RDF_METACLASS_URI}> .\n")
|
108
|
+
write("<#{e.prot_uri}> <#{NS_RDF_2000}rdf-schema#label> \"[#{e.uml_name.to_s.nt_escape}]\" .\n")
|
109
|
+
write("<#{e.prot_uri}> <http://protege.stanford.edu/system#role> \"abstract\" .\n")
|
110
|
+
e.append_comment
|
111
|
+
e.prot_writeSubClassOf
|
98
112
|
|
99
|
-
|
113
|
+
write("<#{e.prot_uri}> <#{NS_UML_CLASS}#UML_LABEL> \"[#{prot_label}]\" .\n")
|
114
|
+
write("<#{e.prot_uri}> <#{NS_UML_CLASS}#UML_URI> \"#{UriNamespace.instance.unalias(e.rdf_uri)}\" .\n")
|
115
|
+
|
116
|
+
end
|
117
|
+
def mainSubClassOfURI
|
118
|
+
return "#{NS_UML_CLASS}#UML_PACKAGE"
|
119
|
+
end
|
120
|
+
|
121
|
+
|
122
|
+
#writes sub class of rdf instructions
|
123
|
+
def prot_writeSubClassOf
|
124
|
+
t=umlx_owner_one
|
125
|
+
if t.nil? || t.prot_ignorePackage?
|
126
|
+
write("<#{prot_uri}> <#{RDF_SUBCLASSOF_URI}> <#{mainSubClassOfURI}> .\n")
|
127
|
+
else
|
128
|
+
write("<#{prot_uri}> <#{RDF_SUBCLASSOF_URI}> <#{t.prot_uri}> .\n")
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
|
134
|
+
module Muml_Namespace
|
100
135
|
ProtegeURI=Hash.new
|
101
136
|
|
102
137
|
#label used in protege 2000
|
@@ -144,8 +179,16 @@ module Muml_Classifier
|
|
144
179
|
e.append_comment
|
145
180
|
e.prot_writeSubClassOf
|
146
181
|
|
182
|
+
prefix= ''
|
183
|
+
prefix='UC: ' if e.kind_of?(Muml_UseCase)
|
184
|
+
prefix='I: ' if e.kind_of?(Muml_Interface)
|
185
|
+
|
186
|
+
# Place element in its package hierarchy
|
187
|
+
o=umlx_owner_one
|
188
|
+
write("<#{prot_uri}> <#{RDF_SUBCLASSOF_URI}> <#{o.prot_uri}> .\n") unless o.nil? || o.prot_ignorePackage?
|
189
|
+
|
147
190
|
write("<#{e.prot_uri}> <#{RDF_SUBCLASSOF_URI}> <#{mainSubClassOfURI}> .\n")
|
148
|
-
write("<#{e.prot_uri}> <#{NS_UML_CLASS}#UML_LABEL> \"#{prot_label}\" .\n")
|
191
|
+
write("<#{e.prot_uri}> <#{NS_UML_CLASS}#UML_LABEL> \"#{prefix}#{prot_label}\" .\n")
|
149
192
|
write("<#{e.prot_uri}> <#{NS_UML_CLASS}#UML_URI> \"#{UriNamespace.instance.unalias(e.rdf_uri)}\" .\n")
|
150
193
|
|
151
194
|
end
|
@@ -426,6 +469,14 @@ module Mrdf_Repository
|
|
426
469
|
}
|
427
470
|
end
|
428
471
|
|
472
|
+
# add package and its parent hierarchy
|
473
|
+
def addPackageHierarchy(usedPackage,package)
|
474
|
+
return unless package.kind_of?(Muml_Package)
|
475
|
+
return if usedPackage.include?(package)
|
476
|
+
return if package.prot_ignorePackage?
|
477
|
+
usedPackage.add(package)
|
478
|
+
addPackageHierarchy(usedPackage,package.umlx_owner_one)
|
479
|
+
end
|
429
480
|
|
430
481
|
#generates Protege 2000 RDFS file of a knowledge base project.
|
431
482
|
def generateProtegeKbRDFS(targetFile)
|
@@ -435,12 +486,15 @@ module Mrdf_Repository
|
|
435
486
|
#mark temporary file for deletion
|
436
487
|
mtk_addTempFileToDelete(targetFileRDFS)
|
437
488
|
|
489
|
+
usedPackage=Set.new
|
490
|
+
|
438
491
|
mtk_writeSession(targetFileRDFS) {
|
439
492
|
write(kbRDFS_header)
|
440
493
|
uml_Model_all.each { |m|
|
441
494
|
m.uml_Class_all.each {|c|
|
442
495
|
next if c.kind_of?(Muml_Enumeration)
|
443
496
|
c.prot_writeNTriple
|
497
|
+
addPackageHierarchy(usedPackage,c.umlx_owner_one)
|
444
498
|
c.uml_ownedAttribute.each {|a|
|
445
499
|
a.prot_writeNTriple
|
446
500
|
}
|
@@ -451,9 +505,15 @@ module Mrdf_Repository
|
|
451
505
|
}
|
452
506
|
}
|
453
507
|
}
|
508
|
+
|
454
509
|
m.uml_UseCase_all.each {|uc|
|
510
|
+
addPackageHierarchy(usedPackage,uc.umlx_owner_one)
|
455
511
|
uc.prot_writeNTriple
|
456
512
|
}
|
513
|
+
|
514
|
+
usedPackage.each { |p|
|
515
|
+
p.prot_writePackage
|
516
|
+
}
|
457
517
|
}
|
458
518
|
kbRDFS_writeComponents
|
459
519
|
write(kbRDFS_footer)
|
@@ -495,7 +555,7 @@ module Mrdf_Repository
|
|
495
555
|
# Protege 2000 RDFS knowledge base file header
|
496
556
|
def kbRDFS_header
|
497
557
|
nt_top='# debut\n'
|
498
|
-
['UML_CLASS','UML_TEST_DATA_SET'].each {|c|
|
558
|
+
['UML_CLASS','UML_TEST_DATA_SET','UML_PACKAGE'].each {|c|
|
499
559
|
nt_top=nt_top+<<END2
|
500
560
|
<#{NS_UML_CLASS}##{c}> <http://protege.stanford.edu/system#role> "abstract" .
|
501
561
|
<#{NS_UML_CLASS}##{c}> <#{NS_RDF_2000}rdf-schema#label> "" .
|
@@ -632,12 +692,12 @@ END
|
|
632
692
|
<#{NS_UML_CLASS}##{k}> <#{NS_RDF_1999}22-rdf-syntax-ns#type> <#{NS_RDF_1999}22-rdf-syntax-ns#Property> .
|
633
693
|
<#{NS_UML_CLASS}##{k}> <#{NS_RDF_2000}rdf-schema#label> "#{k}" .
|
634
694
|
<#{NS_UML_CLASS}##{k}> <#{NS_RDF_2000}rdf-schema#range> <#{NS_UML_CLASS}#UML_TEST_DATA_SET> .
|
635
|
-
<#{NS_UML_CLASS}##{k}> <#{NS_RDF_2000}rdf-schema#domain> <#{NS_UML_CLASS}#
|
695
|
+
<#{NS_UML_CLASS}##{k}> <#{NS_RDF_2000}rdf-schema#domain> <#{NS_UML_CLASS}#UML_PACKAGE> .
|
636
696
|
<#{NS_UML_CLASS}##{k}> <http://protege.stanford.edu/system#inverseProperty> <#{NS_UML_CLASS}##{inv}> .
|
637
697
|
<#{NS_UML_CLASS}##{inv}> <#{NS_RDF_1999}22-rdf-syntax-ns#type> <#{NS_RDF_1999}22-rdf-syntax-ns#Property> .
|
638
698
|
<#{NS_UML_CLASS}##{inv}> <#{NS_RDF_2000}rdf-schema#label> "{k}" .
|
639
699
|
<#{NS_UML_CLASS}##{inv}> <http://protege.stanford.edu/system#inverseProperty> <#{NS_UML_CLASS}##{k}> .
|
640
|
-
<#{NS_UML_CLASS}##{inv}> <#{NS_RDF_2000}rdf-schema#range> <#{NS_UML_CLASS}#
|
700
|
+
<#{NS_UML_CLASS}##{inv}> <#{NS_RDF_2000}rdf-schema#range> <#{NS_UML_CLASS}#UML_PACKAGE> .
|
641
701
|
<#{NS_UML_CLASS}##{inv}> <#{NS_RDF_2000}rdf-schema#domain> <#{NS_UML_CLASS}#UML_TEST_DATA_SET> .
|
642
702
|
END
|
643
703
|
}
|
data/lib/ontomde-uml2/umlx.rb
CHANGED
@@ -214,11 +214,14 @@ module Muml_Element
|
|
214
214
|
#returns true if element has an applied stereotype named stereotype_name
|
215
215
|
#test is not case sensitive
|
216
216
|
def umlx_hasStereotype?(stereotype_name)
|
217
|
+
return !(umlx_returnStereotypeIfHas(stereotype_name).nil?)
|
218
|
+
end
|
219
|
+
def umlx_returnStereotypeIfHas(stereotype_name)
|
217
220
|
uml_appliedStereotype.each { |s|
|
218
221
|
next unless s.uml_name.to_s.casecmp(stereotype_name.to_s)==0
|
219
|
-
return
|
222
|
+
return s
|
220
223
|
}
|
221
|
-
return
|
224
|
+
return nil
|
222
225
|
end
|
223
226
|
end
|
224
227
|
|
data/lib/ontomde-uml2/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ontomde-uml2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Orange-labs BIZZ/CIL/SAM
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-04-
|
12
|
+
date: 2009-04-23 00:00:00 +02:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -20,7 +20,7 @@ dependencies:
|
|
20
20
|
requirements:
|
21
21
|
- - "="
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version: 2.0.
|
23
|
+
version: 2.0.5
|
24
24
|
version:
|
25
25
|
description: "ontoMDE-uml2 contains UML2 meta-model and helper files to manipulate a UML2 model. ontoMDE-uml2 uses ontoMDE-core which provides core fonctionalities for loading a model in RDF/RDFS format. ontoMDE-UML2 is used by ontoMDE-java which contains rules for generating java Code. ontoMDE contains primitives for converting a UML2 model into a Prot\xE9g\xE9 2000 RDF/RDFS model. UML2 classes are converted into RDFS classes to allow data instances to be created. This feature is used heavily for providing editors for creating tests data for programs. == FEATURES/PROBLEMS: * UML2 meta-model definition in RDFS format * Ruby helper methods for handling a UML2 model. * UML Stereotype handling helpers. * UML predefined enumerations handling helper. * UML model manipulations helpers (add interface implementations, transform multiple inheritance into single inheritance, ...) UML2 to Protege 2000 features: * single and incremental use. * transparent update of name changes from source to target mode. * class * abstract class * interface * enumerated types * generalization links * implementation links * property, association, composition and aggregation * single and multivalued properties * mandatory fields (cardinaly=0 or >0) * UML documentation notes export to Protege 2000 for easy reference."
|
26
26
|
email: stephanepierre.carrie -nospam- @orange-ftgroup.com
|