Skip to content

Commit

Permalink
Finish 2.0.0.beta1
Browse files Browse the repository at this point in the history
  • Loading branch information
gkellogg committed Feb 22, 2016
2 parents 134163a + 3b086ef commit a0a65d3
Show file tree
Hide file tree
Showing 18 changed files with 203 additions and 313 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@
/.bundle/
/coverage/
Gemfile.lock
/.byebug_history
9 changes: 6 additions & 3 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,14 @@ script: "bundle exec rspec spec"
env:
- CI=true
rvm:
- 1.9.3
- 2.0
- 2.1
- 2.2
- jruby
- 2.2.4
- 2.3.0
- jruby-9.0.4.0
- rbx-2
cache: bundler
sudo: false
matrix:
allow_failures:
- rvm: rbx-2
21 changes: 12 additions & 9 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,25 @@ source "http://rubygems.org"

gemspec

gem 'rdf', git: "git://github.com/ruby-rdf/rdf.git", branch: "develop"
gem 'ebnf', git: "git://github.com/gkellogg/ebnf.git", branch: "develop"
gem 'rdf', github: "ruby-rdf/rdf", branch: "develop"
gem 'rdf-turtle', github: "ruby-rdf/rdf-turtle", branch: "develop"
gem 'ebnf', github: "gkellogg/ebnf", branch: "develop"

group :development do
gem "wirble"
gem "byebug", platforms: :mri_21
gem "byebug", platforms: :mri
gem 'psych', platforms: [:mri, :rbx]
end

group :development, :test do
gem "redcarpet", platform: :ruby
gem 'rdf-spec', git: "git://github.com/ruby-rdf/rdf-spec.git", branch: "develop"
gem 'rdf-turtle', git: "git://github.com/ruby-rdf/rdf-turtle.git", branch: "develop"
gem 'json-ld', git: "git://github.com/ruby-rdf/json-ld.git", branch: "develop"
gem 'simplecov', require: false
gem 'coveralls', require: false
gem 'json-ld', github: "ruby-rdf/json-ld", branch: "develop"
gem 'rdf-spec', github: "ruby-rdf/rdf-spec", branch: "develop"
gem 'rdf-isomorphic', github: "ruby-rdf/rdf-isomorphic", branch: "develop"
gem 'rdf-vocab', github: "ruby-rdf/rdf-vocab", branch: "develop"
gem 'sxp', github: "gkellogg/sxp-ruby"
gem "redcarpet", platform: :ruby
gem 'simplecov', require: false, platform: :mri
gem 'coveralls', require: false, platform: :mri
end

platforms :rbx do
Expand Down
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ Install with `gem install rdf-trig`

