ldpath 1.0.0 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.circleci/config.yml +49 -0
- data/.rubocop.yml +40 -1
- data/.travis.yml +3 -1
- data/CHANGELOG.md +9 -0
- data/CONTRIBUTING.md +45 -13
- data/Gemfile +3 -6
- data/README.md +15 -4
- data/Rakefile +2 -0
- data/bin/ldpath +6 -1
- data/ldpath.gemspec +11 -8
- data/lib/ldpath/field_mapping.rb +2 -0
- data/lib/ldpath/functions.rb +4 -4
- data/lib/ldpath/loaders/direct.rb +17 -0
- data/lib/ldpath/loaders/graph.rb +15 -0
- data/lib/ldpath/loaders/linked_data_fragment.rb +31 -0
- data/lib/ldpath/loaders.rb +9 -0
- data/lib/ldpath/parser.rb +4 -2
- data/lib/ldpath/program.rb +19 -9
- data/lib/ldpath/result.rb +7 -13
- data/lib/ldpath/selectors.rb +45 -26
- data/lib/ldpath/tests.rb +26 -5
- data/lib/ldpath/transform.rb +16 -14
- data/lib/ldpath/version.rb +3 -1
- data/lib/ldpath.rb +15 -8
- data/spec/ldpath_parser_spec.rb +6 -4
- data/spec/ldpath_program_spec.rb +113 -70
- data/spec/ldpath_spec.rb +2 -0
- data/spec/ldpath_transform_spec.rb +5 -3
- data/spec/lib/functions/list_spec.rb +2 -0
- data/spec/spec_helper.rb +2 -18
- metadata +51 -19
data/spec/ldpath_program_spec.rb
CHANGED
@@ -1,29 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
describe Ldpath::Program do
|
4
6
|
describe "Simple program" do
|
5
7
|
subject do
|
6
|
-
Ldpath::Program.parse
|
7
|
-
@prefix dcterms : <http://purl.org/dc/terms/> ;
|
8
|
-
title = dcterms:title :: xsd:string ;
|
9
|
-
parent_title = dcterms:isPartOf / dcterms:title :: xsd:string ;
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
8
|
+
Ldpath::Program.parse <<~EOF
|
9
|
+
@prefix dcterms : <http://purl.org/dc/terms/> ;
|
10
|
+
title = dcterms:title :: xsd:string ;
|
11
|
+
parent_title = dcterms:isPartOf / dcterms:title :: xsd:string ;
|
12
|
+
parent_title_en = dcterms:isPartOf / dcterms:title[@en] :: xsd:string ;
|
13
|
+
titles = dcterms:title | (dcterms:isPartOf / dcterms:title) | (^dcterms:isPartOf / dcterms:title) :: xsd:string ;
|
14
|
+
no_titles = dcterms:title & (dcterms:isPartOf / dcterms:title) & (^dcterms:isPartOf / dcterms:title) :: xsd:string ;
|
15
|
+
self = . :: xsd:string ;
|
16
|
+
wildcard = * ::xsd:string ;
|
17
|
+
child_title = ^dcterms:isPartOf / dcterms:title :: xsd:string ;
|
18
|
+
child_description_en = ^dcterms:isPartOf / dcterms:description[@en] :: xsd:string ;
|
19
|
+
recursive = (dcterms:isPartOf)* ;
|
20
|
+
en_description = dcterms:description[@en] ;
|
21
|
+
conditional = dcterms:isPartOf[dcterms:title] ;
|
22
|
+
conditional_false = dcterms:isPartOf[dcterms:description] ;
|
23
|
+
int_value = <info:intProperty>[^^xsd:integer] :: xsd:integer ;
|
24
|
+
numeric_value = <info:numericProperty> :: xsd:integer ;
|
25
|
+
escaped_string = "\\"" :: xsd:string;
|
26
|
+
and_test = .[dcterms:title & dcterms:gone] ;
|
27
|
+
or_test = .[dcterms:title | dcterms:gone] ;
|
28
|
+
is_test = .[dcterms:title is "Hello, world!"] ;
|
29
|
+
is_not_test = .[!(dcterms:title is "Hello, world!")] ;
|
30
|
+
EOF
|
27
31
|
end
|
28
32
|
|
29
33
|
let(:object) { RDF::URI.new("info:a") }
|
@@ -46,16 +50,18 @@ EOF
|
|
46
50
|
graph << [parent, RDF::Vocab::DC.title, "Parent title"]
|
47
51
|
graph << [child, RDF::Vocab::DC.isPartOf, object]
|
48
52
|
graph << [child, RDF::Vocab::DC.title, "Child title"]
|
53
|
+
graph << [parent, RDF::Vocab::DC.title, RDF::Literal.new("Parent English!", language: "en")]
|
54
|
+
graph << [parent, RDF::Vocab::DC.title, RDF::Literal.new("Parent French!", language: "fr")]
|
49
55
|
graph << [parent, RDF::Vocab::DC.isPartOf, grandparent]
|
50
56
|
|
51
57
|
result = subject.evaluate object, context: graph
|
52
|
-
|
53
58
|
expect(result["title"]).to match_array "Hello, world!"
|
54
|
-
expect(result["parent_title"]).to match_array "Parent title"
|
59
|
+
expect(result["parent_title"]).to match_array ["Parent title", "Parent English!", "Parent French!"]
|
60
|
+
expect(result["parent_title_en"]).to match_array "Parent English!"
|
55
61
|
expect(result["self"]).to match_array(object)
|
56
62
|
expect(result["wildcard"]).to include "Hello, world!", parent
|
57
63
|
expect(result["child_title"]).to match_array "Child title"
|
58
|
-
expect(result["titles"]).to match_array ["Hello, world!", "Parent title", "Child title"]
|
64
|
+
expect(result["titles"]).to match_array ["Hello, world!", "Parent title", "Child title", "Parent English!", "Parent French!"]
|
59
65
|
expect(result["no_titles"]).to be_empty
|
60
66
|
expect(result["recursive"]).to match_array [parent, grandparent]
|
61
67
|
expect(result["en_description"].first.to_s).to eq "English!"
|
@@ -73,24 +79,24 @@ EOF
|
|
73
79
|
|
74
80
|
describe "functions" do
|
75
81
|
let(:program) do
|
76
|
-
Ldpath::Program.parse
|
77
|
-
@prefix dcterms : <http://purl.org/dc/terms/> ;
|
78
|
-
ab = fn:concat("a", "b") ;
|
79
|
-
title = fn:concat(dcterms:title, dcterms:description) ;
|
80
|
-
title_mix = fn:concat("!", dcterms:title) ;
|
81
|
-
title_missing = fn:concat("z", dcterms:genre) ;
|
82
|
-
first_a = fn:first("a", "b") ;
|
83
|
-
first_b = fn:first(dcterms:genre, "b") ;
|
84
|
-
last_a = fn:last("a", dcterms:genre) ;
|
85
|
-
last_b = fn:last("a", "b") ;
|
86
|
-
count_5 = fn:count("a", "b", "c", "d", "e");
|
87
|
-
count_3 = fn:count(dcterms:hasPart);
|
88
|
-
count_still_3 = fn:count(dcterms:hasPart, dcterms:genre);
|
89
|
-
eq_true = fn:eq("a", "a");
|
90
|
-
eq_false = fn:eq("a", "b");
|
91
|
-
eq_node_true = fn:eq(dcterms:description, "Description");
|
92
|
-
xpath_test = fn:xpath("//title", "<root><title>xyz</title></root>");
|
93
|
-
EOF
|
82
|
+
Ldpath::Program.parse <<~EOF
|
83
|
+
@prefix dcterms : <http://purl.org/dc/terms/> ;
|
84
|
+
ab = fn:concat("a", "b") ;
|
85
|
+
title = fn:concat(dcterms:title, dcterms:description) ;
|
86
|
+
title_mix = fn:concat("!", dcterms:title) ;
|
87
|
+
title_missing = fn:concat("z", dcterms:genre) ;
|
88
|
+
first_a = fn:first("a", "b") ;
|
89
|
+
first_b = fn:first(dcterms:genre, "b") ;
|
90
|
+
last_a = fn:last("a", dcterms:genre) ;
|
91
|
+
last_b = fn:last("a", "b") ;
|
92
|
+
count_5 = fn:count("a", "b", "c", "d", "e");
|
93
|
+
count_3 = fn:count(dcterms:hasPart);
|
94
|
+
count_still_3 = fn:count(dcterms:hasPart, dcterms:genre);
|
95
|
+
eq_true = fn:eq("a", "a");
|
96
|
+
eq_false = fn:eq("a", "b");
|
97
|
+
eq_node_true = fn:eq(dcterms:description, "Description");
|
98
|
+
xpath_test = fn:xpath("//title", "<root><title>xyz</title></root>");
|
99
|
+
EOF
|
94
100
|
end
|
95
101
|
|
96
102
|
let(:object) { RDF::URI.new("info:a") }
|
@@ -185,29 +191,66 @@ EOF
|
|
185
191
|
|
186
192
|
describe "Data loading" do
|
187
193
|
subject do
|
188
|
-
Ldpath::Program.parse <<-EOF
|
189
|
-
@prefix dcterms : <http://purl.org/dc/terms/> ;
|
190
|
-
title = foaf:primaryTopic / dc:title :: xsd:string ;
|
191
|
-
EOF
|
194
|
+
Ldpath::Program.parse <<-EOF, context
|
195
|
+
@prefix dcterms : <http://purl.org/dc/terms/> ;
|
196
|
+
title = foaf:primaryTopic / dc:title :: xsd:string ;
|
197
|
+
EOF
|
192
198
|
end
|
199
|
+
let(:context) { {} }
|
193
200
|
|
194
|
-
|
195
|
-
|
201
|
+
context 'with direct loading' do
|
202
|
+
let(:context) { { default_loader: Ldpath::Loaders::Direct.new } }
|
203
|
+
|
204
|
+
before do
|
205
|
+
stub_request(:get, 'http://www.bbc.co.uk/programmes/b0081dq5')
|
196
206
|
.to_return(status: 200, body: webmock_fixture('bbc_b0081dq5.nt'), headers: { 'Content-Type' => 'application/n-triples' })
|
207
|
+
end
|
208
|
+
|
209
|
+
it "should work" do
|
210
|
+
result = subject.evaluate RDF::URI.new("http://www.bbc.co.uk/programmes/b0081dq5")
|
211
|
+
expect(result["title"]).to match_array "Huw Stephens"
|
212
|
+
end
|
197
213
|
end
|
198
214
|
|
199
|
-
|
200
|
-
|
201
|
-
|
215
|
+
context 'with an existing graph' do
|
216
|
+
let(:graph) { RDF::Graph.new }
|
217
|
+
let(:graph_loader) { Ldpath::Loaders::Graph.new graph: graph }
|
218
|
+
let(:context) { { default_loader: graph_loader } }
|
219
|
+
|
220
|
+
before do
|
221
|
+
graph << [RDF::URI('http://www.bbc.co.uk/programmes/b0081dq5'), RDF::URI('http://xmlns.com/foaf/0.1/primaryTopic'),
|
222
|
+
RDF::URI('info:some_uri')]
|
223
|
+
graph << [RDF::URI('info:some_uri'), RDF::URI('http://purl.org/dc/elements/1.1/title'), 'Local Huw Stephens']
|
224
|
+
end
|
225
|
+
|
226
|
+
it "should work" do
|
227
|
+
result = subject.evaluate RDF::URI.new("http://www.bbc.co.uk/programmes/b0081dq5")
|
228
|
+
expect(result["title"]).to match_array "Local Huw Stephens"
|
229
|
+
end
|
230
|
+
end
|
231
|
+
|
232
|
+
context 'with linked data fragments' do
|
233
|
+
let(:graph_loader) { Ldpath::Loaders::LinkedDataFragment.new('http://example.com/ldf') }
|
234
|
+
let(:context) { { default_loader: graph_loader } }
|
235
|
+
|
236
|
+
before do
|
237
|
+
stub_request(:get, 'http://example.com/ldf?subject=http://www.bbc.co.uk/programmes/b0081dq5')
|
238
|
+
.to_return(status: 200, body: webmock_fixture('bbc_b0081dq5.nt'), headers: { 'Content-Type' => 'application/n-triples' })
|
239
|
+
end
|
240
|
+
|
241
|
+
it "should work" do
|
242
|
+
result = subject.evaluate RDF::URI.new("http://www.bbc.co.uk/programmes/b0081dq5")
|
243
|
+
expect(result["title"]).to match_array "Huw Stephens"
|
244
|
+
end
|
202
245
|
end
|
203
246
|
end
|
204
247
|
|
205
248
|
describe "Predicate function" do
|
206
249
|
subject do
|
207
|
-
Ldpath::Program.parse
|
208
|
-
@prefix dcterms : <http://purl.org/dc/terms/> ;
|
209
|
-
predicates = <http://xmlns.com/foaf/0.1/primaryTopic> / fn:predicates() :: xsd:string ;
|
210
|
-
EOF
|
250
|
+
Ldpath::Program.parse <<~EOF
|
251
|
+
@prefix dcterms : <http://purl.org/dc/terms/> ;
|
252
|
+
predicates = <http://xmlns.com/foaf/0.1/primaryTopic> / fn:predicates() :: xsd:string ;
|
253
|
+
EOF
|
211
254
|
end
|
212
255
|
|
213
256
|
before do
|
@@ -239,11 +282,11 @@ EOF
|
|
239
282
|
end
|
240
283
|
|
241
284
|
subject do
|
242
|
-
Ldpath::Program.parse
|
243
|
-
@prefix dcterms : <http://purl.org/dc/terms/> ;
|
244
|
-
title = dcterms:title :: xsd:string ;
|
245
|
-
child_title = dcterms:hasPart / dcterms:title :: xsd:string ;
|
246
|
-
child_title_with_tap = dcterms:hasPart / ?<tap>fn:predicates() / dcterms:title :: xsd:string ;
|
285
|
+
Ldpath::Program.parse <<~EOF
|
286
|
+
@prefix dcterms : <http://purl.org/dc/terms/> ;
|
287
|
+
title = dcterms:title :: xsd:string ;
|
288
|
+
child_title = dcterms:hasPart / dcterms:title :: xsd:string ;
|
289
|
+
child_title_with_tap = dcterms:hasPart / ?<tap>fn:predicates() / dcterms:title :: xsd:string ;
|
247
290
|
EOF
|
248
291
|
end
|
249
292
|
|
@@ -270,11 +313,11 @@ child_title_with_tap = dcterms:hasPart / ?<tap>fn:predicates() / dcterms:title :
|
|
270
313
|
end
|
271
314
|
|
272
315
|
subject do
|
273
|
-
Ldpath::Program.parse
|
274
|
-
@prefix dcterms : <http://purl.org/dc/terms/> ;
|
275
|
-
@prefix dc: <http://purl.org/dc/elements/1.1/> ;
|
276
|
-
title = dcterms:title :: xsd:string ;
|
277
|
-
title_with_loose = ~dc:title :: xsd:string ;
|
316
|
+
Ldpath::Program.parse <<~EOF
|
317
|
+
@prefix dcterms : <http://purl.org/dc/terms/> ;
|
318
|
+
@prefix dc: <http://purl.org/dc/elements/1.1/> ;
|
319
|
+
title = dcterms:title :: xsd:string ;
|
320
|
+
title_with_loose = ~dc:title :: xsd:string ;
|
278
321
|
EOF
|
279
322
|
end
|
280
323
|
|
@@ -327,10 +370,10 @@ title_with_loose = ~dc:title :: xsd:string ;
|
|
327
370
|
describe '#evaluate' do
|
328
371
|
context 'when passing limit_to_context' do
|
329
372
|
subject do
|
330
|
-
Ldpath::Program.parse
|
331
|
-
@prefix madsrdf : <http://www.loc.gov/mads/rdf/v1#> ;
|
332
|
-
@prefix schema: <http://www.w3.org/2000/01/rdf-schema#> ;
|
333
|
-
property = madsrdf:authoritativeLabel :: xsd:string ;
|
373
|
+
Ldpath::Program.parse <<~EOF
|
374
|
+
@prefix madsrdf : <http://www.loc.gov/mads/rdf/v1#> ;
|
375
|
+
@prefix schema: <http://www.w3.org/2000/01/rdf-schema#> ;
|
376
|
+
property = madsrdf:authoritativeLabel :: xsd:string ;
|
334
377
|
EOF
|
335
378
|
end
|
336
379
|
|
@@ -344,7 +387,7 @@ property = madsrdf:authoritativeLabel :: xsd:string ;
|
|
344
387
|
|
345
388
|
before do
|
346
389
|
stub_request(:get, 'http://id.loc.gov/authorities/names/n79021164')
|
347
|
-
|
390
|
+
.to_return(status: 200, body: webmock_fixture('loc_n79021164.nt'), headers: { 'Content-Type' => 'application/n-triples' })
|
348
391
|
end
|
349
392
|
|
350
393
|
context 'as false' do
|
data/spec/ldpath_spec.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
require 'pp'
|
3
5
|
describe Ldpath::Transform do
|
@@ -98,7 +100,7 @@ describe Ldpath::Transform do
|
|
98
100
|
selector = actual.first.selector
|
99
101
|
expect(selector).to be_a_kind_of Ldpath::RecursivePathSelector
|
100
102
|
expect(selector.property.property).to eq RDF::URI.new("info:a")
|
101
|
-
expect(selector.repeat).to eq 0..Ldpath::Transform::
|
103
|
+
expect(selector.repeat).to eq 0..Ldpath::Transform::INFINITY
|
102
104
|
end
|
103
105
|
|
104
106
|
it "is a 1-to-infinity matcher" do
|
@@ -107,7 +109,7 @@ describe Ldpath::Transform do
|
|
107
109
|
selector = actual.first.selector
|
108
110
|
expect(selector).to be_a_kind_of Ldpath::RecursivePathSelector
|
109
111
|
expect(selector.property.property).to eq RDF::URI.new("info:a")
|
110
|
-
expect(selector.repeat).to eq 1..Ldpath::Transform::
|
112
|
+
expect(selector.repeat).to eq 1..Ldpath::Transform::INFINITY
|
111
113
|
end
|
112
114
|
|
113
115
|
it "is a 0 to 5 matcher" do
|
@@ -134,7 +136,7 @@ describe Ldpath::Transform do
|
|
134
136
|
selector = actual.first.selector
|
135
137
|
expect(selector).to be_a_kind_of Ldpath::RecursivePathSelector
|
136
138
|
expect(selector.property.property).to eq RDF::URI.new("info:a")
|
137
|
-
expect(selector.repeat).to eq 2..Ldpath::Transform::
|
139
|
+
expect(selector.repeat).to eq 2..Ldpath::Transform::INFINITY
|
138
140
|
end
|
139
141
|
end
|
140
142
|
|
data/spec/spec_helper.rb
CHANGED
@@ -1,30 +1,14 @@
|
|
1
|
-
|
2
|
-
require 'simplecov'
|
3
|
-
SimpleCov.start
|
1
|
+
# frozen_string_literal: true
|
4
2
|
|
3
|
+
$LOAD_PATH.unshift File.expand_path('../lib', __dir__)
|
5
4
|
require 'ldpath'
|
6
5
|
require 'rdf/reasoner'
|
7
6
|
require 'webmock/rspec'
|
8
|
-
|
9
|
-
require 'simplecov'
|
10
|
-
require 'coveralls'
|
11
7
|
require 'byebug' unless ENV['TRAVIS']
|
12
8
|
|
13
9
|
RDF::Reasoner.apply(:rdfs)
|
14
10
|
RDF::Reasoner.apply(:owl)
|
15
11
|
|
16
|
-
SimpleCov.formatter = Coveralls::SimpleCov::Formatter
|
17
|
-
SimpleCov.start('rails') do
|
18
|
-
add_filter '/.internal_test_app'
|
19
|
-
add_filter '/lib/generators'
|
20
|
-
add_filter '/spec'
|
21
|
-
add_filter '/tasks'
|
22
|
-
add_filter '/lib/qa/version.rb'
|
23
|
-
add_filter '/lib/qa/engine.rb'
|
24
|
-
end
|
25
|
-
SimpleCov.command_name 'spec'
|
26
|
-
Coveralls.wear!
|
27
|
-
|
28
12
|
def webmock_fixture(fixture)
|
29
13
|
File.new File.expand_path(File.join("../fixtures", fixture), __FILE__)
|
30
14
|
end
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ldpath
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Beer
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-06-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: nokogiri
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.8'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.8'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: parslet
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -25,33 +39,47 @@ dependencies:
|
|
25
39
|
- !ruby/object:Gem::Version
|
26
40
|
version: '0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
42
|
+
name: rdf
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
30
44
|
requirements:
|
31
45
|
- - "~>"
|
32
46
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
47
|
+
version: '3.0'
|
34
48
|
type: :runtime
|
35
49
|
prerelease: false
|
36
50
|
version_requirements: !ruby/object:Gem::Requirement
|
37
51
|
requirements:
|
38
52
|
- - "~>"
|
39
53
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
54
|
+
version: '3.0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
56
|
+
name: rdf-vocab
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
44
58
|
requirements:
|
45
59
|
- - "~>"
|
46
60
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
61
|
+
version: '3.0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '3.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: bixby
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '5.0'
|
48
76
|
type: :development
|
49
77
|
prerelease: false
|
50
78
|
version_requirements: !ruby/object:Gem::Requirement
|
51
79
|
requirements:
|
52
80
|
- - "~>"
|
53
81
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
82
|
+
version: '5.0'
|
55
83
|
- !ruby/object:Gem::Dependency
|
56
84
|
name: byebug
|
57
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -81,7 +109,7 @@ dependencies:
|
|
81
109
|
- !ruby/object:Gem::Version
|
82
110
|
version: '0'
|
83
111
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
112
|
+
name: rdf-reasoner
|
85
113
|
requirement: !ruby/object:Gem::Requirement
|
86
114
|
requirements:
|
87
115
|
- - ">="
|
@@ -95,7 +123,7 @@ dependencies:
|
|
95
123
|
- !ruby/object:Gem::Version
|
96
124
|
version: '0'
|
97
125
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
126
|
+
name: rspec
|
99
127
|
requirement: !ruby/object:Gem::Requirement
|
100
128
|
requirements:
|
101
129
|
- - ">="
|
@@ -109,7 +137,7 @@ dependencies:
|
|
109
137
|
- !ruby/object:Gem::Version
|
110
138
|
version: '0'
|
111
139
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
140
|
+
name: rspec_junit_formatter
|
113
141
|
requirement: !ruby/object:Gem::Requirement
|
114
142
|
requirements:
|
115
143
|
- - ">="
|
@@ -123,7 +151,7 @@ dependencies:
|
|
123
151
|
- !ruby/object:Gem::Version
|
124
152
|
version: '0'
|
125
153
|
- !ruby/object:Gem::Dependency
|
126
|
-
name: rubocop
|
154
|
+
name: rubocop-rake
|
127
155
|
requirement: !ruby/object:Gem::Requirement
|
128
156
|
requirements:
|
129
157
|
- - ">="
|
@@ -150,7 +178,7 @@ dependencies:
|
|
150
178
|
- - ">="
|
151
179
|
- !ruby/object:Gem::Version
|
152
180
|
version: '0'
|
153
|
-
description:
|
181
|
+
description:
|
154
182
|
email:
|
155
183
|
- cabeer@stanford.edu
|
156
184
|
executables:
|
@@ -158,6 +186,7 @@ executables:
|
|
158
186
|
extensions: []
|
159
187
|
extra_rdoc_files: []
|
160
188
|
files:
|
189
|
+
- ".circleci/config.yml"
|
161
190
|
- ".gitignore"
|
162
191
|
- ".rspec"
|
163
192
|
- ".rubocop.yml"
|
@@ -176,6 +205,10 @@ files:
|
|
176
205
|
- lib/ldpath.rb
|
177
206
|
- lib/ldpath/field_mapping.rb
|
178
207
|
- lib/ldpath/functions.rb
|
208
|
+
- lib/ldpath/loaders.rb
|
209
|
+
- lib/ldpath/loaders/direct.rb
|
210
|
+
- lib/ldpath/loaders/graph.rb
|
211
|
+
- lib/ldpath/loaders/linked_data_fragment.rb
|
179
212
|
- lib/ldpath/parser.rb
|
180
213
|
- lib/ldpath/program.rb
|
181
214
|
- lib/ldpath/result.rb
|
@@ -198,7 +231,7 @@ homepage: https://github.com/samvera-labs/ldpath
|
|
198
231
|
licenses:
|
199
232
|
- Apache 2
|
200
233
|
metadata: {}
|
201
|
-
post_install_message:
|
234
|
+
post_install_message:
|
202
235
|
rdoc_options: []
|
203
236
|
require_paths:
|
204
237
|
- lib
|
@@ -206,16 +239,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
206
239
|
requirements:
|
207
240
|
- - ">="
|
208
241
|
- !ruby/object:Gem::Version
|
209
|
-
version:
|
242
|
+
version: 2.7.5
|
210
243
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
211
244
|
requirements:
|
212
245
|
- - ">="
|
213
246
|
- !ruby/object:Gem::Version
|
214
247
|
version: '0'
|
215
248
|
requirements: []
|
216
|
-
|
217
|
-
|
218
|
-
signing_key:
|
249
|
+
rubygems_version: 3.2.3
|
250
|
+
signing_key:
|
219
251
|
specification_version: 4
|
220
252
|
summary: Ruby implementation of LDPath
|
221
253
|
test_files:
|