linked_rails 0.0.4.pre.gfe77aae19 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (117) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +674 -21
  3. data/app/controllers/linked_rails/bulk_controller.rb +16 -81
  4. data/app/models/linked_rails/actions/item.rb +30 -23
  5. data/app/models/linked_rails/actions/list.rb +6 -0
  6. data/app/models/linked_rails/collection/filter_field.rb +3 -16
  7. data/app/models/linked_rails/collection/filterable.rb +4 -6
  8. data/app/models/linked_rails/collection/infinite.rb +6 -17
  9. data/app/models/linked_rails/collection/iri.rb +2 -25
  10. data/app/models/linked_rails/collection/iri_mapping.rb +1 -1
  11. data/app/models/linked_rails/collection/paginated.rb +3 -4
  12. data/app/models/linked_rails/collection/view.rb +10 -38
  13. data/app/models/linked_rails/collection.rb +25 -27
  14. data/app/models/linked_rails/enum_value.rb +1 -1
  15. data/app/models/linked_rails/form/field/association_input.rb +1 -7
  16. data/app/models/linked_rails/form/field/file_input.rb +0 -1
  17. data/app/models/linked_rails/form/field.rb +5 -31
  18. data/app/models/linked_rails/form/field_factory.rb +16 -29
  19. data/app/models/linked_rails/form/group.rb +4 -2
  20. data/app/models/linked_rails/form/page.rb +0 -4
  21. data/app/models/linked_rails/form.rb +6 -4
  22. data/app/models/linked_rails/manifest.rb +20 -94
  23. data/app/models/linked_rails/menus/item.rb +13 -10
  24. data/app/models/linked_rails/menus/list.rb +5 -13
  25. data/app/models/linked_rails/ontology/base.rb +0 -2
  26. data/app/models/linked_rails/ontology.rb +0 -1
  27. data/app/models/linked_rails/property_query.rb +0 -2
  28. data/app/models/linked_rails/sequence.rb +11 -2
  29. data/app/models/linked_rails/web_page.rb +4 -0
  30. data/app/models/linked_rails/web_site.rb +4 -0
  31. data/app/models/linked_rails/widget.rb +10 -3
  32. data/app/policies/linked_rails/collection_policy.rb +2 -2
  33. data/app/serializers/linked_rails/actions/item_serializer.rb +4 -3
  34. data/app/serializers/linked_rails/collection/filter_field_serializer.rb +2 -3
  35. data/app/serializers/linked_rails/collection/filter_option_serializer.rb +1 -1
  36. data/app/serializers/linked_rails/collection/filter_serializer.rb +1 -1
  37. data/app/serializers/linked_rails/collection/sorting_serializer.rb +1 -1
  38. data/app/serializers/linked_rails/collection/view_serializer.rb +3 -3
  39. data/app/serializers/linked_rails/collection_serializer.rb +13 -9
  40. data/app/serializers/linked_rails/condition_serializer.rb +3 -3
  41. data/app/serializers/linked_rails/entry_point_serializer.rb +2 -2
  42. data/app/serializers/linked_rails/enum_value_serializer.rb +0 -1
  43. data/app/serializers/linked_rails/form/field/association_input_serializer.rb +0 -1
  44. data/app/serializers/linked_rails/form/field_serializer.rb +1 -3
  45. data/app/serializers/linked_rails/form/group_serializer.rb +1 -1
  46. data/app/serializers/linked_rails/form/page_serializer.rb +1 -1
  47. data/app/serializers/linked_rails/menus/item_serializer.rb +3 -3
  48. data/app/serializers/linked_rails/menus/list_serializer.rb +1 -1
  49. data/app/serializers/linked_rails/sequence_serializer.rb +5 -2
  50. data/app/serializers/linked_rails/shacl/node_shape_serializer.rb +1 -1
  51. data/app/serializers/linked_rails/shacl/property_shape_serializer.rb +1 -1
  52. data/app/serializers/linked_rails/shacl/shape_serializer.rb +5 -5
  53. data/app/serializers/linked_rails/web_page_serializer.rb +3 -3
  54. data/app/serializers/linked_rails/web_site_serializer.rb +1 -1
  55. data/app/serializers/linked_rails/widget_serializer.rb +3 -3
  56. data/lib/generators/linked_rails/install/templates/locales.yml +0 -4
  57. data/lib/generators/linked_rails/install/templates/rdf_serializers_initializer.rb +1 -1
  58. data/lib/generators/linked_rails/model/templates/form.rb.tt +1 -1
  59. data/lib/generators/linked_rails/model/templates/policy.rb.tt +1 -1
  60. data/lib/generators/linked_rails/model/templates/serializer.rb.tt +1 -5
  61. data/lib/linked_rails/active_response/controller/collections.rb +1 -1
  62. data/lib/linked_rails/active_response/controller/crud_defaults.rb +1 -1
  63. data/lib/linked_rails/active_response/controller/params.rb +6 -6
  64. data/lib/linked_rails/active_response/controller.rb +22 -1
  65. data/lib/linked_rails/collection_params_parser.rb +1 -1
  66. data/lib/linked_rails/controller/actionable.rb +2 -5
  67. data/lib/linked_rails/controller/default_actions/create.rb +2 -2
  68. data/lib/linked_rails/controller/error_handling.rb +7 -12
  69. data/lib/linked_rails/controller.rb +1 -4
  70. data/lib/linked_rails/helpers/delta_helper.rb +58 -4
  71. data/lib/linked_rails/helpers/resource_helper.rb +1 -13
  72. data/lib/linked_rails/iri_mapper.rb +1 -1
  73. data/lib/linked_rails/middleware/linked_data_params.rb +27 -26
  74. data/lib/linked_rails/model/actionable.rb +8 -7
  75. data/lib/linked_rails/model/collections.rb +4 -10
  76. data/lib/linked_rails/model/dirty.rb +18 -6
  77. data/lib/linked_rails/model/filtering.rb +2 -2
  78. data/lib/linked_rails/model/indexable.rb +1 -1
  79. data/lib/linked_rails/model/iri.rb +2 -14
  80. data/lib/linked_rails/model/iri_mapping.rb +3 -3
  81. data/lib/linked_rails/model/menuable.rb +7 -1
  82. data/lib/linked_rails/model/serialization.rb +6 -2
  83. data/lib/linked_rails/model/singularable.rb +5 -7
  84. data/lib/linked_rails/model/tables.rb +1 -1
  85. data/lib/linked_rails/model.rb +2 -5
  86. data/lib/linked_rails/params_parser.rb +47 -48
  87. data/lib/linked_rails/policy.rb +30 -21
  88. data/lib/linked_rails/renderers.rb +0 -1
  89. data/lib/linked_rails/routes.rb +0 -1
  90. data/lib/linked_rails/serializer/singularable.rb +1 -1
  91. data/lib/linked_rails/serializer.rb +2 -6
  92. data/lib/linked_rails/translate.rb +0 -12
  93. data/lib/linked_rails/vocab.rb +0 -1
  94. data/lib/linked_rails.rb +3 -16
  95. data/lib/rdf/query_fix.rb +1 -1
  96. metadata +10 -59
  97. data/app/controllers/linked_rails/actions/objects_controller.rb +0 -9
  98. data/app/models/linked_rails/actions/object.rb +0 -38
  99. data/app/models/linked_rails/form/field/url_input.rb +0 -10
  100. data/app/policies/linked_rails/actions/object_policy.rb +0 -11
  101. data/app/policies/linked_rails/form_policy.rb +0 -13
  102. data/app/policies/linked_rails/ontology_policy.rb +0 -13
  103. data/app/serializers/linked_rails/actions/object_serializer.rb +0 -9
  104. data/app/serializers/linked_rails/form/field/file_input_serializer.rb +0 -11
  105. data/app/serializers/linked_rails/property_query_serializer.rb +0 -7
  106. data/app/workers/linked_rails/invalidation_stream_worker.rb +0 -16
  107. data/lib/linked_rails/controller/delta.rb +0 -58
  108. data/lib/linked_rails/controller/rendering.rb +0 -48
  109. data/lib/linked_rails/errors/forbidden.rb +0 -37
  110. data/lib/linked_rails/errors.rb +0 -3
  111. data/lib/linked_rails/middleware/error_handling.rb +0 -51
  112. data/lib/linked_rails/model/cacheable.rb +0 -45
  113. data/lib/linked_rails/railtie.rb +0 -11
  114. data/lib/linked_rails/storage.rb +0 -32
  115. data/lib/linked_rails/types/iri_type.rb +0 -37
  116. data/lib/linked_rails/url.rb +0 -11
  117. data/lib/rdf/list.rb +0 -9
