publish_my_data 0.0.29 → 0.0.30

Sign up to get free protection for your applications and to get access to all the features.
Files changed (82) hide show
  1. data/app/controllers/concerns/publish_my_data/data_download.rb +22 -0
  2. data/app/controllers/concerns/publish_my_data/resource_rendering.rb +40 -0
  3. data/app/controllers/concerns/publish_my_data/sparql_processing.rb +81 -0
  4. data/app/controllers/publish_my_data/datasets_controller.rb +5 -23
  5. data/app/controllers/publish_my_data/information_resources_controller.rb +26 -4
  6. data/app/controllers/publish_my_data/queries_controller.rb +1 -1
  7. data/app/controllers/publish_my_data/resources_controller.rb +5 -9
  8. data/app/controllers/publish_my_data/sparql_controller.rb +1 -1
  9. data/app/controllers/publish_my_data/vocabularies_controller.rb +18 -0
  10. data/app/models/concerns/publish_my_data/all_features.rb +79 -0
  11. data/app/models/concerns/publish_my_data/basic_features.rb +21 -0
  12. data/app/models/concerns/publish_my_data/dataset_powers.rb +130 -0
  13. data/{lib → app/models/concerns}/publish_my_data/defined_by_ontology.rb +5 -0
  14. data/app/models/publish_my_data/concept.rb +2 -2
  15. data/app/models/publish_my_data/concept_scheme.rb +31 -3
  16. data/app/models/publish_my_data/dataset.rb +2 -128
  17. data/app/models/publish_my_data/example_resource.rb +21 -0
  18. data/app/models/publish_my_data/ontology.rb +35 -6
  19. data/app/models/publish_my_data/ontology_class.rb +3 -5
  20. data/app/models/publish_my_data/property.rb +3 -5
  21. data/app/models/publish_my_data/rdf_type.rb +1 -2
  22. data/app/models/publish_my_data/resource.rb +25 -96
  23. data/app/models/publish_my_data/theme.rb +1 -3
  24. data/app/models/publish_my_data/third_party/concept_scheme.rb +30 -0
  25. data/app/models/publish_my_data/third_party/ontology.rb +30 -0
  26. data/app/models/publish_my_data/vocabulary.rb +22 -0
  27. data/app/views/publish_my_data/classes/show.html.erb +3 -0
  28. data/app/views/publish_my_data/concept_schemes/_concepts.html.erb +18 -3
  29. data/app/views/publish_my_data/concept_schemes/show.html.erb +3 -1
  30. data/app/views/publish_my_data/concepts/show.html.erb +3 -3
  31. data/app/views/publish_my_data/datasets/show.html.erb +2 -2
  32. data/app/views/publish_my_data/ontologies/show.html.erb +6 -6
  33. data/app/views/publish_my_data/properties/show.html.erb +3 -3
  34. data/app/views/publish_my_data/resources/_summaries.html.erb +18 -0
  35. data/app/views/publish_my_data/resources/show.html.erb +3 -3
  36. data/config/routes.rb +8 -4
  37. data/lib/publish_my_data.rb +14 -5
  38. data/lib/publish_my_data/engine.rb +3 -0
  39. data/lib/publish_my_data/version.rb +1 -1
  40. data/spec/controllers/publish_my_data/datasets_controller_spec.rb +3 -3
  41. data/spec/controllers/publish_my_data/information_resources_controller_spec.rb +158 -104
  42. data/spec/controllers/publish_my_data/resources_controller_spec.rb +0 -71
  43. data/spec/controllers/publish_my_data/vocabularies_controller_spec.rb +14 -0
  44. data/spec/dummy/config/environments/development.rb +1 -1
  45. data/spec/dummy/config/environments/test.rb +1 -1
  46. data/spec/dummy/log/test.log +208075 -0
  47. data/spec/factories/concept_scheme_factories.rb +17 -13
  48. data/spec/factories/dataset_factories.rb +2 -0
  49. data/spec/factories/example_resource_factories.rb +9 -0
  50. data/spec/factories/ontology_factories.rb +17 -12
  51. data/spec/factories/property_factories.rb +1 -1
  52. data/spec/factories/resource_factories.rb +10 -0
  53. data/spec/features/running_a_sparql_query_spec.rb +2 -2
  54. data/spec/features/viewing_resources_spec.rb +96 -0
  55. data/spec/{renderers → lib}/publish_my_data/renderers_spec.rb +0 -0
  56. data/spec/models/publish_my_data/concept_scheme_spec.rb +20 -0
  57. data/spec/models/publish_my_data/dataset_spec.rb +113 -11
  58. data/spec/models/publish_my_data/example_resource_spec.rb +18 -0
  59. data/spec/models/publish_my_data/ontology_spec.rb +20 -0
  60. data/spec/models/publish_my_data/resource_spec.rb +63 -0
  61. data/spec/models/publish_my_data/third_party_concept_scheme_spec.rb +16 -0
  62. data/spec/models/publish_my_data/third_party_ontology_spec.rb +16 -0
  63. data/spec/spec_helper.rb +2 -1
  64. data/spec/support/all_features.rb +26 -0
  65. data/spec/support/data_download.rb +60 -0
  66. data/spec/support/vocabularies.rb +150 -0
  67. metadata +53 -33
  68. data/app/views/publish_my_data/ontologies/_classes.html.erb +0 -3
  69. data/app/views/publish_my_data/ontologies/_properties.html.erb +0 -3
  70. data/config/initializers/zz_factories.rb +0 -7
  71. data/lib/publish_my_data/concerns.rb +0 -4
  72. data/lib/publish_my_data/concerns/controllers/resource.rb +0 -23
  73. data/lib/publish_my_data/concerns/controllers/sparql.rb +0 -86
  74. data/lib/publish_my_data/concerns/models/resource.rb +0 -14
  75. data/lib/publish_my_data/render_params.rb +0 -7
  76. data/lib/publish_my_data/render_params/concept_render_params.rb +0 -18
  77. data/lib/publish_my_data/render_params/concept_scheme_render_params.rb +0 -31
  78. data/lib/publish_my_data/render_params/dataset_render_params.rb +0 -32
  79. data/lib/publish_my_data/render_params/ontology_class_render_params.rb +0 -18
  80. data/lib/publish_my_data/render_params/ontology_render_params.rb +0 -41
  81. data/lib/publish_my_data/render_params/property_render_params.rb +0 -18
  82. data/lib/publish_my_data/render_params/resource_render_params.rb +0 -17
