spread2rdf 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ ZDIwZWJiNjVmMWYzNzJjMjQxOGE3NzE1OTE2MmUyMWVhZjNkZWU2Ng==
5
+ data.tar.gz: !binary |-
6
+ NDE3Nzg4OTJhZGZiN2QxNmI2NGE2OTk3NTIwN2M5YjZiMDYzYzYyNw==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ M2JlYzY1YmI5ZjgwMGMyNzc5MDc4MjU1OTFhMDU5Y2M4ZDU4Mzc5ODk0MTAy
10
+ OGRhNDNjMTE3NDBkMzU1YzA1OGM5NzM3OTNkOWM4YWNmNzNkODQxYzMxOTNh
11
+ NWYxNGZlZTMxYThhY2E1OTM2ZDFkNTc2YTRiMTA4ZDgyZDMzN2I=
12
+ data.tar.gz: !binary |-
13
+ Yjg0ZmIyODcwNzMyM2MzMmNmZTM0Y2E4YTNiZWZkYjQ5ZjBjZWU1ODhkN2Jm
14
+ NmI2MmExNGQ0NDk3MmNiNDVhZTk5Y2I5NWZhOTVlYTIyMGE3NzBjZjI0MTE5
15
+ ODU2NjgwYjM5NjkzYjQ5YTA3MzAwMzI3ODYxZjM4ZTQxYmU2MWI=
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.2
1
+ 0.1.3
@@ -35,15 +35,24 @@ module Spread2RDF
35
35
 
36
36
  def map_to_object(value)
37
37
  case schema.object_mapping_mode
38
- when :to_string then value
38
+ when :to_string then map_to_literal(value)
39
39
  when :resource_ref then resolve_resource_ref
40
40
  when :new_resource then create_resource_object
41
- when :custom then exec(&schema.cell_mapping)
41
+ when :custom then exec(&schema.cell_mapping)
42
42
  else raise 'internal error: unknown column mapping type'
43
43
  end
44
44
  end
45
45
  private :map_to_object
46
46
 
47
+ def map_to_literal(value)
48
+ if language = schema.try(:object).try(:fetch, :language, nil)
49
+ RDF::Literal.new(value, language: language.to_sym)
50
+ else
51
+ value
52
+ end
53
+ end
54
+ private :map_to_literal
55
+
47
56
  def resolve_resource_ref
48
57
  source = schema.object[:from]
49
58
  if source[:worksheet] && result = resolve_resource_ref_from_worksheet(source[:worksheet])
@@ -56,14 +65,11 @@ module Spread2RDF
56
65
  end
57
66
  private :resolve_resource_ref
58
67
 
59
- def resolve_resource_ref_from_worksheet(worksheet)
60
- worksheet = spreadsheet.worksheet(worksheet)
61
- raise "#{self}: couldn't find source worksheet #{source[:worksheet]}" if worksheet.nil?
68
+ def resolve_resource_ref_from_worksheet(worksheet_name)
69
+ worksheet = spreadsheet.worksheet(worksheet_name)
70
+ raise "#{self}: couldn't find source worksheet #{worksheet_name}" if worksheet.nil?
62
71
  source_predicate = RDF::RDFS.label # TODO: make this configurable via a attribute in the schema definition
63
- result = worksheet.graph.query([nil, source_predicate, value])
64
- return nil if result.empty?
65
- raise "#{self}: found multiple resources for #{value} in #{worksheet}: #{result.map(&:subject)}" if result.count > 1
66
- result.first.subject
72
+ query_subject(worksheet.graph, source_predicate, value, worksheet)
67
73
  end
68
74
  private :resolve_resource_ref_from_worksheet
69
75
 
@@ -79,12 +85,17 @@ module Spread2RDF
79
85
 
80
86
  def resolve_resource_ref_from_data_source(data_source)
81
87
  source_predicate = RDF::RDFS.label # TODO: make this configurable via a attribute in the schema definition
82
- result = data_source.query([nil, source_predicate, value])
88
+ query_subject(data_source, source_predicate, value)
89
+ end
90
+ private :resolve_resource_ref_from_data_source
91
+
92
+ def query_subject(data_source, predicate, value, data_source_name = nil)
93
+ data_source_name ||= "data source #{data_source}"
94
+ result = data_source.query([nil, predicate, map_to_literal(value)])
83
95
  return nil if result.empty?
84
- raise "#{self}: found multiple resources for #{value} in data sources: #{result.map(&:subject)}" if result.count > 1
96
+ raise "#{self}: found multiple resources for #{value} in #{data_source_name}: #{result.map(&:subject)}" if result.count > 1
85
97
  result.first.subject
86
98
  end
87
- private :resolve_resource_ref_from_data_source
88
99
 
89
100
  def create_resource_object
90
101
  case
@@ -53,10 +53,11 @@ module Spread2RDF
53
53
 
54
54
  def object_mapping_mode
55
55
  case
56
- when object.nil? then :to_string
57
- when object.is_a?(Proc) then :custom
58
- when !object[:uri].nil? then :new_resource
59
- when !object[:from].nil? then :resource_ref
56
+ when object.nil? then :to_string
57
+ when object.is_a?(Proc) then :custom
58
+ when !object[:uri].nil? then :new_resource
59
+ when !object[:from].nil? then :resource_ref
60
+ when !object[:language].nil? then :to_string
60
61
  else
61
62
  raise "mapping specification error: don't know how to map #{self}"
62
63
  end
@@ -5,7 +5,7 @@ module Spread2RDF
5
5
  self.attributes = {
6
6
  start: :A2,
7
7
  subject: nil,
8
- row_count_per_resource: nil
8
+ row_count_per_resource: nil # TODO: document this in the README
9
9
  }
10
10
 
11
11
  def initialize(parent, attr = {}, &block)
@@ -53,7 +53,10 @@ module Spread2RDF
53
53
  end
54
54
 
55
55
  def subject_column
56
- column_name = self.subject.try(:fetch, :column, nil) || :uri
56
+ column_name =
57
+ ((subject = self.subject) &&
58
+ ( ( subject[:uri].is_a?(Hash) && subject[:uri][:column] ) ||
59
+ subject[:column])) || :uri
57
60
  @column[column_name]
58
61
  end
59
62
 
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spread2rdf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
5
- prerelease:
4
+ version: 0.1.3
6
5
  platform: ruby
7
6
  authors:
8
7
  - Marcel Otto
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2014-01-08 00:00:00.000000000 Z
11
+ date: 2014-01-11 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: activesupport
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ~>
28
25
  - !ruby/object:Gem::Version
@@ -30,7 +27,6 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: awesome_print
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - ~>
36
32
  - !ruby/object:Gem::Version
@@ -38,7 +34,6 @@ dependencies:
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
38
  - - ~>
44
39
  - !ruby/object:Gem::Version
@@ -46,7 +41,6 @@ dependencies:
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: roo
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
45
  - - ~>
52
46
  - !ruby/object:Gem::Version
@@ -54,7 +48,6 @@ dependencies:
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
52
  - - ~>
60
53
  - !ruby/object:Gem::Version
@@ -62,7 +55,6 @@ dependencies:
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: rubyzip
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
59
  - - ~>
68
60
  - !ruby/object:Gem::Version
@@ -70,7 +62,6 @@ dependencies:
70
62
  type: :runtime
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
66
  - - ~>
76
67
  - !ruby/object:Gem::Version
@@ -78,7 +69,6 @@ dependencies:
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: linkeddata
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
73
  - - ~>
84
74
  - !ruby/object:Gem::Version
@@ -86,7 +76,6 @@ dependencies:
86
76
  type: :runtime
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
80
  - - ~>
92
81
  - !ruby/object:Gem::Version
@@ -94,7 +83,6 @@ dependencies:
94
83
  - !ruby/object:Gem::Dependency
95
84
  name: equivalent-xml
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
87
  - - ~>
100
88
  - !ruby/object:Gem::Version
@@ -102,7 +90,6 @@ dependencies:
102
90
  type: :runtime
103
91
  prerelease: false
104
92
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
93
  requirements:
107
94
  - - ~>
