easy_data3 0.0.2

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.
Files changed (85) hide show
  1. data/.gitignore +9 -0
  2. data/.idea/EasyData.iml +11 -0
  3. data/.idea/encodings.xml +5 -0
  4. data/.idea/misc.xml +11 -0
  5. data/.idea/modules.xml +9 -0
  6. data/.idea/vcs.xml +7 -0
  7. data/Gemfile +6 -0
  8. data/README.md +44 -0
  9. data/Rakefile +12 -0
  10. data/bin/linked_data +5 -0
  11. data/easy_data.gemspec +28 -0
  12. data/lib/controllers/easy_datas_controller.rb +340 -0
  13. data/lib/data_models/RDFa.rb +100 -0
  14. data/lib/data_models/data_models.rb +74 -0
  15. data/lib/data_models/linked_data_graph.rb +80 -0
  16. data/lib/data_models/model_rdf.rb +344 -0
  17. data/lib/data_models/namespaces/cc.rb +36 -0
  18. data/lib/data_models/namespaces/cert.rb +33 -0
  19. data/lib/data_models/namespaces/dc.rb +87 -0
  20. data/lib/data_models/namespaces/dc11.rb +47 -0
  21. data/lib/data_models/namespaces/doap.rb +68 -0
  22. data/lib/data_models/namespaces/exif.rb +192 -0
  23. data/lib/data_models/namespaces/foaf.rb +93 -0
  24. data/lib/data_models/namespaces/geo.rb +35 -0
  25. data/lib/data_models/namespaces/http.rb +50 -0
  26. data/lib/data_models/namespaces/owl.rb +83 -0
  27. data/lib/data_models/namespaces/rdfs.rb +41 -0
  28. data/lib/data_models/namespaces/rsa.rb +35 -0
  29. data/lib/data_models/namespaces/rss.rb +38 -0
  30. data/lib/data_models/namespaces/sioc.rb +110 -0
  31. data/lib/data_models/namespaces/skos.rb +61 -0
  32. data/lib/data_models/namespaces/wot.rb +45 -0
  33. data/lib/data_models/namespaces/xhtml.rb +32 -0
  34. data/lib/data_models/namespaces/xsd.rb +77 -0
  35. data/lib/data_models/namespaces.rb +28 -0
  36. data/lib/easy_data/tasks.rb +137 -0
  37. data/lib/easy_data/templates/easy_datas/_data_publications.html.erb +28 -0
  38. data/lib/easy_data/templates/easy_datas/_footer.html.erb +5 -0
  39. data/lib/easy_data/templates/easy_datas/_linked_data_model.html.erb +19 -0
  40. data/lib/easy_data/templates/easy_datas/_linked_datas.html.erb +19 -0
  41. data/lib/easy_data/templates/easy_datas/_list_model_info.html.erb +23 -0
  42. data/lib/easy_data/templates/easy_datas/_list_properties.html.erb +24 -0
  43. data/lib/easy_data/templates/easy_datas/_list_properties_edit.html.erb +35 -0
  44. data/lib/easy_data/templates/easy_datas/_menu.html.erb +24 -0
  45. data/lib/easy_data/templates/easy_datas/_menu_custom.html.erb +18 -0
  46. data/lib/easy_data/templates/easy_datas/_model_attributes.html.erb +45 -0
  47. data/lib/easy_data/templates/easy_datas/_model_attributes_edit.html.erb +17 -0
  48. data/lib/easy_data/templates/easy_datas/_model_attributes_info.html.erb +24 -0
  49. data/lib/easy_data/templates/easy_datas/_settings.html.erb +33 -0
  50. data/lib/easy_data/templates/easy_datas/authenticate_user.html.erb +20 -0
  51. data/lib/easy_data/templates/easy_datas/custom_rdf.html.erb +28 -0
  52. data/lib/easy_data/templates/easy_datas/info_easy_data.html.erb +7 -0
  53. data/lib/easy_data/templates/easy_datas/show.html.erb +1 -0
  54. data/lib/easy_data/templates/easy_datas/show.xml.builder +18 -0
  55. data/lib/easy_data/templates/easy_datas/show_all.html.erb +1 -0
  56. data/lib/easy_data/templates/easy_datas/show_all.xml.builder +16 -0
  57. data/lib/easy_data/templates/easy_datas/view_settings.html.erb +32 -0
  58. data/lib/easy_data/templates/images/LogoEasyData.jpg +0 -0
  59. data/lib/easy_data/templates/images/bg_ft.png +0 -0
  60. data/lib/easy_data/templates/images/bg_link.jpg +0 -0
  61. data/lib/easy_data/templates/images/easy_data_logo.png +0 -0
  62. data/lib/easy_data/templates/images/lock.png +0 -0
  63. data/lib/easy_data/templates/images/loginBt.png +0 -0
  64. data/lib/easy_data/templates/images/login_bg.png +0 -0
  65. data/lib/easy_data/templates/images/logo_ft.png +0 -0
  66. data/lib/easy_data/templates/images/powerby.jpg +0 -0
  67. data/lib/easy_data/templates/images/rdf_icon.png +0 -0
  68. data/lib/easy_data/templates/images/rdf_icon_s.png +0 -0
  69. data/lib/easy_data/templates/images/shadow_menu.png +0 -0
  70. data/lib/easy_data/templates/layouts/easy_data_layout.html.erb +18 -0
  71. data/lib/easy_data/templates/rdf/request.xml.builder +1 -0
  72. data/lib/easy_data/templates/rdf/show.builder +1 -0
  73. data/lib/easy_data/templates/stylesheets/easy_data_style.css +62 -0
  74. data/lib/easy_data/version.rb +3 -0
  75. data/lib/easy_data.rb +107 -0
  76. data/lib/routes.rb +41 -0
  77. data/lib/tasks/testing_installation.rb +6 -0
  78. data/test/data_models_test.rb +11 -0
  79. data/test/rdfa_test.rb +18 -0
  80. data/test/unit/RDFa_test.rb +1 -0
  81. data/test/unit/data_models_test.rb +10 -0
  82. data/test/unit/linked_data_graph_test.rb +1 -0
  83. data/test/unit/model_rdf_test.rb +1 -0
  84. data/test/unit/namespaces_test.rb +2 -0
  85. metadata +172 -0
