json-ld 1.0.7 → 1.0.8
Sign up to get free protection for your applications and to get access to all the features.
- 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
|