@@ -2,21 +2,17 @@
2
2
 
3
3
  module LinkedRails
4
4
  class ParamsParser # rubocop:disable Metrics/ClassLength
5
- include ::Empathy::EmpJson::Helpers::Slices
6
- include ::Empathy::EmpJson::Helpers::Parsing
5
+ attr_accessor :params, :graph, :user_context
7
6
 
8
- attr_accessor :params, :slice, :user_context
9
- delegate :filter_params, to: :collection_params_parser
10
-
11
- def initialize(slice: nil, params: {}, user_context: nil)
12
- self.slice = slice
7
+ def initialize(graph: nil, params: {}, user_context: nil)
8
+ self.graph = graph
13
9
  self.params = params
14
10
  self.user_context = user_context
15
11
  end
16
12
 
17
13
  def attributes_from_filters(klass)
18
14
  ActionController::Parameters.new(
19
- filter_params.each_with_object({}) do |(predicate, value), hash|
15
+ collection_params_parser.filter_params.each_with_object({}) do |(predicate, value), hash|
20
16
  key_and_value = filter_to_param(klass, predicate, value)
21
17
  hash[key_and_value.first] = key_and_value.second if key_and_value
22
18
  end
@@ -24,23 +20,21 @@ module LinkedRails
24
20
  end
25
21
 
26
22
  def parse_param(klass, predicate, object)
27
- field_options = serializer_field(klass, predicate) unless predicate == '_id'
23
+ field_options = serializer_field(klass, predicate)
28
24
  if field_options.is_a?(FastJsonapi::Attribute)
29
- parse_attribute(klass, field_options, emp_to_primitive(object))
25
+ parse_attribute(klass, field_options, object.value)
30
26
  elsif field_options.is_a?(FastJsonapi::Relationship)
31
- parse_association(klass, field_options, emp_to_primitive(object))
27
+ parse_association(klass, field_options, object)
32
28
  end
33
29
  end
34
30
 
35
- # Recursively parses a resource from slice
31
+ # Recursively parses a resource from graph
36
32
  def parse_resource(subject, klass)
37
- (record_from_slice(slice, subject) || {}).reduce({}) do |h, (k, v)|
38
- (v.is_a?(Array) ? v : [v]).each do |value|
39
- param = parse_param(klass, RDF::URI(k), value)
40
- param ? add_param(h, param.first, param.second) : h
41
- end
42
- h
43
- end
33
+ graph
34
+ .query([subject])
35
+ .map { |statement| parse_statement(statement, klass) }
36
+ .compact
37
+ .reduce({}) { |h, (k, v)| add_param(h, k, v) }
44
38
  end
45
39
 
46
40
  private
@@ -62,11 +56,11 @@ module LinkedRails
62
56
  def associated_class_from_params(reflection, object)
63
57
  return reflection.klass unless reflection.polymorphic?
64
58
 
65
- type = values_from_slice(slice, object, Vocab.rdfv[:type])
59
+ query = graph.query(subject: object, predicate: Vocab.rdfv[:type])
66
60
 
67
- raise("No type given for '#{object}' referenced by polymorphic association '#{reflection.name}'") if type.blank?
61
+ raise("No type given for '#{object}' referenced by polymorphic association '#{reflection.name}'") if query.empty?
68
62
 
69
- iri_to_class(type)
63
+ iri_to_class(query.first.object)
70
64
  end
71
65
 
72
66
  def collection_params_parser
@@ -77,11 +71,11 @@ module LinkedRails
77
71
  options = serializer_field(klass, predicate)
78
72
  return unless value.count == 1 && options.present?
79
73
 
80
- parsed_value = value.first.start_with?('http') ? RDF::URI(value.first) : value.first
74
+ parsed_value = value.first.start_with?('http') ? RDF::URI(value.first) : RDF::Literal(value.first)
81
75
  parse_param(
82
76
  klass,
83
77
  options.predicate,
84
- object_to_value(parsed_value)
78
+ parsed_value
85
79
  )
86
80
  end
87
81
 
@@ -99,17 +93,28 @@ module LinkedRails
99
93
  end
100
94
 
101
95
  def nested_attributes(object, klass, association, collection)
102
- parsed = parse_nested_resource(object, klass)
103
- nested_resources = collection ? {rand(1_000_000_000).to_s => parsed} : parsed
104
-
96
+ nested_resources =
97
+ if graph.query([object, Vocab.rdfv[:first], nil]).present?
98
+ nested_attributes_from_list(object, klass)
99
+ else
100
+ parsed = parse_nested_resource(object, klass)
101
+ collection ? {rand(1_000_000_000).to_s => parsed} : parsed
102
+ end
105
103
  ["#{association}_attributes", nested_resources]
106
104
  end
107
105
 
106
+ def nested_attributes_from_list(object, klass)
107
+ Hash[
108
+ RDF::List.new(subject: object, graph: graph)
109
+ .map { |nested| [rand(1_000_000_000).to_s, parse_nested_resource(nested, klass)] }
110
+ ]
111
+ end
112
+
108
113
  def parse_association(klass, field_options, object)
109
114
  association = field_options.association || field_options.key
110
115
  reflection = klass.reflect_on_association(association) || raise("#{association} not found for #{name}")
111
116
 
112
- if slice&.key?(object.to_s)
117
+ if graph&.has_subject?(object)
113
118
  association_klass = associated_class_from_params(reflection, object)
114
119
  nested_attributes(object, association_klass, association, reflection.collection?)
115
120
  elsif object.iri?
@@ -118,47 +123,41 @@ module LinkedRails
118
123
  end
119
124
 
120
125
  def parse_attribute(klass, field_options, value)
121
- parsed_value = parse_enum_attribute(klass, field_options.key, value) || value
126
+ parsed_value = parse_blob_attribute(value) || parse_enum_attribute(klass, field_options.key, value) || value
127
+
128
+ [field_options.key, parsed_value]
129
+ end
122
130
 
123
- [field_options.key, parsed_value.to_s]
131
+ def parse_blob_attribute(value)
132
+ params["<#{value}>"] if value.starts_with?(Vocab.ll['blobs/'])
124
133
  end
125
134
 
126
135
  def parse_enum_attribute(klass, key, value)
127
136
  opts = RDF::Serializers.serializer_for(klass)&.enum_options(key)
128
137
  return if opts.blank?
129
138
 
130
-
131
139
  opts.detect { |_k, options| options.iri == value }&.first&.to_s
132
140
  end
133
141
 
134
142
  def parse_iri_param(iri, reflection)
143
+ resource = LinkedRails.iri_mapper.resource_from_iri(iri, user_context)
144
+ return unless resource
145
+
135
146
  key = foreign_key_for_reflection(reflection)
136
- value = parse_iri_param_value(iri, reflection) if key
137
147
 
138
- [key, value.to_s] if value
139
- end
148
+ value = resource&.try(reflection.association_primary_key) if key
140
149
 
141
- def parse_iri_param_value(iri, reflection)
142
- resource = LinkedRails.iri_mapper.resource_from_iri(iri, user_context)
143
-
144
- resource&.try(reflection.association_primary_key)
150
+ [key, value] if value
145
151
  end
146
152
 
147
153
  def parse_nested_resource(object, klass)
148
154
  resource = parse_resource(object, klass)
149
- resource[:id] ||= nested_resource_id(object)
155
+ resource[:id] ||= LinkedRails.iri_mapper.opts_from_iri(object)[:params][:id] if object.iri?
150
156
  resource
151
157
  end
152
158
 
153
- def nested_resource_id(object)
154
- return unless object.iri?
155
-
156
- opts = LinkedRails.iri_mapper.opts_from_iri(object)
157
- if opts[:class].method(:requested_single_resource).owner == LinkedRails::Model::IRIMapping::ClassMethods
158
- opts[:params][:id]
159
- else
160
- opts[:class].requested_single_resource(opts[:params], nil)&.id
161
- end
159
+ def parse_statement(statement, klass)
160
+ parse_param(klass, statement.predicate, statement.object)
162
161
  end
163
162
 
164
163
  def serializer_field(klass, predicate)
@@ -24,11 +24,11 @@ module LinkedRails
24
24
  end
25
25
 
26
26
  def create_child?(klass, **opts)
27
- child_policy(klass, **opts).create?
27
+ child_policy(klass, opts).create?
28
28
  end
29
29
 
30
30
  def index_children?(klass, **opts)
31
- child_policy(klass, **opts).show?
31
+ child_policy(klass, opts).show?
32
32
  end
33
33
 
34
34
  def permitted_attributes
@@ -38,18 +38,10 @@ module LinkedRails
38
38
  .flatten
39
39
  end
40
40
 
41
- def permitted_attributes_from_filters(filters)
42
- params_parser(filters).attributes_from_filters(policy_class).permit(permitted_attributes)
43
- end
44
-
45
41
  def policy_class
46
42
  self.class.policy_class
47
43
  end
48
44
 
49
- def public_resource?
50
- false
51
- end
52
-
53
45
  def show?
54
46
  false
55
47
  end
@@ -77,7 +69,7 @@ module LinkedRails
77
69
  end
78
70
 
79
71
  def child_policy(klass, **opts)
80
- Pundit.policy(user_context, record.build_child(klass, **opts.merge(user_context: user_context)))
72
+ Pundit.policy(user_context, record.build_child(klass, opts.merge(user_context: user_context)))
81
73
  end
82
74
 
83
75
  def forbid_with_message(message, status = nil)
@@ -92,10 +84,6 @@ module LinkedRails
92
84
  false
93
85
  end
94
86
 
95
- def params_parser(filters)
96
- LinkedRails::ParamsParser.new(user_context: user_context, params: {filter: filters})
97
- end
98
-
99
87
  def parent_policy
100
88
  return if record.try(:parent).blank?
101
89
 
@@ -137,12 +125,17 @@ module LinkedRails
137
125
  end
138
126
 
139
127
  module ClassMethods
140
- def condition_alternatives(attr, permission_required)
141
- raise("#{attr} not permitted by #{self}") if attribute_options(attr).blank? && permission_required
142
-
143
- attribute_options(attr)
144
- .select { |opts| opts[:conditions].present? }
145
- .map { |opts| property_shapes(opts[:conditions]) }
128
+ def condition_for(attr, pass, **shape_opts)
129
+ raise("#{attr} not permitted by #{self}") if attribute_options(attr).blank? && pass.permission_required?
130
+
131
+ alternatives = node_shapes_for(attr, **shape_opts)
132
+ if alternatives.count == 1
133
+ Condition.new(shape: alternatives.first, pass: pass)
134
+ elsif alternatives.count.positive?
135
+ Condition.new(shape: SHACL::NodeShape.new(or: alternatives), pass: pass)
136
+ else
137
+ pass
138
+ end
146
139
  end
147
140
 
148
141
  def policy_class
@@ -161,6 +154,22 @@ module LinkedRails
161
154
  permitted_attributes.select { |opts| opts[:attributes].include?(attr) }
162
155
  end
163
156
 
157
+ def condition_alternatives(attr)
158
+ attribute_options(attr)
159
+ .select { |opts| opts[:conditions].present? }
160
+ .map { |opts| opts[:conditions] }
161
+ end
162
+
163
+ def node_shapes_for(attr, property: [], sh_not: [])
164
+ alternatives = condition_alternatives(attr)
165
+ alternatives = [[]] if alternatives.empty? && (property.any? || sh_not.any?)
166
+
167
+ alternatives.map do |props|
168
+ properties = property_shapes(props) + property
169
+ SHACL::NodeShape.new(property: properties, sh_not: sh_not)
170
+ end
171
+ end
172
+
164
173
  def initialize_permitted_attributes
165
174
  return if _permitted_attributes && method(:_permitted_attributes).owner == singleton_class
166
175
 
@@ -19,7 +19,6 @@ module LinkedRails
19
19
  end
20
20
 
21
21
  register_renderer(%i[hndjson], ['application/hex+x-ndjson'], :hndjson)
22
- register_renderer(%i[empjson], ['application/empathy+json'], :empjson)
23
22
  rdf_content_types.freeze
24
23
  end
25
24
 
@@ -22,7 +22,6 @@ module LinkedRails
22
22
 
23
23
  get '(*parent_iri)/actions', to: "#{opts.fetch(:actions, 'linked_rails/actions')}/items#index"
24
24
  get '(*parent_iri)/actions/:id', to: "#{opts.fetch(:actions, 'linked_rails/actions')}/items#show"
25
- get '(*parent_iri)/action_object', to: "#{opts.fetch(:actions, 'linked_rails/actions')}/objects#show"
26
25
  end
27
26
 
28
27
  def linked_resource(klass, controller: nil, collection: true, nested: false, resource: true, &block) # rubocop:disable Metrics/MethodLength, Metrics/ParameterLists
@@ -16,7 +16,7 @@ module LinkedRails
16
16
  object.singular_iri,
17
17
  Vocab.owl.sameAs,
18
18
  object.iri,
19
- graph_name: Vocab.ld[:supplant]
19
+ graph_name: Vocab.ll[:supplant]
20
20
  )
