rdf-turtle 3.2.1 → 3.3.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 57d92c642076069a911db896415fa9dbd3203b6c82a9074e0fc8a53dafb2389d
4
- data.tar.gz: 238620d914ce1ff78d8710e12083d03eacb5f9be7106d0d12ef15c5105445b72
3
+ metadata.gz: '086c95b097002c034394631a59d5d4c52fe4403eaea9b68bf2d241b45951dca3'
4
+ data.tar.gz: 68fa875004dfcebf6295444ff9aa945689c58fe0c54d6b5e14ad91dc9d9f0d02
5
5
  SHA512:
6
- metadata.gz: 0db24a8c173d7b522ba06e1af9e957c513a551a211d22b6a2d19b7218a79e236f6db1f66b738a1a76e5b96ef6161f432f7ece17dea4af8d3de46520960a89977
7
- data.tar.gz: a2826f9e8fbd34364acc54a117e283067982491e9c8e736ac1c8fcb86aac1f6a3acc43811040242fea19e79019d809fd14dae6b46ecc0568b67775dddd84369d
6
+ metadata.gz: 2b69fe9cdd04a28078122d80f6d0e79a34b1223b9254aa4d4347714042cc0292a4d4051a6a3dae08305e999b63811a54dbfb491b7c2e0d394ebaab4f039ed011
7
+ data.tar.gz: 3686da200196de7c4e21eaf52a6e6ea927796cd4221722be9c6d7a8868faf0b2896a3713d684b1cadab9179b6b47673c5b8917c8376581f335b286c45fca7cb2
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [Turtle][] reader/writer for [RDF.rb][RDF.rb] .
4
4
 
5
- [![Gem Version](https://badge.fury.io/rb/rdf-turtle.png)](https://badge.fury.io/rb/rdf-turtle)
5
+ [![Gem Version](https://badge.fury.io/rb/rdf-turtle.svg)](https://badge.fury.io/rb/rdf-turtle)
6
6
  [![Build Status](https://github.com/ruby-rdf/rdf-turtle/workflows/CI/badge.svg?branch=develop)](https://github.com/ruby-rdf/rdf-turtle/actions?query=workflow%3ACI)
7
7
  [![Coverage Status](https://coveralls.io/repos/ruby-rdf/rdf-turtle/badge.svg?branch=develop)](https://coveralls.io/github/ruby-rdf/rdf-turtle?branch=develop)
8
8
  [![Gitter chat](https://badges.gitter.im/ruby-rdf/rdf.png)](https://gitter.im/ruby-rdf/rdf)
@@ -17,9 +17,9 @@ Install with `gem install rdf-turtle`
17
17
 
18
18
  * 100% free and unencumbered [public domain](https://unlicense.org/) software.
19
19
  * Implements a complete parser for [Turtle][].
20
- * Compatible with Ruby >= 2.6.
20
+ * Compatible with Ruby >= 3.0.
21
21
  * Optional streaming writer, to serialize large graphs
22
- * Provisional support for [Turtle-star][RDF-star].
22
+ * Provisional support for [RDF 1.2][].
23
23
 
24
24
  ## Usage
25
25
  Instantiate a reader from a local file:
@@ -36,15 +36,17 @@ Write a graph to a file:
36
36
  writer << graph
37
37
  end
38
38
 
39
- ## Turtle-star (RDF-star)
39
+ ## RDF 1.2
40
40
 
41
- Both reader and writer include provisional support for [Turtle-star][RDF-star].
41
+ Both reader and writer include provisional support for [RDF 1.2][] quoted triples.
42
+
43
+ Both reader and writer include provisional support for [RDF 1.2][] directional language-tagged strings, which are literals of type `rdf:dirLangString` having both a `language` and `direction`.
42
44
 
43
45
  Internally, an `RDF::Statement` is treated as another resource, along with `RDF::URI` and `RDF::Node`, which allows an `RDF::Statement` to have a `#subject` or `#object` which is also an `RDF::Statement`.
44
46
 
45
47
  **Note: This feature is subject to change or elimination as the standards process progresses.**
46
48
 
47
- ### Serializing a Graph containing embedded statements
49
+ ### Serializing a Graph containing quoted triples
48
50
 
49
51
  require 'rdf/turtle'
50
52
  statement = RDF::Statement(RDF::URI('bob'), RDF::Vocab::FOAF.age, RDF::Literal(23))
@@ -52,7 +54,7 @@ Internally, an `RDF::Statement` is treated as another resource, along with `RDF:
52
54
  graph.dump(:ttl, validate: false, standard_prefixes: true)
53
55
  # => '<<<bob> foaf:age 23>> <ex:certainty> 9.0e-1 .'
54
56
 
55
- ### Reading a Graph containing embedded statements
57
+ ### Reading a Graph containing quoted triples
56
58
 
57
59
  By default, the Turtle reader will reject a document containing a subject resource.
58
60
 
@@ -138,11 +140,15 @@ An example of reading Freebase dumps:
138
140
  ## Implementation Notes
139
141
  This version uses a hand-written parser using the Lexer from the [EBNF][] gem instead of a general [EBNF][] LL(1) parser for faster performance.
140
142
 
143
+ ## Change Log
144
+
145
+ See [Release Notes on GitHub](https://github.com/ruby-rdf/rdf-turtle/releases)
146
+
141
147
  ## Dependencies
142
148
 
143
- * [Ruby](https://ruby-lang.org/) (>= 2.6)
144
- * [RDF.rb](https://rubygems.org/gems/rdf) (~> 3.2)
145
- * [EBNF][] (~> 1.2)
149
+ * [Ruby](https://ruby-lang.org/) (>= 3.0)
150
+ * [RDF.rb](https://rubygems.org/gems/rdf) (~> 3.3)
151
+ * [EBNF][] (~> 2.5)
146
152
 
147
153
  ## Installation
148
154
 
@@ -187,10 +193,10 @@ A copy of the [Turtle EBNF][] and derived parser files are included in the repos
187
193
  [PDD]: https://unlicense.org/#unlicensing-contributions
188
194
  [RDF.rb]: https://ruby-rdf.github.io/rdf
189
195
  [EBNF]: https://rubygems.org/gems/ebnf
190
- [Backports]: https://rubygems.org/gems/backports
191
- [N-Triples]: https://www.w3.org/TR/rdf-testcases/#ntriples
192
- [Turtle]: https://www.w3.org/TR/2012/WD-turtle-20120710/
193
- [RDF-star]: https://w3c.github.io/rdf-star/rdf-star-cg-spec.html
196
+ [N-Triples]: https://www.w3.org/TR/rdf12-n-triples
197
+ [Turtle]: https://www.w3.org/TR/rdf12-turtle
198
+ [RDF 1.1]: https://www.w3.org/TR/rdf11-concepts/
199
+ [RDF 1.2]: https://www.w3.org/TR/rdf12-concepts/
194
200
  [Turtle doc]: https://ruby-rdf.github.io/rdf-turtle/master/file/README.md
195
- [Turtle EBNF]: https://dvcs.w3.org/hg/rdf/file/default/rdf-turtle/turtle.bnf
196
- [Freebase Dumps]: https://developers.google.com/freebase/data
201
+ [Turtle EBNF]: https://w3c.github.io/rdf-turtle/spec/turtle-bnf.html
202
+ [Freebase Dumps]: https://developers.google.com/freebase/data
data/VERSION CHANGED
@@ -1 +1 @@
1
- 3.2.1
1
+ 3.3.1
@@ -64,6 +64,14 @@ module RDF::Turtle
64
64
  end
65
65
  pfx_iri = prefix(ns)
66
66
  raise RDF::ReaderError.new("ERROR [line #{lineno}] prefix #{ns.inspect} is not defined", lineno: lineno) unless pfx_iri
67
+
68
+ # Unescape PN_LOCAL_ESC
69
+ suffix = suffix.gsub(PN_LOCAL_ESC) {|esc| esc[1]} if
70
+ suffix.match?(PN_LOCAL_ESC)
71
+
72
+ # Remove any redundant leading hash from suffix
73
+ suffix = suffix.sub(/^\#/, "") if pfx_iri.to_s.index("#")
74
+
67
75
  uri = RDF::URI(pfx_iri + suffix)
68
76
  uri.validate! if validate?
69
77
  uri
@@ -79,8 +87,9 @@ module RDF::Turtle
79
87
  if literal_str = match(LITERAL_PLAIN)
80
88
  literal_str = self.class.unescape(literal_str)
81
89
  literal = case
82
- when language = match(RDF::NTriples::Reader::LANGTAG)
83
- RDF::Literal.new(literal_str, language: language)
90
+ when lang_dir = match(RDF::Turtle::Reader::LANG_DIR)
91
+ language, direction = lang_dir.split('--')
92
+ RDF::Literal.new(literal_str, language: language, direction: direction)
84
93
  when datatype = match(/^(\^\^)/)
85
94
  RDF::Literal.new(literal_str, datatype: read_pname(intern: true) || read_uriref || fail_object)
86
95
  else
@@ -36,7 +36,7 @@ module RDF::Turtle
36
36
 
37
37
  terminal(:PREFIX, PREFIX)
38
38
  terminal(:BASE, BASE)
39
- terminal(:LANGTAG, LANGTAG)
39
+ terminal(:LANG_DIR, LANG_DIR)
40
40
 
41
41
  ##
42
42
  # Reader options
@@ -227,7 +227,14 @@ module RDF::Turtle
227
227
  error("undefined prefix", production: :pname, token: prefix)
228
228
  ''
229
229
  end
230
- suffix = suffix.to_s.sub(/^\#/, "") if base.index("#")
230
+
231
+ # Unescape PN_LOCAL_ESC
232
+ suffix = suffix.gsub(PN_LOCAL_ESC) {|esc| esc[1]} if
233
+ suffix.match?(PN_LOCAL_ESC)
234
+
235
+ # Remove any redundant leading hash from suffix
236
+ suffix = suffix.sub(/^\#/, "") if base.index("#")
237
+
231
238
  debug("pname", depth: options[:depth]) {"base: '#{base}', suffix: '#{suffix}'"}
232
239
  process_iri(base + suffix.to_s)
233
240
  end
@@ -394,7 +401,7 @@ module RDF::Turtle
394
401
  end
395
402
  end
396
403
 
397
- # Read an RDF-star reified statement
404
+ # Read a quoted triple
398
405
  # @return [RDF::Statement]
399
406
  def read_quotedTriple
400
407
  return unless @options[:rdfstar]
@@ -470,8 +477,10 @@ module RDF::Turtle
470
477
  value = @lexer.shift.value[1..-2]
471
478
  error("read_literal", "Unexpected end of file") unless token = @lexer.first
472
479
  case token.type || token.value
473
- when :LANGTAG
474
- literal(value, language: @lexer.shift.value[1..-1].to_sym)
480
+ when :LANG_DIR
481
+ lang_dir = @lexer.shift.value[1..-1]
482
+ language, direction = lang_dir.split('--')
483
+ literal(value, language: language, direction: direction)
475
484
  when '^^'
476
485
  @lexer.shift
477
486
  literal(value, datatype: read_iri)
@@ -484,8 +493,10 @@ module RDF::Turtle
484
493
  value = @lexer.shift.value[3..-4]
485
494
  error("read_literal", "Unexpected end of file") unless token = @lexer.first
486
495
  case token.type || token.value
487
- when :LANGTAG
488
- literal(value, language: @lexer.shift.value[1..-1].to_sym)
496
+ when :LANG_DIR
497
+ lang_dir = @lexer.shift.value[1..-1]
498
+ language, direction = lang_dir.split('--')
499
+ literal(value, language: language, direction: direction)
489
500
  when '^^'
490
501
  @lexer.shift
491
502
  literal(value, datatype: read_iri)
@@ -48,7 +48,7 @@ module RDF::Turtle
48
48
  # 141s
49
49
  BLANK_NODE_LABEL = /_:(?:[0-9]|#{PN_CHARS_U})(?:(?:#{PN_CHARS}|\.)*#{PN_CHARS})?/u.freeze
50
50
  # 144s
51
- LANGTAG = /@[a-zA-Z]+(?:-[a-zA-Z0-9]+)*/u.freeze
51
+ LANG_DIR = /@([a-zA-Z]+(?:-[a-zA-Z0-9]+)*(?:--[a-zA-Z]+)?)/u.freeze
52
52
  # 19
53
53
  INTEGER = /[+-]?[0-9]+/u.freeze
54
54
  # 20
@@ -87,7 +87,7 @@ module RDF::Turtle
87
87
  symbol: :literal_shorthand,
88
88
  datatype: FalseClass,
89
89
  on: ["--no-literal-shorthand"],
90
- description: "Do not ttempt to use Literal shorthands fo numbers and boolean values.") {false},
90
+ description: "Do not attempt to use Literal shorthands fo numbers and boolean values.") {false},
91
91
  ]
92
92
  end
93
93
 
@@ -215,7 +215,7 @@ module RDF::Turtle
215
215
  end
216
216
 
217
217
  pname = case
218
- when @uri_to_pname.has_key?(uri)
218
+ when @uri_to_pname.key?(uri)
219
219
  return @uri_to_pname[uri]
220
220
  when u = @uri_to_prefix.keys.sort_by {|uu| uu.length}.reverse.detect {|uu| uri.index(uu.to_s) == 0}
221
221
  # Use a defined prefix
@@ -296,8 +296,9 @@ module RDF::Turtle
296
296
  in_form ? literal.value : literal.canonicalize.to_s.sub('E', 'e').to_s
297
297
  else
298
298
  text = quoted(literal.value)
299
- text << "@#{literal.language}" if literal.has_language?
300
- text << "^^#{format_uri(literal.datatype)}" if literal.has_datatype?
299
+ text << "@#{literal.language}" if literal.language?
300
+ text << "--#{literal.direction}" if literal.direction?
301
+ text << "^^#{format_uri(literal.datatype)}" if literal.datatype?
301
302
  text
302
303
  end
303
304
  else
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rdf-turtle
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.1
4
+ version: 3.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gregg Kellogg
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-05-28 00:00:00.000000000 Z
11
+ date: 2024-03-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rdf
@@ -16,28 +16,62 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '3.2'
19
+ version: '3.3'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '3.2'
26
+ version: '3.3'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: ebnf
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '2.3'
33
+ version: '2.5'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '2.3'
40
+ version: '2.5'
41
+ - !ruby/object:Gem::Dependency
42
+ name: base64
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.2'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '0.2'
55
+ - !ruby/object:Gem::Dependency
56
+ name: bigdecimal
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '3.1'
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ version: 3.1.5
65
+ type: :runtime
66
+ prerelease: false
67
+ version_requirements: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - "~>"
70
+ - !ruby/object:Gem::Version
71
+ version: '3.1'
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: 3.1.5
41
75
  - !ruby/object:Gem::Dependency
42
76
  name: erubis
43
77
  requirement: !ruby/object:Gem::Requirement
@@ -52,6 +86,20 @@ dependencies:
52
86
  - - "~>"
53
87
  - !ruby/object:Gem::Version
54
88
  version: '2.7'
89
+ - !ruby/object:Gem::Dependency
90
+ name: getoptlong
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '0.2'
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '0.2'
55
103
  - !ruby/object:Gem::Dependency
56
104
  name: htmlentities
57
105
  requirement: !ruby/object:Gem::Requirement
@@ -72,14 +120,14 @@ dependencies:
72
120
  requirements:
73
121
  - - "~>"
74
122
  - !ruby/object:Gem::Version
75
- version: '3.10'
123
+ version: '3.12'
76
124
  type: :development
77
125
  prerelease: false
78
126
  version_requirements: !ruby/object:Gem::Requirement
79
127
  requirements:
80
128
  - - "~>"
81
129
  - !ruby/object:Gem::Version
82
- version: '3.10'
130
+ version: '3.12'
83
131
  - !ruby/object:Gem::Dependency
84
132
  name: rspec-its
85
133
  requirement: !ruby/object:Gem::Requirement
@@ -100,56 +148,56 @@ dependencies:
100
148
  requirements:
101
149
  - - "~>"
102
150
  - !ruby/object:Gem::Version
103
- version: '3.2'
151
+ version: '3.3'
104
152
  type: :development
105
153
  prerelease: false
106
154
  version_requirements: !ruby/object:Gem::Requirement
107
155
  requirements:
108
156
  - - "~>"
109
157
  - !ruby/object:Gem::Version
110
- version: '3.2'
158
+ version: '3.3'
111
159
  - !ruby/object:Gem::Dependency
112
160
  name: json-ld
113
161
  requirement: !ruby/object:Gem::Requirement
114
162
  requirements:
115
163
  - - "~>"
116
164
  - !ruby/object:Gem::Version
117
- version: '3.2'
165
+ version: '3.3'
118
166
  type: :development
119
167
  prerelease: false
120
168
  version_requirements: !ruby/object:Gem::Requirement
121
169
  requirements:
122
170
  - - "~>"
123
171
  - !ruby/object:Gem::Version
124
- version: '3.2'
172
+ version: '3.3'
125
173
  - !ruby/object:Gem::Dependency
126
174
  name: rdf-spec
127
175
  requirement: !ruby/object:Gem::Requirement
128
176
  requirements:
129
177
  - - "~>"
130
178
  - !ruby/object:Gem::Version
131
- version: '3.2'
179
+ version: '3.3'
132
180
  type: :development
133
181
  prerelease: false
134
182
  version_requirements: !ruby/object:Gem::Requirement
135
183
  requirements:
136
184
  - - "~>"
137
185
  - !ruby/object:Gem::Version
138
- version: '3.2'
186
+ version: '3.3'
139
187
  - !ruby/object:Gem::Dependency
140
188
  name: rdf-vocab
141
189
  requirement: !ruby/object:Gem::Requirement
142
190
  requirements:
143
191
  - - "~>"
144
192
  - !ruby/object:Gem::Version
145
- version: '3.2'
193
+ version: '3.3'
146
194
  type: :development
147
195
  prerelease: false
148
196
  version_requirements: !ruby/object:Gem::Requirement
149
197
  requirements:
150
198
  - - "~>"
151
199
  - !ruby/object:Gem::Version
152
- version: '3.2'
200
+ version: '3.3'
153
201
  description: RDF::Turtle is an Turtle reader/writer for the RDF.rb library suite.
154
202
  email: public-rdf-ruby@w3.org
155
203
  executables: []
@@ -186,14 +234,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
186
234
  requirements:
187
235
  - - ">="
188
236
  - !ruby/object:Gem::Version
189
- version: '2.6'
237
+ version: '3.0'
190
238
  required_rubygems_version: !ruby/object:Gem::Requirement
191
239
  requirements:
192
240
  - - ">="
193
241
  - !ruby/object:Gem::Version
194
242
  version: '0'
195
243
  requirements: []
196
- rubygems_version: 3.3.3
244
+ rubygems_version: 3.4.19
197
245
  signing_key:
198
246
  specification_version: 4
199
247
  summary: Turtle reader/writer for Ruby.