solis 0.105.0 → 0.107.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: 0055d198a28d2de5ca5e7fe321831f41d7da424cb88c05e8b3846db333a33cb6
4
- data.tar.gz: c6c9f7eb2dfdbaeaf50213f58acaf99dbb3a0998d4b18039f61f50545f7f52d4
3
+ metadata.gz: 0ce95b73b7c870b2a744239d77e8a590c8793c0f59504c560af96013e82ff42e
4
+ data.tar.gz: 669a40a5a83298d7ec3d46a77ee7c66b9b7075d1a6deca037d7b76ad60a2e18c
5
5
  SHA512:
6
- metadata.gz: cffb31444287f984b8ad41878a11b7ebc8b4d6083a0f15c794a12b4369230fcd58fcac498ae12480658a1299329161d19e4561add65911a252555b0cf3f0d8ce
7
- data.tar.gz: a6d6b3fa751a0a5c07cf672ec8151243fd2833cb639c5d5720250ca96178976b57d0f450057a6d30fdcf5ce0a0d70e2956e8b003cbe92464afa1377967c9734e
6
+ metadata.gz: 39bb7dcce2bc5112dac714a41ad2649267b37be1a5fb3a1c2baf01dcdc61ed919cff7f89422663b9c74e761f3a13e957e1dffd4af8460fbd967ffdc8e9897620
7
+ data.tar.gz: '05931d4a566eb0e560da95d690804b87d51d0a34ce5677e370a775292100077caf1a7bda7237f52fb7dc337e2985d3dbbfffa9f27937ca6faab67d4df087b54d'
@@ -75,15 +75,15 @@ module Solis
75
75
  contains = value[:value].map { |m| m.is_a?(String) ? "CONTAINS(LCASE(str(?__search#{i})), LCASE(\"#{m}\"))" : next }.join(' || ')
76
76
  end
77
77
 
78
+ # Ensure value[:value] is always an array for consistent handling below
79
+ value[:value] = [value[:value]] unless value[:value].is_a?(Array)
80
+ value[:value].flatten!
81
+
78
82
  metadata = @metadata[:attributes][key.to_s]
79
83
  if metadata
80
84
  if metadata[:path] =~ %r{/id$}
81
- if value[:value].is_a?(String)
82
- contains = value[:value].split(',').map { |m| "\"#{m}\"" }.join(',')
83
- else
84
- value[:value].flatten!
85
- contains = value[:value].map { |m| "\"#{m}\"" }.join(',')
86
- end
85
+ # value[:value] is guaranteed to be an array at this point
86
+ contains = value[:value].map { |m| "\"#{m}\"" }.join(',')
87
87
  if value[:is_not]
88
88
  value[:value].each do |v|
89
89
  v=normalize_string(v)
@@ -94,9 +94,22 @@ module Solis
94
94
  end
95
95
  else
96
96
  datatype = ''
97
- datatype = "^^<http://www.w3.org/2001/XMLSchema#boolean>" if metadata[:datatype].eql?(:boolean)
97
+ case metadata[:datatype]
98
+ when :boolean
99
+ datatype = "^^<http://www.w3.org/2001/XMLSchema#boolean>"
100
+ when :integer
101
+ datatype = "^^<http://www.w3.org/2001/XMLSchema#integer>"
102
+ when :float, :double
103
+ datatype = "^^<http://www.w3.org/2001/XMLSchema#double>"
104
+ when :date
105
+ datatype = "^^<http://www.w3.org/2001/XMLSchema#date>"
106
+ when :datetime, :time
107
+ datatype = "^^<http://www.w3.org/2001/XMLSchema#dateTime>"
108
+ when :anyuri
109
+ datatype = "^^<http://www.w3.org/2001/XMLSchema#anyURI>"
110
+ end
98
111
 
99
- if ["=", "<", ">"].include?(value[:operator])
112
+ if ["=", "<", ">", ">=", "<="].include?(value[:operator])
100
113
  not_operator = value[:is_not] ? '!' : ''
101
114
  value[:value].each do |v|
102
115
  if metadata[:datatype_rdf].eql?('http://www.w3.org/1999/02/22-rdf-syntax-ns#langString')
@@ -110,6 +123,16 @@ module Solis
110
123
 
111
124
  search_for = normalize_string(search_for)
112
125
  filter += "FILTER(str(?__search#{i}) #{not_operator}#{value[:operator]} \"#{search_for}\"#{datatype}) .\n"
