Skip to content

Commit cbaf3d8

Browse files
committed
Updates for TriG grammar and 1.2 semantics.
1 parent 49804b6 commit cbaf3d8

File tree

8 files changed

+29
-69
lines changed

8 files changed

+29
-69
lines changed

Gemfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ group :development, :test do
1616
gem 'rdf-isomorphic', git: "https://github.com/ruby-rdf/rdf-isomorphic", branch: "develop"
1717
gem 'rdf-vocab', git: "https://github.com/ruby-rdf/rdf-vocab", branch: "develop"
1818
gem 'sxp', git: "https://github.com/dryruby/sxp.rb", branch: "develop"
19+
gem 'irb'
1920
gem "redcarpet", platform: :ruby
2021
gem 'simplecov', '~> 0.22', platforms: :mri
2122
gem 'simplecov-lcov', '~> 0.8', platforms: :mri

etc/trig.bnf

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,16 @@ triplesOrGraph ::= labelOrSubject ( wrappedGraph | predicateObjectList '.
88
triples2 ::= blankNodePropertyList predicateObjectList? '.'
99
| collection predicateObjectList '.'
1010
wrappedGraph ::= '{' triplesBlock? '}'
11-
triplesBlock ::= triples ( '.' triplesBlock? )?
11+
triplesBlock ::= triples ( '.' triplesBlock? )?
1212
labelOrSubject ::= iri | BlankNode
13-
directive ::= prefixID | base | sparqlPrefix | sparqlBase
13+
directive ::= prefixID | base | version | sparqlPrefix | sparqlBase | sparqlVersion
1414
prefixID ::= '@prefix' PNAME_NS IRIREF '.'
1515
base ::= '@base' IRIREF '.'
16+
version ::= '@version' VersionSpecifier '.'
1617
sparqlPrefix ::= "PREFIX" PNAME_NS IRIREF
1718
sparqlBase ::= "BASE" IRIREF
19+
sparqlVersion ::= "VERSION" VersionSpecifier
20+
VersionSpecifier ::= STRING_LITERAL_QUOTE | STRING_LITERAL_SINGLE_QUOTE
1821
triples ::= subject predicateObjectList
1922
| blankNodePropertyList predicateObjectList?
2023
| reifiedTriple predicateObjectList?

lib/rdf/trig/reader.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ class Reader < RDF::Turtle::Reader
3737
terminal(:GRAPH, /graph/i)
3838
terminal(:PREFIX, PREFIX)
3939
terminal(:BASE, BASE)
40+
terminal(:VERSION, RDF_VERSION)
4041
terminal(:LANG_DIR, LANG_DIR)
4142

4243
##

rdf-trig.gemspec

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,16 +27,17 @@ Gem::Specification.new do |gem|
2727

2828
gem.required_ruby_version = '>= 3.0'
2929
gem.requirements = []
30-
gem.add_runtime_dependency 'rdf', '~> 3.3'
31-
gem.add_runtime_dependency 'ebnf', '~> 2.4'
30+
gem.add_runtime_dependency 'ebnf', '~> 2.6'
3231
gem.add_runtime_dependency 'rdf-turtle', '~> 3.3'
32+
gem.add_runtime_dependency 'rdf', '~> 3.3'
33+
gem.add_runtime_dependency 'readline', '~> 0.0'
3334
gem.add_development_dependency 'getoptlong', '~> 0.2'
3435
gem.add_development_dependency 'json-ld', '~> 3.3'
35-
gem.add_development_dependency 'rspec', '~> 3.12'
36-
gem.add_development_dependency 'rspec-its', '~> 1.3'
3736
gem.add_development_dependency 'rdf-isomorphic', '~> 3.3'
38-
gem.add_development_dependency 'yard' , '~> 0.9'
3937
gem.add_development_dependency 'rdf-spec', '~> 3.3'
38+
gem.add_development_dependency 'rspec-its', '~> 1.3'
39+
gem.add_development_dependency 'rspec', '~> 3.13'
40+
gem.add_development_dependency 'yard' , '~> 0.9'
4041

4142
gem.post_install_message = nil
4243
end

script/parse

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ require 'rdf/trig'
88
require 'rdf/nquads'
99
require 'ebnf/ll1/parser'
1010
require 'getoptlong'
11+
require 'amazing_print'
1112

1213
def run(input, **options)
1314
if options[:profile]
@@ -101,11 +102,12 @@ OPT_ARGS = [
101102
["--uri", GetoptLong::REQUIRED_ARGUMENT, "Default base URI"],
102103
["--validate", GetoptLong::NO_ARGUMENT, "Run parser in strict validation mode"],
103104
["--verbose", GetoptLong::NO_ARGUMENT, "Verbose output"],
105+
["--version", GetoptLong::REQUIRED_ARGUMENT, "Version of RDF (1.1, 1.2, or 1.2-basic)"],
104106
]
105107

106108
def usage
107109
STDERR.puts %{
108-
RDF::Turtle version #{RDF::Turtle::VERSION}
110+
RDF::TriG version #{RDF::Turtle::VERSION}
109111
110112
Usage: #{$0} [options] file ...
111113
}.gsub(/^ /, '')
@@ -146,7 +148,8 @@ opts.each do |opt, arg|
146148
when '--stream' then writer_options[:stream] = true
147149
when '--validate' then parser_options[:validate] = true
148150
when '--verbose' then $verbose = true
149-
end
151+
when '--version' then writer_options[:version] = parser_options[:version] = arg
152+
end
150153
end
151154

152155
if ARGV.empty?

script/tc

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ require 'rdf/isomorphic'
88
require File.expand_path(File.join(File.dirname(__FILE__), "..", 'spec', 'spec_helper'))
99
require File.expand_path(File.join(File.dirname(__FILE__), "..", 'spec', 'suite_helper'))
1010
require 'getoptlong'
11+
require 'amazing_print'
1112

1213
ASSERTOR = "https://greggkellogg.net/foaf#me"
1314
RUN_TIME = Time.now
@@ -130,7 +131,7 @@ def run_tc(tc, **options)
130131
options[:result_count][result] ||= 0
131132
options[:result_count][result] += 1
132133

133-
puts "#{"test result:" unless options[:quiet]} #{result}"
134+
puts "#{" test result:" unless options[:quiet]} #{result}"
134135
end
135136

136137
options = {
@@ -218,7 +219,7 @@ begin
218219
manifests.each do |manifest|
219220
Fixtures::SuiteTest::Manifest.open(manifest) do |m|
220221
m.entries.each do |tc|
221-
next unless ARGV.empty? || ARGV.any? {|n| tc.name.match(/#{n}/)}
222+
next unless ARGV.empty? || ARGV.any? {|n| tc.id.match?(/#{n}/) || tc.name.match(/#{n}/)}
222223
run_tc(tc, result_count: result_count, **options)
223224
end
224225
end

spec/star_spec.rb

Lines changed: 0 additions & 55 deletions
This file was deleted.

spec/suite_spec.rb

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,11 @@
66
require 'suite_helper'
77

88
# TriG/manifest.ttl
9-
%w(rdf11/rdf-trig/manifest.ttl).each do |man|
9+
%w(
10+
rdf11/rdf-trig/manifest.ttl
11+
rdf12/rdf-trig/syntax/manifest.ttl
12+
rdf12/rdf-trig/eval/manifest.ttl
13+
).each do |man|
1014
Fixtures::SuiteTest::Manifest.open(Fixtures::SuiteTest::BASE + man) do |m|
1115
describe m.comment do
1216
m.entries.each do |t|
@@ -22,6 +26,7 @@
2226
base_uri: t.base,
2327
canonicalize: false,
2428
validate: true,
29+
rdfstar: true,
2530
logger: t.logger)
2631

2732
repo = RDF::Repository.new
@@ -35,12 +40,12 @@
3540
else
3641
expect {
3742
repo << reader
38-
expect(repo.dump(:nquads)).to produce("not this", t)
43+
expect(repo.dump(:nquads, rdfstar: true)).to produce("not this", t)
3944
}.to raise_error(RDF::ReaderError)
4045
end
4146

4247
if t.evaluate? && t.positive_test?
43-
output_repo = RDF::Repository.load(t.result, format: :nquads, base_uri: t.base)
48+
output_repo = RDF::Repository.load(t.result, format: :nquads, rdfstar: true, base_uri: t.base)
4449
expect(repo).to be_equivalent_graph(output_repo, t)
4550
elsif !t.evaluate?
4651
expect(repo).to be_a(RDF::Enumerable)

0 commit comments

Comments
 (0)