solis 0.111.0 → 0.113.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 35623eaf326ad7c4ebd6010d14d882d4d65bd7839f797834d3cc91eca31b700b
4
- data.tar.gz: 48129e7ba7cca9fd3b7891bdbd0ddce16ee5b80e3efb7a32e8fc32f8f477c9f0
3
+ metadata.gz: 250f917e5faee6c5f5babc190c2f225defe07b9a32f53908e929b81714b61908
4
+ data.tar.gz: ed611b0714eada966c6b9e82e1b44aabfbd45563ceead625ad249d5896f7583e
5
5
  SHA512:
6
- metadata.gz: 3c65075967d819db5dc12e0e17d5dcc02468eb58cf1277452c89f8edcd865a65801ea77ef972c07c139aea250307edc71b8d534c1192131a6b46d236dd4b06e3
7
- data.tar.gz: 23722f10edaf173597b60aa58b77650e35f17027eccb522cbe8b6ac666a14dd2bad0601208f628ee8f38e239018ab9bbfabf9d6f39497a521e6abd2e9e9044a1
6
+ metadata.gz: 29050d4e0148efb7cc7992d1fbd75902290a6f35c16f528eb35aafe2a3d65cb02657c148c02daefe3123145b22fad24238f8e377fed0e9b5317567e8aabd65d7
7
+ data.tar.gz: d18917f52c79246927e8235f0ae1eacaf769b361c661294319ad03e09848ad4459dfc0159115a0fc403ace2c7c8efcc79aa48b84ae2a3b26471dd9efa7262c70
@@ -106,15 +106,28 @@ class Solis::Query::Runner
106
106
  end
107
107
 
108
108
  def self.find_root_subjects(grouped, entity)
109
- # Find subjects that match the requested entity type
110
- grouped.select do |subject, triples|
109
+ # Build set of acceptable type names (entity + all subtypes via hierarchy)
110
+ acceptable_types = Set.new([entity, entity.downcase, entity.tableize])
111
+
112
+ begin
113
+ model = Solis::Options.instance.get[:solis].shape_as_model(entity)
114
+ ObjectSpace.each_object(Class)
115
+ .select { |klass| klass < model }
116
+ .reject { |m| m.metadata.nil? }
117
+ .each do |desc|
118
+ name = desc.name.demodulize
119
+ acceptable_types.merge([name, name.downcase, name.tableize])
120
+ end
121
+ rescue; end
122
+
123
+ grouped.select do |_subject, triples|
111
124
  type_triple = triples.find { |t| t[:predicate] == RDF::RDFV.type }
112
125
  next false unless type_triple
113
126
 
114
127
  type_name = type_triple[:object].to_s.split('/').last
115
- type_name.downcase == entity.downcase ||
116
- type_name.tableize == entity.tableize ||
117
- type_name == entity
128
+ acceptable_types.include?(type_name) ||
129
+ acceptable_types.include?(type_name.downcase) ||
130
+ acceptable_types.include?(type_name.tableize)
118
131
  end.keys
119
132
  end
120
133
 
@@ -149,9 +162,13 @@ class Solis::Query::Runner
149
162
  next if key.start_with?('@') # Skip internal markers
150
163
  next if key == '_id' || key == 'id' # Already added
151
164
 
152
- if obj.key?('@type') &&Solis::Options.instance.get[:solis].shape?(obj['@type'])
153
- entity = Solis::Options.instance.get[:solis].shape_as_model(obj['@type'])
154
- entity_maxcount = entity.metadata[:attributes][key][:maxcount]
165
+ begin
166
+ if obj.key?('@type') && Solis::Options.instance.get[:solis].shape?(obj['@type'])
167
+ entity = Solis::Options.instance.get[:solis].shape_as_model(obj['@type'])
168
+ entity_maxcount = entity.metadata[:attributes][key][:maxcount]
169
+ end
170
+ rescue
171
+ entity_maxcount = nil
155
172
  end
156
173
  resolved_value = resolve_value(value, objects_index, max_depth, visited, current_depth)
157
174
  resolved_value = [resolved_value] if (entity_maxcount.nil? || entity_maxcount > 1) && !resolved_value.is_a?(Array)
data/lib/solis/query.rb CHANGED
@@ -112,7 +112,7 @@ module Solis
112
112
  per_page = params[:per_page] || 10
113
113
 
114
114
  @offset = 0
115
- @offset = current_page * per_page if current_page > 1
115
+ @offset = (current_page - 1) * per_page if current_page > 1
116
116
  @limit = per_page
117
117
  self
118
118
  end
@@ -177,7 +177,7 @@ module Solis
177
177
  if core_query =~ /IN\((.*?)\)/
178
178
  #limit = $1.gsub('"','').split(',').length
179
179
  else
180
- core_query += " LIMIT #{limit} OFFSET #{offset}"
180
+ core_query += "ORDER BY ?concept LIMIT #{limit} OFFSET #{offset}"
181
181
  end
182
182
 
183
183
  query = %(
data/lib/solis/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Solis
2
- VERSION = "0.111.0"
2
+ VERSION = "0.113.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solis
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.111.0
4
+ version: 0.113.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mehmet Celik