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,173 +1,185 @@
|
|
1
|
-
|
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
|
-
|
1
|
+
module Mrdf_Model
|
2
|
+
end
|
3
|
+
|
4
|
+
class Crdf_Resource
|
5
|
+
#True if resource is a bootstrap resource.
|
6
|
+
#A bootstrap resource is a resource existing prior to model creation (not loaded from external configuration file).
|
7
|
+
#Loaded resources are built using bootstrap resouces as references.
|
8
|
+
rdf_safe_attr_reader_many :ext_isBootstrap
|
9
|
+
end
|
10
|
+
|
11
|
+
#Class meant to store every element of a model.
|
12
|
+
class Crdf_Model #< Hash
|
13
|
+
include Mrdf_Model
|
14
|
+
attr_reader :updateCount
|
15
|
+
|
16
|
+
attr :typeIndex
|
17
|
+
|
18
|
+
|
19
|
+
def addTypeIndex(idxType)
|
20
|
+
@typeIndex[idxType]=Set.new
|
21
|
+
end
|
22
|
+
def length
|
23
|
+
@resourceSet.length
|
24
|
+
end
|
25
|
+
def empty?
|
26
|
+
return @resourceSet.empty?
|
27
|
+
end
|
28
|
+
def to_s
|
29
|
+
log.debug 'Model'
|
30
|
+
end
|
31
|
+
|
32
|
+
# Returns the ressource associated to the uri key.
|
33
|
+
def [](key)
|
34
|
+
return @resourceSet[key]
|
35
|
+
end
|
36
|
+
|
37
|
+
# Internal use
|
38
|
+
def []=(key,res)
|
39
|
+
if @resourceSet.include?(key)
|
40
|
+
#puts "duplicate key: #{res == @resourceSet[key]} #{@@zzzz} #{key} --> #{res} #{@resourceSet[key]}"
|
41
|
+
#raise Exception.new() if res.to_s.include?("string") #if res != @resourceSet[key] #&& key.include?("get_p1")
|
42
|
+
end
|
43
|
+
@typeIndex.each { |ti,idx|
|
44
|
+
idx.add(res) if res.kind_of?(ti)
|
45
|
+
}
|
46
|
+
@resourceSet[key]=res
|
47
|
+
end
|
48
|
+
|
49
|
+
# Standard each iterator
|
50
|
+
def each(&block_expr)
|
51
|
+
@resourceSet.each &block_expr
|
52
|
+
end
|
53
|
+
|
54
|
+
# Standard find_all iterator
|
55
|
+
def find_all(&block_expr)
|
56
|
+
@resourceSet.find_all &block_expr
|
57
|
+
end
|
58
|
+
|
59
|
+
# Standard each_value iterator
|
60
|
+
def each_value(&block_expr)
|
61
|
+
@resourceSet.each_value &block_expr
|
62
|
+
end
|
63
|
+
#
|
64
|
+
# Standard reject iterator
|
65
|
+
def reject(&block_expr)
|
66
|
+
@resourceSet.reject &block_expr
|
67
|
+
end
|
68
|
+
|
69
|
+
# Initialize model internal structures.
|
70
|
+
def initialize
|
71
|
+
super
|
72
|
+
@resourceSet=Hash.new
|
73
|
+
#@fileGenerated=Array.new
|
74
|
+
@updateCount=0
|
75
|
+
@typeIndex=Hash.new
|
76
|
+
#@@mtk_out=nil
|
77
|
+
|
78
|
+
#bootstrap
|
79
|
+
Crdf_Resource.new(self,'rdf_Resource');
|
80
|
+
Crdf_Resource.new(self,'rdfs_Resource'); # le p�re des h�ritages
|
81
|
+
Crdf_Resource.new(self,'rdfs_Class');
|
82
|
+
Crdf_Resource.new(self,'rdf_Property');
|
83
|
+
Crdf_Resource.new(self,'rdfs_Literal');
|
84
|
+
|
85
|
+
#bootstrap pour module kb
|
86
|
+
Crdf_Resource.new(self,'kb_UML_METACLASS');
|
87
|
+
Crdf_Resource.new(self,'kb_UML_SLOT');
|
88
|
+
|
89
|
+
self.each {|k,c| c.ext_isBootstrap='true'}
|
90
|
+
end
|
91
|
+
|
92
|
+
#returns ressource associated to uri stored in model
|
93
|
+
def getRes(uri)
|
94
|
+
raise Warning.new,'nil uri' if uri.nil?
|
95
|
+
obj=self[uri]
|
96
|
+
raise WarningURIundefined.new(uri),"--uri undefined \"#{uri}\" " if obj.nil?
|
97
|
+
return obj
|
98
|
+
end
|
99
|
+
|
100
|
+
# internal use
|
101
|
+
def parse(nt,modeData)
|
102
|
+
if modeData
|
103
|
+
parseModeData(nt)
|
104
|
+
else
|
105
|
+
parseModeResource(nt)
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
# internal use
|
110
|
+
@@RDF_type=['rdf_type']
|
111
|
+
|
112
|
+
# internal use
|
113
|
+
def predicat_isRDFTYPE(predicat)
|
114
|
+
return @@RDF_type.include?(predicat)
|
115
|
+
end
|
116
|
+
|
117
|
+
# internal use
|
118
|
+
def dynNewInstance(value_res,about_uri)
|
119
|
+
cmd=value_res.getRubyClassName+'.new(self,about_uri)'
|
120
|
+
return eval(cmd)
|
121
|
+
end
|
122
|
+
|
123
|
+
# internal use
|
124
|
+
def parseModeResource(nt)
|
125
|
+
return if !predicat_isRDFTYPE(nt.predicat_uri)
|
126
|
+
|
127
|
+
about_res=self[nt.about_uri]
|
128
|
+
if about_res
|
129
|
+
about_res.forceReset!()
|
130
|
+
else
|
131
|
+
value_res=self.getRes(nt.value_uri)
|
132
|
+
begin
|
133
|
+
about_res=dynNewInstance(value_res,nt.about_uri)
|
134
|
+
about_res.rdf_type=value_res
|
135
|
+
#about_res.set(rubyIdentifier(predicat_uri),value_res) # ref
|
136
|
+
rescue => e
|
137
|
+
log.debug "e-->#{e}"
|
138
|
+
#TODO: cause probable
|
139
|
+
raise WarningRubyTypeUndefined.new(nt.about_uri,value_res),"Ruby Type #{value_res.getRubyClassName} Undefined (cause probable!)"
|
140
|
+
end
|
141
|
+
return
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
# internal use
|
146
|
+
def parseModeData(nt)
|
147
|
+
return if predicat_isRDFTYPE(nt.predicat_uri)
|
148
|
+
subject=self.getRes(nt.about_uri)
|
149
|
+
if nt.valueIsReference?
|
150
|
+
subject.set(rubyIdentifier(nt.predicat_uri),self.getRes(nt.value_uri))
|
151
|
+
else
|
152
|
+
subject.set(rubyIdentifier(nt.predicat_uri),nt.value_litteral)
|
153
|
+
end
|
154
|
+
|
155
|
+
end
|
156
|
+
|
157
|
+
# internal use
|
158
|
+
def rubyIdentifier(str)
|
159
|
+
return str.tr('^a-zA-Z0-9','_')
|
160
|
+
end
|
161
|
+
|
162
|
+
# internal use
|
163
|
+
|
164
|
+
def generateClassesFromMetamodel(outRubyModelFileName)
|
165
|
+
#log.debug("ecriture du metamodele dans: #{outRubyModelFileName}")
|
166
|
+
mtk_default_context(:logFileWrite => false) { mtk_writeSession(outRubyModelFileName) {
|
167
|
+
f=self
|
168
|
+
f.write <<END
|
169
|
+
# Start of file #{outRubyModelFileName}
|
170
|
+
# This file is automaticaly generated
|
171
|
+
# Generation date:#{Time.now}
|
172
|
+
END
|
173
|
+
self.each_value { |x|
|
174
|
+
next unless x.kind_of?(Crdfs_Class)
|
175
|
+
##log.debug "gen -> #{x} #{x.class}"
|
176
|
+
#createRubyClassMinimal(model)
|
177
|
+
cmd=x.createRubyClass(self)
|
178
|
+
f.write(cmd)
|
179
|
+
}
|
180
|
+
f.write("# End of file #{outRubyModelFileName}\n")
|
181
|
+
}}
|
182
|
+
end
|
183
|
+
|
184
|
+
|
185
|
+
end
|