spread2rdf 0.1.3 → 0.1.4

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,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZDIwZWJiNjVmMWYzNzJjMjQxOGE3NzE1OTE2MmUyMWVhZjNkZWU2Ng==
4
+ NGJiMTM4NmY0YzNmY2IwZDkyMWFmZTRjMDY2MDk5ZmE1NWEyMTdjOQ==
5
5
  data.tar.gz: !binary |-
6
- NDE3Nzg4OTJhZGZiN2QxNmI2NGE2OTk3NTIwN2M5YjZiMDYzYzYyNw==
6
+ MGJkOWUyOTI2MTA4YjgwOTdlNDZmOTY4MDZhOTcxMjA0ZWI3MmEwMg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- M2JlYzY1YmI5ZjgwMGMyNzc5MDc4MjU1OTFhMDU5Y2M4ZDU4Mzc5ODk0MTAy
10
- OGRhNDNjMTE3NDBkMzU1YzA1OGM5NzM3OTNkOWM4YWNmNzNkODQxYzMxOTNh
11
- NWYxNGZlZTMxYThhY2E1OTM2ZDFkNTc2YTRiMTA4ZDgyZDMzN2I=
9
+ MzE5Y2M3ZGZhMjc2NzFhYTg4Yzk1ZGFmMDExNTQ4YmYzNzQyOWIyZGNhNzgy
10
+ MDA5NzZmNDI5MGNmMDE4OTVjOWI0ODc5NWEzNGY4OTY3MDI3YTkyYjk5NGNm
11
+ NzBkOTYzYTUyYWUzOTU1NzJhNTQ0NDg1ODhkMzBkMTAzNGViN2U=
12
12
  data.tar.gz: !binary |-
13
- Yjg0ZmIyODcwNzMyM2MzMmNmZTM0Y2E4YTNiZWZkYjQ5ZjBjZWU1ODhkN2Jm
14
- NmI2MmExNGQ0NDk3MmNiNDVhZTk5Y2I5NWZhOTVlYTIyMGE3NzBjZjI0MTE5
15
- ODU2NjgwYjM5NjkzYjQ5YTA3MzAwMzI3ODYxZjM4ZTQxYmU2MWI=
13
+ YzY0ZWQ0MjBmNGViZDQzYTAwYzM2ZDc0MDY0YzBkNmU1ZGQ4MDBlODg1MGMy
14
+ YWU0MmRhY2UwNWI5YzMwNDU2Zjc1ZGVlZjg2ZjM5NjM3MmQwYTU1ZjZjOWVk
15
+ ZTdiYzg5ZmRkOWUzN2JhNjFlMzQ5MGE4MTQwNzhiNWRmM2E1ODg=
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.3
1
+ 0.1.4
@@ -1,6 +1,7 @@
1
1
  module Spread2RDF
2
2
  module Mapping
3
3
  class Cell < Element
4
+ include ResourceCreation
4
5
 
5
6
  attr_reader :row
6
7
 
@@ -24,6 +25,7 @@ module Spread2RDF
24
25
  def value
25
26
  @value ||= worksheet.cell_value(coord)
26
27
  end
28
+ alias resource_creation_value value
27
29
 
28
30
  def object
29
31
  @object ||= value && map_to_object(value)
@@ -37,9 +39,9 @@ module Spread2RDF
37
39
  case schema.object_mapping_mode
38
40
  when :to_string then map_to_literal(value)
39
41
  when :resource_ref then resolve_resource_ref
40
- when :new_resource then create_resource_object
42
+ when :new_resource then create_resource
41
43
  when :custom then exec(&schema.cell_mapping)
42
- else raise 'internal error: unknown column mapping type'
44
+ else raise 'internal error: unknown column mapping mode'
43
45
  end
44
46
  end
45
47
  private :map_to_object
@@ -97,16 +99,6 @@ module Spread2RDF
97
99
  result.first.subject
98
100
  end
99
101
 
100
- def create_resource_object
101
- case
102
- when (schema.object.try(:fetch, :uri, nil) || object) == :bnode
103
- RDF::Node.new
104
- else
105
- raise NotImplementedError
106
- end
107
- end
108
- private :create_resource_object
109
-
110
102
  ##########################################################################
111
103
  # for the DSL for column statement blocks
112
104
 
@@ -16,8 +16,10 @@ module Spread2RDF
16
16
 
17
17
  def self.uri_normalization(string)
18
18
  string
19
+ .gsub(' - ', '-')
20
+ .gsub('- ', '-')
19
21
  .gsub(', ', '-')
20
- .gsub(' ', '-')
22
+ .gsub(' ', '_')
21
23
  end
22
24
 
23
25
  end
@@ -24,29 +24,11 @@ module Spread2RDF
24
24
  ##########################################################################
25
25
  # subject mapping
26
26
 
27
- def subject
28
- @subject ||=
29
- case schema.subject_mapping_mode
30
- when :bnode then RDF::Node.new
31
- when :from_column_with_suffix then subject_resource_from_column_with_suffix
32
- when :from_column then subject_resource_from_column
33
- else raise 'unknown subject mapping type'
34
- end
35
- end
36
- alias subject_resource subject
27
+ include ResourceCreation
37
28
 
38
- def subject_resource_from_column
39
- RDF::URI.new(subject_value, validate: true)
40
- end
41
- private :subject_resource_from_column
42
-
43
- def subject_resource_from_column_with_suffix
44
- namespace = schema.subject_namespace
45
- subject_suffix = Mapping::Cell::Default.uri_normalization(subject_value)
46
- #puts "subject resource for #{sheet} in #{range}: " + RDF::URI.new("#{namespace}#{subject_suffix}" )
47
- RDF::URI.new("#{namespace}#{subject_suffix}")
29
+ def subject
30
+ @subject ||= create_resource
48
31
  end
49
- private :subject_resource_from_column_with_suffix
50
32
 
51
33
  def subject_value
52
34
  cells = row_range.map do |row|
@@ -56,6 +38,7 @@ module Spread2RDF
56
38
  raise "multiple subjects found for Resource in #{row_range} of #{sheet}: #{cells.inspect}" if cells.count > 1
57
39
  cells.first
58
40
  end
41
+ alias resource_creation_value subject_value
59
42
  private :subject_value
60
43
 
61
44
  def subject_description
@@ -0,0 +1,29 @@
1
+ module Spread2RDF
2
+ module Mapping
3
+ module ResourceCreation
4
+
5
+ def create_resource
6
+ case schema.resource_creation_mode
7
+ when :bnode then RDF::Node.new
8
+ when :from_column_with_suffix then resource_from_suffix
9
+ when :from_column then resource_from_full_uri
10
+ else raise 'unknown resource creation mode'
11
+ end
12
+ end
13
+
14
+ def resource_from_full_uri
15
+ RDF::URI.new(resource_creation_value, validate: true)
16
+ end
17
+ private :resource_from_full_uri
18
+
19
+ def resource_from_suffix
20
+ namespace = schema.resource_creation_namespace
21
+ suffix = Mapping::Cell::Default.uri_normalization(resource_creation_value)
22
+ #puts "creating resource " + RDF::URI.new("#{namespace}#{suffix}" )
23
+ RDF::URI.new("#{namespace}#{suffix}")
24
+ end
25
+ private :resource_from_suffix
26
+
27
+ end
28
+ end
29
+ end
@@ -5,8 +5,13 @@ module Spread2RDF
5
5
  def statements_to_object(object)
6
6
  case schema.statement_mapping_mode
7
7
  when :default
8
- statement(subject, predicate, object)
8
+ if schema.inverse_mode
9
+ statement(object, predicate, subject)
10
+ else
11
+ statement(subject, predicate, object)
12
+ end
9
13
  when :restriction
14
+ raise NotImplementedError if schema.inverse_mode
10
15
  restriction_class = RDF::Node.new
