ontomde-core 1.0.2 → 1.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.
@@ -1,272 +1,277 @@
1
- # Core RDF resource management
2
- #:include: ../shared/license.rdoc
3
-
4
- RDF_TRUE="true"
5
- RDF_FALSE="false"
6
-
7
- module Mrdf_Resource
8
- # Debug method
9
- # Dumps to screen the current object.
10
- def dump
11
- log.debug("\n#{self} dump #{self.class}>\n")
12
- instance_variables.each {
13
- |c|
14
- log.debug("-#{c}- #{instance_variable_get(c).to_s}\n" )
15
- }
16
- log.debug('methods: ( ')
17
- #out.write('methods: ( ')
18
- public_methods.each { |m|
19
- log.debug( "#{m}, " )
20
- }
21
- log.debug('<\n')
22
- end
23
- end
24
-
25
- class Crdf_Resource #< Crdfs_Resource
26
- include Mrdf_Resource
27
- attr_reader :uri
28
- attr_reader :nbrItem
29
- attr_reader :rdf_model
30
- @@nbrItem=0
31
-
32
- # Utiliser pour un hack
33
- def force_rdf_model=(m)
34
- @rdf_model=m
35
- end
36
-
37
- # Returns a new empty attribute array
38
- def createEmptyAttributeValue
39
- return ArrayOrSingleElement.new()
40
- end
41
-
42
- #initialize a new resource and adds it to the current model.
43
- #if uri is nil, a temporary uri is automaticaly generated.
44
- #NOTE:
45
- # This uri is not suitable for use by mtk_protected.
46
- #TODO: ??? add a detection for prexisting uri ???
47
- def initialize(model,uri)
48
- uri="_transient_#{object_id}" if uri.nil?
49
- model[uri]=self
50
- @rdf_model=model
51
- @uri=uri
52
- @@nbrItem=@@nbrItem+1
53
- end
54
-
55
- #List of non restable variables
56
- @@NonResetableVariables=['@rdf_model','@rdf_type','@uri']
57
-
58
- #Return true if v is a restable property.
59
- def isResetable?(v)
60
- return ! @@NonResetableVariables.include?(v)
61
- end
62
-
63
- # Force reset of this object properties
64
- # Every resetable property is set to nil.
65
- def forceReset!
66
- #log.debug "forceReset #{self}"
67
- instance_variables.each { |v|
68
- if(isResetable?(v))
69
- #log.debug "reset #{v}"
70
- instance_variable_set(v,nil)
71
- end
72
- }
73
- end
74
-
75
- #suppress warning
76
- alias :nbrItem_org :nbrItem
77
- #Number of item loaded since the initilization of the program
78
- #Used for monitoring.
79
- def nbrItem
80
- @@nbrItem
81
- end
82
-
83
- #Internal use
84
- #
85
- def set(var,val)
86
- #TODO: cout: 65s -> 82 sur CRX
87
- #TODO: 21.8s -> 25,8s -> 19,5s (19/6) sur SID
88
- raise Warning.new,'null val in set' if val.nil?
89
- raise Warning.new,'null var in set' if var.nil?
90
- core_set(:"@#{var}",val)
91
- val.core_set(:@ext_isReferencedBy,self) if(val.kind_of?(Crdf_Resource))
92
- end
93
-
94
-
95
- #Internal use
96
- #
97
- def core_set(ivar,val)
98
- old=instance_variable_get(ivar)
99
- if old.nil?
100
- old=createEmptyAttributeValue
101
- instance_variable_set(ivar,old)
102
- end
103
- old.push(val)
104
- end
105
- end
106
-
107
- class Crdf_Resource
108
- attr_reader :rdf_type, :rdfs_label
109
- rdf_safe_attr_reader_many :rdfs_subClassOf
110
- attr_writer :rdf_type, :rdfs_label
111
-
112
- rdf_safe_attr_reader_many :ext_isReferencedBy
113
-
114
- #TODO: use ??
115
- #@rubyName
116
-
117
- def to_yaml
118
- 'empty'
119
- end
120
-
121
- def set_rdfIsRelated(rel)
122
- end
123
-
124
- # Internal use
125
- #
126
- # sets resource uri
127
- def rdf_uri=(new_uri)
128
- @uri=new_uri
129
- end
130
-
131
- #returns resource uri
132
- def rdf_uri
133
- return @uri
134
- end
135
-
136
- #default string converter. Returns uri
137
- def to_s
138
- return @uri.to_s #"#{@uri}"
139
- end
140
-
141
- #Internal use
142
- #
143
- #Returns the ruby module name corresponding to this ressource
144
- def getRubyModuleName
145
- return "M#{getRubyName}"
146
- end
147
-
148
- #Internal use
149
- #
150
- #Returns the ruby class name corresponding to this ressource
151
- def getRubyClassName
152
- return "C#{getRubyName}"
153
- end
154
-
155
- #Retrieves a uri from a ruby identifier
156
- def getRubyNameInverse(identifier)
157
- found=nil
158
- rdf_model.each { |k,c|
159
- next if c.getRubyName!=identifier.to_s
160
- log.error("Ruby name clash for #{identifier} and #{k}") unless found.nil?
161
- found=k
162
- }
163
- log.error("No uri found for ruby identifier #{identifier} ") if found.nil?
164
- return found
165
- end
166
-
167
- #Transforms a uri to a valid ruby identifier.
168
- #cf. getRubyNameInverse
169
- def getRubyName
170
- return @uri.tr('^a-zA-Z0-9','_')
171
- #return @rdf_label if @rdf_label
172
- #return self.class.to_s # bootstrap
173
- end
174
-
175
- #Internal use
176
- def isBootstrap?
177
- return self.class.to_s==self.getRubyClassName
178
- end
179
-
180
- #Internal use
181
- def getRubyAttributeDefinition(model)
182
- #todo qqchos pour renvoyer valeur non nil
183
- cmd1=''
184
- sep1=' rdf_safe_attr_reader_many :'
185
- cmd2=''
186
- sep2=' rdf_safe_attr_reader_one :'
187
-
188
- model.each { |tbl,prop|
189
- next unless prop.kind_of?(Crdf_Property)
190
- next if prop.rdfs_domain.nil?
191
- next unless prop.rdfs_domain.include?(self)
192
-
193
- #log.debug "res2=#{prop.uri} #{prop}"
194
- #res.instance_variables.each { |var| log.debug " > #{var} #{res.instance_variable_get(var)}" }
195
- if(true)
196
- #toujours disponible
197
- cmd1+=sep1+prop.getRubyName
198
- sep1=', :'
199
- end
200
- if(false)
201
- #TODO
202
- cmd2+=sep2+prop.getRubyName
203
- sep2=', :'
204
- end
205
- }
206
- cmd1+="\n"
207
- cmd2+="\n"
208
- return cmd1+cmd2
209
- end
210
-
211
- # Internal use
212
- #
213
- # Creates a skeleton minimal ruby class for immediate use.
214
- def createRubyClassMinimal(model)
215
- return if @mtk_rubyClassGenerated
216
- return if isBootstrap?
217
- eval("class ::#{getRubyClassName} < ::Crdfs_Class\nend\n")
218
- end
219
-
220
- # Liste des classes dont la classe courante d�rive (directe et indirecte)
221
- def rdfs_subClassOfRecursive(ret=Array.new)
222
- rdfs_subClassOf.each { |sub|
223
- next if ret.contains(sub)
224
- ret.push(sub)
225
- sub.rdfs_subClassOfRecursive(ret)
226
- }
227
- return ret
228
- end
229
-
230
- # Creates a ruby structure for this element.
231
- # NOTE:
232
- # generates ruby class named getRubyClassName
233
- # generates ruby modules named getRubyModuleName
234
- # multiple inheritance is handled trough multiple module inclusion.
235
- def createRubyClass(model)
236
- cmd=''
237
- return cmd if @mtk_rubyClassGenerated
238
- return cmd if isBootstrap?
239
- @mtk_rubyClassGenerated=true
240
-
241
- rdfs_subClassOf.each { |sub|
242
- cmd+=sub.createRubyClass(model)
243
- }
244
-
245
- cmd+="module ::#{self.getRubyModuleName}\n"
246
- cmd+=getRubyAttributeDefinition(model)
247
- rdfs_subClassOf.each { |sub|
248
- cmd+=' include ::' +(sub.getRubyModuleName)+"\n"
249
- }
250
- cmd+="end\n\n"
251
- cmd+="class ::#{getRubyClassName} < ::Crdfs_Class\n"
252
- cmd+=' include ' +self.getRubyModuleName+"\n"
253
-
254
- #rdfs_subClassOfRecursive.uniq.each { |c|
255
- # cmd+=' include ' +(c.getRubyModuleName)+'\n'
256
- #}
257
- cmd+="end\n\n"
258
-
259
- #log.debug "cmd -->#---------\n#{cmd}\n#---------------"
260
- eval(cmd)
261
-
262
- return cmd
263
- end
264
- end
265
-
266
- module Mrdf_Resource
267
- # returns this object uri converted to a dot/graphviz compatible identifier.
268
- def dotId
269
- return rdf_uri.tr('^a-zA-Z0-9','_')
270
- end
271
- end
272
-
1
+ # Core RDF resource management
2
+
3
+ RDF_TRUE="true"
4
+ RDF_FALSE="false"
5
+ #Semicolumn (root)
6
+ SC2=""
7
+ #SC2="::"
8
+
9
+ module Mrdf_Resource
10
+ # Debug method
11
+ # Dumps to screen the current object.
12
+ def dump
13
+ log.debug("\n#{self} dump #{self.class}>\n")
14
+ instance_variables.each {
15
+ |c|
16
+ log.debug("-#{c}- #{instance_variable_get(c).to_s}\n" )
17
+ }
18
+ log.debug('methods: ( ')
19
+ #out.write('methods: ( ')
20
+ public_methods.each { |m|
21
+ log.debug( "#{m}, " )
22
+ }
23
+ log.debug('<\n')
24
+ end
25
+ end
26
+
27
+ class Crdf_Resource #< Crdfs_Resource
28
+ include Mrdf_Resource
29
+ attr_reader :uri
30
+ attr_reader :nbrItem
31
+ attr_reader :rdf_model
32
+ @@nbrItem=0
33
+
34
+ # Utiliser pour un hack
35
+ def force_rdf_model=(m)
36
+ @rdf_model=m
37
+ end
38
+
39
+ # Returns a new empty attribute array
40
+ def createEmptyAttributeValue
41
+ return ArrayOrSingleElement.new()
42
+ end
43
+
44
+ VALID_RDF_URI_REGEXP=/^[-.a-zA-Z0-9_\/:}]*$/
45
+
46
+ #initialize a new resource and adds it to the current model.
47
+ #if uri is nil, a temporary uri is automaticaly generated.
48
+ #NOTE:
49
+ # This uri is not suitable for use by mtk_protected.
50
+ #TODO: ??? add a detection for prexisting uri ???
51
+ def initialize(model,uri)
52
+ uri="_transient_#{object_id}" if uri.nil?
53
+
54
+ if !uri.match(VALID_RDF_URI_REGEXP)
55
+ puts "WARNING: automatic repair for uri: '#{uri}'"
56
+ uri=uri.tr("<>",'_') #sanitize uri
57
+ end
58
+
59
+ model[uri]=self
60
+ @rdf_model=model
61
+ @uri=uri
62
+ @@nbrItem=@@nbrItem+1
63
+ end
64
+
65
+ #List of non resetable variables
66
+ @@NonResetableVariables=['@rdf_model','@rdf_type','@uri']
67
+
68
+ #Return true if v is a restable property.
69
+ def isResetable?(v)
70
+ return ! @@NonResetableVariables.include?(v)
71
+ end
72
+
73
+ # Force reset of this object properties
74
+ # Every resetable property is set to nil.
75
+ def forceReset!
76
+ #log.debug "forceReset #{self}"
77
+ instance_variables.each { |v|
78
+ if(isResetable?(v))
79
+ #log.debug "reset #{v}"
80
+ instance_variable_set(v,nil)
81
+ end
82
+ }
83
+ end
84
+
85
+ #suppress warning
86
+ alias :nbrItem_org :nbrItem
87
+ #Number of item loaded since the initilization of the program
88
+ #Used for monitoring.
89
+ def nbrItem
90
+ @@nbrItem
91
+ end
92
+
93
+ #Internal use
94
+ #
95
+ def set(var,val)
96
+ #TODO: cout: 65s -> 82 sur CRX
97
+ #TODO: 21.8s -> 25,8s -> 19,5s (19/6) sur SID
98
+ raise Warning.new,'null val in set' if val.nil?
99
+ raise Warning.new,'null var in set' if var.nil?
100
+ core_set(:"@#{var}",val)
101
+ val.core_set(:@ext_isReferencedBy,self) if(val.kind_of?(Crdf_Resource))
102
+ end
103
+
104
+
105
+ #Internal use
106
+ #
107
+ def core_set(ivar,val)
108
+ old=instance_variable_defined?(ivar) ? instance_variable_get(ivar) : nil
109
+ if old.nil?
110
+ old=createEmptyAttributeValue
111
+ instance_variable_set(ivar,old)
112
+ end
113
+ old.push(val)
114
+ end
115
+ end
116
+
117
+ class Crdf_Resource
118
+ attr_reader :rdf_type, :rdfs_label
119
+ rdf_safe_attr_reader_many :rdfs_subClassOf
120
+ attr_writer :rdf_type, :rdfs_label
121
+
122
+ rdf_safe_attr_reader_many :ext_isReferencedBy
123
+
124
+ #TODO: use ??
125
+ #@rubyName
126
+
127
+ def to_yaml
128
+ 'empty'
129
+ end
130
+
131
+ def set_rdfIsRelated(rel)
132
+ end
133
+
134
+ # Internal use
135
+ #
136
+ # sets resource uri
137
+ def rdf_uri=(new_uri)
138
+ @uri=new_uri
139
+ end
140
+
141
+ #returns resource uri
142
+ def rdf_uri
143
+ return @uri
144
+ end
145
+
146
+ #default string converter. Returns uri
147
+ def to_s
148
+ return @uri.to_s #"#{@uri}"
149
+ end
150
+
151
+ #Internal use
152
+ #
153
+ #Returns the ruby module name corresponding to this ressource
154
+ def getRubyModuleName
155
+ return "M#{getRubyName}"
156
+ end
157
+
158
+ #Internal use
159
+ #
160
+ #Returns the ruby class name corresponding to this ressource
161
+ def getRubyClassName
162
+ return "C#{getRubyName}"
163
+ end
164
+
165
+ #Retrieves a uri from a ruby identifier
166
+ def getRubyNameInverse(identifier)
167
+ found=nil
168
+ rdf_model.each { |k,c|
169
+ next if c.getRubyName!=identifier.to_s
170
+ log.error("Ruby name clash for #{identifier} and #{k}") unless found.nil?
171
+ found=k
172
+ }
173
+ log.error("No uri found for ruby identifier #{identifier} ") if found.nil?
174
+ return found
175
+ end
176
+
177
+ #Transforms a uri to a valid ruby identifier.
178
+ #cf. getRubyNameInverse
179
+ def getRubyName
180
+ return @uri.tr('^a-zA-Z0-9','_')
181
+ #return @rdf_label if @rdf_label
182
+ #return self.class.to_s # bootstrap
183
+ end
184
+
185
+ #Internal use
186
+ def isBootstrap?
187
+ return self.class.to_s==self.getRubyClassName
188
+ end
189
+
190
+ #Internal use
191
+ def getRubyAttributeDefinition(model)
192
+ #todo qqchos pour renvoyer valeur non nil
193
+ cmd=""
194
+ model.each { |tbl,prop|
195
+ next unless prop.kind_of?(Crdf_Property)
196
+ next if prop.rdfs_domain.nil?
197
+ next unless prop.rdfs_domain.include?(self)
198
+
199
+ cmd+=" rdf_attr :"+prop.getRubyName+",["
200
+ sep=""
201
+ prop.rdfs_range.each { |x|
202
+ #create module because we might be using it
203
+ #before it has a chance to be created.
204
+ eval %{module ::#{x.getRubyModuleName}\nend}
205
+ cmd+=sep+"::"+x.getRubyModuleName
206
+ sep=","
207
+ }
208
+ cmd+="]\n"
209
+ #puts
210
+ #puts rdf_attr_rubyCode(prop.getRubyName, [])
211
+ }
212
+ return cmd
213
+ end
214
+
215
+ # Internal use
216
+ #
217
+ # Creates a skeleton minimal ruby class for immediate use.
218
+ def createRubyClassMinimal(model)
219
+ return if @mtk_rubyClassGenerated
220
+ return if isBootstrap?
221
+ eval("class ::#{getRubyClassName} < ::Crdfs_Class\nend\n")
222
+ eval("module ::#{getRubyModuleName} \nend\n")
223
+ end
224
+
225
+ # Liste des classes dont la classe courante d�rive (directe et indirecte)
226
+ def rdfs_subClassOfRecursive(ret=Array.new)
227
+ rdfs_subClassOf.each { |sub|
228
+ next if ret.contains(sub)
229
+ ret.push(sub)
230
+ sub.rdfs_subClassOfRecursive(ret)
231
+ }
232
+ return ret
233
+ end
234
+
235
+ # Creates a ruby structure for this element.
236
+ # NOTE:
237
+ # generates ruby class named getRubyClassName
238
+ # generates ruby modules named getRubyModuleName
239
+ # multiple inheritance is handled trough multiple module inclusion.
240
+ def createRubyClass(model)
241
+ cmd=''
242
+ return cmd if @mtk_rubyClassGenerated
243
+ return cmd if isBootstrap?
244
+ @mtk_rubyClassGenerated=true
245
+
246
+ rdfs_subClassOf.each { |sub|
247
+ cmd+=sub.createRubyClass(model)
248
+ }
249
+
250
+ cmd+="module ::#{self.getRubyModuleName}\n"
251
+ cmd+=getRubyAttributeDefinition(model)
252
+ rdfs_subClassOf.each { |sub|
253
+ cmd+=' include ::' +(sub.getRubyModuleName)+"\n"
254
+ }
255
+ cmd+="end\n\n"
256
+ cmd+="class ::#{getRubyClassName} < ::Crdfs_Class\n"
257
+ cmd+=' include ' +self.getRubyModuleName+"\n"
258
+
259
+ #rdfs_subClassOfRecursive.uniq.each { |c|
260
+ # cmd+=' include ' +(c.getRubyModuleName)+'\n'
261
+ #}
262
+ cmd+="end\n\n"
263
+
264
+ #puts "cmd -->#---------\n#{cmd}\n#---------------"
265
+ eval(cmd)
266
+
267
+ return cmd
268
+ end
269
+ end
270
+
271
+ module Mrdf_Resource
272
+ # returns this object uri converted to a dot/graphviz compatible identifier.
273
+ def dotId
274
+ return rdf_uri.tr('^a-zA-Z0-9','_')
275
+ end
276
+ end
277
+