ontomde-core 2.0.4 → 2.0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/Manifest.txt +2 -0
- data/lib/ontomde-core.rb +2 -0
- data/lib/ontomde-core/context.rb +7 -7
- data/lib/ontomde-core/converter-ea/7_1_833/XMI2RDFS.xslt +18 -4
- data/lib/ontomde-core/fileLoader.rb +21 -23
- data/lib/ontomde-core/helper.rb +10 -9
- data/lib/ontomde-core/resource.rb +11 -1
- data/lib/ontomde-core/threads.rb +55 -0
- data/lib/ontomde-core/version.rb +1 -1
- data/lib/ontomde-core/xslt.rb +87 -0
- metadata +4 -2
data/Manifest.txt
CHANGED
@@ -93,8 +93,10 @@ lib/ontomde-core/meta.rb
|
|
93
93
|
lib/ontomde-core/profil.rb
|
94
94
|
lib/ontomde-core/resource.rb
|
95
95
|
lib/ontomde-core/resourceSet.rb
|
96
|
+
lib/ontomde-core/threads.rb
|
96
97
|
lib/ontomde-core/triplet.rb
|
97
98
|
lib/ontomde-core/version.rb
|
99
|
+
lib/ontomde-core/xslt.rb
|
98
100
|
test/protege/demo.sh
|
99
101
|
test/protege/etatCivil.pprj
|
100
102
|
test/protege/etatCivil.rdf
|
data/lib/ontomde-core.rb
CHANGED
data/lib/ontomde-core/context.rb
CHANGED
@@ -39,7 +39,7 @@ FINCODE
|
|
39
39
|
end
|
40
40
|
|
41
41
|
module Mrdf_Repository
|
42
|
-
@@context=WarningHash.new()
|
42
|
+
Thread.current["@@context"]=WarningHash.new()
|
43
43
|
|
44
44
|
#returns context hastable.
|
45
45
|
#
|
@@ -52,7 +52,7 @@ module Mrdf_Repository
|
|
52
52
|
# Please refer to #mtk_context method for information on
|
53
53
|
# how to populate context.
|
54
54
|
def context
|
55
|
-
return @@context
|
55
|
+
return Thread.current["@@context"]
|
56
56
|
end
|
57
57
|
|
58
58
|
# Similar to mtk_context but preserves already defined context.
|
@@ -60,7 +60,7 @@ module Mrdf_Repository
|
|
60
60
|
def mtk_default_context(*additional_context,&block)
|
61
61
|
filtered_context=Array.new
|
62
62
|
additional_context.each { |item| item.each { |k,v|
|
63
|
-
next if @@context.include?(k)
|
63
|
+
next if Thread.current["@@context"].include?(k)
|
64
64
|
filtered_context << item
|
65
65
|
}}
|
66
66
|
mtk_context(*filtered_context,&block)
|
@@ -93,13 +93,13 @@ module Mrdf_Repository
|
|
93
93
|
# puts context[:build] # BUILD_ONE
|
94
94
|
# }
|
95
95
|
def mtk_context(*additional_context,&block)
|
96
|
-
context_save
|
97
|
-
@@context=context_save.clone
|
96
|
+
context_save=Thread.current["@@context"]
|
97
|
+
Thread.current["@@context"]=context_save.clone
|
98
98
|
additional_context.each { |item| item.each { |k,v|
|
99
|
-
@@context[k]=v
|
99
|
+
Thread.current["@@context"][k]=v
|
100
100
|
}}
|
101
101
|
yield
|
102
|
-
@@context=context_save
|
102
|
+
Thread.current["@@context"]=context_save
|
103
103
|
return nil
|
104
104
|
end
|
105
105
|
|
@@ -1,5 +1,6 @@
|
|
1
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#"
|
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
|
+
xmlns:thecustomprofile="http://www.sparxsystems.com/profiles/thecustomprofile/1.0">
|
3
4
|
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
|
4
5
|
|
5
6
|
<!-- Create Defined and used Stereotypes for later creation of missing stereotype definitions -->
|
@@ -10,6 +11,7 @@
|
|
10
11
|
<xsl:key name="ExtensionConnectorIdRef" match="//xmi:Extension//connector" use="@xmi:idref"/>
|
11
12
|
<xsl:key name="ExtensionOperationIdRef" match="//xmi:Extension//operation" use="@xmi:idref"/>
|
12
13
|
<xsl:key name="ExtensionParameterIdRef" match="//xmi:Extension//parameter" use="@xmi:idref"/>
|
14
|
+
<xsl:key name="CustomProfile" match="//thecustomprofile:*" use="@*"/>
|
13
15
|
|
14
16
|
<!-- Profile -->
|
15
17
|
<xsl:template name="Profile" xmlns:uml="http://schema.omg.org/spec/UML/2.1/uml.xml">
|
@@ -56,9 +58,9 @@
|
|
56
58
|
</xsl:if>
|
57
59
|
<!-- Stereotype -->
|
58
60
|
<rdf:Description rdf:about="{@xmi:id}" ns0:name="{@name}">
|
59
|
-
<xsl:
|
60
|
-
<ns0:appliedStereotype rdf:resource="
|
61
|
-
</xsl:
|
61
|
+
<xsl:for-each select="key('ExtensionElementIdRef',current()/@xmi:id)/properties/@stereotype">
|
62
|
+
<ns0:appliedStereotype><xsl:attribute name="rdf:resource"><xsl:value-of select="."/></xsl:attribute></ns0:appliedStereotype>
|
63
|
+
</xsl:for-each>
|
62
64
|
<ns0:visibility rdf:resource="http://uml/2#visibilityKind_{@visibility}"/>
|
63
65
|
<xsl:if test="@isAbstract='true'">
|
64
66
|
<ns0:isAbstract>true</ns0:isAbstract>
|
@@ -80,6 +82,7 @@
|
|
80
82
|
<ns0:supplier rdf:resource="{@supplier}"/>
|
81
83
|
<ns0:realizingClassifier rdf:resource="{@realizingClassifier}"/>
|
82
84
|
<ns0:implementingClassifier rdf:resource="{@client}"/>
|
85
|
+
<xsl:call-template name="MyAppliedStereotypes"/>
|
83
86
|
</rdf:Description>
|
84
87
|
</xsl:for-each>
|
85
88
|
<!-- ownedAttribute -->
|
@@ -87,6 +90,17 @@
|
|
87
90
|
<!-- ownedOperation -->
|
88
91
|
<xsl:apply-templates select="ownedOperation"/>
|
89
92
|
</xsl:template>
|
93
|
+
|
94
|
+
<!-- looks for stereotype using two different methods -->
|
95
|
+
<xsl:template name="MyAppliedStereotypes">
|
96
|
+
<xsl:for-each select="key('ExtensionElementIdRef',current()/@xmi:id)/properties/@stereotype">
|
97
|
+
<ns0:appliedStereotype><xsl:attribute name="rdf:resource"><xsl:value-of select="."/></xsl:attribute></ns0:appliedStereotype>
|
98
|
+
</xsl:for-each>
|
99
|
+
<xsl:for-each select="key('CustomProfile',@xmi:id)">
|
100
|
+
<ns0:appliedStereotype><xsl:attribute name="rdf:resource"><xsl:value-of select="substring-after(name(),':')"/></xsl:attribute></ns0:appliedStereotype>
|
101
|
+
</xsl:for-each>
|
102
|
+
</xsl:template>
|
103
|
+
|
90
104
|
<!-- Comment -->
|
91
105
|
<xsl:template name="Comment">
|
92
106
|
<xsl:param name="body"/>
|
@@ -192,29 +192,27 @@ END
|
|
192
192
|
|
193
193
|
def translateEAXMI_to_NT(eaxmifile,ea_version)
|
194
194
|
translatedfile="#{eaxmifile}_tmp.nt"
|
195
|
-
|
196
|
-
|
197
|
-
|
195
|
+
f1="#{translatedfile}_deleteMe_prestep2"
|
196
|
+
mtk_addTempFileToDelete(translatedfile)
|
197
|
+
mtk_addTempFileToDelete(f1)
|
198
|
+
|
199
|
+
# load xslt engine
|
200
|
+
xslt=Mtk_xslt::XsltProcessor.new
|
201
|
+
|
202
|
+
puts " :starting Enterprise Architect XMI conversion using xslt:#{xslt.name}"
|
203
|
+
|
204
|
+
#step1 transforms xmi into xml-rdf
|
205
|
+
xslt1="#{File.dirname(__FILE__)}\\converter-ea\\#{ea_version}\\XMI2RDFS.xslt"
|
206
|
+
in1=eaxmifile
|
207
|
+
out1=f1
|
208
|
+
xslt.transform(xslt1,in1,out1)
|
209
|
+
|
210
|
+
#step2 is for getting rid of uri such as: file://xxx
|
211
|
+
xslt2="#{File.dirname(__FILE__)}\\converter-ea\\#{ea_version}\\XMI2RDFS_step2.xslt"
|
212
|
+
in2=out1
|
213
|
+
out2=translatedfile
|
214
|
+
xslt.transform(xslt2,in2,out2)
|
198
215
|
|
199
|
-
if ! OS_IS_WINDOWS
|
200
|
-
#we are not under windows
|
201
|
-
#built in rapper cannot be used (it is for windows)
|
202
|
-
#we use rapper available in path.
|
203
|
-
raise Exception.new('TODO: use xslt under linux')
|
204
|
-
elsif PLATFORM_IS_JAVA
|
205
|
-
#We are under windows but under jruby
|
206
|
-
cmd1="#{File.dirname(__FILE__)}\\converter-ea\\msxsl.exe "+param1.tr('/','\\\\')
|
207
|
-
cmd2="#{File.dirname(__FILE__)}\\converter-ea\\msxsl.exe "+param2.tr('/','\\\\')
|
208
|
-
else
|
209
|
-
#We are under windows but under Matz Ruby Implementation (MRI)
|
210
|
-
cmd1="#{File.dirname(__FILE__)}\\converter-ea\\msxsl.exe "+param1.tr('/','\\\\')
|
211
|
-
cmd2="#{File.dirname(__FILE__)}\\converter-ea\\msxsl.exe "+param2.tr('/','\\\\')
|
212
|
-
end
|
213
|
-
puts " :starting Enterprise Architect XMI conversion using msxml"
|
214
|
-
[cmd1,cmd2].each { |cmd|
|
215
|
-
ret=system(cmd)
|
216
|
-
raise Exception.new("\n***\n***Error running command\n***\n***#{cmd}\n***Please check that no msxml process is running in background\n***\n") unless ret
|
217
|
-
}
|
218
216
|
puts " :done with Enterprise Architect file conversion"
|
219
217
|
return translateXMLRDF_to_NT(translatedfile)
|
220
218
|
end
|
@@ -233,7 +231,7 @@ END
|
|
233
231
|
def translateXMLRDF_to_NT(srcFileName)
|
234
232
|
# added version number to avoid cache reuse when upgrading
|
235
233
|
fileName="#{srcFileName}.#{Ontomde::Core::VERSION}.cache.deleteMe.nt"
|
236
|
-
useCache=context[:useTranslateToNtCache,
|
234
|
+
useCache=context[:useTranslateToNtCache,false]
|
237
235
|
mtk_addTempFileToDelete(fileName) unless useCache
|
238
236
|
if( useCache && File.exists?(fileName) && File.mtime(fileName) > File.mtime(srcFileName) )
|
239
237
|
puts "INFO:Using cache in #{fileName}"
|
data/lib/ontomde-core/helper.rb
CHANGED
@@ -80,11 +80,11 @@ module Mmtk_helper
|
|
80
80
|
|
81
81
|
ret=nil
|
82
82
|
mtk_context(:mtk_out=>file,:mtk_fileName=>fileName) {
|
83
|
-
|
83
|
+
#@@mtk_out=context[:mtk_out] # perf
|
84
84
|
yield
|
85
|
-
ret
|
85
|
+
ret=context[:mtk_out].to_s
|
86
86
|
}
|
87
|
-
|
87
|
+
#@@mtk_out=context.get(:mtk_out) # perf
|
88
88
|
return ret
|
89
89
|
end
|
90
90
|
|
@@ -141,20 +141,20 @@ module Mmtk_helper
|
|
141
141
|
file=NullFileWriter.instance
|
142
142
|
#log.debug { "Simulating Write to #{fileName} (because context[:dryRun]==true)" }
|
143
143
|
mtk_context(:mtk_out=>file,:mtk_fileName=>fileName,:protectedReverse=>protectedReverse) {
|
144
|
-
|
144
|
+
#@@mtk_out=context[:mtk_out] # perf
|
145
145
|
yield
|
146
146
|
}
|
147
|
-
|
147
|
+
#@@mtk_out=context.get(:mtk_out) # perf
|
148
148
|
return
|
149
149
|
end
|
150
150
|
File.open(fileName+TEMP_FILE_SUFFIX,File::CREAT|File::TRUNC|File::RDWR, 0644) {
|
151
151
|
|file|
|
152
152
|
mtk_context(:mtk_out=>file,:mtk_fileName=>fileName,:protectedReverse=>protectedReverse) {
|
153
153
|
#log.debug { "Writing #{fileName}" }
|
154
|
-
|
154
|
+
#@@mtk_out=context[:mtk_out] # perf
|
155
155
|
yield
|
156
156
|
}
|
157
|
-
|
157
|
+
#@@mtk_out=context.get(:mtk_out) # perf
|
158
158
|
}
|
159
159
|
#Temporary file has been corectly generated.
|
160
160
|
unusedData=protectedReverse.unusedData
|
@@ -304,8 +304,9 @@ You must take the appropriate actions before re-running generator.
|
|
304
304
|
|
305
305
|
# Write string to the current file opened by mtk_writeSession.
|
306
306
|
def write(str)
|
307
|
-
|
308
|
-
|
307
|
+
o=context[:mtk_out]
|
308
|
+
if !o.nil?
|
309
|
+
o.write(str)
|
309
310
|
return
|
310
311
|
end
|
311
312
|
raise Warning.new(), <<END
|
@@ -178,8 +178,18 @@ class Crdf_Resource
|
|
178
178
|
|
179
179
|
#Transforms a uri to a valid ruby identifier.
|
180
180
|
#cf. getRubyNameInverse
|
181
|
+
@@CacheGetRubyName=Hash.new
|
182
|
+
|
183
|
+
def freeCacheGetRubyName
|
184
|
+
@@CacheGetRubyName=Hash.new
|
185
|
+
end
|
181
186
|
def getRubyName
|
182
|
-
|
187
|
+
x=@@CacheGetRubyName[@uri]
|
188
|
+
if x.nil?
|
189
|
+
x=@uri.tr('^a-zA-Z0-9','_')
|
190
|
+
@@CacheGetRubyName[@uri]=x
|
191
|
+
end
|
192
|
+
return x
|
183
193
|
#return @rdf_label if @rdf_label
|
184
194
|
#return self.class.to_s # bootstrap
|
185
195
|
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
# Multi-threading is necessary for taking advantage of multi cpu/core
|
2
|
+
# * MRI does not take advantage of multi core so you will not see any gain
|
3
|
+
# * JRUBY does use native thread and thus will benefit of threading.
|
4
|
+
#
|
5
|
+
# I have personnaly gainned 15% of global ontomde execution time on a
|
6
|
+
# dual CPU with anti-virus using between 25% and 90% of one core.
|
7
|
+
# Benefit should be more noticeable with a quad core.
|
8
|
+
#
|
9
|
+
# (may 2009)
|
10
|
+
#
|
11
|
+
|
12
|
+
module Enumerable
|
13
|
+
PLATFORM_IS_JAVA=!(RUBY_PLATFORM.index('java').nil?)
|
14
|
+
THREAD_NUMBER= ENV['ONTOMDE_THREADS'].nil? ? (PLATFORM_IS_JAVA ? 4 : 1) : ENV['ONTOMDE_THREADS'].to_int
|
15
|
+
def eachInThread(res,nbThread=THREAD_NUMBER,&proc)
|
16
|
+
if(res.context[:mtkThread,false])
|
17
|
+
puts "!! WARNING: recursive multi-thread request ignored"
|
18
|
+
nbThread=1
|
19
|
+
end
|
20
|
+
if(nbThread<=1 || (size < (nbThread*2)) )
|
21
|
+
each &proc
|
22
|
+
return
|
23
|
+
end
|
24
|
+
|
25
|
+
t=Array.new
|
26
|
+
(0..(nbThread-1)).each { |i|
|
27
|
+
t[i]=Array.new
|
28
|
+
}
|
29
|
+
# split collection in nbThread collections
|
30
|
+
i=0
|
31
|
+
each { |elt|
|
32
|
+
t[i].push(elt)
|
33
|
+
i=(i+1)%nbThread
|
34
|
+
}
|
35
|
+
|
36
|
+
# run one thread for each sub-collection
|
37
|
+
rt=Array.new
|
38
|
+
(0..(nbThread-1)).each { |i|
|
39
|
+
puts "!Starting thread #{i} for #{t[i].size} elements"
|
40
|
+
rt.push(Thread.new(i,t[i],res.context) { |ii,tas,ctx|
|
41
|
+
Thread.current["@@context"]=ctx
|
42
|
+
res.mtk_context(:mtkThread => true) {
|
43
|
+
tas.each &proc
|
44
|
+
#puts "!thread #{ii} done."
|
45
|
+
}})
|
46
|
+
|
47
|
+
}
|
48
|
+
|
49
|
+
puts "!waiting for unfinished parallel tasks"
|
50
|
+
rt.each { |th|
|
51
|
+
th.join
|
52
|
+
}
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
data/lib/ontomde-core/version.rb
CHANGED
@@ -0,0 +1,87 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
PLATFORM_IS_JAVA=!(RUBY_PLATFORM.index('java').nil?)
|
4
|
+
OS_IS_WINDOWS=!(ENV['OS'].nil? ? true : ENV['OS'].index('Windows').nil?)
|
5
|
+
|
6
|
+
|
7
|
+
if OS_IS_WINDOWS
|
8
|
+
module Mtk_xslt
|
9
|
+
class XsltProcessor
|
10
|
+
def name
|
11
|
+
return "msxml"
|
12
|
+
end
|
13
|
+
def transform(xslt,infile,outfile)
|
14
|
+
param="#{infile} -o #{outfile} #{xslt}"
|
15
|
+
cmd="#{File.dirname(__FILE__)}\\converter-ea\\msxsl.exe "+param.tr('/','\\\\')
|
16
|
+
ret=system(cmd)
|
17
|
+
raise Exception.new("\n***\n***Error running command\n***\n***#{cmd}\n***Please check that no msxml process is running in background\n***\n") unless ret
|
18
|
+
end
|
19
|
+
end # XsltProcessor
|
20
|
+
end
|
21
|
+
elsif PLATFORM_IS_JAVA
|
22
|
+
# Jruby version
|
23
|
+
|
24
|
+
#from:
|
25
|
+
# http://kfahlgren.com/blog/2007/03/02/borrowing-javas-xslt-support-for-ruby/
|
26
|
+
|
27
|
+
require 'java'
|
28
|
+
module Mtk_xslt
|
29
|
+
include_class "javax.xml.transform.TransformerFactory"
|
30
|
+
include_class "javax.xml.transform.Transformer"
|
31
|
+
include_class "javax.xml.transform.stream.StreamSource"
|
32
|
+
include_class "javax.xml.transform.stream.StreamResult"
|
33
|
+
include_class "java.lang.System"
|
34
|
+
|
35
|
+
|
36
|
+
class Saxon
|
37
|
+
def transform(xslt,infile,outfile)
|
38
|
+
transformer = @tf.newTransformer(StreamSource.new(xslt))
|
39
|
+
transformer.transform(StreamSource.new(infile), StreamResult.new(outfile))
|
40
|
+
end
|
41
|
+
def name
|
42
|
+
return "jruby/saxon"
|
43
|
+
end
|
44
|
+
TRANSFORMER_FACTORY_IMPL = "net.sf.saxon.TransformerFactoryImpl"
|
45
|
+
def initialize
|
46
|
+
System.setProperty("javax.xml.transform.TransformerFactory", TRANSFORMER_FACTORY_IMPL)
|
47
|
+
@tf = TransformerFactory.newInstance
|
48
|
+
raise Exception.new("\n*** *******\n*** ERROR loading saxon into jruby.\n*** This error may be caused by missing Saxon jars in jruby lib directory\n*** *******") if @tf.nil?
|
49
|
+
end
|
50
|
+
end
|
51
|
+
class Xalan
|
52
|
+
def transform(xslt,infile,outfile)
|
53
|
+
transformer = @tf.newTransformer(StreamSource.new(xslt))
|
54
|
+
transformer.transform(StreamSource.new(infile), StreamResult.new(outfile))
|
55
|
+
end
|
56
|
+
def name
|
57
|
+
return "jruby/xalanl"
|
58
|
+
end
|
59
|
+
TRANSFORMER_FACTORY_IMPL = "org.apache.xalan.processor.TransformerFactoryImpl"
|
60
|
+
def initialize
|
61
|
+
System.setProperty("javax.xml.transform.TransformerFactory", TRANSFORMER_FACTORY_IMPL)
|
62
|
+
@tf = TransformerFactory.newInstance
|
63
|
+
raise Exception.new("\n*** *******\n*** ERROR loading saxon into jruby.\n*** This error may be caused by missing xalan jars in jruby lib directory\n*** *******") if @tf.nil?
|
64
|
+
end
|
65
|
+
end
|
66
|
+
#class XsltProcessor < Saxon ; end
|
67
|
+
class XsltProcessor < Xalan ; end
|
68
|
+
end
|
69
|
+
|
70
|
+
# if you wanted to run this from the command line, do something like
|
71
|
+
# $ jruby lib/jxslt.rb a.xsl in.xml out.xml
|
72
|
+
#xalan = Mtk_xslt::XsltProcessor.new
|
73
|
+
#xalan.transform(*ARGV)
|
74
|
+
#saxon = JXslt::Saxon.new
|
75
|
+
#saxon.transform(*ARGV)
|
76
|
+
|
77
|
+
else
|
78
|
+
# XSLT is not available
|
79
|
+
module Mtk_xslt
|
80
|
+
class XsltProcessor
|
81
|
+
def initialize
|
82
|
+
raise Exception.new("\n***\n***XSLT is not available on your platform. Currently supported platform are JRUBY and Windows\n***\n***")
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ontomde-core
|
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
|
@@ -130,8 +130,10 @@ files:
|
|
130
130
|
- lib/ontomde-core/profil.rb
|
131
131
|
- lib/ontomde-core/resource.rb
|
132
132
|
- lib/ontomde-core/resourceSet.rb
|
133
|
+
- lib/ontomde-core/threads.rb
|
133
134
|
- lib/ontomde-core/triplet.rb
|
134
135
|
- lib/ontomde-core/version.rb
|
136
|
+
- lib/ontomde-core/xslt.rb
|
135
137
|
- test/protege/demo.sh
|
136
138
|
- test/protege/etatCivil.pprj
|
137
139
|
- test/protege/etatCivil.rdf
|