21
21
  ]
22
22
  end
@@ -13,7 +13,7 @@ module LinkedRails
13
13
  include Serializer::Actionable
14
14
  include Serializer::Menuable
15
15
  include Serializer::Singularable
16
- include Empathy::EmpJson::Serializer
16
+
17
17
  extend Enhanceable
18
18
 
19
19
  enhanceable :serializable_class, :Serializer
@@ -104,7 +104,7 @@ module LinkedRails
104
104
  end
105
105
 
106
106
  def serialize_image(obj)
107
- if (obj.is_a?(String) || obj.is_a?(Symbol)) && !obj.to_s.include?('http')
107
+ if obj.is_a?(String) || obj.is_a?(Symbol)
108
108
  RDF::URI(obj.to_s.gsub(/^fa-/, 'http://fontawesome.io/icon/'))
109
109
  else
110
110
  obj.presence
@@ -120,7 +120,6 @@ module LinkedRails
120
120
  collection_opts = {}
121
121
  collection_opts[:page_size] = opts.delete(:page_size) if opts.key?(:page_size)
122
122
  collection_opts[:display] = opts.delete(:display) if opts.key?(:display)
123
- collection_opts[:table_type] = opts.delete(:table_type) if opts.key?(:table_type)
124
123
 
125
124
  has_one collection_name, **opts do |object, params|
