solis 0.79.0 → 0.81.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: b93ab141e39d3ac2e2b5e9c91ea60bca52b7863a0b252afe6c11ceeb5f2f5103
4
- data.tar.gz: ef5b2a706937c93f9895b256934dba018be72c3a5f99c9e40c8a88356abdf89d
3
+ metadata.gz: 5bd00b98413e1643fab9d1d14be119aa13be1cc30c140bb5a303ba946ce77938
4
+ data.tar.gz: e8a6a3c31cdad735a5fe1fc74aae0e5bd0315298cbc109f4b49424fa9a48a311
5
5
  SHA512:
6
- metadata.gz: 6fa1cdffd890e05442097c2b73d544e537c24c96471397d66329ea16dbbaa28d31e1214b4924d623ff13d9ca1dbfabe9ad667e75fb2327f1e66b1b1e11219d59
7
- data.tar.gz: bd37692ded7109bb0bd8775f877be9ed6b8e5322cb77491612989404a6976008e970a4e645f24679e7f7d387d54aff8d2dbad7369e4d6137344c59cdacec31b5
6
+ metadata.gz: b4dd50f0792125505fd1d29567315885fc625c8c042cfe6de2e9a54584851e3bf04aced1297018126faa9234e2e44cd4e016b61f8121d57d00f52e07d60baaca
7
+ data.tar.gz: 7b5eac096038ce5f7e384fcbc02523a6bdb3960031150746613117ece277d3de64784022353c96ec4b75494a8286a5cb475ef8aeb577c01d14073306ae7ac788
data/lib/solis/model.rb CHANGED
@@ -210,7 +210,13 @@ values ?s {<#{self.graph_id}>}
210
210
  embedded_data = properties_to_hash(embedded)
211
211
  embedded.update(embedded_data, validate_dependencies, false)
212
212
  else
213
- value = embedded.save(validate_dependencies, false)
213
+ embedded_value = embedded.save(validate_dependencies, false)
214
+ value = updated_klass.instance_variable_get("@#{key}").deep_dup
215
+ if value.is_a?(Array)
216
+ value << embedded_value
217
+ else
218
+ value = embedded_value
219
+ end
214
220
  end
215
221
  else
216
222
  Solis::LOGGER.info("#{embedded.class.name} is embedded not allowed to change. Skipping")
@@ -2,7 +2,7 @@ require 'solis/store/sparql/client'
2
2
  require 'solis/config_file'
3
3
 
4
4
  class Solis::Query::Runner
5
- def self.run(entity, query)
5
+ def self.run(entity, query, options = {})
6
6
  result = {}
7
7
  context = JSON.parse %(
8
8
  {
@@ -16,7 +16,7 @@ class Solis::Query::Runner
16
16
  )
17
17
 
18
18
  c = Solis::Store::Sparql::Client.new(Solis::Options.instance.get[:sparql_endpoint], Solis::Options.instance.get[:graph_name])
19
- r = c.query(query)
19
+ r = c.query(query, options)
20
20
  if r.is_a?(SPARQL::Client)
21
21
  g = RDF::Graph.new
22
22
  t = r.query('select * where{?s ?p ?o}')
@@ -47,11 +47,15 @@ class Solis::Query::Runner
47
47
  def self.sanitize_result(framed)
48
48
  data = framed&.key?('@graph') ? framed['@graph'] : [framed]
49
49
 
50
+ sanitatize_data_in_result(data)
51
+ end
52
+
53
+ def self.sanitatize_data_in_result(data)
50
54
  data.map do |d|
51
55
  d.delete_if { |e| e =~ /^@/ }
52
56
  if d.is_a?(Hash)
53
57
  new_d = {}
54
- d.each do |k,v|
58
+ d.each do |k, v|
55
59
  if v.is_a?(Hash)
56
60
  if v.key?('@type')
57
61
  type = v['@type']
@@ -71,7 +75,11 @@ class Solis::Query::Runner
71
75
  end
72
76
  v = sanitize_result(v) if v.is_a?(Hash)
73
77
  end
74
- new_d[k] = v.class.method_defined?(:value) ? v.value : v
78
+ if v.is_a?(Hash)
79
+ new_d[k] = v.class.method_defined?(:value) ? v.value : sanitize_result(v)
80
+ else
81
+ new_d[k] = v.class.method_defined?(:value) ? v.value : v
82
+ end
75
83
  elsif v.is_a?(Array) #todo: make recursive
76
84
  new_d[k] = []
77
85
  v.each do |vt|
@@ -95,5 +103,8 @@ class Solis::Query::Runner
95
103
 
96
104
  d
97
105
  end
106
+ rescue StandardError => e
107
+ Solis::LOGGER.error(e.message)
108
+ data
98
109
  end
99
110
  end
@@ -43,6 +43,12 @@ module Solis
43
43
  raise "_REFERENCES tab must have ['sheeturl', 'description', 'entityrange'] as a header at row 1" unless (%w[sheeturl description entityrange] - references.header).length == 0
44
44
  end
45
45
 
46
+ sheets.each do |sheet_name, sheet|
47
+ if sheet_name !~ /^_/
48
+ entities = sheets[sheet_name]
49
+ raise "#{sheet_name} tab must have ['Name', 'Description', 'MIN', 'MAX', 'sameAs', 'datatype'] as a header at row 1" unless (%w[name description min max sameas datatype] - entities.header).length == 0
50
+ end
51
+ end
46
52
  end
47
53
 
48
54
  def read_sheets(key, spreadsheet_id, options)
@@ -7,8 +7,8 @@ module Solis
7
7
  @client = client
8
8
  end
9
9
 
10
- def run(query)
11
- result = @client.query(query)
10
+ def run(query, options = {})
11
+ result = @client.query(query, options)
12
12
 
13
13
  if is_construct?(query)
14
14
  repository = RDF::Repository.new
@@ -27,11 +27,11 @@ module Solis
27
27
  return false
28
28
  end
29
29
 
30
- def query(query)
30
+ def query(query, options = {})
31
31
  raise Solis::Error::NotFoundError, "Server or graph(#{@graph_name} not found" unless up?
32
32
  result = nil
33
33
  @pool.with do |c|
34
- result = Query.new(c).run(query)
34
+ result = Query.new(c).run(query, options)
35
35
  end
36
36
  result
37
37
  end
data/lib/solis/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Solis
2
- VERSION = "0.79.0"
2
+ VERSION = "0.81.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solis
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.79.0
4
+ version: 0.81.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mehmet Celik
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-02-09 00:00:00.000000000 Z
11
+ date: 2025-02-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport