Skip to content

Commit 758b91d

Browse files
committed
Finish 2.0.0.beta1
2 parents b3c7ab9 + f6ea461 commit 758b91d

37 files changed

+779
-631
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@
88
/.rbx/
99
/.bundle/
1010
Gemfile.lock
11+
/.byebug_history

.travis.yml

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,17 @@ script: "bundle exec rspec spec"
44
env:
55
- CI=true
66
rvm:
7-
- 1.9.3
87
- 2.0
98
- 2.1
10-
- 2.2.1
11-
- jruby
9+
- 2.2.4
10+
- 2.3.0
11+
- jruby-9.0.4.0
12+
- rbx-2
1213
cache: bundler
1314
sudo: false
1415
matrix:
1516
allow_failures:
16-
- rbx-2
17+
- rvm: rbx-2
18+
- rvm: jruby-9.0.4.0
19+
1720

Gemfile

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,30 @@
11
source "https://rubygems.org"
22

33
gemspec
4-
gem 'rdf', git: "git://github.com/ruby-rdf/rdf.git", branch: "develop"
5-
gem 'rdf-spec', git: "git://github.com/ruby-rdf/rdf-spec.git", branch: "develop"
4+
gem 'rdf', git: "git://github.com/ruby-rdf/rdf.git", branch: "develop"
5+
gem 'rdf-spec', git: "git://github.com/ruby-rdf/rdf-spec.git", branch: "develop"
66
gem 'jsonlint', git: "git://github.com/dougbarth/jsonlint.git", platforms: [:rbx, :mri]
77

88
group :development do
9-
gem 'rdf-turtle', git: "git://github.com/ruby-rdf/rdf-turtle.git", branch: "develop"
10-
gem 'rdf-trig', git: "git://github.com/ruby-rdf/rdf-trig.git", branch: "develop"
11-
gem 'rdf-vocab', git: "git://github.com/ruby-rdf/rdf-vocab.git", branch: "develop"
9+
gem 'ebnf', git: "git://github.com/gkellogg/ebnf.git", branch: "develop"
10+
gem 'sxp', git: "git://github.com/gkellogg/sxp-ruby.git"
11+
gem 'rdf-isomorphic', git: "git://github.com/ruby-rdf/rdf-isomorphic.git", branch: "develop"
12+
gem 'rdf-turtle', git: "git://github.com/ruby-rdf/rdf-turtle.git", branch: "develop"
13+
gem 'rdf-trig', git: "git://github.com/ruby-rdf/rdf-trig.git", branch: "develop"
14+
gem 'rdf-vocab', git: "git://github.com/ruby-rdf/rdf-vocab.git", branch: "develop"
15+
gem 'rdf-xsd', git: "git://github.com/ruby-rdf/rdf-xsd.git", branch: "develop"
1216
gem 'fasterer'
1317
end
1418

1519
group :development, :test do
16-
gem 'simplecov', require: false
17-
gem 'coveralls', require: false
18-
gem 'psych', :platforms => [:mri, :rbx]
20+
gem 'simplecov', require: false, platform: :mri
21+
gem 'coveralls', require: false, platform: :mri
22+
gem 'psych', platforms: [:mri, :rbx]
1923
end
2024

2125
group :debug do
2226
gem "wirble"
23-
gem "linkeddata"
24-
gem "byebug", platforms: [:mri_20, :mri_21]
27+
gem "byebug", platforms: :mri
2528
end
2629

2730
platforms :rbx do

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -274,8 +274,8 @@ Note, the API method signatures differed in versions before 1.0, in that they al
274274
* {JSON::LD::Writer}
275275

