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.
- data/History.txt +10 -5
- data/Manifest.txt +1 -2
- data/Manual.txt +88 -0
- data/README.txt +79 -48
- data/Rakefile +4 -3
- data/lib/ontomde-core/bootstrap_rdfs.rb +36 -37
- data/lib/ontomde-core/clone.rb +72 -73
- data/lib/ontomde-core/context.rb +114 -115
- data/lib/ontomde-core/customERB.rb +72 -72
- data/lib/ontomde-core/custom_method_missing.rb +52 -53
- data/lib/ontomde-core/delayed.rb +9 -9
- data/lib/ontomde-core/demoInstaller.rb +25 -25
- data/lib/ontomde-core/exceptions.rb +27 -28
- data/lib/ontomde-core/fileLoader.rb +191 -163
- data/lib/ontomde-core/fileTypes.rb +145 -133
- data/lib/ontomde-core/helper.rb +547 -538
- data/lib/ontomde-core/log.rb +32 -32
- data/lib/ontomde-core/meta.rb +410 -316
- data/lib/ontomde-core/profil.rb +60 -62
- data/lib/ontomde-core/resource.rb +277 -272
- data/lib/ontomde-core/resourceSet.rb +185 -173
- data/lib/ontomde-core/triplet.rb +159 -161
- data/lib/ontomde-core/version.rb +5 -5
- data/lib/ontomde-core.rb +26 -35
- data/test/protege/etatCivil.pprj +779 -526
- data/test/protege/etatCivil.rdf +3 -1
- data/test/protege/etatCivil.rdfs +6 -0
- data/test/protege/test_demo.rb +68 -46
- data/test/test_context.rb +88 -88
- data/test/test_ontomde-core.rb +9 -9
- data/test/test_protected.rb +291 -238
- data/test/test_uri.rb +37 -37
- data/test/unit_test_crash.rb +22 -22
- metadata +66 -59
- data/bin/ontomde-core +0 -0
- data/lib/ontomde-core/loader.rb +0 -70
@@ -1,272 +1,277 @@
|
|
1
|
-
# Core RDF resource management
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
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
|
+
|