rdf-tabular 3.2.0 → 3.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +103 -117
- data/VERSION +1 -1
- data/etc/doap.csv +1 -1
- data/etc/doap.ttl +1 -1
- data/etc/earl.html +2 -2
- data/etc/earl.jsonld +1 -1
- data/etc/earl.ttl +1 -1
- data/lib/rdf/tabular/metadata.rb +9 -7
- data/lib/rdf/tabular/reader.rb +3 -2
- data/spec/matchers.rb +1 -2
- data/spec/metadata_spec.rb +0 -1
- data/spec/reader_spec.rb +3 -3
- metadata +41 -36
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4041ba9d0a1c7d571edd2aa3a93ad1b603e310a07d1725c26c93986aecdec183
|
4
|
+
data.tar.gz: c5cc2f0c5ad18e1693e82e0f25446d0208324d691668e759f330689f12120a2b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fda9f00e16600e812c82a30f92628432e72038d15b948297c59e306e7e9bd5ffb7a54180a62928550f6d791c8f21398fd6fbb514ca513fef86b890499a8d76cd
|
7
|
+
data.tar.gz: 9ca1f5716105b3a6d1cfa8138a13d38fb62ebd895d70394f1f17053df3f3a7045c73f42b305029559feefe920778114f5a459a1f36186e81e82b7ccb3d31a028
|
data/README.md
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
[CSV][] reader for [RDF.rb][] and fully JSON serializer.
|
4
4
|
|
5
|
-
[![Gem Version](https://badge.fury.io/rb/rdf-tabular.
|
5
|
+
[![Gem Version](https://badge.fury.io/rb/rdf-tabular.svg)](https://badge.fury.io/rb/rdf-tabular)
|
6
6
|
[![Build Status](https://github.com/ruby-rdf/rdf-tabular/workflows/CI/badge.svg?branch=develop)](https://github.com/ruby-rdf/rdf-tabular/actions?query=workflow%3ACI)
|
7
7
|
[![Coverage Status](https://coveralls.io/repos/ruby-rdf/rdf-tabular/badge.svg?branch=develop)](https://coveralls.io/github/ruby-rdf/rdf-tabular?branch=develop)
|
8
8
|
[![Gitter chat](https://badges.gitter.im/ruby-rdf/rdf.png)](https://gitter.im/ruby-rdf/rdf)
|
@@ -69,40 +69,41 @@ This results in the following Turtle:
|
|
69
69
|
@prefix csvw: <http://www.w3.org/ns/csvw#> .
|
70
70
|
@prefix dc: <http://purl.org/dc/terms/> .
|
71
71
|
@prefix doap: <http://usefulinc.com/ns/doap#> .
|
72
|
+
@prefix earl: <http://www.w3.org/ns/earl#> .
|
72
73
|
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
|
73
74
|
@prefix prov: <http://www.w3.org/ns/prov#> .
|
74
75
|
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
|
75
76
|
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
|
76
77
|
|
77
78
|
<https://rubygems.org/gems/rdf-tabular> a doap:Project,
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
79
|
+
earl:TestSubject,
|
80
|
+
earl:Software;
|
81
|
+
dc:title "RDF::Tabular";
|
82
|
+
dc:creator <http://greggkellogg.net/foaf#me>;
|
83
|
+
dc:date "2015-01-05"^^xsd:date;
|
84
|
+
dc:description "RDF::Tabular processes tabular data with metadata creating RDF or JSON output."@en;
|
85
|
+
dc:isPartOf <https://rubygems.org/gems/rdf>;
|
86
|
+
doap:blog <http://greggkellogg.net/>;
|
87
|
+
doap:bug-database <https://github.com/ruby-rdf/rdf-tabular/issues>;
|
88
|
+
doap:category <http://dbpedia.org/resource/Resource_Description_Framework>,
|
89
|
+
<http://dbpedia.org/resource/Ruby_(programming_language)>;
|
90
|
+
doap:created "2015-01-05"^^xsd:date;
|
91
|
+
doap:description "RDF::Tabular processes tabular data with metadata creating RDF or JSON output."@en;
|
92
|
+
doap:developer <http://greggkellogg.net/foaf#me>;
|
93
|
+
doap:documenter <http://greggkellogg.net/foaf#me>;
|
94
|
+
doap:download-page <https://rubygems.org/gems/rdf-tabular>;
|
95
|
+
doap:homepage <https://ruby-rdf.github.io/rdf-tabular>;
|
96
|
+
doap:implements <http://www.w3.org/TR/tabular-data-model/>,
|
97
|
+
<http://www.w3.org/TR/tabular-metadata/>,
|
98
|
+
<http://www.w3.org/TR/csv2rdf/>,
|
99
|
+
<http://www.w3.org/TR/csv2json/>;
|
100
|
+
doap:license <https://unlicense.org/1.0/>;
|
101
|
+
doap:mailing-list <http://lists.w3.org/Archives/Public/public-rdf-ruby/>;
|
102
|
+
doap:maintainer <http://greggkellogg.net/foaf#me>;
|
103
|
+
doap:name "RDF::Tabular";
|
104
|
+
doap:programming-language "Ruby";
|
105
|
+
doap:shortdesc "Tabular Data RDF Reader and JSON serializer."@en;
|
106
|
+
foaf:maker <http://greggkellogg.net/foaf#me> .
|
106
107
|
|
107
108
|
[
|
108
109
|
a csvw:TableGroup;
|
@@ -112,119 +113,104 @@ This results in the following Turtle:
|
|
112
113
|
a csvw:Row;
|
113
114
|
csvw:describes <https://rubygems.org/gems/rdf-tabular>;
|
114
115
|
csvw:rownum 1;
|
115
|
-
csvw:url <
|
116
|
-
],
|
116
|
+
csvw:url <https://raw.githubusercontent.com/ruby-rdf/rdf-tabular/develop/etc/doap.csv#row=2>
|
117
|
+
], [
|
117
118
|
a csvw:Row;
|
118
119
|
csvw:describes <https://rubygems.org/gems/rdf-tabular>;
|
119
120
|
csvw:rownum 2;
|
120
|
-
csvw:url <
|
121
|
-
],
|
121
|
+
csvw:url <https://raw.githubusercontent.com/ruby-rdf/rdf-tabular/develop/etc/doap.csv#row=3>
|
122
|
+
], [
|
122
123
|
a csvw:Row;
|
123
124
|
csvw:describes <https://rubygems.org/gems/rdf-tabular>;
|
124
125
|
csvw:rownum 3;
|
125
|
-
csvw:url <
|
126
|
-
],
|
126
|
+
csvw:url <https://raw.githubusercontent.com/ruby-rdf/rdf-tabular/develop/etc/doap.csv#row=4>
|
127
|
+
], [
|
127
128
|
a csvw:Row;
|
128
129
|
csvw:describes <https://rubygems.org/gems/rdf-tabular>;
|
129
130
|
csvw:rownum 4;
|
130
|
-
csvw:url <
|
131
|
+
csvw:url <https://raw.githubusercontent.com/ruby-rdf/rdf-tabular/develop/etc/doap.csv#row=5>
|
131
132
|
];
|
132
|
-
csvw:url <
|
133
|
+
csvw:url <https://raw.githubusercontent.com/ruby-rdf/rdf-tabular/develop/etc/doap.csv>
|
133
134
|
];
|
134
135
|
prov:wasGeneratedBy [
|
135
136
|
a prov:Activity;
|
136
|
-
prov:endedAtTime "
|
137
|
+
prov:endedAtTime "2022-04-20T12:45:20.616-07:00"^^xsd:dateTime;
|
137
138
|
prov:qualifiedUsage [
|
138
139
|
a prov:Usage;
|
139
|
-
prov:entity <
|
140
|
+
prov:entity <https://raw.githubusercontent.com/ruby-rdf/rdf-tabular/develop/etc/doap.csv>;
|
140
141
|
prov:hadRole csvw:csvEncodedTabularData
|
141
|
-
],
|
142
|
+
], [
|
142
143
|
a prov:Usage;
|
143
|
-
prov:entity <
|
144
|
+
prov:entity <https://raw.githubusercontent.com/ruby-rdf/rdf-tabular/develop/etc/doap.csv-metadata.json>;
|
144
145
|
prov:hadRole csvw:tabularMetadata
|
145
146
|
];
|
146
|
-
prov:startedAtTime "
|
147
|
+
prov:startedAtTime "2022-04-20T12:45:20.351-07:00"^^xsd:dateTime;
|
147
148
|
prov:wasAssociatedWith <https://rubygems.org/gems/rdf-tabular>
|
148
149
|
]
|
149
|
-
|
150
|
+
] .
|
150
151
|
|
151
152
|
The provenance on table-source information can be excluded by using the `:minimal` option to the reader.
|
152
153
|
|
153
154
|
It can also generate JSON output (not complete JSON-LD, but compatible with it), using the {RDF::Tabular::Reader#to_json} method:
|
154
155
|
|
155
156
|
{
|
156
|
-
"
|
157
|
-
|
158
|
-
|
159
|
-
"
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
]
|
214
|
-
},
|
215
|
-
{
|
216
|
-
"url": "file://users/gregg/Projects/rdf-tabular/etc/doap.csv#row=5",
|
217
|
-
"rownum": 4,
|
218
|
-
"describes": [
|
219
|
-
{
|
220
|
-
"@id": "https://rubygems.org/gems/rdf-tabular",
|
221
|
-
"http://usefulinc.com/ns/doap#implements": "http://www.w3.org/TR/csv2json/"
|
222
|
-
}
|
223
|
-
]
|
224
|
-
}
|
225
|
-
]
|
226
|
-
}
|
227
|
-
]
|
157
|
+
"tables": [{
|
158
|
+
"url": "https://raw.githubusercontent.com/ruby-rdf/rdf-tabular/develop/etc/doap.csv",
|
159
|
+
"row": [{
|
160
|
+
"url": "https://raw.githubusercontent.com/ruby-rdf/rdf-tabular/develop/etc/doap.csv#row=2",
|
161
|
+
"rownum": 1,
|
162
|
+
"describes": [{
|
163
|
+
"@id": "https://rubygems.org/gems/rdf-tabular",
|
164
|
+
"http://usefulinc.com/ns/doap#name": "RDF::Tabular",
|
165
|
+
"@type": "http://usefulinc.com/ns/doap#Project",
|
166
|
+
"http://usefulinc.com/ns/doap#homepage": "https://ruby-rdf.github.io/rdf-tabular",
|
167
|
+
"http://usefulinc.com/ns/doap#license": "https://unlicense.org/1.0/",
|
168
|
+
"http://usefulinc.com/ns/doap#shortdesc": "Tabular Data RDF Reader and JSON serializer.",
|
169
|
+
"http://usefulinc.com/ns/doap#description": "RDF::Tabular processes tabular data with metadata creating RDF or JSON output.",
|
170
|
+
"http://usefulinc.com/ns/doap#created": "2015-01-05",
|
171
|
+
"http://usefulinc.com/ns/doap#programming-language": "Ruby",
|
172
|
+
"http://usefulinc.com/ns/doap#implements": "http://www.w3.org/TR/tabular-data-model/",
|
173
|
+
"http://usefulinc.com/ns/doap#category": "http://dbpedia.org/resource/Resource_Description_Framework",
|
174
|
+
"http://usefulinc.com/ns/doap#download-page": "https://rubygems.org/gems/rdf-tabular",
|
175
|
+
"http://usefulinc.com/ns/doap#mailing-list": "http://lists.w3.org/Archives/Public/public-rdf-ruby/",
|
176
|
+
"http://usefulinc.com/ns/doap#bug-database": "https://github.com/ruby-rdf/rdf-tabular/issues",
|
177
|
+
"http://usefulinc.com/ns/doap#blog": "http://greggkellogg.net/",
|
178
|
+
"http://usefulinc.com/ns/doap#developer": "http://greggkellogg.net/foaf#me",
|
179
|
+
"http://usefulinc.com/ns/doap#maintainer": "http://greggkellogg.net/foaf#me",
|
180
|
+
"http://usefulinc.com/ns/doap#documenter": "http://greggkellogg.net/foaf#me",
|
181
|
+
"foaf:maker": "http://greggkellogg.net/foaf#me",
|
182
|
+
"dc:title": "RDF::Tabular",
|
183
|
+
"dc:description": "RDF::Tabular processes tabular data with metadata creating RDF or JSON output.",
|
184
|
+
"dc:date": "2015-01-05",
|
185
|
+
"dc:creator": "http://greggkellogg.net/foaf#me",
|
186
|
+
"dc:isPartOf": "https://rubygems.org/gems/rdf"
|
187
|
+
}]
|
188
|
+
}, {
|
189
|
+
"url": "https://raw.githubusercontent.com/ruby-rdf/rdf-tabular/develop/etc/doap.csv#row=3",
|
190
|
+
"rownum": 2,
|
191
|
+
"describes": [{
|
192
|
+
"@id": "https://rubygems.org/gems/rdf-tabular",
|
193
|
+
"@type": "http://www.w3.org/ns/earl#TestSubject",
|
194
|
+
"http://usefulinc.com/ns/doap#implements": "http://www.w3.org/TR/tabular-metadata/",
|
195
|
+
"http://usefulinc.com/ns/doap#category": "http://dbpedia.org/resource/Ruby_(programming_language)"
|
196
|
+
}]
|
197
|
+
}, {
|
198
|
+
"url": "https://raw.githubusercontent.com/ruby-rdf/rdf-tabular/develop/etc/doap.csv#row=4",
|
199
|
+
"rownum": 3,
|
200
|
+
"describes": [{
|
201
|
+
"@id": "https://rubygems.org/gems/rdf-tabular",
|
202
|
+
"@type": "http://www.w3.org/ns/earl#Software",
|
203
|
+
"http://usefulinc.com/ns/doap#implements": "http://www.w3.org/TR/csv2rdf/"
|
204
|
+
}]
|
205
|
+
}, {
|
206
|
+
"url": "https://raw.githubusercontent.com/ruby-rdf/rdf-tabular/develop/etc/doap.csv#row=5",
|
207
|
+
"rownum": 4,
|
208
|
+
"describes": [{
|
209
|
+
"@id": "https://rubygems.org/gems/rdf-tabular",
|
210
|
+
"http://usefulinc.com/ns/doap#implements": "http://www.w3.org/TR/csv2json/"
|
211
|
+
}]
|
212
|
+
}]
|
213
|
+
}]
|
228
214
|
}
|
229
215
|
|
230
216
|
## Tutorials
|
@@ -267,8 +253,8 @@ Full documentation available on [RubyDoc](https://rubydoc.info/gems/rdf-tabular/
|
|
267
253
|
* {RDF::Tabular::Reader}
|
268
254
|
|
269
255
|
## Dependencies
|
270
|
-
* [Ruby](https://ruby-lang.org/) (>=
|
271
|
-
* [RDF.rb](https://rubygems.org/gems/rdf) (~> 3.
|
256
|
+
* [Ruby](https://ruby-lang.org/) (>= 3.0)
|
257
|
+
* [RDF.rb](https://rubygems.org/gems/rdf) (~> 3.3)
|
272
258
|
* [JSON](https://rubygems.org/gems/json) (>= 2.6)
|
273
259
|
|
274
260
|
## Installation
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.
|
1
|
+
3.3.0
|
data/etc/doap.csv
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
name,type,homepage,license,shortdesc,description,created,programming_language,implements,category,download_page,mailing_list,bug_database,blog,developer,maintainer,documenter,maker,dc_title,dc_description,dc_date,dc_creator,isPartOf
|
2
|
-
RDF::Tabular,http://usefulinc.com/ns/doap#Project,
|
2
|
+
RDF::Tabular,http://usefulinc.com/ns/doap#Project,https://ruby-rdf.github.io/rdf-tabular,https://unlicense.org/1.0/,Tabular Data RDF Reader and JSON serializer.,RDF::Tabular processes tabular data with metadata creating RDF or JSON output.,1/5/2015,Ruby,http://www.w3.org/TR/tabular-data-model/,http://dbpedia.org/resource/Resource_Description_Framework,https://rubygems.org/gems/rdf-tabular,http://lists.w3.org/Archives/Public/public-rdf-ruby/,https://github.com/ruby-rdf/rdf-tabular/issues,http://greggkellogg.net/,http://greggkellogg.net/foaf#me,http://greggkellogg.net/foaf#me,http://greggkellogg.net/foaf#me,http://greggkellogg.net/foaf#me,RDF::Tabular,RDF::Tabular processes tabular data with metadata creating RDF or JSON output.,1/5/2015,http://greggkellogg.net/foaf#me,https://rubygems.org/gems/rdf
|
3
3
|
,http://www.w3.org/ns/earl#TestSubject,,,,,,,http://www.w3.org/TR/tabular-metadata/,http://dbpedia.org/resource/Ruby_(programming_language),,,,,,,,,,,,,
|
4
4
|
,http://www.w3.org/ns/earl#Software,,,,,,,http://www.w3.org/TR/csv2rdf/,,,,,,,,,,,,,,
|
5
5
|
,,,,,,,,http://www.w3.org/TR/csv2json/,,,,,,,,,,,,,,
|
data/etc/doap.ttl
CHANGED
@@ -9,7 +9,7 @@
|
|
9
9
|
|
10
10
|
<> a doap:Project, earl:TestSubject, earl:Software ;
|
11
11
|
doap:name "RDF::Tabular" ;
|
12
|
-
doap:homepage <https://ruby-rdf.github.
|
12
|
+
doap:homepage <https://ruby-rdf.github.io/rdf-tabular> ;
|
13
13
|
doap:license <https://unlicense.org/1.0/> ;
|
14
14
|
doap:shortdesc "Tabular Data RDF Reader and JSON serializer for RDF.rb."@en ;
|
15
15
|
doap:description "RDF::Tabular processes tabular data with metadata creating RDF or JSON output for the RDF.rb library suite."@en ;
|
data/etc/earl.html
CHANGED
@@ -100,8 +100,8 @@
|
|
100
100
|
<dd property='doap:programming-language'>Ruby</dd>
|
101
101
|
<dt>Home Page</dt>
|
102
102
|
<dd property='doap:homepage'>
|
103
|
-
<a href='
|
104
|
-
|
103
|
+
<a href='https://ruby-rdf.github.io/rdf-tabular'>
|
104
|
+
https://ruby-rdf.github.io/rdf-tabular
|
105
105
|
</a>
|
106
106
|
</dd>
|
107
107
|
<dt>Developer</dt>
|
data/etc/earl.jsonld
CHANGED
@@ -152,7 +152,7 @@
|
|
152
152
|
}
|
153
153
|
],
|
154
154
|
"doapDesc": "RDF::Tabular processes tabular data with metadata creating RDF or JSON output.",
|
155
|
-
"homepage": "
|
155
|
+
"homepage": "https://ruby-rdf.github.io/rdf-tabular",
|
156
156
|
"language": "Ruby"
|
157
157
|
}
|
158
158
|
],
|
data/etc/earl.ttl
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
|
9
9
|
<https://rubygems.org/gems/rdf-tabular> a doap:Project, earl:TestSubject, earl:Software ;
|
10
10
|
doap:name "RDF::Tabular" ;
|
11
|
-
doap:homepage <
|
11
|
+
doap:homepage <https://ruby-rdf.github.io/rdf-tabular> ;
|
12
12
|
doap:license <https://unlicense.org/1.0/> ;
|
13
13
|
doap:shortdesc "Tabular Data RDF Reader and JSON serializer."@en ;
|
14
14
|
doap:description "RDF::Tabular processes tabular data with metadata creating RDF or JSON output."@en ;
|
data/lib/rdf/tabular/metadata.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'json'
|
4
4
|
require 'json/ld'
|
5
|
-
require '
|
5
|
+
require 'bcp47_spec'
|
6
6
|
require 'addressable/template'
|
7
7
|
require 'rdf/xsd'
|
8
8
|
require 'yaml' # used by BCP47, which should have required it.
|
@@ -142,10 +142,12 @@ module RDF::Tabular
|
|
142
142
|
'Accept' => 'application/ld+json, application/json'
|
143
143
|
}
|
144
144
|
)
|
145
|
-
path = "file
|
145
|
+
path = "file:#{path}" if RDF::URI(path).relative?
|
146
146
|
RDF::Util::File.open_file(path, **options) do |file|
|
147
147
|
self.new(file, **options.merge(base: path, filenames: path))
|
148
148
|
end
|
149
|
+
rescue Errno::ENOENT => e
|
150
|
+
raise IOError, e.message
|
149
151
|
end
|
150
152
|
|
151
153
|
# Return the well-known configuration for a file, and remember using a weak-reference cache to avoid uncessary retreivles.
|
@@ -366,7 +368,7 @@ module RDF::Tabular
|
|
366
368
|
|
367
369
|
@options[:base] = @context ? @context.base : RDF::URI(opt_base)
|
368
370
|
|
369
|
-
if @context && @context.default_language && !BCP47
|
371
|
+
if @context && @context.default_language && !BCP47.valid?(@context.default_language.to_s)
|
370
372
|
log_warn "Context has invalid @language (#{@context.default_language.inspect}): expected valid BCP47 language tag"
|
371
373
|
@context.default_language = nil
|
372
374
|
end
|
@@ -437,7 +439,7 @@ module RDF::Tabular
|
|
437
439
|
when :aboutUrl, :default, :propertyUrl, :valueUrl
|
438
440
|
"string" unless value.is_a?(String)
|
439
441
|
when :lang
|
440
|
-
"valid BCP47 language tag" unless BCP47
|
442
|
+
"valid BCP47 language tag" unless BCP47.valid?(value.to_s)
|
441
443
|
when :null
|
442
444
|
# To be valid, it must be a string or array
|
443
445
|
"string or array of strings" unless !value.is_a?(Hash) && Array(value).all? {|v| v.is_a?(String)}
|
@@ -837,7 +839,7 @@ module RDF::Tabular
|
|
837
839
|
"a valid natural language property" unless value.all? {|v| v.is_a?(String)}
|
838
840
|
when Hash
|
839
841
|
"a valid natural language property" if
|
840
|
-
value.keys.any? {|k| k.to_s != "und" && !BCP47
|
842
|
+
value.keys.any? {|k| k.to_s != "und" && !BCP47.valid?(k)} ||
|
841
843
|
value.values.any? {|v| valid_natural_language_property?(v).is_a?(String)}
|
842
844
|
else
|
843
845
|
"a valid natural language property"
|
@@ -1170,7 +1172,7 @@ module RDF::Tabular
|
|
1170
1172
|
log_error "Value object may not contain keys other than @value, @type, or @language: #{value.to_json}"
|
1171
1173
|
elsif (value.keys.sort & %w(@language @type)) == %w(@language @type)
|
1172
1174
|
log_error "Value object may not contain both @type and @language: #{value.to_json}"
|
1173
|
-
elsif value['@language'] && !BCP47
|
1175
|
+
elsif value['@language'] && !BCP47.valid?(value['@language'].to_s)
|
1174
1176
|
log_error "Value object with @language must use valid language: #{value.to_json}"
|
1175
1177
|
elsif value['@type'] && (value['@type'].start_with?('_:') || !context.expand_iri(value['@type'], vocab: true).absolute?)
|
1176
1178
|
log_error "Value object with @type must defined type: #{value.to_json}"
|
@@ -1230,7 +1232,7 @@ module RDF::Tabular
|
|
1230
1232
|
when String then value
|
1231
1233
|
when Array then value.select {|v| v.is_a?(String)}
|
1232
1234
|
when Hash
|
1233
|
-
value.delete_if {|k, v| !BCP47
|
1235
|
+
value.delete_if {|k, v| !BCP47.valid?(k)}
|
1234
1236
|
value.each do |k, v|
|
1235
1237
|
value[k] = Array(v).select {|vv| vv.is_a?(String)}
|
1236
1238
|
end
|
data/lib/rdf/tabular/reader.rb
CHANGED
@@ -22,7 +22,7 @@ module RDF::Tabular
|
|
22
22
|
|
23
23
|
##
|
24
24
|
# Writer options
|
25
|
-
# @see https://
|
25
|
+
# @see https://ruby-rdf.github.io/rdf/RDF/Writer#options-class_method
|
26
26
|
def self.options
|
27
27
|
super + [
|
28
28
|
RDF::CLI::Option.new(
|
@@ -80,7 +80,8 @@ module RDF::Tabular
|
|
80
80
|
@options[:base] ||= input.path if input.respond_to?(:path)
|
81
81
|
@options[:base] ||= input.filename if input.respond_to?(:filename)
|
82
82
|
if RDF::URI(@options[:base]).relative? && File.exist?(@options[:base].to_s)
|
83
|
-
|
83
|
+
file_uri = "file:" + File.expand_path(@options[:base])
|
84
|
+
@options[:base] = RDF::URI(file_uri.to_s).normalize
|
84
85
|
end
|
85
86
|
|
86
87
|
log_debug("Reader#initialize") {"input: #{input.inspect}, base: #{@options[:base]}"}
|
data/spec/matchers.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'rdf/isomorphic'
|
2
2
|
require 'rspec/matchers'
|
3
3
|
|
4
|
-
Info = Struct.new(:id, :
|
4
|
+
Info = Struct.new(:id, :logger, :action, :result, :metadata)
|
5
5
|
|
6
6
|
RSpec::Matchers.define :pass_query do |expected, info|
|
7
7
|
match do |actual|
|
@@ -10,7 +10,6 @@ RSpec::Matchers.define :pass_query do |expected, info|
|
|
10
10
|
elsif info.is_a?(Hash)
|
11
11
|
Info.new(info[:id], info[:logger], info[:action], info.fetch(:result, RDF::Literal::TRUE), info[:metadata])
|
12
12
|
end
|
13
|
-
@info.debug = Array(@info.debug).join("\n")
|
14
13
|
|
15
14
|
@expected = expected.respond_to?(:read) ? expected.read : expected
|
16
15
|
|
data/spec/metadata_spec.rb
CHANGED
data/spec/reader_spec.rb
CHANGED
@@ -313,7 +313,7 @@ describe RDF::Tabular::Reader do
|
|
313
313
|
prov:endedAtTime ?end;
|
314
314
|
prov:qualifiedUsage [
|
315
315
|
a prov:Usage ;
|
316
|
-
prov:entity <http://example.org/country-codes-and-names.csv> ;
|
316
|
+
# prov:entity <http://example.org/country-codes-and-names.csv> ;
|
317
317
|
prov:hadRole csvw:csvEncodedTabularData
|
318
318
|
];
|
319
319
|
]
|
@@ -336,11 +336,11 @@ describe RDF::Tabular::Reader do
|
|
336
336
|
prov:endedAtTime ?end;
|
337
337
|
prov:qualifiedUsage [
|
338
338
|
a prov:Usage ;
|
339
|
-
prov:entity <http://example.org/countries.csv>, <http://example.org/country_slice.csv>;
|
339
|
+
# prov:entity <http://example.org/countries.csv>, <http://example.org/country_slice.csv>;
|
340
340
|
prov:hadRole csvw:csvEncodedTabularData
|
341
341
|
], [
|
342
342
|
a prov:Usage ;
|
343
|
-
prov:entity <http://example.org/countries.json> ;
|
343
|
+
# prov:entity <http://example.org/countries.json> ;
|
344
344
|
prov:hadRole csvw:tabularMetadata
|
345
345
|
];
|
346
346
|
]
|
metadata
CHANGED
@@ -1,91 +1,85 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rdf-tabular
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gregg Kellogg
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-09-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: bcp47_spec
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0.
|
20
|
-
- - ">="
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: 0.3.3
|
19
|
+
version: '0.2'
|
23
20
|
type: :runtime
|
24
21
|
prerelease: false
|
25
22
|
version_requirements: !ruby/object:Gem::Requirement
|
26
23
|
requirements:
|
27
24
|
- - "~>"
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version: '0.
|
30
|
-
- - ">="
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: 0.3.3
|
26
|
+
version: '0.2'
|
33
27
|
- !ruby/object:Gem::Dependency
|
34
28
|
name: rdf
|
35
29
|
requirement: !ruby/object:Gem::Requirement
|
36
30
|
requirements:
|
37
31
|
- - "~>"
|
38
32
|
- !ruby/object:Gem::Version
|
39
|
-
version: '3.
|
33
|
+
version: '3.3'
|
40
34
|
type: :runtime
|
41
35
|
prerelease: false
|
42
36
|
version_requirements: !ruby/object:Gem::Requirement
|
43
37
|
requirements:
|
44
38
|
- - "~>"
|
45
39
|
- !ruby/object:Gem::Version
|
46
|
-
version: '3.
|
40
|
+
version: '3.3'
|
47
41
|
- !ruby/object:Gem::Dependency
|
48
42
|
name: rdf-vocab
|
49
43
|
requirement: !ruby/object:Gem::Requirement
|
50
44
|
requirements:
|
51
45
|
- - "~>"
|
52
46
|
- !ruby/object:Gem::Version
|
53
|
-
version: '3.
|
47
|
+
version: '3.3'
|
54
48
|
type: :runtime
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
51
|
requirements:
|
58
52
|
- - "~>"
|
59
53
|
- !ruby/object:Gem::Version
|
60
|
-
version: '3.
|
54
|
+
version: '3.3'
|
61
55
|
- !ruby/object:Gem::Dependency
|
62
56
|
name: rdf-xsd
|
63
57
|
requirement: !ruby/object:Gem::Requirement
|
64
58
|
requirements:
|
65
59
|
- - "~>"
|
66
60
|
- !ruby/object:Gem::Version
|
67
|
-
version: '3.
|
61
|
+
version: '3.3'
|
68
62
|
type: :runtime
|
69
63
|
prerelease: false
|
70
64
|
version_requirements: !ruby/object:Gem::Requirement
|
71
65
|
requirements:
|
72
66
|
- - "~>"
|
73
67
|
- !ruby/object:Gem::Version
|
74
|
-
version: '3.
|
68
|
+
version: '3.3'
|
75
69
|
- !ruby/object:Gem::Dependency
|
76
70
|
name: json-ld
|
77
71
|
requirement: !ruby/object:Gem::Requirement
|
78
72
|
requirements:
|
79
73
|
- - "~>"
|
80
74
|
- !ruby/object:Gem::Version
|
81
|
-
version: '3.
|
75
|
+
version: '3.3'
|
82
76
|
type: :runtime
|
83
77
|
prerelease: false
|
84
78
|
version_requirements: !ruby/object:Gem::Requirement
|
85
79
|
requirements:
|
86
80
|
- - "~>"
|
87
81
|
- !ruby/object:Gem::Version
|
88
|
-
version: '3.
|
82
|
+
version: '3.3'
|
89
83
|
- !ruby/object:Gem::Dependency
|
90
84
|
name: addressable
|
91
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -106,28 +100,34 @@ dependencies:
|
|
106
100
|
requirements:
|
107
101
|
- - "~>"
|
108
102
|
- !ruby/object:Gem::Version
|
109
|
-
version: '1.
|
103
|
+
version: '1.15'
|
104
|
+
- - ">="
|
105
|
+
- !ruby/object:Gem::Version
|
106
|
+
version: 1.13.4
|
110
107
|
type: :development
|
111
108
|
prerelease: false
|
112
109
|
version_requirements: !ruby/object:Gem::Requirement
|
113
110
|
requirements:
|
114
111
|
- - "~>"
|
115
112
|
- !ruby/object:Gem::Version
|
116
|
-
version: '1.
|
113
|
+
version: '1.15'
|
114
|
+
- - ">="
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: 1.13.4
|
117
117
|
- !ruby/object:Gem::Dependency
|
118
118
|
name: rspec
|
119
119
|
requirement: !ruby/object:Gem::Requirement
|
120
120
|
requirements:
|
121
121
|
- - "~>"
|
122
122
|
- !ruby/object:Gem::Version
|
123
|
-
version: '3.
|
123
|
+
version: '3.12'
|
124
124
|
type: :development
|
125
125
|
prerelease: false
|
126
126
|
version_requirements: !ruby/object:Gem::Requirement
|
127
127
|
requirements:
|
128
128
|
- - "~>"
|
129
129
|
- !ruby/object:Gem::Version
|
130
|
-
version: '3.
|
130
|
+
version: '3.12'
|
131
131
|
- !ruby/object:Gem::Dependency
|
132
132
|
name: rspec-its
|
133
133
|
requirement: !ruby/object:Gem::Requirement
|
@@ -148,70 +148,70 @@ dependencies:
|
|
148
148
|
requirements:
|
149
149
|
- - "~>"
|
150
150
|
- !ruby/object:Gem::Version
|
151
|
-
version: '3.
|
151
|
+
version: '3.3'
|
152
152
|
type: :development
|
153
153
|
prerelease: false
|
154
154
|
version_requirements: !ruby/object:Gem::Requirement
|
155
155
|
requirements:
|
156
156
|
- - "~>"
|
157
157
|
- !ruby/object:Gem::Version
|
158
|
-
version: '3.
|
158
|
+
version: '3.3'
|
159
159
|
- !ruby/object:Gem::Dependency
|
160
160
|
name: rdf-spec
|
161
161
|
requirement: !ruby/object:Gem::Requirement
|
162
162
|
requirements:
|
163
163
|
- - "~>"
|
164
164
|
- !ruby/object:Gem::Version
|
165
|
-
version: '3.
|
165
|
+
version: '3.3'
|
166
166
|
type: :development
|
167
167
|
prerelease: false
|
168
168
|
version_requirements: !ruby/object:Gem::Requirement
|
169
169
|
requirements:
|
170
170
|
- - "~>"
|
171
171
|
- !ruby/object:Gem::Version
|
172
|
-
version: '3.
|
172
|
+
version: '3.3'
|
173
173
|
- !ruby/object:Gem::Dependency
|
174
174
|
name: rdf-turtle
|
175
175
|
requirement: !ruby/object:Gem::Requirement
|
176
176
|
requirements:
|
177
177
|
- - "~>"
|
178
178
|
- !ruby/object:Gem::Version
|
179
|
-
version: '3.
|
179
|
+
version: '3.3'
|
180
180
|
type: :development
|
181
181
|
prerelease: false
|
182
182
|
version_requirements: !ruby/object:Gem::Requirement
|
183
183
|
requirements:
|
184
184
|
- - "~>"
|
185
185
|
- !ruby/object:Gem::Version
|
186
|
-
version: '3.
|
186
|
+
version: '3.3'
|
187
187
|
- !ruby/object:Gem::Dependency
|
188
188
|
name: sparql
|
189
189
|
requirement: !ruby/object:Gem::Requirement
|
190
190
|
requirements:
|
191
191
|
- - "~>"
|
192
192
|
- !ruby/object:Gem::Version
|
193
|
-
version: '3.
|
193
|
+
version: '3.3'
|
194
194
|
type: :development
|
195
195
|
prerelease: false
|
196
196
|
version_requirements: !ruby/object:Gem::Requirement
|
197
197
|
requirements:
|
198
198
|
- - "~>"
|
199
199
|
- !ruby/object:Gem::Version
|
200
|
-
version: '3.
|
200
|
+
version: '3.3'
|
201
201
|
- !ruby/object:Gem::Dependency
|
202
202
|
name: webmock
|
203
203
|
requirement: !ruby/object:Gem::Requirement
|
204
204
|
requirements:
|
205
205
|
- - "~>"
|
206
206
|
- !ruby/object:Gem::Version
|
207
|
-
version: '3.
|
207
|
+
version: '3.19'
|
208
208
|
type: :development
|
209
209
|
prerelease: false
|
210
210
|
version_requirements: !ruby/object:Gem::Requirement
|
211
211
|
requirements:
|
212
212
|
- - "~>"
|
213
213
|
- !ruby/object:Gem::Version
|
214
|
-
version: '3.
|
214
|
+
version: '3.19'
|
215
215
|
- !ruby/object:Gem::Dependency
|
216
216
|
name: yard
|
217
217
|
requirement: !ruby/object:Gem::Requirement
|
@@ -323,7 +323,12 @@ files:
|
|
323
323
|
homepage: https://github.com/ruby-rdf/rdf-tabular
|
324
324
|
licenses:
|
325
325
|
- Unlicense
|
326
|
-
metadata:
|
326
|
+
metadata:
|
327
|
+
documentation_uri: https://ruby-rdf.github.io/rdf-tabular
|
328
|
+
bug_tracker_uri: https://github.com/ruby-rdf/rdf-tabular/issues
|
329
|
+
homepage_uri: https://github.com/ruby-rdf/rdf-tabular
|
330
|
+
mailing_list_uri: https://lists.w3.org/Archives/Public/public-rdf-ruby/
|
331
|
+
source_code_uri: https://github.com/ruby-rdf/rdf-tabular
|
327
332
|
post_install_message:
|
328
333
|
rdoc_options: []
|
329
334
|
require_paths:
|
@@ -332,14 +337,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
332
337
|
requirements:
|
333
338
|
- - ">="
|
334
339
|
- !ruby/object:Gem::Version
|
335
|
-
version: '
|
340
|
+
version: '3.0'
|
336
341
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
337
342
|
requirements:
|
338
343
|
- - ">="
|
339
344
|
- !ruby/object:Gem::Version
|
340
345
|
version: '0'
|
341
346
|
requirements: []
|
342
|
-
rubygems_version: 3.
|
347
|
+
rubygems_version: 3.2.33
|
343
348
|
signing_key:
|
344
349
|
specification_version: 4
|
345
350
|
summary: Tabular Data RDF Reader and JSON serializer.
|