@@ -1,3 +0,0 @@
1
- <% ontology_classes.each do |c| %>
2
- <%= render 'publish_my_data/resources/predicates_table', :resource => c, :show_title => true %>
3
- <% end %>
@@ -1,3 +0,0 @@
1
- <% ontology_properties.each do |p| %>
2
- <%= render 'publish_my_data/resources/predicates_table', :resource => p, :show_title => true %>
3
- <% end %>
@@ -1,7 +0,0 @@
1
- # This loads all the factories, so they can be used by the rails console in target apps.
2
- if Rails.env.development?
3
- path = File.expand_path("../../../spec/factories/*.rb", __FILE__)
4
- Dir[path].each do |factory|
5
- require factory
6
- end
7
- end
@@ -1,4 +0,0 @@
1
- require "publish_my_data/concerns/models/resource"
2
-
3
- require "publish_my_data/concerns/controllers/resource"
4
- require "publish_my_data/concerns/controllers/sparql"
@@ -1,23 +0,0 @@
1
- module PublishMyData
2
- module Concerns
3
- module Controllers
4
- module Resource
5
- extend ActiveSupport::Concern
6
-
7
- included do
8
-
9
- private
10
-
11
- def render_resource_with_uri(uri)
12
- resource = PublishMyData::Resource.find(uri)
13
-
14
- respond_with(resource) do |format|
15
- format.html { render resource.render_params(request) }
16
- end
17
- end
18
-
19
- end
20
- end
21
- end
22
- end
23
- end
@@ -1,86 +0,0 @@
1
- module PublishMyData
2
- module Concerns
3
- module Controllers
4
- module Sparql
5
- extend ActiveSupport::Concern
6
-
7
- included do
8
-
9
- rescue_from PublishMyData::SparqlQueryExecutionException, :with => :show_sparql_execution_message
10
-
11
- rescue_from PublishMyData::SparqlQueryMissingVariablesException, :with => :missing_variables
12
-
13
- respond_to :html, :csv, :text, :nt, :ttl, :xml, :rdf, :json
14
-
15
- private
16
-
17
- def check_format
18
- unless request.format
19
- head :status => 406
20
- return false
21
- end
22
- end
23
-
24
- def build_sparql_query(query_text)
25
- interpolations = request.params.reject{ |p| ['controller', 'action', 'page', 'per_page', 'id', 'commit' ,'utf8', 'query'].include?(p) }
26
- PublishMyData::SparqlQuery.new(query_text, {
27
- :request_format => request.format.to_sym,
28
- :interpolations => interpolations
29
- })
30
- end
31
-
32
- # process the sparql query, paginating if appropriate
33
- def process_sparql_query(sparql_query)
34
- if sparql_query.allow_pagination?
35
-
36
- @pagination_params = SparqlPaginationParams.from_request(request)
37
-
38
- # if there are pagination paramters, then use them
39
- if @pagination_params.per_page && @pagination_params.page
40
- sparql_query_result = sparql_query.paginate(@pagination_params.page, @pagination_params.per_page)
41
- if is_request_html_format?
42
- count = sparql_query.as_pagination_query(@pagination_params.page, @pagination_params.per_page, 1).count
43
- @more_pages = (count > @pagination_params.per_page)
44
- end
45
- # otherwise just execute
46
- else
47
- sparql_query_result = @sparql_query.execute
48
- end
49
- else
50
- # pagination not allowed - just execute.
51
- sparql_query_result = @sparql_query.execute
52
- end
53
-
54
- add_json_p_callback(sparql_query_result)
55
- end
56
-
57
- def respond_with_error
58
- respond_to do |format|
59
- format.html { render 'publish_my_data/sparql/endpoint' }
60
- format.any { render :text => @error_message, :status => 400 }
61
- end
62
- end
63
-
64
- def missing_variables(e)
65
- @error_message = e.message
66
- respond_with_error
67
- end
68
-
69
- def show_sparql_execution_message(e)
70
- @error_message = "There was a syntax error in your query: #{e.message}"
71
- respond_with_error
72
- end
73
-
74
- def add_json_p_callback(result)
75
- if request.format && request.format.json?
76
- params[:callback] ? "#{params[:callback]}(#{result});" : result
77
- else
78
- result
79
- end
80
- end
81
- end
82
-
83
- end
84
- end
85
- end
86
- end
@@ -1,14 +0,0 @@
1
- module PublishMyData
2
- module Concerns
3
- module Models
4
- module Resource
5
- extend ActiveSupport::Concern
6
-
7
- # Is this resource in the host domain?
8
- def in_domain?(domain)
9
- uri.starts_with?("http://" + domain)
10
- end
11
- end
12
- end
13
- end
14
- end
@@ -1,7 +0,0 @@
1
- require "publish_my_data/render_params/dataset_render_params"
2
- require "publish_my_data/render_params/resource_render_params"
3
- require "publish_my_data/render_params/ontology_render_params"
4
- require "publish_my_data/render_params/property_render_params"
5
- require "publish_my_data/render_params/ontology_class_render_params"
6
- require "publish_my_data/render_params/concept_scheme_render_params"
7
- require "publish_my_data/render_params/concept_render_params"
@@ -1,18 +0,0 @@
1
- module PublishMyData
2
- class ConceptRenderParams
3
-
4
- def initialize(resource)
5
- @resource = resource
6
- @concept = resource.as_concept
7
- end
8
-
9
- def render_params(opts={})
10
-
11
- @concept.eager_load_predicate_triples!(:labels_only => true)
12
- @concept.eager_load_object_triples!(:labels_only => true)
13
-
14
- {template: 'publish_my_data/concepts/show', locals: {concept: @concept}}
15
- end
16
-
17
- end
18
- end
@@ -1,31 +0,0 @@
1
- module PublishMyData
2
- class ConceptSchemeRenderParams
3
-
4
- def initialize(resource)
5
- @resource = resource
6
- @concept_scheme = resource.as_concept_scheme
7
- end
8
-
9
- def render_params(opts={})
10
-
11
- @concept_scheme.eager_load_predicate_triples!(:labels_only => true)
12
- @concept_scheme.eager_load_object_triples!(:labels_only => true)
13
-
14
- concepts = []
15
-
16
- concept_resources = @concept_scheme.concepts
17
- concept_resources.each do |cr|
18
- concept = cr.as_concept
19
- concept.eager_load_predicate_triples!(:labels_only => true)
20
- concept.eager_load_object_triples!(:labels_only => true)
21
- concepts << concept
22
- end
23
-
24
- {
25
- template: 'publish_my_data/concept_schemes/show',
26
- locals: {concept_scheme: @concept_scheme, concepts: concepts}
27
- }
28
- end
29
-
30
- end
31
- end
@@ -1,32 +0,0 @@
1
- module PublishMyData
2
- class DatasetRenderParams
3
-
4
- def initialize(resource)
5
- @resource = resource
6
- @dataset = resource.as_dataset
7
- end
8
-
9
- def render_params(opts={})
10
-
11
- @types = RdfType.where('?s a ?uri').graph(@dataset.data_graph_uri).resources
12
- @dataset.eager_load_object_triples!(:labels_only => true) # for the owner URI label
13
- @type_resource_counts = {}
14
- @resources_count = 0
15
- @types.each do |t|
16
- count_query = "SELECT ?uri WHERE { GRAPH <#{@dataset.data_graph_uri.to_s}> { ?uri a <#{t.uri.to_s}> } }"
17
- @type_resource_counts[t.uri.to_s] = SparqlQuery.new(count_query).count
18
- @resources_count += @type_resource_counts[t.uri.to_s]
19
- end
20
-
21
- {
22
- template: 'publish_my_data/datasets/show', locals: {
23
- dataset: @dataset,
24
- types: @types,
25
- type_resource_counts: @type_resource_counts,
26
- resources_count: @resources_count
27
- }
28
- }
29
- end
30
-
31
- end
32
- end
@@ -1,18 +0,0 @@
1
- module PublishMyData
2
- class OntologyClassRenderParams
3
-
4
- def initialize(resource)
5
- @resource = resource
6
- @ontology_class = resource.as_ontology_class
7
- end
8
-
9
- def render_params(opts={})
10
-
11
- @ontology_class.eager_load_predicate_triples!(:labels_only => true)
12
- @ontology_class.eager_load_object_triples!(:labels_only => true)
13
-
14
- {template: 'publish_my_data/classes/show', locals: {ontology_class: @ontology_class}}
15
- end
16
-
17
- end
18
- end
@@ -1,41 +0,0 @@
1
- module PublishMyData
2
- class OntologyRenderParams
3
-
4
- def initialize(resource)
5
- @resource = resource
6
- @ontology = resource.as_ontology
7
- end
8
-
9
- def render_params(opts={})
10
-
11
- @ontology.eager_load_predicate_triples!(:labels_only => true)
12
- @ontology.eager_load_object_triples!(:labels_only => true)
13
-
14
- ontology_classes = []
15
- ontology_properties = []
16
-
17
- ontology_class_resources = @ontology.ontology_classes
18
- ontology_property_resources = @ontology.ontology_properties
19
-
20
- ontology_class_resources.each do |ocr|
21
- ontology_class = ocr.as_ontology_class
22
- ontology_class.eager_load_predicate_triples!(:labels_only => true)
23
- ontology_class.eager_load_object_triples!(:labels_only => true)
24
- ontology_classes << ontology_class
25
- end
26
-
27
- ontology_property_resources.each do |opr|
28
- ontology_property = opr.as_property
29
- ontology_property.eager_load_predicate_triples!(:labels_only => true)
30
- ontology_property.eager_load_object_triples!(:labels_only => true)
31
- ontology_properties << ontology_property
32
- end
33
-
34
- {
35
- template: 'publish_my_data/ontologies/show',
36
- locals: {ontology: @ontology, ontology_classes: ontology_classes, ontology_properties: ontology_properties},
37
- }
38
- end
39
-
40
- end
41
- end
@@ -1,18 +0,0 @@
1
- module PublishMyData
2
- class PropertyRenderParams
3
-
4
- def initialize(resource)
5
- @resource = resource
6
- @property = resource.as_property
7
- end
8
-
9
- def render_params(opts={})
10
-
11
- @property.eager_load_predicate_triples!(:labels_only => true)
12
- @property.eager_load_object_triples!(:labels_only => true)
13
-
14
- {template: 'publish_my_data/properties/show', locals: {property: @property}}
15
- end
16
-
17
- end
18
- end
@@ -1,17 +0,0 @@
1
- module PublishMyData
2
- class ResourceRenderParams
3
-
4
- def initialize(resource)
5
- @resource = resource
6
- end
7
-
8
- def render_params(opts={})
9
-
10
- @resource.eager_load_predicate_triples!(:labels_only => true)
11
- @resource.eager_load_object_triples!(:labels_only => true)
12
-
13
- {template: 'publish_my_data/resources/show', locals: {resource: @resource}}
14
- end
15
-
16
- end
17
- end