108
95
  - !ruby/object:Gem::Version
@@ -110,7 +97,6 @@ dependencies:
110
97
  - !ruby/object:Gem::Dependency
111
98
  name: ocra
112
99
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
100
  requirements:
115
101
  - - ~>
116
102
  - !ruby/object:Gem::Version
@@ -118,7 +104,6 @@ dependencies:
118
104
  type: :runtime
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
107
  requirements:
123
108
  - - ~>
124
109
  - !ruby/object:Gem::Version
@@ -126,7 +111,6 @@ dependencies:
126
111
  - !ruby/object:Gem::Dependency
127
112
  name: bundler
128
113
  requirement: !ruby/object:Gem::Requirement
129
- none: false
130
114
  requirements:
131
115
  - - ! '>='
132
116
  - !ruby/object:Gem::Version
@@ -134,7 +118,6 @@ dependencies:
134
118
  type: :runtime
135
119
  prerelease: false
136
120
  version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
121
  requirements:
139
122
  - - ! '>='
140
123
  - !ruby/object:Gem::Version
@@ -142,7 +125,6 @@ dependencies:
142
125
  - !ruby/object:Gem::Dependency
143
126
  name: rake
144
127
  requirement: !ruby/object:Gem::Requirement
145
- none: false
146
128
  requirements:
147
129
  - - ! '>='
148
130
  - !ruby/object:Gem::Version
@@ -150,7 +132,6 @@ dependencies:
150
132
  type: :development
151
133
  prerelease: false
152
134
  version_requirements: !ruby/object:Gem::Requirement
153
- none: false
154
135
  requirements:
155
136
  - - ! '>='
156
137
  - !ruby/object:Gem::Version
@@ -158,7 +139,6 @@ dependencies:
158
139
  - !ruby/object:Gem::Dependency
159
140
  name: pry
160
141
  requirement: !ruby/object:Gem::Requirement
161
- none: false
162
142
  requirements:
163
143
  - - ~>
164
144
  - !ruby/object:Gem::Version
@@ -166,7 +146,6 @@ dependencies:
166
146
  type: :development
167
147
  prerelease: false
168
148
  version_requirements: !ruby/object:Gem::Requirement
169
- none: false
170
149
  requirements:
171
150
  - - ~>
172
151
  - !ruby/object:Gem::Version
@@ -174,7 +153,6 @@ dependencies:
174
153
  - !ruby/object:Gem::Dependency
175
154
  name: pry-nav
176
155
  requirement: !ruby/object:Gem::Requirement
177
- none: false
178
156
  requirements:
179
157
  - - ~>
180
158
  - !ruby/object:Gem::Version
@@ -182,7 +160,6 @@ dependencies:
182
160
  type: :development
183
161
  prerelease: false
184
162
  version_requirements: !ruby/object:Gem::Requirement
185
- none: false
186
163
  requirements:
187
164
  - - ~>
188
165
  - !ruby/object:Gem::Version
@@ -238,27 +215,26 @@ files:
238
215
  homepage: http://github.com/marcelotto/spread2rdf
239
216
  licenses:
240
217
  - MIT
218
+ metadata: {}
241
219
  post_install_message:
242
220
  rdoc_options: []
243
221
  require_paths:
244
222
  - lib
245
223
  required_ruby_version: !ruby/object:Gem::Requirement
246
- none: false
247
224
  requirements:
248
225
  - - ! '>='
249
226
  - !ruby/object:Gem::Version
250
227
  version: 1.9.3
251
228
  required_rubygems_version: !ruby/object:Gem::Requirement
252
- none: false
253
229
  requirements:
254
230
  - - ! '>='
255
231
  - !ruby/object:Gem::Version
256
232
  version: '0'
257
233
  requirements: []
258
234
  rubyforge_project:
259
- rubygems_version: 1.8.24
235
+ rubygems_version: 2.1.9
260
236
  signing_key:
261
- specification_version: 3
237
+ specification_version: 4
262
238
  summary: a DSL-based converter for spreadsheets to RDF
263
239
  test_files: []
264
240
  has_rdoc: