easy_data3 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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,24 @@
1
+ <span class="title_model"><%=@model%> Model</span>
2
+
3
+ <% if @model_attributes["attributes"]%>
4
+ <span class="title_data_publications"> Attributes </span>
5
+ <ul>
6
+ <%@model_attributes["attributes"].each do |att,values|%>
7
+ <%if values[:privacy] && values[:privacy]!="Hidden" && values[:property]!="not defined"%>
8
+ <li><span class="<%='lock' if values[:privacy]=="Private"%>" title="<%='Private attribute' if values[:privacy]=="Private"%>"><%=att%></span></li>
9
+ <%end%>
10
+ <%end%>
11
+ </ul>
12
+ <%end%>
13
+
14
+ <%if @model_attributes["associations"] %>
15
+ <span class="title_data_publications"> Associations </span>
16
+ <ul>
17
+ <%@model_attributes["associations"].each do |att,values|%>
18
+ <%if values[:privacy]!="Hidden" && values[:property]!="not defined"%>
19
+ <li><span class="<%='lock' if values[:privacy]=="Private"%>" title="<%='Private association' if values[:privacy]=="Private"%>"><%=att%></span></li>
20
+ <%end%>
21
+ <%end%>
22
+ </ul>
23
+ <%end%>
24
+
@@ -0,0 +1,33 @@
1
+ <%- form_remote_for :settings,:url => {:controller => "easy_datas",:action=>"custom_settings"},:update => "custom_content" do%>
2
+
3
+ <table class="settings_table">
4
+ <tr>
5
+ <th colspan="2"><div class="title_data_publications">Proyecto</div></th>
6
+ </tr>
7
+ <tr>
8
+ <td><span>Project's name(?):</span></td><td><%= text_field "project","project",:value =>@settings["project"]["name"] %></td>
9
+ </tr>
10
+ <tr>
11
+ <td><span>Logo(?):</span></td><td><%= select "project","logo",@images,{:selected => @settings["project"]["logo"]||nil,:prompt => "Select logo ..."}%></td>
12
+ </tr>
13
+ <tr>
14
+ <td><span>Description(?):</span></td><td><%= text_area "project","description","cols" => 45,"rows"=>5,:value=>@settings["project"]["description"]%></td>
15
+ </tr>
16
+ <tr>
17
+ <td><span>Contact email(?):</span></td><td><%= text_field "project","email",:value=>@settings["project"]["contact_email"]%></td>
18
+ </tr>
19
+ <tr><th colspan="2"><div class="title_data_publications">Access</div></th>
20
+ <tr>
21
+ <td><span>User:</span></td><td><%= text_field "user_admin","user",:value=>@settings["user_admin"]["user"]%></td>
22
+ </tr>
23
+ <tr>
24
+ <td><span>Password:</span></td><td><%= password_field "user_admin","pass"%></td>
25
+ </tr>
26
+ <tr>
27
+ <td><span>IP:</span></td><td><%= text_field "access","ip",:value => @settings["access"]["ip"]%></td>
28
+ </tr>
29
+ </table>
30
+
31
+ <%= submit_tag "Send" %>
32
+
33
+ <%end%>
@@ -0,0 +1,20 @@
1
+ <div class="authenticate">
2
+ <div class="left"></div>
3
+ <div class="middle">
4
+ <%form_remote_tag :url => {:controller => 'easy_datas',:action => "login"},
5
+ :update => "content" do -%>
6
+ <span>
7
+ <%= label_tag :nick,nil,:class => "lbl_auth" %>
8
+ <%= text_field_tag :nick,nil%>
9
+ </span>
10
+ <span>
11
+ <%= label_tag :password,nil, :class => "lbla_auth"%>
12
+ <%= password_field_tag ":password",nil%>
13
+ </span>
14
+ <%= submit_tag "Access" %>
15
+ <input type="button" name="reset_form" value="Cancel" onclick="this.form.reset();">
16
+ <%end%>
17
+ </div>
18
+ <div class="right"></div>
19
+ <div class="bottom"></div>
20
+ </div>
@@ -0,0 +1,28 @@
1
+ <%= render :partial => "menu_custom"%>
2
+ <%if @models.respond_to?:each%>
3
+ <div id="custom_content" class="ed_info_content">
4
+ <div id="list_models" class="list_model_info">
5
+ <span class="title">Models List</span>
6
+ <ul>
7
+ <%@models.each do |model|%>
8
+ <li class="list_model">
9
+ <span id="ls_<%= model%>" class="model"><%= link_to_remote model,:url => {:controller => 'easy_datas',
10
+ :action => :model_attributes,
11
+ :model => model},
12
+ :update => "model_attributes",
13
+ :after => "$('ls_#{model}').className = 'model_active';",
14
+ :success => "Effect.Appear('model_attributes', { duration: 0.4 });",
15
+ :failure => "alert('Ooops! An error occurred.')"
16
+ %>
17
+ </span>
18
+
19
+ </li>
20
+ <%end%>
21
+ </ul>
22
+ </div>
23
+ <div id="model_attributes" class="ed_info_models" style="display:none"></div>
24
+ </div>
25
+ <%else%>
26
+ <h3> Not list model </h3>
27
+ <%end%>
28
+
@@ -0,0 +1,7 @@
1
+ <%= render :partial => "menu" %>
2
+
3
+ <div id="information_content" class="ed_info_content">
4
+ <%= render :partial => "data_publications", :locals => {:list => @list} %>
5
+ </div>
6
+
7
+
@@ -0,0 +1 @@
1
+ <h1>Show template</h1>
@@ -0,0 +1,18 @@
1
+ xml.instruct! :xml, :version => "1.0", :encoding => "UTF-8"
2
+ unless @rdf_model.empty?
3
+ xml.rdf :RDF, @rdf_model[:header] do
4
+ @rdf_model[:body].each do |element,prop|
5
+ xml.rdf :Description, {"rdf:about" => prop["description"]} do
6
+ prop["attributes"].each do |att,value|
7
+ xml.tag!(att,value)
8
+ end
9
+ prop["associations"].each do |assoc,value|
10
+ value[:id].each do |id|
11
+ xml.tag!(assoc,nil,{"rdf:resource"=>"#{@host}/s/#{value[:model]}/#{id}"})
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+
@@ -0,0 +1 @@
1
+ <h1>Show template</h1>
@@ -0,0 +1,16 @@
1
+ xml.instruct! :xml, :version => "1.0", :encoding => "UTF-8"
2
+ xml.rdf :RDF, @rdf_model[:header] do
3
+ @rdf_model[:body].each do |element,prop|
4
+ xml.rdf :Description, {"rdf:about" => prop["description"]} do
5
+ prop["attributes"].each do |att,value|
6
+ xml.tag!(att,value)
7
+ end
8
+ prop["associations"].each do |assoc,value|
9
+ value[:id].each do |id|
10
+ xml.tag!(assoc,nil,{"rdf:resource"=>"#{@host}/s/#{value[:model]}/#{id}"})
11
+ end
12
+ end
13
+ end
14
+ end
15
+
16
+ end
@@ -0,0 +1,32 @@
1
+ <span class="title_data_publications">Settings</span>
2
+ <table class="settings_table">
3
+ <tr>
4
+ <th>Projects Data</th>
5
+ </tr>
6
+ <tr>
7
+ <td>Project's name: <%=@settings["project"]["name"]||""%></td>
8
+ </tr>
9
+ <tr>
10
+ <td>Logo: <%=(image_tag(image_path(@settings["project"]["logo"])))unless@settings["project"]["logo"].nil?%></td>
11
+ </tr>
12
+ <tr>
13
+ <td>Description: <%=@settings["project"]["description"]%></td>
14
+ </tr>
15
+ <tr>
16
+ <td>Contact Email: <%=@settings["project"]["contact_email"]%></td>
17
+ </tr>
18
+ <tr><th>Access Data<th></tr>
19
+ <tr>
20
+ <td>User: <%=@settings["user_admin"]["user"]%></td>
21
+ </tr>
22
+ <tr>
23
+ <td>Password: <%=@settings["user_admin"]["pass"]%></td>
24
+ </tr>
25
+ <tr>
26
+ <td>IP: <%=@settings["access"]["ip"]%></td>
27
+ </tr>
28
+ </table>
29
+
30
+ <%= button_to_remote "Edit Settings",:url => {:controller => "easy_datas",:action => "settings"},
31
+ :update => "custom_content",
32
+ :html => {:title => "Project Settings"}%>
@@ -0,0 +1,18 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
3
+ <head>
4
+ <meta http-equiv="content-type" content="text/html; charset=utf-8" />
5
+ <title></title>
6
+ <%= javascript_include_tag(:defaults)%>
7
+ <%= stylesheet_link_tag "easy_data/easy_data_style" %>
8
+
9
+ </head>
10
+ <body>
11
+ <div id="content" class="content">
12
+ <%= yield %>
13
+ <%if controller.action_name != "authenticate_user"%>
14
+ <%= render :partial => "easy_datas/footer"%>
15
+ <%end%>
16
+ </div>
17
+ </body>
18
+ </html>
@@ -0,0 +1 @@
1
+ xml.instruct!
@@ -0,0 +1 @@
1
+ xml.instruct! :xml, :version => "1.0", :encoding => "UTF-8"
@@ -0,0 +1,62 @@
1
+ body{width:100%;height:100%;margin:0;padding:0;font-family:helvetica;background-color:#f7fffe}
2
+ a{text-decoration:none;border:none}
3
+ img{border: 0;}
4
+ .authenticate{background:url("images/LogoEasyData.jpg") no-repeat 0 0;padding-top:250px;padding-left:90px;margin:0 auto;width:560px;overflow:hidden;}
5
+ .authenticate .left{display:block;background:url("images/login_bg.png") no-repeat 0 0;float:left;width:15px;height:130px;margin-left:50px}
6
+ .authenticate .right{display:block;background:url("images/login_bg.png") no-repeat -15px 0;float:left;width:15px;height:130px;}
7
+ .authenticate .middle{background:#487b4c;overflow:hidden;height:130px;width:400px;float:left}
8
+ .authenticate .middle form{width:300px;height:130px;color:white;font-weight:bold;overflow:hidden;padding: 25px}
9
+ .authenticate .middle form .lbl_auth{float:left}
10
+ .authenticate .middle form input{float:right;width:180px}
11
+ .authenticate .middle form input[type="submit"]{float:left !important;margin-left:115px;margin-top:10px;width:90px !important}
12
+ .authenticate .middle form input[type="button"]{float:left !important;margin-left:5px;margin-top:10px;width:90px !important}
13
+ .authenticate .middle form span{width:100%;display:block;overflow:hidden}
14
+ .authenticate .bottom{display:block;height:95px;width:300px;margin-left:115px;float:left;background:url("images/loginBt.png") no-repeat 0 0}
15
+ ul{list-style:none;width:90%;float:left;margin-top:20px;padding-left:0px;}
16
+ ul div.list_attributes{overflow:hidden;background-color:white;color:black;padding:0 5%;}
17
+
18
+ ul.attributes_info{width:100%;clear:left;padding:0}
19
+ div.attributes_info{padding: 1% 3%;overflow:hidden}
20
+ div.attributes_info div.property{border-bottom:1px black solid;padding:1em}
21
+ div.attributes_info div.property span.attribute{font-size:1.15em;font-weight:bold;}
22
+ .rdf_info{color:grey;font-size:12px}
23
+
24
+ /*EASY DATA INFO*/
25
+ .content{width:100%}
26
+
27
+ .ed_main_menu{background:#487b4c;overflow:hidden;width:100%;margin:0 auto;display:block;}
28
+ .ed_main_menu ul{color:white !important;;margin:0px;width:100%;padding:0px 20%}
29
+ .ed_main_menu ul li{float:left;width:10%;text-align:center;padding:10px 0px;}
30
+ .ed_main_menu ul li.menu_link{width:10% !important}
31
+ .ed_main_menu ul li.menu_link a:hover{text-decoration:underline;padding:10px 0px;cursor:pointer}
32
+ .ed_main_menu ul li a{color:white}
33
+ .ed_main_menu ul li.layer_menu{font-size:14px;width:300px !important;padding:11px 0;font-weight:bold;max-height:26px}
34
+
35
+
36
+ .ed_info_content{background:url('images/shadow_menu.png') repeat-x 0 0 ;margin:0;padding:2% 20% 2% 20%;overflow:hidden;min-height: 100%;height: auto !important;height: 100%;margin: 0 auto -70px;}
37
+ .list_model_info{float:left;width:35%;overflow:hidden;border:1px #808080 solid;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;background-color:#ddbc8f}
38
+ .title{font-size:22px;font-weight:bold;display:block;padding:10px 0 0 20px;color:#808080}
39
+ .list_model_info ul li{margin:0;overflow:hidden;color:#808080;padding:5px 20px}
40
+ .list_model_info ul li:hover{margin:0;color:blue !important;}
41
+ .list_model_info ul li a{color:#808080;font-weight:bold}
42
+ .list_model_info ul li span{float:left}
43
+ .list_model_info ul li .model{width:80%;font-size:15px}
44
+ .list_model_info ul li .model:hover{width:80%;font-size:16px;font-weight:bold;background: url('images/rdf_icon_s.png') no-repeat 0 0; padding-left: 13px;}
45
+ .list_model_info ul li .model_active{width:80%;font-size:16px;font-weight:bold;background: url('images/rdf_icon_s.png') no-repeat 0 0; padding-left: 13px;}
46
+ .ed_info_content .list_model_info ul li a:hover{background:#ddbc8f;font-weight:bold;}
47
+ .ed_info_content .ed_info_models{float:left;width:60%;padding:1% 1%;}
48
+ .ed_info_content .settings_table{text-align:left;margin-left:5%;margin-bottom:5%;width:90%}
49
+ .ed_info_content .settings_table th{padding: 10px 0}
50
+ .ed_info_content ul{margin-left:20px}
51
+ .title_data_publications{color:#808080;font-weight:bold;text-decoration:underline;width:100%;display:block;padding: 5px 0;margin: 20px 0;overflow:hidden;}
52
+ .title_model{background:url("images/rdf_icon.png") no-repeat 0 0;padding-left:40px;margin-bottom:20px;width:100%;display:block;color:#808080;font-weight:bold;font-size:30px}.ed_info_content .ed_info_models .data_info{text-decoration:underline;color:#085DAD;font-size:15px;width:100%;display:block;}
53
+ .linked_data_graphs{margin:50px 0 0 80px;}
54
+ .linked_data_access{border:1px #ccc solid;width:95%;height:auto;overflow:hidden;margin-top:20px}
55
+ .lock{background:url("/images/lock.png") no-repeat top right;padding-right:18px;}
56
+ .simple_data{margin-left:20px;}
57
+ /*Footer*/
58
+
59
+ .easy_data_footer,.push{height:100px;bottom:0;display:block}
60
+ .easy_data_footer{width:100%;}
61
+ .easy_data_footer a{margin-left:60%;overflow:hidden}
62
+
@@ -0,0 +1,3 @@
1
+ module EasyData
2
+ VERSION = "0.0.2"
3
+ end
data/lib/easy_data.rb ADDED
@@ -0,0 +1,107 @@
1
+ require "easy_data/version"
2
+ require "data_models/data_models"
3
+ require "action_controller"
4
+ require "controllers/easy_datas_controller"
5
+ require "data_models/model_rdf"
6
+ require "data_models/linked_data_graph"
7
+ require "data_models/RDFa"
8
+ require "routes"
9
+ require 'ftools'
10
+ require 'ruby-debug'
11
+
12
+
13
+ module EasyData
14
+
15
+ module RDF
16
+
17
+ autoload :Namespaces, 'data_models/namespaces'
18
+
19
+ NAMESPACES = Dir.glob(File.join(File.dirname(__FILE__),'data_models','namespaces','*.rb')).map{ |f| File.basename(f).gsub('.rb','').to_sym } rescue []
20
+ NAMESPACES.each { |v| autoload v.to_s.upcase.to_sym, "data_models/namespaces/#{v}" unless v == :namespaces }
21
+
22
+ end
23
+
24
+ def self.yaml_description_model(model_data)
25
+
26
+ attributes = {}
27
+ associations = {}
28
+
29
+ model_data.columns.each do |att|
30
+
31
+ if att.primary
32
+ attributes[att.name] = {:privacy => 'Private',:namespace => 'not defined',:property => 'not defined'}
33
+ elsif att.name =~ /_id$/
34
+ attributes[att.name] = "no publication"
35
+ else
36
+ attributes[att.name] = {:privacy => 'Public',:namespace => 'not defined',:property => 'not defined'}
37
+ end
38
+
39
+ end
40
+
41
+ model_data.reflections.keys.each do |ref|
42
+ associations[ref.to_s] = {:privacy => 'Public',:namespace => 'not defined',:property => 'not defined'}
43
+ end
44
+
45
+ {:privacy => "Private",:namespace => "not defined",:property => "not defined","attributes" => attributes,"associations" => associations}
46
+ end
47
+
48
+ def self.get_view_path
49
+ File.join(File.dirname(__FILE__), 'easy_data/templates')
50
+ end
51
+
52
+ def self.get_style_path
53
+ File.join(File.dirname(__FILE__), 'easy_data/templates/stylesheets/easy_data_style.css')
54
+ end
55
+
56
+ def self.get_uri_namespace(namespace)
57
+ eval "RDF::#{namespace.upcase}.get_uri"
58
+ end
59
+
60
+ #######################################################################
61
+ # Building Linked Data Graph
62
+ #######################################################################
63
+ def self.build_linked_data_graph
64
+ LinkedDataGraph.build(DataModels.load_models)
65
+ end
66
+
67
+
68
+ def self.refresh_information
69
+ rdf = ModelRdf.new
70
+ models = DataModels.load_models
71
+
72
+ unless self.info_update?(models,rdf)
73
+ rdf_models = rdf.get_models.keys
74
+
75
+ #Add the new models to rdf's information file
76
+ models.each do |model|
77
+ unless rdf_models.keys.include? model
78
+ model_data = DataModels.get_model_data(model)
79
+ if model_data.respond_to?:columns
80
+ rdf.add_model(model,EasyData.yaml_description_model(eval model))
81
+ end
82
+ end
83
+ end
84
+
85
+ #Delete the models how they had deleted
86
+ rdf_models.each do |model|
87
+ unless models.include?model
88
+ rdf.delete_model model
89
+ end
90
+ end
91
+
92
+ rdf.save
93
+ end
94
+ end
95
+
96
+ private
97
+
98
+ def generate_query(model,params)
99
+ query = "Select #{params.key.join(", ")}
100
+ FROM #{model};"
101
+ end
102
+
103
+ def self.info_update?(models,rdf)
104
+ ((models | rdf.get_models.keys)-(models & rdf.get_models.keys)).empty?
105
+ end
106
+ end
107
+
data/lib/routes.rb ADDED
@@ -0,0 +1,41 @@
1
+ require "action_controller"
2
+
3
+ module EasyDataRouting
4
+ def self.routes
5
+
6
+ resources :easy_datas do
7
+ member do
8
+ #GET
9
+ get '/custom_rdf', :to => "easy_datas#custom_rdf"
10
+ get '/authenticate_user',:to => "easy_datas#authenticate_user"
11
+ get '/s/data_publications', :to => 'easy_datas#info_easy_data'
12
+ get '/info_easy_data', :to => 'easy_datas#info_easy_data'
13
+ get '/linked_data', :to => 'easy_datas#linked_data'
14
+ get '/access_to_data', :to => 'easy_datas#access_to_data'
15
+ get '/faq', :to => 'easy_datas#faq'
16
+ get '/logout', :to => 'easy_datas#logout'
17
+ #POST
18
+ post '/model_attributes_info', :to => "easy_datas#model_attributes_info"
19
+ post '/load_linked_data_graph', :to => "easy_datas#load_linked_data_graph"
20
+ post '/model_attributes/:model', :to => 'easy_datas#model_attributes'
21
+ post '/model_attributes_edit/:model', :to => 'easy_datas#model_attributes_edit'
22
+ post '/load_properties/:block/:attribute', :to => 'easy_datas#load_properties'
23
+ post '/login', :to => 'easy_datas#login'
24
+ post '/custom_attributes/:model', :to => 'easy_datas#custom_attributes'
25
+ post '/settings', :to => 'easy_datas#settings'
26
+ post '/custom_settings', :to => 'easy_datas#custom_settings'
27
+ post '/view_settings', :to => 'easy_datas#view_settings'
28
+ end
29
+ end
30
+ DataModels.load_models.each do |model|
31
+ match "/s/#{model.gsub("::","_")}.:format", :to => "easy_datas#show",
32
+ :about => "/s/#{model.gsub("::","_")}"
33
+ match "/s/#{model.gsub("::","_").pluralize}.:format",:to => "easy_datas#show_all",
34
+ :about => "/s/#{model.gsub("::","_").pluralize}"
35
+ end
36
+
37
+
38
+
39
+ end
40
+ end
41
+
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env bash
2
+
3
+ rm easy_data-0.0.*
4
+ gem build easy_data.gemspec
5
+ gem uninstall easy_data3
6
+ gem install ./easy_data3-*.gem
@@ -0,0 +1,11 @@
1
+ require 'test/unit'
2
+ require 'easy_data'
3
+
4
+ require 'ruby-debug'
5
+
6
+ class DataModelsTest < Test::Unit::TestCase
7
+
8
+ def test_example
9
+ #assert_equal Array,DataModels.load_models.class
10
+ end
11
+ end
data/test/rdfa_test.rb ADDED
@@ -0,0 +1,18 @@
1
+ require 'test/unit'
2
+ require 'easy_data'
3
+
4
+ require 'ruby-debug'
5
+
6
+ class RDFaTest < Test::Unit::TestCase
7
+
8
+ def setup
9
+ @rdfa = RDFa.new
10
+ end
11
+
12
+ def test_a_tag
13
+
14
+ link = @rdfa.a("User",'http://www.google.es','id','class="link"')
15
+ assert_equal String,link.class
16
+ end
17
+
18
+ end
@@ -0,0 +1 @@
1
+
@@ -0,0 +1,10 @@
1
+ require 'test/unit'
2
+ require 'easy_data'
3
+
4
+ class DataModelsTest < Test::Unit::TestCase
5
+
6
+ def test_load_models
7
+ assert_equal 'Array', DataModels.load_models.class.to_s
8
+ end
9
+
10
+ end
@@ -0,0 +1 @@
1
+
@@ -0,0 +1 @@
1
+
@@ -0,0 +1,2 @@
1
+
2
+