126
125
  object.send(collection_name, **collection_opts.merge(user_context: params[:scope]))
@@ -149,6 +148,3 @@ module LinkedRails
149
148
  end
150
149
  end
151
150
  end
152
-
153
- RDF::Serializers::NilSerializer.include(Empathy::EmpJson::Serializer)
154
- RDF::Serializers::ListSerializer.include(Empathy::EmpJson::Serializer)
@@ -135,18 +135,6 @@ module LinkedRails # rubocop:disable Metrics/ModuleLength
135
135
  end
136
136
  end
137
137
 
138
- Translate.translations_for(:field, :placeholder) do |object, fallback|
139
- if object.model_attribute.present?
140
- I18n.t(
141
- "forms.#{Translate.translation_key(object.model_class)}.#{object.model_attribute}.placeholder",
142
- default: [
143
- :"forms.default.#{object.model_attribute}.placeholder",
144
- fallback ? object.model_attribute.to_s.humanize : ''
145
- ]
146
- )
147
- end
148
- end
149
-
150
138
  Translate.translations_for(:field, :label) do |object, fallback|
151
139
  if object.model_attribute.present?
152
140
  I18n.t(
@@ -82,7 +82,6 @@ module LinkedRails
82
82
  register(:fhir, 'http://hl7.org/fhir/')
83
83
  register(:form, 'https://ns.ontola.io/form#')
84
84
  register(:libro, 'https://ns.ontola.io/libro/')
85
- register(:ld, 'http://purl.org/linked-delta/')
86
85
  register(:ll, 'http://purl.org/link-lib/')
87
86
  register(:ontola, 'https://ns.ontola.io/core#')
88
87
  register(:sp, 'http://spinrdf.org/sp#')
data/lib/linked_rails.rb CHANGED
@@ -1,11 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'active_response'
4
- require 'empathy/emp_json'
5
4
  require 'jsonapi/serializer'
6
5
  require 'kaminari/activerecord'
7
6
  require 'rdf'
8
- require 'rdf/list'
9
7
  require 'rdf/query_fix'
10
8
  require 'rdf/vocab'
11
9
  require 'nill_class_renderer'
@@ -14,7 +12,6 @@ require 'linked_rails/iri_mapper'
14
12
  require 'linked_rails/collection_params_parser'
15
13
  require 'linked_rails/params_parser'
16
14
  require 'linked_rails/middleware/linked_data_params'
17
- require 'linked_rails/middleware/error_handling'
18
15
  require 'linked_rails/renderers'
19
16
 
20
17
  module LinkedRails
@@ -22,10 +19,6 @@ module LinkedRails
22
19
 
23
20
  mattr_accessor :whitelisted_spi_ips
24
21
  mattr_writer :host, :scheme
25
- mattr_accessor :persistent_redis_database, default: ENV['PERSISTENT_REDIS_DATABASE'].presence || 6
26
- mattr_accessor :stream_redis_database, default: ENV['STREAM_REDIS_DATABASE'].presence || 7
27
- mattr_accessor :cache_redis_database, default: ENV['CACHE_REDIS_DATABASE'].presence || 8
28
- mattr_accessor :cache_stream, default: ENV['CACHE_STREAM'].presence || 'transactions'
29
22
 
30
23
  def self.configurable_class(parent, klass, default: nil, reader: nil) # rubocop:disable Metrics/AbcSize
31
24
  method = :"#{[parent, klass.to_s.downcase].compact.join('_')}_class"
@@ -54,10 +47,8 @@ module LinkedRails
54
47
  @@scheme ||= Rails.application.routes.default_url_options[:protocol] || :http # rubocop:disable Style/ClassVars
55
48
  end
56
49
 
57
- def iri(**args)
58
- opts = {scheme: LinkedRails.scheme, host: LinkedRails.host}.merge(args)
59
- opts[:path] = opts[:path].presence || '/'
60
- RDF::URI.new(**opts)
50
+ def iri(**opts)
51
+ RDF::URI.new(**{scheme: LinkedRails.scheme, host: LinkedRails.host}.merge(opts))
61
52
  end
62
53
  end
63
54
 
@@ -85,12 +76,10 @@ module LinkedRails
85
76
  end
86
77
 
87
78
  ActiveSupport::Inflector.inflections do |inflect|
88
- inflect.acronym 'IRI'
89
79
  inflect.acronym 'RDF'
90
80
  inflect.acronym 'SHACL'
91
81
  end
92
82
 
93
- require 'linked_rails/errors'
94
83
  require 'linked_rails/uri_template'
95
84
  require 'linked_rails/vocab'
96
85
  require 'linked_rails/cache'
@@ -107,6 +96,4 @@ require 'linked_rails/rdf_error'
107
96
  require 'linked_rails/routes'
108
97
  require 'linked_rails/serializer'
109
98
  require 'linked_rails/translate'
110
- require 'linked_rails/railtie'
111
- require 'linked_rails/url'
112
- require 'linked_rails/storage'
99
+ require_relative 'rails/welcome_controller'
data/lib/rdf/query_fix.rb CHANGED
@@ -5,7 +5,7 @@ module QueryFix
5
5
  if args.length == 1 && args.first.is_a?(String) && args.first.include?('?')
6
6
  split_iri = args.first.split('?')
7
7
 
8
- super([split_iri[0], split_iri[1]&.gsub('+', '%20')].join('?'), **options)
8
+ super([split_iri[0], split_iri[1].gsub('+', '%20')].join('?'), **options)
9
9
  else
10
10
  super
11
11
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: linked_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4.pre.gfe77aae19
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arthur Dingemans
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-08-22 00:00:00.000000000 Z
11
+ date: 2021-11-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: active_response
@@ -24,20 +24,6 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.0.2
27
- - !ruby/object:Gem::Dependency
28
- name: emp_json
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: 1.3.0
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: 1.3.0
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: kaminari-activerecord
43
29
  requirement: !ruby/object:Gem::Requirement
@@ -66,20 +52,6 @@ dependencies:
66
52
  - - ">="
67
53
  - !ruby/object:Gem::Version
68
54
  version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: redis
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :runtime
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
55
  - !ruby/object:Gem::Dependency
84
56
  name: rdf
85
57
  requirement: !ruby/object:Gem::Requirement
@@ -206,7 +178,7 @@ dependencies:
206
178
  - - ">="
207
179
  - !ruby/object:Gem::Version
208
180
  version: '0'
209
- description:
181
+ description:
210
182
  email:
211
183
  - arthur@argu.co
212
184
  executables: []
@@ -217,7 +189,6 @@ files:
217
189
  - README.md
218
190
  - Rakefile
219
191
  - app/controllers/linked_rails/actions/items_controller.rb
220
- - app/controllers/linked_rails/actions/objects_controller.rb
221
192
  - app/controllers/linked_rails/bulk_controller.rb
222
193
  - app/controllers/linked_rails/current_user_controller.rb
223
194
  - app/controllers/linked_rails/enum_values_controller.rb
@@ -229,7 +200,6 @@ files:
229
200
  - app/controllers/linked_rails/ontologies_controller.rb
230
201
  - app/models/linked_rails/actions/item.rb
231
202
  - app/models/linked_rails/actions/list.rb
232
- - app/models/linked_rails/actions/object.rb
233
203
  - app/models/linked_rails/collection.rb
234
204
  - app/models/linked_rails/collection/configuration.rb
235
205
  - app/models/linked_rails/collection/filter.rb
@@ -272,7 +242,6 @@ files:
272
242
  - app/models/linked_rails/form/field/text_area_input.rb
273
243
  - app/models/linked_rails/form/field/text_input.rb
274
244
  - app/models/linked_rails/form/field/toggle_button_group.rb
275
- - app/models/linked_rails/form/field/url_input.rb
276
245
  - app/models/linked_rails/form/field_factory.rb
277
246
  - app/models/linked_rails/form/group.rb
278
247
  - app/models/linked_rails/form/page.rb
@@ -295,17 +264,13 @@ files:
295
264
  - app/models/linked_rails/widget.rb
296
265
  - app/policies/linked_rails/actions/item_policy.rb
297
266
  - app/policies/linked_rails/actions/list_policy.rb
298
- - app/policies/linked_rails/actions/object_policy.rb
299
267
  - app/policies/linked_rails/collection/view_policy.rb
300
268
  - app/policies/linked_rails/collection_policy.rb
301
269
  - app/policies/linked_rails/enum_value_policy.rb
302
- - app/policies/linked_rails/form_policy.rb
303
270
  - app/policies/linked_rails/menus/item_policy.rb
304
271
  - app/policies/linked_rails/menus/list_policy.rb
305
- - app/policies/linked_rails/ontology_policy.rb
306
272
  - app/policies/linked_rails/sequence_policy.rb
307
273
  - app/serializers/linked_rails/actions/item_serializer.rb
308
- - app/serializers/linked_rails/actions/object_serializer.rb
309
274
  - app/serializers/linked_rails/collection/filter_field_serializer.rb
310
275
  - app/serializers/linked_rails/collection/filter_option_serializer.rb
311
276
  - app/serializers/linked_rails/collection/filter_serializer.rb
@@ -318,7 +283,6 @@ files:
318
283
  - app/serializers/linked_rails/entry_point_serializer.rb
319
284
  - app/serializers/linked_rails/enum_value_serializer.rb
320
285
  - app/serializers/linked_rails/form/field/association_input_serializer.rb
321
- - app/serializers/linked_rails/form/field/file_input_serializer.rb
322
286
  - app/serializers/linked_rails/form/field/resource_field_serializer.rb
323
287
  - app/serializers/linked_rails/form/field/select_input_serializer.rb
324
288
  - app/serializers/linked_rails/form/field_serializer.rb
@@ -331,7 +295,6 @@ files:
331
295
  - app/serializers/linked_rails/ontology/class_serializer.rb
332
296
  - app/serializers/linked_rails/ontology/property_serializer.rb
333
297
  - app/serializers/linked_rails/ontology_serializer.rb
334
- - app/serializers/linked_rails/property_query_serializer.rb
335
298
  - app/serializers/linked_rails/rdf_error_serializer.rb
336
299
  - app/serializers/linked_rails/sequence_serializer.rb
337
300
  - app/serializers/linked_rails/shacl/node_shape_serializer.rb
@@ -340,7 +303,6 @@ files:
340
303
  - app/serializers/linked_rails/web_page_serializer.rb
341
304
  - app/serializers/linked_rails/web_site_serializer.rb
342
305
  - app/serializers/linked_rails/widget_serializer.rb
343
- - app/workers/linked_rails/invalidation_stream_worker.rb
344
306
  - config/initializers/inflections.rb
345
307
  - lib/generators/linked_rails/install/install_generator.rb
346
308
  - lib/generators/linked_rails/install/templates/README
@@ -380,9 +342,7 @@ files:
380
342
  - lib/linked_rails/controller/default_actions/create.rb
381
343
  - lib/linked_rails/controller/default_actions/destroy.rb
382
344
  - lib/linked_rails/controller/default_actions/update.rb
383
- - lib/linked_rails/controller/delta.rb
384
345
  - lib/linked_rails/controller/error_handling.rb
385
- - lib/linked_rails/controller/rendering.rb
386
346
  - lib/linked_rails/engine.rb
387
347
  - lib/linked_rails/enhanceable.rb
388
348
  - lib/linked_rails/enhancements.rb
@@ -390,17 +350,13 @@ files:
390
350
  - lib/linked_rails/enhancements/destroyable/controller.rb
391
351
  - lib/linked_rails/enhancements/updatable/controller.rb
392
352
  - lib/linked_rails/enhancements/updatable/serializer.rb
393
- - lib/linked_rails/errors.rb
394
- - lib/linked_rails/errors/forbidden.rb
395
353
  - lib/linked_rails/helpers/delta_helper.rb
396
354
  - lib/linked_rails/helpers/ontola_actions_helper.rb
397
355
  - lib/linked_rails/helpers/resource_helper.rb
398
356
  - lib/linked_rails/iri_mapper.rb
399
- - lib/linked_rails/middleware/error_handling.rb
400
357
  - lib/linked_rails/middleware/linked_data_params.rb
401
358
  - lib/linked_rails/model.rb
402
359
  - lib/linked_rails/model/actionable.rb
403
- - lib/linked_rails/model/cacheable.rb
404
360
  - lib/linked_rails/model/collections.rb
405
361
  - lib/linked_rails/model/dirty.rb
406
362
  - lib/linked_rails/model/enhancements.rb
@@ -416,7 +372,6 @@ files:
416
372
  - lib/linked_rails/params_parser.rb
417
373
  - lib/linked_rails/policy.rb
418
374
  - lib/linked_rails/policy/attribute_conditions.rb
419
- - lib/linked_rails/railtie.rb
420
375
  - lib/linked_rails/rdf_error.rb
421
376
  - lib/linked_rails/renderers.rb
422
377
  - lib/linked_rails/routes.rb
@@ -424,24 +379,20 @@ files:
424
379
  - lib/linked_rails/serializer/actionable.rb
425
380
  - lib/linked_rails/serializer/menuable.rb
426
381
  - lib/linked_rails/serializer/singularable.rb
427
- - lib/linked_rails/storage.rb
428
382
  - lib/linked_rails/test_methods.rb
429
383
  - lib/linked_rails/translate.rb
430
- - lib/linked_rails/types/iri_type.rb
431
384
  - lib/linked_rails/uri_template.rb
432
- - lib/linked_rails/url.rb
433
385
  - lib/linked_rails/version.rb
434
386
  - lib/linked_rails/vocab.rb
435
387
  - lib/nill_class_renderer.rb
436
388
  - lib/rails/welcome_controller.rb
437
- - lib/rdf/list.rb
438
389
  - lib/rdf/query_fix.rb
439
390
  - lib/tasks/linked_rails_tasks.rake
440
391
  homepage: https://github.com/ontola/linked_rails
441
392
  licenses:
442
- - MIT
393
+ - GPL-3.0-or-later
443
394
  metadata: {}
444
- post_install_message:
395
+ post_install_message:
445
396
  rdoc_options: []
446
397
  require_paths:
447
398
  - lib
@@ -452,12 +403,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
452
403
  version: '0'
453
404
  required_rubygems_version: !ruby/object:Gem::Requirement
454
405
  requirements:
455
- - - ">"
406
+ - - ">="
456
407
  - !ruby/object:Gem::Version
457
- version: 1.3.1
408
+ version: '0'
458
409
  requirements: []
459
- rubygems_version: 3.3.7
460
- signing_key:
410
+ rubygems_version: 3.1.2
411
+ signing_key:
461
412
  specification_version: 4
462
413
  summary: LinkedRails helps you create a Linked Data application in a matter of seconds.
463
414
  test_files: []
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module LinkedRails
4
- module Actions
5
- class ObjectsController < LinkedRails.controller_parent_class
6
- active_response :show
7
- end
8
- end
9
- end