* 100% free and unencumbered [public domain](http://unlicense.org/) software.
* Implements a complete parser and serializer for [TriG][].
* Compatible with Ruby 1.8.7+, Ruby 1.9.x, and JRuby 1.7+.
* Compatible with Ruby 2.x, and JRuby 1.7+.
* Optional streaming writer, to serialize large graphs

## Usage
Expand Down Expand Up @@ -58,9 +58,9 @@ There is a new `:stream` option to {RDF::TriG::Writer} which is more efficient f

## Dependencies

* [Ruby](http://ruby-lang.org/) (>= 1.9.3)
* [RDF.rb](http://rubygems.org/gems/rdf) (~> 1.1)
* [rdf-turtle](http://rubygems.org/gems/rdf-turtle) (~> 1.1, >= 1.1.8)
* [Ruby](http://ruby-lang.org/) (>= 2.0)
* [RDF.rb](http://rubygems.org/gems/rdf) (~> 2.0)
* [rdf-turtle](http://rubygems.org/gems/rdf-turtle) (~> 2.0)

## Installation

Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.99.0
2.0.0.beta1
3 changes: 0 additions & 3 deletions lib/rdf/trig.rb
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,5 @@ module TriG
autoload :Reader, 'rdf/trig/reader'
autoload :VERSION, 'rdf/trig/version'
autoload :Writer, 'rdf/trig/writer'

def self.debug?; @debug; end
def self.debug=(value); RDF::Turtle.debug = @debug = value; end
end
end
18 changes: 7 additions & 11 deletions lib/rdf/trig/reader.rb
Original file line number Diff line number Diff line change
Expand Up @@ -49,14 +49,8 @@ def each_statement(&block)
# Terminate loop if EOF found while recovering
end

if validate?
if !warnings.empty? && !@options[:warnings]
$stderr.puts "Warnings: #{warnings.join("\n")}"
end
if !errors.empty?
$stderr.puts "Errors: #{errors.join("\n")}" unless @options[:errors]
raise RDF::ReaderError, "Errors found during processing"
end
if validate? && log_statistics[:error]
raise RDF::ReaderError, "Errors found during processing"
end
end
enum_for(:each_statement)
Expand Down Expand Up @@ -123,7 +117,7 @@ def read_block
when nil
# End of input
else
error("Unexpected token", production: :block, token: @lexer.first)
error("Unexpected token: #{@lexer.first.inspect}", production: :block, token: @lexer.first)
end
end
end
Expand Down Expand Up @@ -217,8 +211,10 @@ def read_wrappedGraph
def read_triplesBlock
prod(:triplesBlock, %w(.)) do
while (token = @lexer.first) && token.value != '}' && read_triples
break unless @lexer.first === '.'
@lexer.shift
unless log_recovering?
break unless @lexer.first === '.'
@lexer.shift
end
end
end
end
Expand Down
91 changes: 30 additions & 61 deletions lib/rdf/trig/writer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -59,40 +59,6 @@ class Writer < RDF::Turtle::Writer
include StreamingWriter
format RDF::TriG::Format

class GraphFilteredRepo
include RDF::Queryable

def initialize(repo, graph_name)
@repo = repo
@graph_name = graph_name
end

# Filter statements in repository to those having the specified graph_name
# Returns each statement having the specified graph_name, `false` for default graph
# @yield statement
# @yieldparam [RDF::Statement] statement
# @return [void]
# @see [RDF::Queryable]
def each
@repo.each_statement do |st|
case @graph_name
when false
yield st if !st.graph_name
else
yield st if st.graph_name == @graph_name
end
end
end

##
# Proxy Repository#query_pattern
# @see RDF::Repository#query_pattern
def query_pattern(pattern, &block)
pattern.graph_name = @graph_name || false
@repo.send(:query_pattern, pattern, &block)
end
end

##
# Initializes the TriG writer instance.
#
Expand Down Expand Up @@ -122,11 +88,8 @@ def query_pattern(pattern, &block)
# @yield [writer]
# @yieldparam [RDF::Writer] writer
def initialize(output = $stdout, options = {}, &block)
reset
super do
# Set both @repo and @graph to a new repository.
# When serializing a named graph, @graph is changed
# to a GraphFilteredRepo
@repo = @graph = RDF::Repository.new
if block_given?
case block.arity
Expand All @@ -139,15 +102,18 @@ def initialize(output = $stdout, options = {}, &block)


##
# Adds a statement to be serialized
# @param [RDF::Statement] statement
# Adds a triple to be serialized
# @param [RDF::Resource] subject
# @param [RDF::URI] predicate
# @param [RDF::Value] object
# @param [RDF::Resource] graph_name
# @return [void]
def write_statement(statement)
case
when @options[:stream]
def write_quad(subject, predicate, object, graph_name)
statement = RDF::Statement.new(subject, predicate, object, graph_name: graph_name)
if @options[:stream]
stream_statement(statement)
else
super
@graph.insert(statement)
end
end

Expand Down Expand Up @@ -178,34 +144,37 @@ def write_epilogue

reset

debug {"\nserialize: repo: #{@repo.size}"}
log_debug {"serialize: repo: #{@repo.size}"}

preprocess
start_document

order_graphs.each do |ctx|
debug {"graph_name: #{ctx.inspect}"}
reset
@depth = ctx ? 2 : 0
order_graphs.each do |graph_name|
log_depth do
log_debug {"graph_name: #{graph_name.inspect}"}
reset
@options[:log_depth] = graph_name ? 1 : 0

if ctx
@output.write("\n#{format_term(ctx)} {")
end
if graph_name
@output.write("\n#{format_term(graph_name)} {")
end

# Restrict view to the particular graph
@graph = GraphFilteredRepo.new(@repo, ctx)
# Restrict view to the particular graph
@graph = @repo.project_graph(graph_name)

# Pre-process statements again, but in the specified graph
@graph.each {|st| preprocess_statement(st)}
order_subjects.each do |subject|
unless is_done?(subject)
statement(subject)
# Pre-process statements again, but in the specified graph
@graph.each {|st| preprocess_statement(st)}
order_subjects.each do |subject|
unless is_done?(subject)
statement(subject)
end
end
end

@output.puts("}") if ctx
@output.puts("}") if graph_name
end
end
end
raise RDF::WriterError, "Errors found during processing" if log_statistics[:error]
end

protected
Expand All @@ -228,7 +197,7 @@ def resource_in_single_graph?(resource)

# Order graphs for output
def order_graphs
debug("order_graphs") {@repo.graph_names.to_a.inspect}
log_debug("order_graphs") {@repo.graph_names.to_a.inspect}
graph_names = @repo.graph_names.to_a.sort

# include default graph, if necessary
Expand Down
14 changes: 7 additions & 7 deletions rdf-trig.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -24,17 +24,17 @@ Gem::Specification.new do |gem|
gem.test_files = %w()
gem.has_rdoc = false

gem.required_ruby_version = '>= 1.9.3'
gem.required_ruby_version = '>= 2.0'
gem.requirements = []
gem.add_runtime_dependency 'rdf', '~> 1.99'
gem.add_runtime_dependency 'ebnf', '~> 1.0'
gem.add_runtime_dependency 'rdf-turtle', '~> 1.99'
gem.add_development_dependency 'json-ld', '~> 1.99'
gem.add_runtime_dependency 'rdf', '>= 2.0.0.beta', '< 3'
gem.add_runtime_dependency 'ebnf', '~> 1.0', '>= 1.0.1'
gem.add_runtime_dependency 'rdf-turtle', '>= 2.0.0.beta', '< 3'
gem.add_development_dependency 'json-ld', '>= 2.0.0.beta', '< 3'
gem.add_development_dependency 'rspec', '~> 3.2'
gem.add_development_dependency 'rspec-its', '~> 1.0'
gem.add_development_dependency 'rdf-isomorphic', '~> 1.99'
gem.add_development_dependency 'rdf-isomorphic', '>= 2.0.0.beta', '< 3'
gem.add_development_dependency 'yard' , '~> 0.8'
gem.add_development_dependency 'rdf-spec', '~> 1.99'
gem.add_development_dependency 'rdf-spec', '>= 2.0.0.beta', '< 3'
gem.add_development_dependency 'rake', '~> 10'

gem.post_install_message = nil
Expand Down
34 changes: 21 additions & 13 deletions script/parse
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
require 'rubygems'
$:.unshift(File.expand_path(File.join(File.dirname(__FILE__), "..", 'lib')))
require "bundler/setup"
require 'logger'
require 'rdf'
require 'rdf/trig'
require 'rdf/nquads'
Expand Down Expand Up @@ -56,23 +57,28 @@ rescue Exception => e
raise e
end

logger = Logger.new(STDERR)
logger.level = Logger::WARN
logger.formatter = lambda {|severity, datetime, progname, msg| "#{severity}: #{msg}\n"}

parser_options = {
:base_uri => nil,
:progress => false,
:validate => false,
base_uri: nil,
validate: false,
logger: logger,
}

writer_options = {
:base_uri => nil,
:standard_prefixes => true
base_uri: nil,
standard_prefixes: true,
logger: logger,
}

options = {
:parser_options => parser_options,
:writer_options => writer_options,
:output => STDOUT,
:output_format => :nquads,
:input_format => :trig,
parser_options: parser_options,
writer_options: writer_options,
output: STDOUT,
output_format: :nquads,
input_format: :trig,
}
input = nil

Expand All @@ -94,7 +100,7 @@ opts = GetoptLong.new(
)
opts.each do |opt, arg|
case opt
when '--dbg' then parser_options[:debug] = ::RDF::TriG::debug = true
when '--dbg' then logger.level = Logger::DEBUG
when '--base' then parser_options[:base_uri] = writer_options[:base_uri] = arg
when '--canonicalize' then parser_options[:canonicalize] = true
when '--errors' then options[:errors] = true
Expand All @@ -104,8 +110,10 @@ opts.each do |opt, arg|
when '--input-format' then options[:input_format] = arg.to_sym
when '--output' then options[:output] = File.open(arg, "w")
when '--profile' then options[:profile] = true
when '--progress' then parser_options[:debug] ||= 2
when '--quiet' then options[:quiet] = options[:quiet].to_i + 1
when '--progress' then logger.level = Logger::INFO
when '--quiet'
options[:quiet] = options[:quiet].to_i + 1
logger.level = Logger::FATAL
when '--stream' then writer_options[:stream] = true
when '--validate' then parser_options[:validate] = true
when '--verbose' then $verbose = true
Expand Down

0 comments on commit a0a65d3

Please sign in to comment.