126
+ elsif (metadata[:datatype_rdf].eql?('http://www.w3.org/2001/XMLSchema#anyURI') || !metadata[:node].nil?) && ["=", "!="].include?(value[:operator])
127
+ # Special handling for anyURI references to other entities (only for equality/inequality)
128
+ model_graph_name = Solis::Options.instance.get.key?(:graphs) ? Solis::Options.instance.get[:graphs].select{|s| s['type'].eql?(:main)}&.first['name'] : @model.class.graph_name
129
+ if value[:is_not]
130
+ #filter = "filter( !exists {?concept <#{metadata[:path]}> ?__search#{i} . ?__search#{i} <#{model_graph_name}id> \"#{v}\"})"
131
+ filter = "filter( !exists {?concept <#{metadata[:path]}> <#{v}>})"
132
+ else
133
+ #filter = "?concept <#{metadata[:path]}> ?__search#{i} . ?__search#{i} <#{model_graph_name}id> ?__search#{i}_#{i} filter(?__search#{i}_#{i} = \"#{v}\")."
134
+ filter = "?concept <#{metadata[:path]}> <#{v}>."
135
+ end
113
136
  else
114
137
  v=normalize_string(v)
115
138
  filter = "?concept <#{metadata[:path]}> ?__search#{i} FILTER(?__search#{i} #{not_operator}#{value[:operator]} \"#{v}\"#{datatype}) .\n"
@@ -42,11 +42,12 @@ module Solis
42
42
  integer: [:eq, :not_eq, :gt, :lt],
43
43
  float: [:eq, :not_eq, :gt, :lt],
44
44
  big_decimal: [:eq, :not_eq, :gt, :lt],
45
- date: [:eq, :not_eq, :gt, :lt],
45
+ date: [:eq, :not_eq, :gt, :gte, :lt, :lte],
46
46
  boolean: [:eq, :not_eq],
47
47
  uuid: [:eq, :not_eq],
48
48
  enum: [:eq],
49
49
  datetime: [:eq, :not_eq, :gt, :lt],
50
+ anyuri: [:eq, :not_eq],
50
51
  }
51
52
  end
52
53
 
@@ -67,6 +68,7 @@ module Solis
67
68
  alias :filter_enum_eq :filter
68
69
  alias :filter_datetime_eq :filter
69
70
  alias :filter_lang_string_eq :filter
71
+ alias :filter_anyuri_eq :filter
70
72
 
71
73
  def filter_not_eq(scope, attribute, value)
72
74
  filter_eq(scope, attribute, value, true, '=')
@@ -82,6 +84,7 @@ module Solis
82
84
  alias :filter_enum_not_eq :filter_not_eq
83
85
  alias :filter_datetime_not_eq :filter_not_eq
84
86
  alias :filter_lang_string_not_eq :filter_not_eq
87
+ alias :filter_anyuri_not_eq :filter_not_eq
85
88
 
86
89
  def filter_contains(scope, attribute, value)
87
90
  filter_eq(scope, attribute, value, false, '~')
@@ -146,6 +149,30 @@ module Solis
146
149
  alias :filter_enum_not_lt :filter_not_lt
147
150
  alias :filter_datetime_not_lt :filter_not_lt
148
151
 
152
+ def filter_gte(scope, attribute, value)
153
+ filter_eq(scope, attribute, value, false, '>=')
154
+ end
155
+
156
+ alias :filter_date_gte :filter_gte
157
+
158
+ def filter_not_gte(scope, attribute, value)
159
+ filter_eq(scope, attribute, value, true, '>=')
160
+ end
161
+
162
+ alias :filter_date_not_gte :filter_not_gte
163
+
164
+ def filter_lte(scope, attribute, value)
165
+ filter_eq(scope, attribute, value, false, '<=')
166
+ end
167
+
168
+ alias :filter_date_lte :filter_lte
169
+
170
+ def filter_not_lte(scope, attribute, value)
171
+ filter_eq(scope, attribute, value, true, '<=')
172
+ end
173
+
174
+ alias :filter_date_not_lte :filter_not_lte
175
+
149
176
  def transaction(*)
150
177
  yield
151
178
  end
data/lib/solis/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Solis
2
- VERSION = "0.105.0"
2
+ VERSION = "0.107.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.105.0
4
+ version: 0.107.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mehmet Celik