json-ld 1.1.8 → 1.1.9
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 +4 -0
- data/VERSION +1 -1
- data/lib/json/ld/api.rb +92 -63
- data/lib/json/ld/context.rb +2 -2
- data/lib/json/ld/expand.rb +1 -1
- data/lib/json/ld/extensions.rb +0 -33
- data/lib/json/ld/flatten.rb +99 -150
- data/lib/json/ld/format.rb +3 -1
- data/lib/json/ld/frame.rb +235 -222
- data/lib/json/ld/reader.rb +8 -10
- data/lib/json/ld/utils.rb +104 -4
- data/lib/json/ld/writer.rb +0 -16
- data/spec/api_spec.rb +14 -9
- data/spec/format_spec.rb +7 -9
- data/spec/reader_spec.rb +12 -9
- data/spec/spec_helper.rb +12 -5
- data/spec/streaming_writer_spec.rb +2 -4
- data/spec/suite_from_rdf_spec.rb +1 -0
- data/spec/suite_helper.rb +18 -18
- data/spec/writer_spec.rb +3 -4
- metadata +38 -24
data/lib/json/ld/reader.rb
CHANGED
@@ -6,12 +6,6 @@ module JSON::LD
|
|
6
6
|
# @author [Gregg Kellogg](http://greggkellogg.net/)
|
7
7
|
class Reader < RDF::Reader
|
8
8
|
format Format
|
9
|
-
|
10
|
-
##
|
11
|
-
# Override normal symbol generation
|
12
|
-
def self.to_sym
|
13
|
-
:jsonld
|
14
|
-
end
|
15
9
|
|
16
10
|
##
|
17
11
|
# Initializes the RDF/JSON reader instance.
|
@@ -29,12 +23,14 @@ module JSON::LD
|
|
29
23
|
@options[:base] ||= base_uri.to_s if base_uri
|
30
24
|
begin
|
31
25
|
# Trim non-JSON stuff in script.
|
32
|
-
|
33
|
-
|
34
|
-
|
26
|
+
@doc = if input.respond_to?(:read)
|
27
|
+
input
|
28
|
+
else
|
29
|
+
StringIO.new(input.to_s.sub(%r(\A[^{\[]*)m, '').sub(%r([^}\]]*\Z)m, ''))
|
30
|
+
end
|
35
31
|
rescue JSON::ParserError => e
|
36
32
|
raise RDF::ReaderError, "Failed to parse input document: #{e.message}" if validate?
|
37
|
-
@doc =
|
33
|
+
@doc = StringIO.new("{}")
|
38
34
|
end
|
39
35
|
|
40
36
|
if block_given?
|
@@ -51,6 +47,8 @@ module JSON::LD
|
|
51
47
|
# @see RDF::Reader#each_statement
|
52
48
|
def each_statement(&block)
|
53
49
|
JSON::LD::API.toRdf(@doc, @options, &block)
|
50
|
+
rescue ::JSON::LD::JsonLdError => e
|
51
|
+
raise RDF::ReaderError, e.message
|
54
52
|
end
|
55
53
|
|
56
54
|
##
|
data/lib/json/ld/utils.rb
CHANGED
@@ -10,7 +10,7 @@ module JSON::LD
|
|
10
10
|
def node?(value)
|
11
11
|
value.is_a?(Hash) &&
|
12
12
|
(value.keys & %w(@value @list @set)).empty? &&
|
13
|
-
|
13
|
+
(value.length > 1 || !value.has_key?('@id'))
|
14
14
|
end
|
15
15
|
|
16
16
|
##
|
@@ -78,6 +78,100 @@ module JSON::LD
|
|
78
78
|
end
|
79
79
|
end
|
80
80
|
|
81
|
+
##
|
82
|
+
# Compares two JSON-LD values for equality. Two JSON-LD values will be
|
83
|
+
# considered equal if:
|
84
|
+
#
|
85
|
+
# 1. They are both primitives of the same type and value.
|
86
|
+
# 2. They are both @values with the same @value, @type, @language,
|
87
|
+
# and @index, OR
|
88
|
+
# 3. They both have @ids that are the same.
|
89
|
+
#
|
90
|
+
# @param [Object] v1 the first value.
|
91
|
+
# @param [Object] v2 the second value.
|
92
|
+
#
|
93
|
+
# @return [Boolean] v1 and v2 are considered equal
|
94
|
+
def compare_values(v1, v2)
|
95
|
+
case
|
96
|
+
when node?(v1) && node?(v2) then v1['@id'] && v1['@id'] == v2['@id']
|
97
|
+
when value?(v1) && value?(v2)
|
98
|
+
v1['@value'] == v2['@value'] &&
|
99
|
+
v1['@type'] == v2['@type'] &&
|
100
|
+
v1['@language'] == v2['@language'] &&
|
101
|
+
v1['@index'] == v2['@index']
|
102
|
+
else
|
103
|
+
v1 == v2
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
# Adds a value to a subject. If the value is an array, all values in the
|
108
|
+
# array will be added.
|
109
|
+
#
|
110
|
+
# @param [Hash] subject the hash to add the value to.
|
111
|
+
# @param [String] property the property that relates the value to the subject.
|
112
|
+
# @param [Object] value the value to add.
|
113
|
+
# @param [Hash{Symbol => Object}] options
|
114
|
+
# @option options [Boolean] :property_is_array
|
115
|
+
# true if the property is always (false)
|
116
|
+
# an array, false if not.
|
117
|
+
# @option options [Boolean] :allow_duplicate (true)
|
118
|
+
# true to allow duplicates, false not to (uses
|
119
|
+
# a simple shallow comparison of subject ID or value).
|
120
|
+
def add_value(subject, property, value, options = {})
|
121
|
+
options = {property_is_array: false, allow_duplicate: true}.merge(options)
|
122
|
+
|
123
|
+
if value.is_a?(Array)
|
124
|
+
subject[property] = [] if value.empty? && options[:property_is_array]
|
125
|
+
value.each {|v| add_value(subject, property, v, options)}
|
126
|
+
elsif subject[property]
|
127
|
+
# check if subject already has value if duplicates not allowed
|
128
|
+
_has_value = !options[:allow_duplicate] && has_value(subject, property, value)
|
129
|
+
|
130
|
+
# make property an array if value not present or always an array
|
131
|
+
if !subject[property].is_a?(Array) && (!_has_value || options[:property_is_array])
|
132
|
+
subject[property] = [subject[property]]
|
133
|
+
end
|
134
|
+
subject[property] << value unless _has_value
|
135
|
+
else
|
136
|
+
subject[property] = options[:property_is_array] ? [value] : value
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
# Returns True if the given subject has the given property.
|
141
|
+
#
|
142
|
+
# @param subject the subject to check.
|
143
|
+
# @param property the property to look for.
|
144
|
+
#
|
145
|
+
# @return [Boolean] true if the subject has the given property, false if not.
|
146
|
+
def has_property(subject, property)
|
147
|
+
return false unless value = subject[property]
|
148
|
+
!value.is_a?(Array) || !value.empty?
|
149
|
+
end
|
150
|
+
|
151
|
+
# Determines if the given value is a property of the given subject.
|
152
|
+
#
|
153
|
+
# @param [Hash] subject the subject to check.
|
154
|
+
# @param [String] property the property to check.
|
155
|
+
# @param [Object] value the value to check.
|
156
|
+
#
|
157
|
+
# @return [Boolean] true if the value exists, false if not.
|
158
|
+
def has_value(subject, property, value)
|
159
|
+
if has_property(subject, property)
|
160
|
+
val = subject[property]
|
161
|
+
is_list = list?(val)
|
162
|
+
if val.is_a?(Array) || is_list
|
163
|
+
val = val['@list'] if is_list
|
164
|
+
val.any? {|v| compare_values(value, v)}
|
165
|
+
elsif !val.is_a?(Array)
|
166
|
+
compare_values(value, val)
|
167
|
+
else
|
168
|
+
false
|
169
|
+
end
|
170
|
+
else
|
171
|
+
false
|
172
|
+
end
|
173
|
+
end
|
174
|
+
|
81
175
|
private
|
82
176
|
|
83
177
|
# Merge the last value into an array based for the specified key if hash is not null and value is not already in that array
|
@@ -125,8 +219,14 @@ module JSON::LD
|
|
125
219
|
list = args
|
126
220
|
list << yield if block_given?
|
127
221
|
message = " " * depth * 2 + (list.empty? ? "" : list.join(": "))
|
128
|
-
|
129
|
-
|
222
|
+
case @options[:debug]
|
223
|
+
when Array
|
224
|
+
@options[:debug] << message
|
225
|
+
when TrueClass
|
226
|
+
$stderr.puts message
|
227
|
+
else
|
228
|
+
$stderr.puts message if JSON::LD::debug?
|
229
|
+
end
|
130
230
|
end
|
131
231
|
|
132
232
|
# Increase depth around a method invocation
|
@@ -194,7 +294,7 @@ module JSON::LD
|
|
194
294
|
# @return [String]
|
195
295
|
def get_sym(old = "")
|
196
296
|
old = old.to_s.sub(/_:/, '')
|
197
|
-
if old && self.has_key?(old)
|
297
|
+
if !old.empty? && self.has_key?(old)
|
198
298
|
self[old]
|
199
299
|
elsif !old.empty?
|
200
300
|
@num += 1
|
data/lib/json/ld/writer.rb
CHANGED
@@ -64,12 +64,6 @@ module JSON::LD
|
|
64
64
|
# @return [Context] context used to load and administer contexts
|
65
65
|
attr_reader :context
|
66
66
|
|
67
|
-
##
|
68
|
-
# Override normal symbol generation
|
69
|
-
def self.to_sym
|
70
|
-
:jsonld
|
71
|
-
end
|
72
|
-
|
73
67
|
##
|
74
68
|
# Initializes the RDF-LD writer instance.
|
75
69
|
#
|
@@ -114,16 +108,6 @@ module JSON::LD
|
|
114
108
|
end
|
115
109
|
end
|
116
110
|
|
117
|
-
##
|
118
|
-
# Write whole graph
|
119
|
-
#
|
120
|
-
# @param [Graph] graph
|
121
|
-
# @return [void]
|
122
|
-
def write_graph(graph)
|
123
|
-
debug {"Add graph #{graph.inspect}"}
|
124
|
-
@repo = graph
|
125
|
-
end
|
126
|
-
|
127
111
|
##
|
128
112
|
# Adds a statement to be serialized
|
129
113
|
# @param [RDF::Statement] statement
|
data/spec/api_spec.rb
CHANGED
@@ -25,9 +25,9 @@ describe JSON::LD::API do
|
|
25
25
|
end
|
26
26
|
|
27
27
|
it "loads document with loader and loads context" do
|
28
|
-
expect(
|
29
|
-
expect(
|
30
|
-
|
28
|
+
expect(described_class).to receive(:documentLoader).with("http://example.com/foo", anything).and_return(remote_doc)
|
29
|
+
expect(described_class).to receive(:documentLoader).with("http://example.com/context", anything).and_yield(context)
|
30
|
+
described_class.new("http://example.com/foo", nil)
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
@@ -52,12 +52,18 @@ describe JSON::LD::API do
|
|
52
52
|
end
|
53
53
|
|
54
54
|
it "processes document and retrieves linked context" do
|
55
|
-
expect(
|
56
|
-
|
55
|
+
expect(described_class).to receive(:documentLoader).with("http://example.com/context", anything).and_yield(context)
|
56
|
+
described_class.new(remote_doc, nil)
|
57
57
|
end
|
58
58
|
end
|
59
59
|
end
|
60
60
|
|
61
|
+
context "when validating", pending: ("JRuby support for jsonlint" if RUBY_ENGINE == "jruby") do
|
62
|
+
it "detects invalid JSON" do
|
63
|
+
expect {described_class.new(StringIO.new(%({"a": "b", "a": "c"})), nil, validate: true)}.to raise_error(JSON::LD::JsonLdError::LoadingDocumentFailed)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
61
67
|
context "Test Files" do
|
62
68
|
Dir.glob(File.expand_path(File.join(File.dirname(__FILE__), 'test-files/*-input.*'))) do |filename|
|
63
69
|
test = File.basename(filename).sub(/-input\..*$/, '')
|
@@ -66,24 +72,23 @@ describe JSON::LD::API do
|
|
66
72
|
compacted = filename.sub(/-input\..*$/, '-compacted.json')
|
67
73
|
context = filename.sub(/-input\..*$/, '-context.json')
|
68
74
|
expanded = filename.sub(/-input\..*$/, '-expanded.json')
|
69
|
-
automatic = filename.sub(/-input\..*$/, '-automatic.json')
|
70
75
|
ttl = filename.sub(/-input\..*$/, '-rdf.ttl')
|
71
76
|
|
72
77
|
context test do
|
73
78
|
it "expands" do
|
74
79
|
options = {debug: @debug}
|
75
80
|
options[:expandContext] = File.open(context) if context
|
76
|
-
jld =
|
81
|
+
jld = described_class.expand(File.open(filename), options)
|
77
82
|
expect(jld).to produce(JSON.load(File.open(expanded)), @debug)
|
78
83
|
end if File.exist?(expanded)
|
79
84
|
|
80
85
|
it "compacts" do
|
81
|
-
jld =
|
86
|
+
jld = described_class.compact(File.open(filename), File.open(context), debug: @debug)
|
82
87
|
expect(jld).to produce(JSON.load(File.open(compacted)), @debug)
|
83
88
|
end if File.exist?(compacted) && File.exist?(context)
|
84
89
|
|
85
90
|
it "frame" do
|
86
|
-
jld =
|
91
|
+
jld = described_class.frame(File.open(filename), File.open(frame), debug: @debug)
|
87
92
|
expect(jld).to produce(JSON.load(File.open(framed)), @debug)
|
88
93
|
end if File.exist?(framed) && File.exist?(frame)
|
89
94
|
|
data/spec/format_spec.rb
CHANGED
@@ -4,12 +4,10 @@ require 'spec_helper'
|
|
4
4
|
require 'rdf/spec/format'
|
5
5
|
|
6
6
|
describe JSON::LD::Format do
|
7
|
-
|
8
|
-
|
7
|
+
it_behaves_like 'an RDF::Format' do
|
8
|
+
let(:format_class) {JSON::LD::Format}
|
9
9
|
end
|
10
10
|
|
11
|
-
include RDF_Format
|
12
|
-
|
13
11
|
describe ".for" do
|
14
12
|
formats = [
|
15
13
|
:jsonld,
|
@@ -20,7 +18,7 @@ describe JSON::LD::Format do
|
|
20
18
|
{content_type: 'application/x-ld+json'},
|
21
19
|
].each do |arg|
|
22
20
|
it "discovers with #{arg.inspect}" do
|
23
|
-
expect(RDF::Format.for(arg)).to eq
|
21
|
+
expect(RDF::Format.for(arg)).to eq described_class
|
24
22
|
end
|
25
23
|
end
|
26
24
|
|
@@ -31,7 +29,7 @@ describe JSON::LD::Format do
|
|
31
29
|
type: %({\n"@type": {),
|
32
30
|
}.each do |sym, str|
|
33
31
|
it "detects #{sym}" do
|
34
|
-
expect(
|
32
|
+
expect(described_class.for {str}).to eq described_class
|
35
33
|
end
|
36
34
|
end
|
37
35
|
|
@@ -41,7 +39,7 @@ describe JSON::LD::Format do
|
|
41
39
|
end
|
42
40
|
|
43
41
|
describe "#to_sym" do
|
44
|
-
specify {expect(
|
42
|
+
specify {expect(described_class.to_sym).to eq :jsonld}
|
45
43
|
end
|
46
44
|
|
47
45
|
describe ".detect" do
|
@@ -49,7 +47,7 @@ describe JSON::LD::Format do
|
|
49
47
|
jsonld: '{"@context" => "foo"}',
|
50
48
|
}.each do |sym, str|
|
51
49
|
it "detects #{sym}" do
|
52
|
-
expect(
|
50
|
+
expect(described_class.detect(str)).to be_truthy
|
53
51
|
end
|
54
52
|
end
|
55
53
|
|
@@ -64,7 +62,7 @@ describe JSON::LD::Format do
|
|
64
62
|
turtle: "@prefix foo: <bar> .\n foo:a foo:b <c> .",
|
65
63
|
}.each do |sym, str|
|
66
64
|
it "does not detect #{sym}" do
|
67
|
-
expect(
|
65
|
+
expect(described_class.detect(str)).to be_falsey
|
68
66
|
end
|
69
67
|
end
|
70
68
|
end
|
data/spec/reader_spec.rb
CHANGED
@@ -8,16 +8,11 @@ describe JSON::LD::Reader do
|
|
8
8
|
let!(:doap_nt) {File.expand_path("../../etc/doap.nt", __FILE__)}
|
9
9
|
let!(:doap_count) {File.open(doap_nt).each_line.to_a.length}
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
11
|
+
it_behaves_like 'an RDF::Reader' do
|
12
|
+
let(:reader_input) {File.read(doap)}
|
13
|
+
let(:reader) {JSON::LD::Reader.new(reader_input)}
|
14
|
+
let(:reader_count) {doap_count}
|
15
15
|
end
|
16
|
-
before :each do
|
17
|
-
@reader = JSON::LD::Reader.new(StringIO.new(""))
|
18
|
-
end
|
19
|
-
|
20
|
-
include RDF_Reader
|
21
16
|
|
22
17
|
describe ".for" do
|
23
18
|
formats = [
|
@@ -34,6 +29,14 @@ describe JSON::LD::Reader do
|
|
34
29
|
end
|
35
30
|
end
|
36
31
|
|
32
|
+
context "when validating", pending: ("JRuby support for jsonlint" if RUBY_ENGINE == "jruby") do
|
33
|
+
it "detects invalid JSON" do
|
34
|
+
expect do |b|
|
35
|
+
described_class.new(StringIO.new(%({"a": "b", "a": "c"})), validate: true).each_statement(&b)
|
36
|
+
end.to raise_error(RDF::ReaderError)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
37
40
|
context :interface do
|
38
41
|
{
|
39
42
|
plain: %q({
|
data/spec/spec_helper.rb
CHANGED
@@ -5,7 +5,6 @@ require "bundler/setup"
|
|
5
5
|
require 'rspec'
|
6
6
|
require 'rdf'
|
7
7
|
require 'rdf/isomorphic'
|
8
|
-
require 'json/ld'
|
9
8
|
require 'rdf/nquads'
|
10
9
|
require 'rdf/turtle'
|
11
10
|
require 'rdf/trig'
|
@@ -15,6 +14,17 @@ require 'yaml'
|
|
15
14
|
require 'restclient/components'
|
16
15
|
require 'rack/cache'
|
17
16
|
require 'matchers'
|
17
|
+
require 'simplecov'
|
18
|
+
require 'coveralls'
|
19
|
+
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
20
|
+
SimpleCov::Formatter::HTMLFormatter,
|
21
|
+
Coveralls::SimpleCov::Formatter
|
22
|
+
]
|
23
|
+
SimpleCov.start do
|
24
|
+
add_filter "/spec/"
|
25
|
+
end
|
26
|
+
|
27
|
+
require 'json/ld'
|
18
28
|
|
19
29
|
JSON_STATE = JSON::State.new(
|
20
30
|
indent: " ",
|
@@ -36,16 +46,13 @@ RestClient.enable Rack::Cache,
|
|
36
46
|
::RSpec.configure do |c|
|
37
47
|
c.filter_run focus: true
|
38
48
|
c.run_all_when_everything_filtered = true
|
39
|
-
c.exclusion_filter = {
|
40
|
-
ruby: lambda { |version| !(RUBY_VERSION.to_s =~ /^#{version.to_s}/) },
|
41
|
-
}
|
42
49
|
c.include(RDF::Spec::Matchers)
|
43
50
|
end
|
44
51
|
|
45
52
|
# Heuristically detect the input stream
|
46
53
|
def detect_format(stream)
|
47
54
|
# Got to look into the file to see
|
48
|
-
if stream.
|
55
|
+
if stream.respond_to?(:rewind) && stream.respond_to?(:read)
|
49
56
|
stream.rewind
|
50
57
|
string = stream.read(1000)
|
51
58
|
stream.rewind
|
@@ -5,12 +5,10 @@ require 'rdf/spec/writer'
|
|
5
5
|
require 'json/ld/streaming_writer'
|
6
6
|
|
7
7
|
describe JSON::LD::StreamingWriter do
|
8
|
-
|
9
|
-
|
8
|
+
it_behaves_like 'an RDF::Writer' do
|
9
|
+
let(:writer) {JSON::LD::Writer.new(StringIO.new(""), stream: true)}
|
10
10
|
end
|
11
11
|
|
12
|
-
include RDF_Writer
|
13
|
-
|
14
12
|
context "simple tests" do
|
15
13
|
it "should use full URIs without base" do
|
16
14
|
input = %(<http://a/b> <http://a/c> <http://a/d> .)
|
data/spec/suite_from_rdf_spec.rb
CHANGED
@@ -9,6 +9,7 @@ describe JSON::LD do
|
|
9
9
|
describe m.name do
|
10
10
|
m.entries.each do |t|
|
11
11
|
specify "#{t.property('input')}: #{t.name}#{' (negative test)' unless t.positiveTest?}" do
|
12
|
+
pending "Shared list BNode in different graphs" if t.property('input').include?("fromRdf-0021")
|
12
13
|
t.run self
|
13
14
|
end
|
14
15
|
end
|
data/spec/suite_helper.rb
CHANGED
@@ -85,7 +85,7 @@ module Fixtures
|
|
85
85
|
|
86
86
|
# Execute the test
|
87
87
|
def run(rspec_example = nil)
|
88
|
-
@debug = ["test: #{inspect}", "source: #{input}"]
|
88
|
+
debug = @debug = ["test: #{inspect}", "source: #{input}"]
|
89
89
|
@debug << "context: #{context}" if context_loc
|
90
90
|
@debug << "options: #{options.inspect}" unless options.empty?
|
91
91
|
@debug << "frame: #{frame}" if frame_loc
|
@@ -97,23 +97,23 @@ module Fixtures
|
|
97
97
|
end
|
98
98
|
|
99
99
|
if positiveTest?
|
100
|
-
debug << "expected: #{expect rescue nil}" if expect_loc
|
100
|
+
@debug << "expected: #{expect rescue nil}" if expect_loc
|
101
101
|
begin
|
102
102
|
result = case testType
|
103
103
|
when "jld:ExpandTest"
|
104
|
-
JSON::LD::API.expand(input_loc, options.merge(debug:
|
104
|
+
JSON::LD::API.expand(input_loc, options.merge(debug: debug))
|
105
105
|
when "jld:CompactTest"
|
106
|
-
JSON::LD::API.compact(input_loc, context_json['@context'], options.merge(debug:
|
106
|
+
JSON::LD::API.compact(input_loc, context_json['@context'], options.merge(debug: debug))
|
107
107
|
when "jld:FlattenTest"
|
108
|
-
JSON::LD::API.flatten(input_loc, context_loc, options.merge(debug:
|
108
|
+
JSON::LD::API.flatten(input_loc, context_loc, options.merge(debug: debug))
|
109
109
|
when "jld:FrameTest"
|
110
|
-
JSON::LD::API.frame(input_loc, frame_loc, options.merge(debug:
|
110
|
+
JSON::LD::API.frame(input_loc, frame_loc, options.merge(debug: debug))
|
111
111
|
when "jld:FromRDFTest"
|
112
112
|
repo = RDF::Repository.load(input_loc, format: :nquads)
|
113
113
|
@debug << "repo: #{repo.dump(id == '#t0012' ? :nquads : :trig)}"
|
114
|
-
JSON::LD::API.fromRdf(repo, options.merge(debug:
|
114
|
+
JSON::LD::API.fromRdf(repo, options.merge(debug: debug))
|
115
115
|
when "jld:ToRDFTest"
|
116
|
-
JSON::LD::API.toRdf(input_loc, options.merge(debug:
|
116
|
+
JSON::LD::API.toRdf(input_loc, options.merge(debug: debug)).map do |statement|
|
117
117
|
to_quad(statement)
|
118
118
|
end
|
119
119
|
else
|
@@ -123,12 +123,12 @@ module Fixtures
|
|
123
123
|
if testType == "jld:ToRDFTest"
|
124
124
|
expected = expect
|
125
125
|
rspec_example.instance_eval {
|
126
|
-
expect(result.sort.join("")).to produce(expected,
|
126
|
+
expect(result.sort.join("")).to produce(expected, debug)
|
127
127
|
}
|
128
128
|
else
|
129
129
|
expected = JSON.load(expect)
|
130
130
|
rspec_example.instance_eval {
|
131
|
-
expect(result).to produce(expected,
|
131
|
+
expect(result).to produce(expected, debug)
|
132
132
|
}
|
133
133
|
end
|
134
134
|
else
|
@@ -142,26 +142,26 @@ module Fixtures
|
|
142
142
|
fail("Invalid Frame: #{e.message}")
|
143
143
|
end
|
144
144
|
else
|
145
|
-
|
145
|
+
debug << "expected: #{property('expect')}" if property('expect')
|
146
146
|
t = self
|
147
147
|
rspec_example.instance_eval do
|
148
148
|
if t.evaluationTest?
|
149
149
|
expect do
|
150
150
|
case t.testType
|
151
151
|
when "jld:ExpandTest"
|
152
|
-
JSON::LD::API.expand(t.input_loc, options.merge(debug:
|
152
|
+
JSON::LD::API.expand(t.input_loc, options.merge(debug: debug))
|
153
153
|
when "jld:CompactTest"
|
154
|
-
JSON::LD::API.compact(t.input_loc, t.context_json['@context'], options.merge(debug:
|
154
|
+
JSON::LD::API.compact(t.input_loc, t.context_json['@context'], options.merge(debug: debug))
|
155
155
|
when "jld:FlattenTest"
|
156
|
-
JSON::LD::API.flatten(t.input_loc, t.context_loc, options.merge(debug:
|
156
|
+
JSON::LD::API.flatten(t.input_loc, t.context_loc, options.merge(debug: debug))
|
157
157
|
when "jld:FrameTest"
|
158
|
-
JSON::LD::API.frame(t.input_loc, t.frame_loc, options.merge(debug:
|
158
|
+
JSON::LD::API.frame(t.input_loc, t.frame_loc, options.merge(debug: debug))
|
159
159
|
when "jld:FromRDFTest"
|
160
160
|
repo = RDF::Repository.load(t.input_loc)
|
161
|
-
|
162
|
-
JSON::LD::API.fromRdf(repo, options.merge(debug:
|
161
|
+
debug << "repo: #{repo.dump(id == '#t0012' ? :nquads : :trig)}"
|
162
|
+
JSON::LD::API.fromRdf(repo, options.merge(debug: debug))
|
163
163
|
when "jld:ToRDFTest"
|
164
|
-
JSON::LD::API.toRdf(t.input_loc, options.merge(debug:
|
164
|
+
JSON::LD::API.toRdf(t.input_loc, options.merge(debug: debug)).map do |statement|
|
165
165
|
t.to_quad(statement)
|
166
166
|
end
|
167
167
|
else
|