@@ -0,0 +1,80 @@
1
+ class LinkedDataGraph
2
+
3
+ def self.build(models)
4
+
5
+ models.each do |model|
6
+ graph = {}
7
+
8
+ #graph[:models] = get_attributes_ponderations(models)
9
+ graph[:assoc] = get_associations(model)
10
+
11
+ generate_graph(graph,model) if !graph[:assoc].empty?
12
+ end
13
+ end
14
+
15
+ private
16
+
17
+ def self.get_attributes_ponderations(model)
18
+ associations = {}
19
+
20
+ model = eval model
21
+ if model.respond_to?:reflections
22
+ associations[model.to_s.gsub("::","_")] = model.reflections.count
23
+ else
24
+ associations[model.to_s.gsub("::","_")] = 0
25
+ end
26
+
27
+ end
28
+
29
+ def self.get_associations(model)
30
+ assoc = []
31
+
32
+ model = eval model
33
+ if model.respond_to?:reflections
34
+ model.reflections.each do |name,info|
35
+ mod_assoc = info.name.to_s.camelize
36
+ begin
37
+ eval mod_assoc
38
+ rescue
39
+ begin
40
+ eval mod_assoc.pluralize
41
+ mod_assoc = (mod_assoc.pluralize)
42
+ rescue
43
+ (mod_assoc = info.options[:source].to_s.camelize)if info.options[:source]
44
+ end
45
+ end
46
+ if mod_assoc
47
+ assoc << mod_assoc
48
+ end
49
+ end
50
+ end
51
+ assoc
52
+ end
53
+
54
+ def self.generate_graph(graph_info,model)
55
+ model = model.gsub("::","_")
56
+ file = File.open("#{RAILS_ROOT}/public/images/linked_data_graphs/linked_data_#{model}.dot",'w')
57
+
58
+ file.puts "digraph G {"
59
+ #file.puts 'size="15,15";'
60
+ file.puts 'graph [rotate=0, rankdir="LR"]'
61
+ file.puts 'node [color="#333333", style=filled,shape=box, fontname="Trebuchet MS"]'
62
+ file.puts 'edge [color="#666666", arrowhead="open", fontname="Trebuchet MS", fontsize="11"]'
63
+ file.puts model.to_s+' [fillcolor="#116611", fontcolor="white"]'
64
+
65
+ #Draw nodes
66
+
67
+ graph_info[:assoc].each do |assoc|
68
+ file.puts assoc.to_s+' [fillcolor="#294b76", fontcolor="white"]'
69
+ file.puts '"'+model+'" -> "'+assoc.to_s+'"[dir=none];'
70
+ end
71
+
72
+
73
+ file.puts "}"
74
+
75
+ file.close
76
+
77
+ system "dot -Tpng #{RAILS_ROOT}/public/images/linked_data_graphs/linked_data_#{model}.dot -o #{RAILS_ROOT}/public/images/linked_data_graphs/linked_data_#{model}.png"
78
+ system "rm #{RAILS_ROOT}/public/images/linked_data_graphs/linked_data_#{model}.dot"
79
+ end
80
+ end
@@ -0,0 +1,344 @@
1
+ require "yaml"
2
+
3
+ class ModelRdf
4
+
5
+ #######################################################################
6
+ # Attributes declarations
7
+ #######################################################################
8
+ @@privacy = ["Hidden","Public","Authenticated"]
9
+
10
+ attr_accessor :model_rdf
11
+
12
+
13
+ #######################################################################
14
+ # Query methods
15
+ #######################################################################
16
+
17
+ #Read the document of attributes relations with rdf properties
18
+ # @return [Object] return a ModelRdf's instance whit rdf info
19
+ def initialize
20
+ @model_rdf = YAML::load(File.open("#{RAILS_ROOT}/config/easy_data/rdf_info.yaml"))
21
+ end
22
+
23
+ # Return datas stored in the RDF informations yaml file
24
+ # @return [Hash] return RDF informations
25
+ def get_models
26
+ self.model_rdf
27
+ end
28
+
29
+ # Return data stored in the RDF informations yaml file about publicated models
30
+ # @return [Hash] return RDF information about public access information of publicated models
31
+ def get_public_models
32
+ models = []
33
+ self.load_models.each do |mod|
34
+ if self.public?(mod)
35
+ models << mod
36
+ end
37
+ end
38
+ end
39
+
40
+ # Return data stored in the RDF informations yaml file about publicated models.
41
+ # @return [Hash] return RDF information about not hidden rdf information's models.
42
+ def get_not_hidden_models
43
+ models = []
44
+ self.load_models.each do |mod|
45
+ unless self.hidden?(mod)
46
+ models << mod
47
+ end
48
+ end
49
+ models
50
+ end
51
+
52
+ # Check if the model is public
53
+ # @param [Symbol] model's name
54
+ # @return [Boolean] true or false
55
+ def public?(model)
56
+ self.model_rdf[model][:privacy] == "Public"
57
+ end
58
+
59
+ # Check if the model is private
60
+ # @param [Symbol] model's name
61
+ # @return [Boolean] true or false
62
+ def private?(model)
63
+ self.model_rdf[model][:privacy] == "Private"
64
+ end
65
+
66
+ # Check if the model is hidden
67
+ # @param [Symbol] model's name
68
+ # @return [Boolean] true or false
69
+ def hidden?(model)
70
+ self.model_rdf[model][:privacy] == "Hidden"
71
+ end
72
+
73
+ # Model RDF informations and privacy
74
+ # @param [String] model's name
75
+ # @return [Hash] hash with RDF and privacy information about the model
76
+ def get_rdf_info_model(model)
77
+ {:namespace => self.model_rdf[model][:namespace],:property => self.model_rdf[model][:property]}
78
+ end
79
+
80
+ # Return attributes of model stored in the configuration yaml file
81
+ # @param [String] model's name
82
+ # @return [Hash] Return all information about the model and his data.
83
+ def get_attributes_model(model)
84
+ self.model_rdf[model]
85
+ end
86
+
87
+ # Return all models which they are assocciations of current model
88
+ # @param [String] current model name
89
+ # @return [Array] list of models which the are assocciations with current model.
90
+ def get_associations_model(model)
91
+ associations = self.model_rdf[model]['associations'].keys
92
+ models = DataModels.load_models
93
+ hash_associations = {}
94
+
95
+ associations.each do |assc|
96
+ if models.include?assc.camelize
97
+ hash_associations[assc] = assc
98
+ elsif eval(model+'.reflections[:'+assc+'].class_name')
99
+ hash_associations[assc] = eval(model+'.reflections[:'+assc+'].class_name')
100
+ else
101
+ hash_associations[assc] = eval(model+'.reflections[:'+assc+'].options[:class_name]')
102
+ end
103
+ end
104
+
105
+ hash_associations
106
+ end
107
+
108
+ # RDFa: Return attributes of model RDF info
109
+ # @param [String] model's name
110
+ # @return [String] model's rdf information to insert in HTML tag
111
+ def model(model)
112
+ info = get_rdf_info_model(model)
113
+ if info[:property] && info[:property]!= "not defined"
114
+ " typeof='#{info[:namespace]}:#{info[:property]}'"
115
+ else
116
+ " "
117
+ end
118
+ end
119
+
120
+ def add_model(model,attributes)
121
+ self.model_rdf[model] = attributes
122
+ end
123
+
124
+ def delete_model(model)
125
+ self.model_rdf.delete(model)
126
+ end
127
+ # Update model rdf info
128
+ # @param [String] model's name
129
+ # @param [String] model's property to be updated
130
+ # @param [Strign] new value
131
+ # @return [Boolean] true or false if the operation has finished correctly.
132
+ def update_model(model,param,value)
133
+ self.model_rdf[model][param.to_sym] = value
134
+ end
135
+
136
+ # update attributes with rdf properties.
137
+ # @param [String] model's name
138
+ # @param [String] model's attribute
139
+ # @param [String] attribute's property to be updated
140
+ # @param [Strign] new value
141
+ # @return [Boolean] true or false if the operation has finished correctly.
142
+ def update_attributes_model(model,attribute,param,value)
143
+ self.model_rdf[model]['attributes'][attribute][param.to_sym] = value
144
+ end
145
+
146
+ # RDFa: Return attribute rdf info
147
+ # @param [String] model's name
148
+ # @param [Strign] model's attribute
149
+ # @return [String] RDF information about model's attribute to insert in HTML tag.
150
+ def attribute(model,attribute)
151
+ att_rdf = self.model_rdf[model]['attributes'][attribute]
152
+ " property='#{att_rdf[:namespace]}:#{att_rdf[:property]}'"
153
+ end
154
+
155
+ # update associations with rdf properties.
156
+ # @param [String] model's name
157
+ # @param [String] model's attribute
158
+ # @param [String] association's property to be updated
159
+ # @param [Strign] new value
160
+ # @return [Boolean] true or false if the operation has finished correctly.
161
+ def update_associations_model(model,association,param,value)
162
+ self.model_rdf[model]['associations'][association][param.to_sym] = value
163
+ end
164
+
165
+ # RDFa: return a string with all prefix used to describes attributes
166
+ # @param [String] model's name
167
+ # @return [String] list of prefix to be used in RDFa information
168
+ def get_prefix(model)
169
+ prefix = []
170
+ data_model = get_attributes_model(model)
171
+ data_model["attributes"].each do |att,info|
172
+ if info[:namespace] && info[:namespace] != 'not defined'
173
+ puts info[:namespace]
174
+ prefix << "xmls:#{info[:namespace]}=#{(eval "EasyData::RDF::#{info[:namespace].upcase}.get_uri")} "
175
+ end
176
+ end
177
+ data_model["associations"].each do |assoc,info|
178
+ if info[:namespace] && info[:namespace] != 'not defined'
179
+ prefix << "xmls:#{info[:namespace]}=#{(eval "EasyData::RDF::#{info[:namespace].upcase}.get_uri")} "
180
+ end
181
+ end
182
+
183
+ if data_model[:namespace] && data_model[:namespace] != 'not defined'
184
+ prefix << "xmls:#{data_model[:namespace]}=#{(eval "EasyData::RDF::#{data_model[:namespace].upcase}.get_uri")}"
185
+ end
186
+
187
+ prefix.uniq.join(" ")
188
+ end
189
+
190
+ # Convert index privacy to string
191
+ # @param [Integer] Index of privacy
192
+ # @return [String] Privacy label
193
+ def privacy(index)
194
+ @@privacy[index]
195
+ end
196
+
197
+ # Save changes in rdf_info.yaml (configuration's yaml file)
198
+ # return [Boolean] true or false if operations has finished correctly
199
+ def save
200
+ file = File.open("#{RAILS_ROOT}/config/easy_data/rdf_info.yaml",'w')
201
+ file.puts YAML::dump(self.model_rdf)
202
+ file.close
203
+ end
204
+
205
+
206
+ def refresh_information
207
+ end
208
+ #######################################################################
209
+ # Building RDF
210
+ #######################################################################
211
+
212
+ # Build a response to user's request
213
+ # @param [Array] Response's data
214
+ # @param [String] model's name
215
+ # @param [String] current host
216
+ # @return [Hash] Response to be render in rdf file.
217
+ def get_model_rdf(query,model,host)
218
+
219
+ if public?model
220
+ request = {:body => "",:header => {"xmlns:rdf"=>"http://www.w3.org/1999/02/22-rdf-syntax-ns#"}}
221
+ elements = {}
222
+ models = []
223
+ query.each do |element|
224
+ elements[element.id] = {'description' => "#{host}/s/#{element.class.to_s}/#{element.id}",
225
+ 'attributes' => get_properties_tag(element),
226
+ 'associations' => get_associations_tag(element)
227
+ }
228
+
229
+ models << element.class.to_s
230
+ end
231
+
232
+ attributes = {}
233
+ request[:body] = elements
234
+ models.each do |mod|
235
+ attributes = get_attributes_model(mod) || get_attributes_model((eval mod).base_class.to_s)
236
+ request[:header].merge!(get_header(attributes))
237
+ end
238
+ request
239
+ else
240
+ {}
241
+ end
242
+ end
243
+ # Get all namespace used to build the response
244
+ # @param [Array] list of attributes
245
+ # @return [Array] list of namespaces used to describes them.
246
+ def get_header(attributes)
247
+ headers = {}
248
+
249
+ (attributes["attributes"].merge(attributes["associations"])).each do |att,properties|
250
+ if properties != "no publication" && properties[:namespace] != 'not defined' && properties[:privacy]=="Public"
251
+ headers["xmlns:#{properties[:namespace]}"] = (eval "EasyData::RDF::#{properties[:namespace].upcase}.get_uri") #EasyData.get_uri_namespace(properties[:namespace])
252
+ end
253
+ end
254
+
255
+ headers
256
+ end
257
+
258
+ # Return all attribute's information of a model's instance
259
+ # @param [Object] Model's instance
260
+ # @return [Hash] RDF's attributes informations about the object
261
+ def get_properties_tag(element)
262
+
263
+ attributes = get_attributes_model(element.class.to_s)
264
+
265
+ # If element's class is a polimorphic class, we used base class.
266
+ if attributes.nil?
267
+ attributes = get_attributes_model(element.class.base_class.to_s)
268
+ end
269
+
270
+ properties = {}
271
+ if element.attributes.respond_to? :each
272
+ element.attributes.each do |att|
273
+ #conditions to methods to check if can be show
274
+ begin
275
+
276
+ if can_see?(attributes["attributes"][att.first][:privacy]) && exist_info_att(attributes["attributes"][att.first],att.second)
277
+ properties["#{attributes['attributes'][att.first][:namespace]}:#{attributes["attributes"][att.first][:property]}"] = att.second
278
+ end
279
+ rescue
280
+ puts attributes["attributes"]
281
+ end
282
+ end
283
+ end
284
+
285
+ properties
286
+
287
+ end
288
+
289
+ # Return all association's information of a model's instance
290
+ # @param [Object] Model's instance
291
+ # @return [Hash] RDF's association informations about the object
292
+ def get_associations_tag(element)
293
+
294
+ associations = get_attributes_model(element.class.to_s)
295
+ class_element = element.class
296
+ if associations.nil?
297
+ associations = get_attributes_model(element.class.base_class.to_s)
298
+ class_element = element.class.base_class
299
+ end
300
+ properties = {}
301
+
302
+ class_element.reflections.each do |ref,value|
303
+
304
+ rel = Array(eval "element.#{ref}")||Array()
305
+
306
+ if exist_info_assoc(rel,associations["associations"][ref.to_s]) && can_see?(associations["associations"][ref.to_s][:privacy]) && !rel.empty?
307
+
308
+ properties.merge!({"#{associations['associations'][ref.to_s][:namespace]}:#{associations['associations'][ref.to_s][:property]}" => {:model => rel.first.class ,:id => rel.collect{|obj| obj.id}}
309
+ })
310
+ end
311
+ end
312
+
313
+ properties
314
+ end
315
+
316
+
317
+ private
318
+ ########################################################################
319
+ ## FUNCTIONS FOR CHECK IF SHOW oR NoT THE CURRENT ITEM ##
320
+ ########################################################################
321
+
322
+ # Check if the user can see the element data
323
+ # @param [String] privacy
324
+ # @return [Boolean] true or false, if the user can see this data
325
+ def can_see?(privacy)
326
+ privacy=="Public" || (privacy=="Private" && !@current_user.nil?)
327
+ end
328
+
329
+ # Check if the attribute have defined his properties
330
+ #
331
+ def exist_info_att(attributes,value)
332
+ attributes[:namespace] != "not defined" &&
333
+ attributes[:property] !="not defined" &&
334
+ !value.nil?
335
+ end
336
+
337
+ # Fixed
338
+ def exist_info_assoc(rels,rdf_info)
339
+ !rels.nil? && !rels.empty? &&
340
+ rdf_info[:namespace] != "not defined" &&
341
+ rdf_info[:property] != "not defined"
342
+
343
+ end
344
+ end
@@ -0,0 +1,36 @@
1
+ module EasyData
2
+ module RDF
3
+ class CC < Namespaces
4
+ @@uri = "xmlns:cc=http://creativecommons.org/ns#"
5
+ @@properties= {"attributionName" => "<cc:attributionName>%value%</cc:attributionName>",
6
+ "attributionURL" => "",
7
+ "deprecatedOn" => "",
8
+ "jurisdiction" => "",
9
+ "legalcode" => "",
10
+ "license" => "",
11
+ "morePermissions" => "",
12
+ "permits" => "",
13
+ "prohibits" => "",
14
+ "requires" => ""
15
+ }
16
+
17
+ # Return Namespace URI
18
+ def self.get_uri
19
+ @@uri
20
+ end
21
+
22
+ #Return a list of Namespace's properties
23
+ def self.properties
24
+ @@properties.keys
25
+ end
26
+
27
+ def self.properties_form
28
+ list = {}
29
+ @@properties.keys.each do |property|
30
+ list[property] = property
31
+ end
32
+ list
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,33 @@
1
+ module EasyData
2
+ module RDF
3
+ class CERT < Namespaces
4
+ @@uri = "http://www.w3.org/ns/auth/cert#"
5
+ @@properties= {"decimal" => "",
6
+ "hex" => "",
7
+ "identity" => "",
8
+ "public_key" => "",
9
+ }
10
+
11
+ # Return Namespace URI
12
+ def self.get_uri
13
+ @@uri
14
+ end
15
+ # Return tag to rdf doc
16
+ def self.to_s(property,uri,value)
17
+ @@properties[property].gsub("%uri%",uri).gsub('%value%',value)
18
+ end
19
+
20
+ #Return a list of Namespace's properties
21
+ def self.properties
22
+ @@properties.keys
23
+ end
24
+
25
+ def self.properties_form
26
+ list = {}
27
+ @@properties.keys.each do |property|
28
+ list[property] = property
29
+ end
30
+ list
31
+ end end
32
+ end
33
+ end
@@ -0,0 +1,87 @@
1
+ module EasyData
2
+ module RDF
3
+ class DC < Namespaces
4
+ @@uri = "http://purl.org/dc/elements/1.1/"
5
+
6
+ @@properties = {"abstract" => "",
7
+ "accessRights" => "",
8
+ "accrualMethod" => "",
9
+ "accrualPeriodicity" => "",
10
+ "accrualPolicy" => "",
11
+ "alternative" => "",
12
+ "audience" => "",
13
+ "available" => "",
14
+ "bibliographicCitation" => "",
15
+ "conformsTo" => "",
16
+ "contributor" => "",
17
+ "coverage" => "",
18
+ "created" => "",
19
+ "creator" => "",
20
+ "date" => "",
21
+ "dateAccepted" => "",
22
+ "dateCopyrighted" => "",
23
+ "dateSubmitted" => "",
24
+ "description" => "",
25
+ "educationLevel" => "",
26
+ "extent" => "",
27
+ "format" => "",
28
+ "hasFormat" => "",
29
+ "hasPart" => "",
30
+ "hasVersion" => "",
31
+ "identifier" => "",
32
+ "instructionalMethod" => "",
33
+ "isFormatOf" => "",
34
+ "isPartOf" => "",
35
+ "isReferencedBy" => "",
36
+ "isReplacedBy" => "",
37
+ "isRequiredBy" => "",
38
+ "isVersionOf" => "",
39
+ "issued" => "",
40
+ "language" => "",
41
+ "license" => "",
42
+ "mediator" => "",
43
+ "medium" => "",
44
+ "modified" => "",
45
+ "provenance" => "",
46
+ "publisher" => "",
47
+ "references" => "",
48
+ "relation" => "",
49
+ "replaces" => "",
50
+ "requires" => "",
51
+ "rights" => "",
52
+ "rightsHolder" => "",
53
+ "source" => "",
54
+ "spatial" => "",
55
+ "subject" => "",
56
+ "tableOfContents" => "",
57
+ "temporal" => "",
58
+ "title" => "",
59
+ "type" => "",
60
+ "valid" => ""
61
+ }
62
+
63
+ # Return Namespace URI
64
+ def self.get_uri
65
+ @@uri
66
+ end
67
+
68
+ # Return tag to rdf doc
69
+ def self.to_s(property,uri,value)
70
+ @@properties[property].gsub("%uri%",uri).gsub('%value%',value)
71
+ end
72
+
73
+ #Return a list of Namespace's properties
74
+ def self.properties
75
+ @@properties.keys
76
+ end
77
+
78
+ def self.properties_form
79
+ list = {}
80
+ @@properties.keys.each do |property|
81
+ list[property] = property
82
+ end
83
+ list
84
+ end
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,47 @@
1
+ module EasyData
2
+ module RDF
3
+ class DC11 < Namespaces
4
+ @@uri = "http://purl.org/dc/elements/1.1/"
5
+ @@properties= {"contributor" => "",
6
+ "coverage" => "",
7
+ "creator" => "",
8
+ "date" => "",
9
+ "description" => "",
10
+ "format" => "",
11
+ "identifier" => "",
12
+ "language" => "",
13
+ "publisher" => "",
14
+ "relation" => "",
15
+ "rights" => "",
16
+ "source" => "",
17
+ "subject" => "",
18
+ "title" => "",
19
+ "type" => "",
20
+ }
21
+
22
+ # Return Namespace URI
23
+ def self.get_uri
24
+ @@uri
25
+ # "http://purl.org/dc/elements/1.1/"
26
+ end
27
+
28
+ # Return tag to rdf doc
29
+ def self.to_s(property,uri,value)
30
+ @@properties[property].gsub("%uri%",uri).gsub('%value%',value)
31
+ end
32
+
33
+ #Return a list of Namespace's properties
34
+ def self.properties
35
+ @@properties.keys
36
+ end
37
+
38
+ def self.properties_form
39
+ list = {}
40
+ @@properties.keys.each do |property|
41
+ list[property] = property
42
+ end
43
+ list
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,68 @@
1
+ module EasyData
2
+ module RDF
3
+ class DOAP < Namespaces
4
+ @@uri = "http://usefulinc.com/ns/doap#"
5
+
6
+ @@properties= {"'anon-root'" => "",
7
+ "audience" => "",
8
+ "blog" => "",
9
+ "browse" => "",
10
+ "'bug-database'" => "",
11
+ "category" => "",
12
+ "created" => "",
13
+ "description" => "",
14
+ "developer" => "",
15
+ "documenter" => "",
16
+ "'download-mirror'" => "",
17
+ "'download-page'" => "",
18
+ "'file-release'" => "",
19
+ "helper" => "",
20
+ "homepage" => "",
21
+ "implements" => "",
22
+ "language" => "",
23
+ "license" => "",
24
+ "location" => "",
25
+ "'mailing-list'" => "",
26
+ "maintainer" => "",
27
+ "module" => "",
28
+ "name" => "",
29
+ "'old-homepage'" => "",
30
+ "os" => "",
31
+ "platform" => "",
32
+ "'programming-language'" => "",
33
+ "release" => "",
34
+ "repository" => "",
35
+ "revision" => "",
36
+ "screenshots" => "",
37
+ "'service-endpoint'" => "",
38
+ "shortdesc" => "",
39
+ "tester" => "",
40
+ "translator" => "",
41
+ "vendor" => "",
42
+ "wiki" => ""
43
+ }
44
+
45
+ # Return Namespace URI
46
+ def self.get_uri
47
+ @@uri
48
+ end
49
+
50
+ # Return tag to rdf doc
51
+ def self.to_s(property,uri,value)
52
+ @@properties[property].gsub("%uri%",uri).gsub('%value%',value)
53
+ end
54
+
55
+ #Return a list of Namespace's properties
56
+ def self.properties
57
+ @@properties.keys
58
+ end
59
+
60
+ def self.properties_form
61
+ list = {}
62
+ @@properties.keys.each do |property|
63
+ list[property] = property
64
+ end
65
+ list
66
+ end end
67
+ end
68
+ end