11
16
  statements(
12
17
  [ subject, RDF::RDFS.subClassOf, restriction_class ],
@@ -2,6 +2,7 @@ module Spread2RDF
2
2
  module Schema
3
3
  class Column < Element
4
4
  include StatementMapping
5
+ include ResourceCreation
5
6
 
6
7
  self.attributes = {
7
8
  predicate: nil,
@@ -31,7 +32,7 @@ module Spread2RDF
31
32
  end
32
33
 
33
34
  def self.resolve_data_sources(data_sources)
34
- return [data_sources] unless data_sources.is_a? Array
35
+ data_sources = [data_sources] unless data_sources.is_a? Array
35
36
  data_sources.map do |data_source|
36
37
  case
37
38
  when (uri = data_source).is_a?(RDF::URI) || (uri = RDF::URI.new(data_source)).valid?
@@ -63,6 +64,10 @@ module Spread2RDF
63
64
  end
64
65
  end
65
66
 
67
+ def resource_creation_attributes
68
+ object
69
+ end
70
+
66
71
  def cell_mapping
67
72
  object if object.is_a?(Proc)
68
73
  end
@@ -0,0 +1,27 @@
1
+ module Spread2RDF
2
+ module Schema
3
+ module ResourceCreation
4
+
5
+ def resource_creation_mode
6
+ attr = self.resource_creation_attributes
7
+ case
8
+ when ( attr.try(:fetch, :uri, nil) || attr ) == :bnode
9
+ :bnode
10
+ when !( attr.try(:fetch, :uri, nil).try(:fetch, :namespace, nil) ).nil?
11
+ :from_column_with_suffix
12
+ else
13
+ :from_column
14
+ end
15
+ end
16
+
17
+ def resource_creation_namespace
18
+ namespace_name =
19
+ self.resource_creation_attributes.try(:fetch, :uri, nil).try(:fetch, :namespace, nil)
20
+ return warn("No namespace for resource creation found") if namespace_name.nil?
21
+ Namespace.resolve_to_namespace(namespace_name)
22
+ end
23
+
24
+ end
25
+ end
26
+ end
27
+
@@ -1,6 +1,7 @@
1
1
  module Spread2RDF
2
2
  module Schema
3
3
  class Sheet < Element
4
+ include ResourceCreation
4
5
 
5
6
  self.attributes = {
6
7
  start: :A2,
@@ -14,6 +15,10 @@ module Spread2RDF
14
15
  @column_index = {}
15
16
  end
16
17
 
18
+ def resource_creation_attributes
19
+ subject
20
+ end
21
+
17
22
  def start_coord
18
23
  Coord[start]
19
24
  end
@@ -64,23 +69,6 @@ module Spread2RDF
64
69
  row_count_per_resource or ( !subject_column && 1 ) or nil
65
70
  end
66
71
 
67
- def subject_mapping_mode
68
- case
69
- when ( subject.try(:fetch, :uri, nil) || subject ) == :bnode
70
- :bnode
71
- when !( subject.try(:fetch, :uri, nil).try(:fetch, :namespace, nil) ).nil?
72
- :from_column_with_suffix
73
- else
74
- :from_column
75
- end
76
- end
77
-
78
- def subject_namespace
79
- subject_namespace_name =
80
- subject.try(:fetch, :uri, nil).try(:fetch, :namespace, nil)
81
- Namespace.resolve_to_namespace(subject_namespace_name)
82
- end
83
-
84
72
  def subject_resource_type
85
73
  subject.try(:fetch, :type, nil) or
86
74
  (subject.try(:fetch, :sub_class_of, nil) && RDF::RDFS.Class) or
@@ -4,7 +4,6 @@ module Spread2RDF
4
4
 
5
5
  def statement_mapping_mode
6
6
  case
7
- when statement == :none then :ignore
8
7
  when statement == :none then :ignore
9
8
  when predicate.nil? then :ignore
10
9
  when restriction_mode then :restriction
@@ -15,11 +14,15 @@ module Spread2RDF
15
14
  def restriction_mode
16
15
  case statement
17
16
  when :restriction then RDF::OWL.hasValue
18
- when Hash then restriction_mode[:restriction]
17
+ when Hash then statement[:restriction]
19
18
  else false
20
19
  end
21
20
  end
22
21
 
22
+ def inverse_mode
23
+ statement == :inverse ||
24
+ ( statement.is_a?(Hash) && statement.try(:fetch, :inverse, false) )
25
+ end
23
26
 
24
27
  end
25
28
  end
data/lib/spread2rdf.rb CHANGED
@@ -20,6 +20,7 @@ require 'spread2rdf/extensions/file'
20
20
 
21
21
  require 'spread2rdf/schema/schema'
22
22
  require 'spread2rdf/schema/statement_mapping_schema'
23
+ require 'spread2rdf/schema/resource_creation_schema'
23
24
  require 'spread2rdf/schema/element'
24
25
  require 'spread2rdf/schema/spreadsheet'
25
26
  require 'spread2rdf/schema/sheet'
@@ -30,6 +31,7 @@ require 'spread2rdf/schema/sheet_dsl'
30
31
  require 'spread2rdf/schema/spreadsheet_dsl'
31
32
 
32
33
  require 'spread2rdf/mapping/element'
34
+ require 'spread2rdf/mapping/resource_creation'
33
35
  require 'spread2rdf/mapping/statement'
34
36
  require 'spread2rdf/mapping/sheet'
35
37
  require 'spread2rdf/mapping/spreadsheet'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spread2rdf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marcel Otto
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-11 00:00:00.000000000 Z
11
+ date: 2014-01-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -193,6 +193,7 @@ files:
193
193
  - lib/spread2rdf/mapping/default_cell_mappings.rb
194
194
  - lib/spread2rdf/mapping/element.rb
195
195
  - lib/spread2rdf/mapping/resource.rb
196
+ - lib/spread2rdf/mapping/resource_creation.rb
196
197
  - lib/spread2rdf/mapping/sheet.rb
197
198
  - lib/spread2rdf/mapping/spreadsheet.rb
198
199
  - lib/spread2rdf/mapping/statement.rb
@@ -202,6 +203,7 @@ files:
202
203
  - lib/spread2rdf/schema/column.rb
203
204
  - lib/spread2rdf/schema/column_block.rb
204
205
  - lib/spread2rdf/schema/element.rb
206
+ - lib/spread2rdf/schema/resource_creation_schema.rb
205
207
  - lib/spread2rdf/schema/schema.rb
206
208
  - lib/spread2rdf/schema/sheet.rb
207
209
  - lib/spread2rdf/schema/sheet_dsl.rb