ldpath 1.0.0 → 1.2.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 +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:
|