json-ld 1.0.7 → 1.0.8
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 +8 -8
- data/README.md +2 -2
- data/VERSION +1 -1
- data/bin/jsonld +1 -1
- data/lib/json/ld/api.rb +13 -7
- data/lib/json/ld/flatten.rb +8 -5
- data/lib/json/ld/format.rb +6 -0
- data/lib/json/ld/from_rdf.rb +1 -1
- data/lib/json/ld/reader.rb +1 -1
- data/lib/json/ld/writer.rb +1 -1
- data/spec/api_spec.rb +1 -1
- data/spec/flatten_spec.rb +29 -0
- data/spec/from_rdf_spec.rb +2 -2
- data/spec/suite_helper.rb +4 -4
- data/spec/to_rdf_spec.rb +7 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MjNiZjRiMzMwODgxOTgwNjdjMjFjMWNkNjY1ZDVlNDk0ODAzYjQ3YQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZWFkOWE0MDU0ZTc0YzIyYzdkZGEwNDg0YTgxZjg1ZTc0MWU3MTYzMA==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MDY1MDAxMDMzMmMzYjg4MzA2ODJjYTAxYjdlNmRjYzdkNGVlYTY3YTU1MTI4
|
10
|
+
NTMwMjQ3ZjYyNDIzNTkyYzUzMTkzNDJlMWI2MzUwZTY5NGE0NTczYTZiMjVh
|
11
|
+
YWE3MjQ1MzA0NjVmYmYxMGQ4NjJjYzQ0ZWVjOTg4YmEwOTJmZWY=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MDNhODA1ODViOTlmZTVjZGUxYjBmYmM4NTg1ZGNkNjBhNjliMjA1MzNmMDVm
|
14
|
+
NTdlZjNmZGExZjkwNThmNzU0YWIwZTExMDIzODVkMjI1M2Q0YzNjYTAzNzU3
|
15
|
+
MDA0NmI5NjYyYWZiNWM0ZGY4OWE4ZTQ4MDBjODEzZjVmYzU2MDc=
|
data/README.md
CHANGED
@@ -160,7 +160,7 @@ Install with `gem install json-ld`
|
|
160
160
|
"foaf:nick": { "@list": [ "joe", "bob", "jaybe" ] }
|
161
161
|
})
|
162
162
|
|
163
|
-
graph = RDF::Graph.new << JSON::LD::API.
|
163
|
+
graph = RDF::Graph.new << JSON::LD::API.toRdf(input)
|
164
164
|
|
165
165
|
require 'rdf/turtle'
|
166
166
|
graph.dump(:ttl, :prefixes => {:foaf => "http://xmlns.com/foaf/0.1/"})
|
@@ -190,7 +190,7 @@ Install with `gem install json-ld`
|
|
190
190
|
})
|
191
191
|
|
192
192
|
compacted = nil
|
193
|
-
JSON::LD::API::
|
193
|
+
JSON::LD::API::fromRdf(input) do |expanded|
|
194
194
|
compacted = JSON::LD::API.compact(expanded, context['@context'])
|
195
195
|
end
|
196
196
|
compacted =>
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.
|
1
|
+
1.0.8
|
data/bin/jsonld
CHANGED
@@ -20,7 +20,7 @@ def run(input, options)
|
|
20
20
|
if options[:format] == :jsonld && options[:input_format] != :jsonld
|
21
21
|
r = reader_class.new(input, options[:parser_options])
|
22
22
|
g = RDF::Repository.new << r
|
23
|
-
input = JSON::LD::API.
|
23
|
+
input = JSON::LD::API.fromRdf(g)
|
24
24
|
end
|
25
25
|
|
26
26
|
prefixes = {}
|
data/lib/json/ld/api.rb
CHANGED
@@ -363,7 +363,7 @@ module JSON::LD
|
|
363
363
|
# @return [Array<RDF::Statement>] if no block given
|
364
364
|
# @yield statement
|
365
365
|
# @yieldparam [RDF::Statement] statement
|
366
|
-
def self.
|
366
|
+
def self.toRdf(input, options = {}, &block)
|
367
367
|
results = []
|
368
368
|
results.extend(RDF::Enumerable)
|
369
369
|
|
@@ -373,21 +373,21 @@ module JSON::LD
|
|
373
373
|
API.new(expanded_input, nil, options) do
|
374
374
|
# 1) Perform the Expansion Algorithm on the JSON-LD input.
|
375
375
|
# This removes any existing context to allow the given context to be cleanly applied.
|
376
|
-
debug(".
|
376
|
+
debug(".toRdf") {"expanded input: #{expanded_input.to_json(JSON_STATE)}"}
|
377
377
|
|
378
378
|
# Generate _nodeMap_
|
379
379
|
node_map = Hash.ordered
|
380
380
|
node_map['@default'] = Hash.ordered
|
381
381
|
generate_node_map(expanded_input, node_map)
|
382
|
-
debug(".
|
382
|
+
debug(".toRdf") {"node map: #{node_map.to_json(JSON_STATE)}"}
|
383
383
|
|
384
384
|
# Start generating statements
|
385
385
|
node_map.each do |graph_name, graph|
|
386
386
|
context = as_resource(graph_name) unless graph_name == '@default'
|
387
|
-
debug(".
|
387
|
+
debug(".toRdf") {"context: #{context ? context.to_ntriples : 'null'}"}
|
388
388
|
# Drop results for graphs which are named with relative IRIs
|
389
389
|
if graph_name.is_a?(RDF::URI) && !graph_name.absolute
|
390
|
-
debug(".
|
390
|
+
debug(".toRdf") {"drop relative graph_name: #{statement.to_ntriples}"}
|
391
391
|
next
|
392
392
|
end
|
393
393
|
graph_to_rdf(graph).each do |statement|
|
@@ -404,7 +404,7 @@ module JSON::LD
|
|
404
404
|
end
|
405
405
|
end
|
406
406
|
if relative
|
407
|
-
debug(".
|
407
|
+
debug(".toRdf") {"drop statement with relative IRIs: #{statement.to_ntriples}"}
|
408
408
|
next
|
409
409
|
end
|
410
410
|
|
@@ -433,7 +433,7 @@ module JSON::LD
|
|
433
433
|
# The JSON-LD document in expanded form
|
434
434
|
# @return [Array<Hash>]
|
435
435
|
# The JSON-LD document in expanded form
|
436
|
-
def self.
|
436
|
+
def self.fromRdf(input, options = {}, &block)
|
437
437
|
options = {:useNativeTypes => false}.merge(options)
|
438
438
|
result = nil
|
439
439
|
|
@@ -526,6 +526,12 @@ module JSON::LD
|
|
526
526
|
end
|
527
527
|
end
|
528
528
|
|
529
|
+
# Add class method aliases for backwards compatibility
|
530
|
+
class << self
|
531
|
+
alias :toRDF :toRdf
|
532
|
+
alias :fromRDF :fromRdf
|
533
|
+
end
|
534
|
+
|
529
535
|
##
|
530
536
|
# A {RemoteDocument} is returned from a {documentLoader}.
|
531
537
|
class RemoteDocument
|
data/lib/json/ld/flatten.rb
CHANGED
@@ -25,6 +25,7 @@ module JSON::LD
|
|
25
25
|
list = nil)
|
26
26
|
depth do
|
27
27
|
debug("node_map") {"active_graph: #{active_graph}, element: #{element.inspect}"}
|
28
|
+
debug(" =>") {"active_subject: #{active_subject.inspect}, active_property: #{active_property.inspect}, list: #{list.inspect}"}
|
28
29
|
if element.is_a?(Array)
|
29
30
|
# If element is an array, process each entry in element recursively by passing item for element, node map, active graph, active subject, active property, and list.
|
30
31
|
element.map {|o|
|
@@ -90,7 +91,10 @@ module JSON::LD
|
|
90
91
|
graph[id] ||= {'@id' => id}
|
91
92
|
|
92
93
|
# If active property is not null, perform the following steps:
|
93
|
-
if
|
94
|
+
if node?(active_subject) || node_reference?(active_subject)
|
95
|
+
debug("node_map") {"active_subject is an object, merge into #{id}"}
|
96
|
+
merge_value(graph[id], active_property, active_subject)
|
97
|
+
elsif active_property
|
94
98
|
# Create a new JSON object reference consisting of a single member @id whose value is id.
|
95
99
|
reference = {'@id' => id}
|
96
100
|
|
@@ -125,13 +129,12 @@ module JSON::LD
|
|
125
129
|
element.delete('@reverse').each do |property, values|
|
126
130
|
values.each do |value|
|
127
131
|
debug("node_map") {"@reverse(#{id}): #{value.inspect}"}
|
128
|
-
# If value has a property member, append referenced node to its value; otherwise create a property member whose value is an array containing referenced node.
|
129
|
-
merge_value(value, property, {'@id' => id})
|
130
|
-
|
131
132
|
# Recursively invoke this algorithm passing value for element, node map, and active graph.
|
132
133
|
generate_node_map(value,
|
133
134
|
node_map,
|
134
|
-
active_graph
|
135
|
+
active_graph,
|
136
|
+
{'@id' => id},
|
137
|
+
property)
|
135
138
|
end
|
136
139
|
end
|
137
140
|
end
|
data/lib/json/ld/format.rb
CHANGED
data/lib/json/ld/from_rdf.rb
CHANGED
data/lib/json/ld/reader.rb
CHANGED
@@ -49,7 +49,7 @@ module JSON::LD
|
|
49
49
|
# @private
|
50
50
|
# @see RDF::Reader#each_statement
|
51
51
|
def each_statement(&block)
|
52
|
-
JSON::LD::API.
|
52
|
+
JSON::LD::API.toRdf(@doc, @options).each do |statement|
|
53
53
|
# If RDF version is 1.0, fold literals with xsd:string to be just simple literals
|
54
54
|
statement.object.datatype = nil if
|
55
55
|
RDF::VERSION.to_s < "1.1" &&
|
data/lib/json/ld/writer.rb
CHANGED
@@ -147,7 +147,7 @@ module JSON::LD
|
|
147
147
|
@debug = @options[:debug]
|
148
148
|
|
149
149
|
debug("writer") { "serialize #{@repo.count} statements, #{@options.inspect}"}
|
150
|
-
result = API.
|
150
|
+
result = API.fromRdf(@repo, @options)
|
151
151
|
|
152
152
|
# If we were provided a context, or prefixes, use them to compact the output
|
153
153
|
context = RDF::Util::File.open_file(@options[:context]) if @options[:context].is_a?(String)
|
data/spec/api_spec.rb
CHANGED
@@ -34,7 +34,7 @@ describe JSON::LD::API do
|
|
34
34
|
jld.should produce(JSON.load(File.open(framed)), @debug)
|
35
35
|
end if File.exist?(framed) && File.exist?(frame)
|
36
36
|
|
37
|
-
it "
|
37
|
+
it "toRdf" do
|
38
38
|
RDF::Repository.load(filename, :debug => @debug).should be_equivalent_graph(RDF::Repository.load(ttl), :trace => @debug)
|
39
39
|
end if File.exist?(ttl)
|
40
40
|
end
|
data/spec/flatten_spec.rb
CHANGED
@@ -181,6 +181,35 @@ describe JSON::LD::API do
|
|
181
181
|
}]
|
182
182
|
}),
|
183
183
|
:options => {}
|
184
|
+
},
|
185
|
+
"@reverse bnode issue (0045)" => {
|
186
|
+
:input => ::JSON.parse(%q{
|
187
|
+
{
|
188
|
+
"@context": {
|
189
|
+
"foo": "http://example.org/foo",
|
190
|
+
"bar": { "@reverse": "http://example.org/bar", "@type": "@id" }
|
191
|
+
},
|
192
|
+
"foo": "Foo",
|
193
|
+
"bar": [ "http://example.org/origin", "_:b0" ]
|
194
|
+
}
|
195
|
+
}),
|
196
|
+
:output => ::JSON.parse(%q{
|
197
|
+
[
|
198
|
+
{
|
199
|
+
"@id": "_:b0",
|
200
|
+
"http://example.org/foo": [ { "@value": "Foo" } ]
|
201
|
+
},
|
202
|
+
{
|
203
|
+
"@id": "_:b1",
|
204
|
+
"http://example.org/bar": [ { "@id": "_:b0" } ]
|
205
|
+
},
|
206
|
+
{
|
207
|
+
"@id": "http://example.org/origin",
|
208
|
+
"http://example.org/bar": [ { "@id": "_:b0" } ]
|
209
|
+
}
|
210
|
+
]
|
211
|
+
}),
|
212
|
+
:options => {}
|
184
213
|
}
|
185
214
|
}.each do |title, params|
|
186
215
|
it title do
|
data/spec/from_rdf_spec.rb
CHANGED
@@ -4,7 +4,7 @@ require 'spec_helper'
|
|
4
4
|
require 'rdf/spec/writer'
|
5
5
|
|
6
6
|
describe JSON::LD::API do
|
7
|
-
describe ".
|
7
|
+
describe ".fromRdf" do
|
8
8
|
context "simple tests" do
|
9
9
|
it "One subject IRI object" do
|
10
10
|
input = %(<http://a/b> <http://a/c> <http://a/d> .)
|
@@ -374,6 +374,6 @@ describe JSON::LD::API do
|
|
374
374
|
g = ntstr.is_a?(String) ? parse(ntstr, options) : ntstr
|
375
375
|
@debug << g.dump(:trig)
|
376
376
|
statements = g.each_statement.to_a
|
377
|
-
JSON::LD::API.
|
377
|
+
JSON::LD::API.fromRdf(statements, options.merge(:debug => @debug))
|
378
378
|
end
|
379
379
|
end
|
data/spec/suite_helper.rb
CHANGED
@@ -108,9 +108,9 @@ module Fixtures
|
|
108
108
|
when "jld:FromRDFTest"
|
109
109
|
repo = RDF::Repository.load(input_loc, :format => :nquads)
|
110
110
|
debug << "repo: #{repo.dump(id == '#t0012' ? :nquads : :trig)}"
|
111
|
-
JSON::LD::API.
|
111
|
+
JSON::LD::API.fromRdf(repo, options.merge(:debug => debug))
|
112
112
|
when "jld:ToRDFTest"
|
113
|
-
JSON::LD::API.
|
113
|
+
JSON::LD::API.toRdf(input_loc, options.merge(:debug => debug)).map do |statement|
|
114
114
|
to_quad(statement)
|
115
115
|
end
|
116
116
|
else
|
@@ -156,9 +156,9 @@ module Fixtures
|
|
156
156
|
when "jld:FromRDFTest"
|
157
157
|
repo = RDF::Repository.load(t.input_loc)
|
158
158
|
debug << "repo: #{repo.dump(id == '#t0012' ? :nquads : :trig)}"
|
159
|
-
JSON::LD::API.
|
159
|
+
JSON::LD::API.fromRdf(repo, options.merge(:debug => debug))
|
160
160
|
when "jld:ToRDFTest"
|
161
|
-
JSON::LD::API.
|
161
|
+
JSON::LD::API.toRdf(t.input_loc, options.merge(:debug => debug)).map do |statement|
|
162
162
|
t.to_quad(statement)
|
163
163
|
end
|
164
164
|
else
|
data/spec/to_rdf_spec.rb
CHANGED
@@ -3,9 +3,13 @@ $:.unshift "."
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
5
|
describe JSON::LD::API do
|
6
|
-
before(:each) {
|
6
|
+
before(:each) {@debug = []}
|
7
|
+
|
8
|
+
context ".toRdf" do
|
9
|
+
it "should implement RDF::Enumerable" do
|
10
|
+
expect(JSON::LD::API.toRdf({})).to be_a(RDF::Enumerable)
|
11
|
+
end
|
7
12
|
|
8
|
-
context ".toRDF" do
|
9
13
|
context "unnamed nodes" do
|
10
14
|
{
|
11
15
|
"no @id" => [
|
@@ -646,7 +650,7 @@ describe JSON::LD::API do
|
|
646
650
|
@debug = []
|
647
651
|
graph = options[:graph] || RDF::Graph.new
|
648
652
|
options = {:debug => @debug, :validate => true, :canonicalize => false}.merge(options)
|
649
|
-
JSON::LD::API.
|
653
|
+
JSON::LD::API.toRdf(StringIO.new(input), options) {|st| graph << st}
|
650
654
|
graph
|
651
655
|
end
|
652
656
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: json-ld
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gregg Kellogg
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-10-
|
11
|
+
date: 2013-10-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rdf
|