276276
## Dependencies
277-
* [Ruby](http://ruby-lang.org/) (>= 1.9.2)
278-
* [RDF.rb](http://rubygems.org/gems/rdf) (>= 1.0)
277+
* [Ruby](http://ruby-lang.org/) (>= 2.0)
278+
* [RDF.rb](http://rubygems.org/gems/rdf) (>= 2.0)
279279
* [JSON](https://rubygems.org/gems/json) (>= 1.5)
280280

281281
## Installation

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.99.0
1+
2.0.0.beta1

json-ld.gemspec

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,22 +25,22 @@ Gem::Specification.new do |gem|
2525
gem.test_files = Dir.glob('spec/**/*.rb') + Dir.glob('spec/test-files/*')
2626
gem.has_rdoc = false
2727

28-
gem.required_ruby_version = '>= 1.9.2'
28+
gem.required_ruby_version = '>= 2.0'
2929
gem.requirements = []
30-
gem.add_runtime_dependency 'rdf', '~> 1.99'
30+
gem.add_runtime_dependency 'rdf', '>= 2.0.0.beta', '< 3'
3131
gem.add_runtime_dependency 'multi_json', '~> 1.11'
3232
gem.add_development_dependency 'jsonlint', '~> 0.1.0' unless RUBY_ENGINE == "jruby"
3333
gem.add_development_dependency 'oj', '~> 2.12' unless RUBY_ENGINE == "jruby"
3434
gem.add_development_dependency 'yajl-ruby', '~> 1.2' unless RUBY_ENGINE == "jruby"
3535
gem.add_development_dependency "rack-cache", '~> 1.2'
3636
gem.add_development_dependency "rest-client", '~> 1.8'
3737
gem.add_development_dependency "rest-client-components", '~> 1.4'
38-
gem.add_development_dependency 'rdf-isomorphic', '~> 1.1'
39-
gem.add_development_dependency 'rdf-spec', '~> 1.99'
40-
gem.add_development_dependency 'rdf-trig', '~> 1.99'
41-
gem.add_development_dependency 'rdf-turtle', '~> 1.99'
42-
gem.add_development_dependency 'rdf-vocab', '~> 0.8'
43-
gem.add_development_dependency 'rdf-xsd', '~> 1.1'
38+
gem.add_development_dependency 'rdf-isomorphic', '>= 2.0.0.beta', '< 3'
39+
gem.add_development_dependency 'rdf-spec', '>= 2.0.0.beta', '< 3'
40+
gem.add_development_dependency 'rdf-trig', '>= 1.99', '< 3'
41+
gem.add_development_dependency 'rdf-turtle', '>= 1.99', '< 3'
42+
gem.add_development_dependency 'rdf-vocab', '>= 0.8'
43+
gem.add_development_dependency 'rdf-xsd', '>= 1.99', '< 3'
4444
gem.add_development_dependency 'rspec', '~> 3.2'
4545
gem.add_development_dependency 'rspec-its', '~> 1.0'
4646
gem.add_development_dependency 'yard' , '~> 0.8'

lib/json/ld.rb

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,6 @@ module LD
8585
array_nl: "\n"
8686
)
8787

88-
def self.debug?; @debug; end
89-
def self.debug=(value); @debug = value; end
90-
9188
class JsonLdError < Exception
9289
def to_s
9390
"#{self.class.instance_variable_get :@code}: #{super}"

lib/json/ld/api.rb

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ class API
2828
include Flatten
2929
include FromRDF
3030
include Frame
31+
include RDF::Util::Logger
3132

3233
# Options used for open_file
3334
OPEN_OPTS = {
@@ -206,7 +207,7 @@ def self.compact(input, context, options = {})
206207
expanded = options[:expanded] ? input : API.expand(input, options)
207208

208209
API.new(expanded, context, options) do
209-
debug(".compact") {"expanded input: #{expanded.to_json(JSON_STATE) rescue 'malformed json'}"}
210+
log_debug(".compact") {"expanded input: #{expanded.to_json(JSON_STATE) rescue 'malformed json'}"}
210211
result = compact(value, nil)
211212

212213
# xxx) Add the given context to the output
@@ -248,7 +249,7 @@ def self.flatten(input, context, options = {})
248249

249250
# Initialize input using
250251
API.new(expanded_input, context, options) do
251-
debug(".flatten") {"expanded input: #{value.to_json(JSON_STATE) rescue 'malformed json'}"}
252+
log_debug(".flatten") {"expanded input: #{value.to_json(JSON_STATE) rescue 'malformed json'}"}
252253

253254
# Initialize node map to a JSON object consisting of a single member whose key is @default and whose value is an empty JSON object.
254255
graphs = {'@default' => {}}
@@ -269,7 +270,7 @@ def self.flatten(input, context, options = {})
269270

270271
if context && !flattened.empty?
271272
# Otherwise, return the result of compacting flattened according the Compaction algorithm passing context ensuring that the compaction result uses the @graph keyword (or its alias) at the top-level, even if the context is empty or if there is only one element to put in the @graph array. This ensures that the returned document has a deterministic structure.
272-
compacted = depth {compact(flattened, nil)}
273+
compacted = log_depth {compact(flattened, nil)}
273274
compacted = [compacted] unless compacted.is_a?(Array)
274275
kwgraph = self.context.compact_iri('@graph', quiet: true)
275276
flattened = self.context.serialize.merge(kwgraph => compacted)
@@ -350,30 +351,30 @@ def self.frame(input, frame, options = {})
350351

351352
# Initialize input using frame as context
352353
API.new(expanded_input, nil, options) do
353-
#debug(".frame") {"context from frame: #{context.inspect}"}
354-
debug(".frame") {"expanded frame: #{expanded_frame.to_json(JSON_STATE) rescue 'malformed json'}"}
354+
#log_debug(".frame") {"context from frame: #{context.inspect}"}
355+
log_debug(".frame") {"expanded frame: #{expanded_frame.to_json(JSON_STATE) rescue 'malformed json'}"}
355356

356357
# Get framing nodes from expanded input, replacing Blank Node identifiers as necessary
357-
old_dbg, @options[:debug] = @options[:debug], nil
358+
old_logger, @options[:logger] = @options[:logger], []
358359
create_node_map(value, framing_state[:graphs], '@merged')
359-
@options[:debug] = old_dbg
360+
@options[:logger] = old_logger
360361
framing_state[:subjects] = framing_state[:graphs]['@merged']
361-
debug(".frame") {"subjects: #{framing_state[:subjects].to_json(JSON_STATE) rescue 'malformed json'}"}
362+
log_debug(".frame") {"subjects: #{framing_state[:subjects].to_json(JSON_STATE) rescue 'malformed json'}"}
362363

363364
result = []
364365
frame(framing_state, framing_state[:subjects].keys.sort, (expanded_frame.first || {}), options.merge(parent: result))
365-
debug(".frame") {"after frame: #{result.to_json(JSON_STATE) rescue 'malformed json'}"}
366+
log_debug(".frame") {"after frame: #{result.to_json(JSON_STATE) rescue 'malformed json'}"}
366367

367368
# Initalize context from frame
368-
@context = depth {@context.parse(frame['@context'])}
369+
@context = log_depth {@context.parse(frame['@context'])}
369370
# Compact result
370-
compacted = depth {compact(result, nil)}
371+
compacted = log_depth {compact(result, nil)}
371372
compacted = [compacted] unless compacted.is_a?(Array)
372373

373374
# Add the given context to the output
374375
kwgraph = context.compact_iri('@graph', quiet: true)
375376
result = context.serialize.merge({kwgraph => compacted})
376-
debug(".frame") {"after compact: #{result.to_json(JSON_STATE) rescue 'malformed json'}"}
377+
log_debug(".frame") {"after compact: #{result.to_json(JSON_STATE) rescue 'malformed json'}"}
377378
result = cleanup_preserve(result)
378379
end
379380

@@ -411,20 +412,20 @@ def self.toRdf(input, options = {}, &block)
411412
API.new(expanded_input, nil, options) do
412413
# 1) Perform the Expansion Algorithm on the JSON-LD input.
413414
# This removes any existing context to allow the given context to be cleanly applied.
414-
debug(".toRdf") {"expanded input: #{expanded_input.to_json(JSON_STATE) rescue 'malformed json'}"}
415+
log_debug(".toRdf") {"expanded input: #{expanded_input.to_json(JSON_STATE) rescue 'malformed json'}"}
415416

416417
# Generate _nodeMap_
417418
graphs = {'@default' => {}}
418419
create_node_map(expanded_input, graphs)
419-
debug(".toRdf") {"node map: #{graphs.to_json(JSON_STATE) rescue 'malformed json'}"}
420+
log_debug(".toRdf") {"node map: #{graphs.to_json(JSON_STATE) rescue 'malformed json'}"}
420421

421422
# Start generating statements
422423
graphs.each do |graph_name, graph|
423424
context = as_resource(graph_name) unless graph_name == '@default'
424-
debug(".toRdf") {"graph_name: #{context ? context.to_ntriples : 'null'}"}
425+
log_debug(".toRdf") {"graph_name: #{context ? context.to_ntriples : 'null'}"}
425426
# Drop results for graphs which are named with relative IRIs
426427
if graph_name.is_a?(RDF::URI) && !graph_name.absolute
427-
debug(".toRdf") {"drop relative graph_name: #{statement.to_ntriples}"}
428+
log_debug(".toRdf") {"drop relative graph_name: #{statement.to_ntriples}"}
428429
next
429430
end
430431
graph_to_rdf(graph) do |statement|
@@ -441,7 +442,7 @@ def self.toRdf(input, options = {}, &block)
441442
end
442443
end
443444
if relative
444-
debug(".toRdf") {"drop statement with relative IRIs: #{statement.to_ntriples}"}
445+
log_debug(".toRdf") {"drop statement with relative IRIs: #{statement.to_ntriples}"}
445446
next
446447
end
447448

lib/json/ld/compact.rb

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -10,23 +10,23 @@ module Compact
1010
# @return [Array, Hash]
1111
def compact(element, property = nil)
1212
if property.nil?
13-
debug("compact") {"element: #{element.inspect}, ec: #{context.inspect}"}
13+
log_debug("compact") {"element: #{element.inspect}, ec: #{context.inspect}"}
1414
else
15-
debug("compact") {"property: #{property.inspect}"}
15+
log_debug("compact") {"property: #{property.inspect}"}
1616
end
1717
case element
1818
when Array
19-
debug("") {"Array #{element.inspect}"}
20-
result = depth {element.map {|item| compact(item, property)}.compact}
19+
log_debug("") {"Array #{element.inspect}"}
20+
result = log_depth {element.map {|item| compact(item, property)}.compact}
2121

2222
# If element has a single member and the active property has no
2323
# @container mapping to @list or @set, the compacted value is that
2424
# member; otherwise the compacted value is element
2525
if result.length == 1 && context.container(property).nil? && @options[:compactArrays]
26-
debug("=> extract single element: #{result.first.inspect}")
26+
log_debug("=> extract single element: #{result.first.inspect}")
2727
result.first
2828
else
29-
debug("=> array result: #{result.inspect}")
29+
log_debug("=> array result: #{result.inspect}")
3030
result
3131
end
3232
when Hash
@@ -36,9 +36,9 @@ def compact(element, property = nil)
3636
return nil if element.has_key?('@null')
3737

3838
if element.keys.any? {|k| %w(@id @value).include?(k)}
39-
result = context.compact_value(property, element, depth: @depth)
39+
result = context.compact_value(property, element, log_depth: @options[:log_depth])
4040
unless result.is_a?(Hash)
41-
debug("") {"=> scalar result: #{result.inspect}"}
41+
log_debug("") {"=> scalar result: #{result.inspect}"}
4242
return result
4343
end
4444
end
@@ -48,61 +48,61 @@ def compact(element, property = nil)
4848

4949
element.each_key do |expanded_property|
5050
expanded_value = element[expanded_property]
51-
debug("") {"#{expanded_property}: #{expanded_value.inspect}"}
51+
log_debug("") {"#{expanded_property}: #{expanded_value.inspect}"}
5252

5353
if %w(@id @type).include?(expanded_property)
5454
compacted_value = [expanded_value].flatten.compact.map do |expanded_type|
55-
depth {context.compact_iri(expanded_type, vocab: (expanded_property == '@type'), depth: @depth)}
55+
log_depth {context.compact_iri(expanded_type, vocab: (expanded_property == '@type'), log_depth: @options[:log_depth])}
5656
end
5757
compacted_value = compacted_value.first if compacted_value.length == 1
5858

5959
al = context.compact_iri(expanded_property, vocab: true, quiet: true)
60-
debug(expanded_property) {"result[#{al}] = #{compacted_value.inspect}"}
60+
log_debug(expanded_property) {"result[#{al}] = #{compacted_value.inspect}"}
6161
result[al] = compacted_value
6262
next
6363
end
6464

6565
if expanded_property == '@reverse'
66-
compacted_value = depth {compact(expanded_value, '@reverse')}
67-
debug("@reverse") {"compacted_value: #{compacted_value.inspect}"}
66+
compacted_value = log_depth {compact(expanded_value, '@reverse')}
67+
log_debug("@reverse") {"compacted_value: #{compacted_value.inspect}"}
6868
compacted_value.each do |prop, value|
6969
if context.reverse?(prop)
7070
value = [value] if !value.is_a?(Array) &&
7171
(context.container(prop) == '@set' || !@options[:compactArrays])
72-
debug("") {"merge #{prop} => #{value.inspect}"}
72+
log_debug("") {"merge #{prop} => #{value.inspect}"}
7373
merge_compacted_value(result, prop, value)
7474
compacted_value.delete(prop)
7575
end
7676
end
7777

7878
unless compacted_value.empty?
7979
al = context.compact_iri('@reverse', quiet: true)
80-
debug("") {"remainder: #{al} => #{compacted_value.inspect}"}
80+
log_debug("") {"remainder: #{al} => #{compacted_value.inspect}"}
8181
result[al] = compacted_value
8282
end
8383
next
8484
end
8585

8686
if expanded_property == '@index' && context.container(property) == '@index'
87-
debug("@index") {"drop @index"}
87+
log_debug("@index") {"drop @index"}
8888
next
8989
end
9090

9191
# Otherwise, if expanded property is @index, @value, or @language:
9292
if %w(@index @value @language).include?(expanded_property)
9393
al = context.compact_iri(expanded_property, vocab: true, quiet: true)
94-
debug(expanded_property) {"#{al} => #{expanded_value.inspect}"}
94+
log_debug(expanded_property) {"#{al} => #{expanded_value.inspect}"}
9595
result[al] = expanded_value
9696
next
9797
end
9898

9999
if expanded_value == []
100-
item_active_property = depth do
100+
item_active_property = log_depth do
101101
context.compact_iri(expanded_property,
102102
value: expanded_value,
103103
vocab: true,
104104
reverse: inside_reverse,
105-
depth: @depth)
105+
log_depth: @options[:log_depth])
106106
end
107107

108108
iap = result[item_active_property] ||= []
@@ -111,17 +111,17 @@ def compact(element, property = nil)
111111

112112
# At this point, expanded value must be an array due to the Expansion algorithm.
113113
expanded_value.each do |expanded_item|
114-
item_active_property = depth do
114+
item_active_property = log_depth do
115115
context.compact_iri(expanded_property,
116116
value: expanded_item,
117117
vocab: true,
118118
reverse: inside_reverse,
119-
depth: @depth)
119+
log_depth: @options[:log_depth])
120120
end
121121
container = context.container(item_active_property)
122122
value = list?(expanded_item) ? expanded_item['@list'] : expanded_item
123-
compacted_item = depth {compact(value, item_active_property)}
124-
debug("") {" => compacted key: #{item_active_property.inspect} for #{compacted_item.inspect}"}
123+
compacted_item = log_depth {compact(value, item_active_property)}
124+
log_debug("") {" => compacted key: #{item_active_property.inspect} for #{compacted_item.inspect}"}
125125

126126
if list?(expanded_item)
127127
compacted_item = [compacted_item] unless compacted_item.is_a?(Array)
@@ -159,7 +159,7 @@ def compact(element, property = nil)
159159
result.keys.kw_sort.inject({}) {|map, kk| map[kk] = result[kk]; map}
160160
else
161161
# For other types, the compacted value is the element value
162-
debug("compact") {element.class.to_s}
162+
log_debug("compact") {element.class.to_s}
163163
element
164164
end
165165
end

0 commit comments

Comments
 (0)