rdf-tabular 0.1.1 → 0.1.2
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 +4 -4
- data/README.md +209 -0
- data/VERSION +1 -1
- data/etc/csvw.jsonld +20 -53
- data/etc/doap.csv-metadata.json +23 -23
- data/lib/rdf/tabular/csvw.rb +121 -80
- data/lib/rdf/tabular/metadata.rb +173 -148
- data/lib/rdf/tabular/reader.rb +149 -99
- data/spec/metadata_spec.rb +110 -113
- data/spec/reader_spec.rb +102 -0
- data/spec/suite_helper.rb +2 -1
- metadata +90 -89
data/spec/reader_spec.rb
CHANGED
@@ -47,6 +47,108 @@ describe RDF::Tabular::Reader do
|
|
47
47
|
readers.each { |reader| expect(reader).to eq RDF::Tabular::Reader }
|
48
48
|
end
|
49
49
|
|
50
|
+
context "HTTP Headers" do
|
51
|
+
before(:each) {
|
52
|
+
allow_any_instance_of(RDF::Tabular::Dialect).to receive(:embedded_metadata).and_return(RDF::Tabular::Table.new({}))
|
53
|
+
allow_any_instance_of(RDF::Tabular::Metadata).to receive(:each_row).and_yield(RDF::Statement.new)
|
54
|
+
}
|
55
|
+
it "sets delimiter to TAB in dialect given text/tsv" do
|
56
|
+
input = double("input", content_type: "text/tsv", headers: {content_type: "text/tsv"}, charset: nil)
|
57
|
+
expect_any_instance_of(RDF::Tabular::Dialect).to receive(:separator=).with("\t")
|
58
|
+
RDF::Tabular::Reader.new(input) {|r| r.each_statement {}}
|
59
|
+
end
|
60
|
+
it "sets header to false in dialect given header=absent" do
|
61
|
+
input = double("input", content_type: "text/csv", headers: {content_type: "text/csv;header=absent"}, charset: nil)
|
62
|
+
expect_any_instance_of(RDF::Tabular::Dialect).to receive(:header=).with(false)
|
63
|
+
RDF::Tabular::Reader.new(input) {|r| r.each_statement {}}
|
64
|
+
end
|
65
|
+
it "sets encoding to ISO-8859-4 in dialect given charset=ISO-8859-4" do
|
66
|
+
input = double("input", content_type: "text/csv", headers: {content_type: "text/csv;charset=ISO-8859-4"}, charset: "ISO-8859-4")
|
67
|
+
expect_any_instance_of(RDF::Tabular::Dialect).to receive(:encoding=).with("ISO-8859-4")
|
68
|
+
RDF::Tabular::Reader.new(input) {|r| r.each_statement {}}
|
69
|
+
end
|
70
|
+
it "sets lang to de in metadata given Content-Language=de" do
|
71
|
+
input = double("input", content_type: "text/csv", headers: {content_language: "de"}, charset: nil)
|
72
|
+
expect_any_instance_of(RDF::Tabular::Metadata).to receive(:lang=).with("de")
|
73
|
+
RDF::Tabular::Reader.new(input) {|r| r.each_statement {}}
|
74
|
+
end
|
75
|
+
it "does not set lang with two languages in metadata given Content-Language=de, en" do
|
76
|
+
input = double("input", content_type: "text/csv", headers: {content_language: "de, en"}, charset: nil)
|
77
|
+
expect_any_instance_of(RDF::Tabular::Metadata).not_to receive(:lang=)
|
78
|
+
RDF::Tabular::Reader.new(input) {|r| r.each_statement {}}
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
context "non-file input" do
|
83
|
+
let(:expected) {
|
84
|
+
JSON.parse(%({
|
85
|
+
"table": [
|
86
|
+
{
|
87
|
+
"url": "http://example.org/default-metadata",
|
88
|
+
"row": [
|
89
|
+
{
|
90
|
+
"url": "http://example.org/default-metadata#row=2",
|
91
|
+
"rownum": 1,
|
92
|
+
"describes": [
|
93
|
+
{
|
94
|
+
"country": "AD",
|
95
|
+
"name": "Andorra"
|
96
|
+
}
|
97
|
+
]
|
98
|
+
},
|
99
|
+
{
|
100
|
+
"url": "http://example.org/default-metadata#row=3",
|
101
|
+
"rownum": 2,
|
102
|
+
"describes": [
|
103
|
+
{
|
104
|
+
"country": "AF",
|
105
|
+
"name": "Afghanistan"
|
106
|
+
}
|
107
|
+
]
|
108
|
+
},
|
109
|
+
{
|
110
|
+
"url": "http://example.org/default-metadata#row=4",
|
111
|
+
"rownum": 3,
|
112
|
+
"describes": [
|
113
|
+
{
|
114
|
+
"country": "AI",
|
115
|
+
"name": "Anguilla"
|
116
|
+
}
|
117
|
+
]
|
118
|
+
},
|
119
|
+
{
|
120
|
+
"url": "http://example.org/default-metadata#row=5",
|
121
|
+
"rownum": 4,
|
122
|
+
"describes": [
|
123
|
+
{
|
124
|
+
"country": "AL",
|
125
|
+
"name": "Albania"
|
126
|
+
}
|
127
|
+
]
|
128
|
+
}
|
129
|
+
]
|
130
|
+
}
|
131
|
+
]
|
132
|
+
}))
|
133
|
+
}
|
134
|
+
{
|
135
|
+
StringIO: StringIO.new(File.read(File.expand_path("../data/country-codes-and-names.csv", __FILE__))),
|
136
|
+
ArrayOfArrayOfString: CSV.new(File.open(File.expand_path("../data/country-codes-and-names.csv", __FILE__))).to_a,
|
137
|
+
String: File.read(File.expand_path("../data/country-codes-and-names.csv", __FILE__)),
|
138
|
+
}.each do |name, input|
|
139
|
+
it name do
|
140
|
+
RDF::Tabular::Reader.new(input, noProv: true, debug: @debug) do |reader|
|
141
|
+
expect(JSON.parse(reader.to_json)).to produce(expected,
|
142
|
+
debug: @debug,
|
143
|
+
result: expected,
|
144
|
+
noProv: true,
|
145
|
+
metadata: reader.metadata
|
146
|
+
)
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
50
152
|
context "Test Files" do
|
51
153
|
test_files = {
|
52
154
|
"tree-ops.csv" => "tree-ops-standard.ttl",
|
data/spec/suite_helper.rb
CHANGED
@@ -45,7 +45,8 @@ module RDF::Util
|
|
45
45
|
}
|
46
46
|
#puts "use #{filename_or_url} locally"
|
47
47
|
document_options[:headers][:content_type] = case filename_or_url.to_s
|
48
|
-
when /\.csv$/
|
48
|
+
when /\.csv$/ then 'text/csv'
|
49
|
+
when /\.tsv$/ then 'text/tsv'
|
49
50
|
when /\.json$/ then 'application/json'
|
50
51
|
when /\.jsonld$/ then 'application/ld+json'
|
51
52
|
else 'unknown'
|
metadata
CHANGED
@@ -1,210 +1,211 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rdf-tabular
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gregg Kellogg
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-04-
|
11
|
+
date: 2015-04-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bcp47
|
15
|
-
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0.3'
|
20
|
-
- -
|
20
|
+
- - ">="
|
21
21
|
- !ruby/object:Gem::Version
|
22
22
|
version: 0.3.3
|
23
|
-
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
26
|
requirements:
|
25
|
-
- - ~>
|
27
|
+
- - "~>"
|
26
28
|
- !ruby/object:Gem::Version
|
27
29
|
version: '0.3'
|
28
|
-
- -
|
30
|
+
- - ">="
|
29
31
|
- !ruby/object:Gem::Version
|
30
32
|
version: 0.3.3
|
31
|
-
prerelease: false
|
32
|
-
type: :runtime
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: rdf
|
35
|
-
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
|
-
- - ~>
|
37
|
+
- - "~>"
|
38
38
|
- !ruby/object:Gem::Version
|
39
39
|
version: '1.1'
|
40
|
-
- -
|
40
|
+
- - ">="
|
41
41
|
- !ruby/object:Gem::Version
|
42
42
|
version: 1.1.7
|
43
|
-
|
43
|
+
type: :runtime
|
44
|
+
prerelease: false
|
45
|
+
version_requirements: !ruby/object:Gem::Requirement
|
44
46
|
requirements:
|
45
|
-
- - ~>
|
47
|
+
- - "~>"
|
46
48
|
- !ruby/object:Gem::Version
|
47
49
|
version: '1.1'
|
48
|
-
- -
|
50
|
+
- - ">="
|
49
51
|
- !ruby/object:Gem::Version
|
50
52
|
version: 1.1.7
|
51
|
-
prerelease: false
|
52
|
-
type: :runtime
|
53
53
|
- !ruby/object:Gem::Dependency
|
54
54
|
name: rdf-xsd
|
55
|
-
version_requirements: !ruby/object:Gem::Requirement
|
56
|
-
requirements:
|
57
|
-
- - ~>
|
58
|
-
- !ruby/object:Gem::Version
|
59
|
-
version: '1.1'
|
60
55
|
requirement: !ruby/object:Gem::Requirement
|
61
56
|
requirements:
|
62
|
-
- - ~>
|
57
|
+
- - "~>"
|
63
58
|
- !ruby/object:Gem::Version
|
64
59
|
version: '1.1'
|
65
|
-
prerelease: false
|
66
60
|
type: :runtime
|
67
|
-
|
68
|
-
name: json-ld
|
61
|
+
prerelease: false
|
69
62
|
version_requirements: !ruby/object:Gem::Requirement
|
70
63
|
requirements:
|
71
|
-
- - ~>
|
64
|
+
- - "~>"
|
72
65
|
- !ruby/object:Gem::Version
|
73
66
|
version: '1.1'
|
67
|
+
- !ruby/object:Gem::Dependency
|
68
|
+
name: json-ld
|
74
69
|
requirement: !ruby/object:Gem::Requirement
|
75
70
|
requirements:
|
76
|
-
- - ~>
|
71
|
+
- - "~>"
|
77
72
|
- !ruby/object:Gem::Version
|
78
73
|
version: '1.1'
|
79
|
-
prerelease: false
|
80
74
|
type: :runtime
|
81
|
-
|
82
|
-
name: addressable
|
75
|
+
prerelease: false
|
83
76
|
version_requirements: !ruby/object:Gem::Requirement
|
84
77
|
requirements:
|
85
|
-
- - ~>
|
78
|
+
- - "~>"
|
86
79
|
- !ruby/object:Gem::Version
|
87
|
-
version: '
|
80
|
+
version: '1.1'
|
81
|
+
- !ruby/object:Gem::Dependency
|
82
|
+
name: addressable
|
88
83
|
requirement: !ruby/object:Gem::Requirement
|
89
84
|
requirements:
|
90
|
-
- - ~>
|
85
|
+
- - "~>"
|
91
86
|
- !ruby/object:Gem::Version
|
92
87
|
version: '2.3'
|
93
|
-
prerelease: false
|
94
88
|
type: :runtime
|
95
|
-
|
96
|
-
name: yard
|
89
|
+
prerelease: false
|
97
90
|
version_requirements: !ruby/object:Gem::Requirement
|
98
91
|
requirements:
|
99
|
-
- - ~>
|
92
|
+
- - "~>"
|
100
93
|
- !ruby/object:Gem::Version
|
101
|
-
version: '
|
94
|
+
version: '2.3'
|
95
|
+
- !ruby/object:Gem::Dependency
|
96
|
+
name: yard
|
102
97
|
requirement: !ruby/object:Gem::Requirement
|
103
98
|
requirements:
|
104
|
-
- - ~>
|
99
|
+
- - "~>"
|
105
100
|
- !ruby/object:Gem::Version
|
106
101
|
version: '0.8'
|
107
|
-
prerelease: false
|
108
102
|
type: :development
|
109
|
-
|
110
|
-
name: rdf-spec
|
103
|
+
prerelease: false
|
111
104
|
version_requirements: !ruby/object:Gem::Requirement
|
112
105
|
requirements:
|
113
|
-
- - ~>
|
106
|
+
- - "~>"
|
114
107
|
- !ruby/object:Gem::Version
|
115
|
-
version: '
|
108
|
+
version: '0.8'
|
109
|
+
- !ruby/object:Gem::Dependency
|
110
|
+
name: rdf-spec
|
116
111
|
requirement: !ruby/object:Gem::Requirement
|
117
112
|
requirements:
|
118
|
-
- - ~>
|
113
|
+
- - "~>"
|
119
114
|
- !ruby/object:Gem::Version
|
120
115
|
version: '1.1'
|
121
|
-
prerelease: false
|
122
116
|
type: :development
|
123
|
-
|
124
|
-
name: rdf-turtle
|
117
|
+
prerelease: false
|
125
118
|
version_requirements: !ruby/object:Gem::Requirement
|
126
119
|
requirements:
|
127
|
-
- - ~>
|
120
|
+
- - "~>"
|
128
121
|
- !ruby/object:Gem::Version
|
129
122
|
version: '1.1'
|
123
|
+
- !ruby/object:Gem::Dependency
|
124
|
+
name: rdf-turtle
|
130
125
|
requirement: !ruby/object:Gem::Requirement
|
131
126
|
requirements:
|
132
|
-
- - ~>
|
127
|
+
- - "~>"
|
133
128
|
- !ruby/object:Gem::Version
|
134
129
|
version: '1.1'
|
135
|
-
prerelease: false
|
136
130
|
type: :development
|
137
|
-
|
138
|
-
name: rdf-isomorphic
|
131
|
+
prerelease: false
|
139
132
|
version_requirements: !ruby/object:Gem::Requirement
|
140
133
|
requirements:
|
141
|
-
- - ~>
|
134
|
+
- - "~>"
|
142
135
|
- !ruby/object:Gem::Version
|
143
136
|
version: '1.1'
|
137
|
+
- !ruby/object:Gem::Dependency
|
138
|
+
name: rdf-isomorphic
|
144
139
|
requirement: !ruby/object:Gem::Requirement
|
145
140
|
requirements:
|
146
|
-
- - ~>
|
141
|
+
- - "~>"
|
147
142
|
- !ruby/object:Gem::Version
|
148
143
|
version: '1.1'
|
149
|
-
prerelease: false
|
150
144
|
type: :development
|
151
|
-
|
152
|
-
name: sparql
|
145
|
+
prerelease: false
|
153
146
|
version_requirements: !ruby/object:Gem::Requirement
|
154
147
|
requirements:
|
155
|
-
- - ~>
|
148
|
+
- - "~>"
|
156
149
|
- !ruby/object:Gem::Version
|
157
150
|
version: '1.1'
|
151
|
+
- !ruby/object:Gem::Dependency
|
152
|
+
name: sparql
|
158
153
|
requirement: !ruby/object:Gem::Requirement
|
159
154
|
requirements:
|
160
|
-
- - ~>
|
155
|
+
- - "~>"
|
161
156
|
- !ruby/object:Gem::Version
|
162
157
|
version: '1.1'
|
163
|
-
prerelease: false
|
164
158
|
type: :development
|
165
|
-
|
166
|
-
name: rspec
|
159
|
+
prerelease: false
|
167
160
|
version_requirements: !ruby/object:Gem::Requirement
|
168
161
|
requirements:
|
169
|
-
- - ~>
|
162
|
+
- - "~>"
|
170
163
|
- !ruby/object:Gem::Version
|
171
|
-
version: '
|
164
|
+
version: '1.1'
|
165
|
+
- !ruby/object:Gem::Dependency
|
166
|
+
name: rspec
|
172
167
|
requirement: !ruby/object:Gem::Requirement
|
173
168
|
requirements:
|
174
|
-
- - ~>
|
169
|
+
- - "~>"
|
175
170
|
- !ruby/object:Gem::Version
|
176
171
|
version: '3.0'
|
177
|
-
prerelease: false
|
178
172
|
type: :development
|
179
|
-
|
180
|
-
name: rspec-its
|
173
|
+
prerelease: false
|
181
174
|
version_requirements: !ruby/object:Gem::Requirement
|
182
175
|
requirements:
|
183
|
-
- - ~>
|
176
|
+
- - "~>"
|
184
177
|
- !ruby/object:Gem::Version
|
185
|
-
version: '
|
178
|
+
version: '3.0'
|
179
|
+
- !ruby/object:Gem::Dependency
|
180
|
+
name: rspec-its
|
186
181
|
requirement: !ruby/object:Gem::Requirement
|
187
182
|
requirements:
|
188
|
-
- - ~>
|
183
|
+
- - "~>"
|
189
184
|
- !ruby/object:Gem::Version
|
190
185
|
version: '1.0'
|
191
|
-
prerelease: false
|
192
186
|
type: :development
|
193
|
-
|
194
|
-
name: webmock
|
187
|
+
prerelease: false
|
195
188
|
version_requirements: !ruby/object:Gem::Requirement
|
196
189
|
requirements:
|
197
|
-
- - ~>
|
190
|
+
- - "~>"
|
198
191
|
- !ruby/object:Gem::Version
|
199
|
-
version: '1.
|
192
|
+
version: '1.0'
|
193
|
+
- !ruby/object:Gem::Dependency
|
194
|
+
name: webmock
|
200
195
|
requirement: !ruby/object:Gem::Requirement
|
201
196
|
requirements:
|
202
|
-
- - ~>
|
197
|
+
- - "~>"
|
203
198
|
- !ruby/object:Gem::Version
|
204
199
|
version: '1.17'
|
205
|
-
prerelease: false
|
206
200
|
type: :development
|
207
|
-
|
201
|
+
prerelease: false
|
202
|
+
version_requirements: !ruby/object:Gem::Requirement
|
203
|
+
requirements:
|
204
|
+
- - "~>"
|
205
|
+
- !ruby/object:Gem::Version
|
206
|
+
version: '1.17'
|
207
|
+
description: RDF::Tabular processes tabular data with metadata creating RDF or JSON
|
208
|
+
output.
|
208
209
|
email: public-rdf-ruby@w3.org
|
209
210
|
executables: []
|
210
211
|
extensions: []
|
@@ -238,24 +239,24 @@ homepage: http://github.com/ruby-rdf/rdf-tabular
|
|
238
239
|
licenses:
|
239
240
|
- Public Domain
|
240
241
|
metadata: {}
|
241
|
-
post_install_message:
|
242
|
+
post_install_message:
|
242
243
|
rdoc_options: []
|
243
244
|
require_paths:
|
244
245
|
- lib
|
245
246
|
required_ruby_version: !ruby/object:Gem::Requirement
|
246
247
|
requirements:
|
247
|
-
- -
|
248
|
+
- - ">="
|
248
249
|
- !ruby/object:Gem::Version
|
249
250
|
version: 2.0.0
|
250
251
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
251
252
|
requirements:
|
252
|
-
- -
|
253
|
+
- - ">="
|
253
254
|
- !ruby/object:Gem::Version
|
254
255
|
version: '0'
|
255
256
|
requirements: []
|
256
|
-
rubyforge_project:
|
257
|
-
rubygems_version: 2.4.
|
258
|
-
signing_key:
|
257
|
+
rubyforge_project:
|
258
|
+
rubygems_version: 2.4.3
|
259
|
+
signing_key:
|
259
260
|
specification_version: 4
|
260
261
|
summary: Tabular Data RDF Reader and JSON serializer.
|
261
262
|
test_files:
|