rdf-tabular 3.2.0 → 3.3.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 +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
|
-
[](https://badge.fury.io/rb/rdf-tabular)
|
|
6
6
|
[](https://github.com/ruby-rdf/rdf-tabular/actions?query=workflow%3ACI)
|
|
7
7
|
[](https://coveralls.io/github/ruby-rdf/rdf-tabular?branch=develop)
|
|
8
8
|
[](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.
|