rdf-n3 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: a5b682c6d472f149d02a4f9d73c78478fa4cdb91d5b7594f1fb8ef7ff9fdc15f
4
- data.tar.gz: ce493e91c72e8f952b363daa321c9672c2823888a676b495650d786736774000
3
+ metadata.gz: 8e18f6769d2dea883dd5f6a3f18fa6ed30618a0bc0baa9f8704dfc33393bb2ba
4
+ data.tar.gz: c0760c6e9f67aa5319e4458da9d5bbca1c90a52e01fb12c85448dc734b191ea7
5
5
  SHA512:
6
- metadata.gz: 90ed9b5790afd03fae25fb075c4d3e22f19b88232783b1799a42a54ec8308f74e7dc11ff9d59254c17bb4a4c8804aa7aa1cde4c6ddb53b4d6b4b627c5e30a487
7
- data.tar.gz: 369ad2af5732ab29bbcb11c80589c0e3f8c014a8f157381b40312ba5394238e04d569e92ad7b9cb669f221058b8373d39f6965c15f8a4844e44661a1b33f9db2
6
+ metadata.gz: 2aeb82ea8677ec51b2682040cdd749e2e2504031bdb0b5c541f7d41676c57054f07188c1580b707bd7b8441ff0a7b63f7016328e497f3a3b1ba9d7bfff10710b
7
+ data.tar.gz: f200f530016d8dc88c6fe548f489dd971211c1fde39e48afbc958bd5c6fe6f35aa875cfbec073e048869da093b8e263b53483bcc964f12a2be33bcdc6f68219f
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # RDF::N3 reader/writer and reasoner
2
2
  Notation-3 reader/writer for [RDF.rb][RDF.rb] .
3
3
 
4
- [![Gem Version](https://badge.fury.io/rb/rdf-n3.png)](https://badge.fury.io/rb/rdf-n3)
4
+ [![Gem Version](https://badge.fury.io/rb/rdf-n3.svg)](https://badge.fury.io/rb/rdf-n3)
5
5
  [![Build Status](https://github.com/ruby-rdf/rdf-n3/workflows/CI/badge.svg?branch=develop)](https://github.com/ruby-rdf/rdf-n3/actions?query=workflow%3ACI)
6
6
  [![Coverage Status](https://coveralls.io/repos/github/ruby-rdf/rdf-n3/badge.svg?branch=develop)](https://coveralls.io/github/ruby-rdf/rdf-n3?branch=develop)
7
7
  [![Gitter chat](https://badges.gitter.im/ruby-rdf/rdf.png)](https://gitter.im/ruby-rdf/rdf)
@@ -159,6 +159,27 @@ Reasoning is discussed in the [Design Issues][] document.
159
159
  * `time:timeZone` (See {RDF::N3::Algebra::Time::Timezone})
160
160
  * `time:year` (See {RDF::N3::Algebra::Time::Year})
161
161
 
162
+ ## Parser features
163
+
164
+ ### Chaining with `iriPropertyList`
165
+
166
+ Adds a proposed syntactic extension for _subject embedding_ similar to a `blankNodePropertyList`. An `iriPropertyList` begins with `[ id _id_`, instead of a simple `[`. This sets _id_ as the **subject** to be used for the following `propertyList`. This provides a mechanisms similar to [JSON-LD Embedding](https://www.w3.org/TR/json-ld11/#embedding).
167
+
168
+ @prefix dc: <http://purl.org/dc/terms/>.
169
+ @prefix : <http://example.org/nd#>.
170
+
171
+ :SummerReadingList a :OrderedListOfBooks ;
172
+ :toRead (
173
+ [id :mobyDick dc:title "Moby Dick"; :setting :WhaleIntestines ]
174
+ [
175
+ id :jaws
176
+ dc:title "Jaws";
177
+ :setting :Beach
178
+ ]
179
+ ).
180
+
181
+ Note that the _id_ used in the `iriPropertyList` is not delimited by a `;`
182
+
162
183
  ### Formulae / Quoted Graphs
163
184
 
164
185
  N3 Formulae are introduced with the `{ statement-list }` syntax. A given formula is assigned an `RDF::Node` instance, which is also used as the graph_name for `RDF::Statement` instances provided to `RDF::N3::Reader#each_statement`. For example, the following N3 generates the associated statements:
@@ -193,11 +214,11 @@ Formulae are typically used to query the knowledge-base, which is set from the b
193
214
  Blank nodes associated with rdf:List statements used as part of a built-in are made _non-distinguished_ existential variables, and patters containing these variables become optional. If they are not bound as part of the query, the implicitly are bound as the original blank nodes defined within the formula, which allows for both constant list arguments, list arguments that contain variables, or arguments which are variables expanding to lists.
194
215
 
195
216
  ## Dependencies
196
- * [Ruby](https://ruby-lang.org/) (>= 2.6)
197
- * [RDF.rb](https://rubygems.org/gems/rdf) (~> 3.2)
198
- * [EBNF][EBNF gem] (~> 2.2)
199
- * [SPARQL][SPARQL gem] (~> 3.1)
200
- * [SXP][SXP gem] (~> 1.2)
217
+ * [Ruby](https://ruby-lang.org/) (>= 3.0)
218
+ * [RDF.rb](https://rubygems.org/gems/rdf) (~> 3.3)
219
+ * [EBNF][EBNF gem] (~> 2.4)
220
+ * [SPARQL][SPARQL gem] (~> 3.3)
221
+ * [SXP][SXP gem] (~> 1.3)
201
222
 
202
223
  ## Documentation
203
224
  Full documentation available on [RubyDoc.info](https://ruby-rdf.github.io/rdf-n3)
@@ -217,6 +238,10 @@ Full documentation available on [RubyDoc.info](https://ruby-rdf.github.io/rdf-n3
217
238
  * {RDF::N3::Math}
218
239
  * {RDF::N3::Time}
219
240
 
241
+ ## Change Log
242
+
243
+ See [Release Notes on GitHub](https://github.com/ruby-rdf/rdf-n3/releases)
244
+
220
245
  ## Resources
221
246
  * [RDF.rb][RDF.rb]
222
247
  * [Distiller](http://rdf.greggkellogg.net/distiller)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 3.2.1
1
+ 3.3.1
@@ -18,8 +18,7 @@ module RDF::N3::Algebra::Time
18
18
  case position
19
19
  when :subject
20
20
  return nil unless resource.literal?
21
- resource = resource.as_datetime
22
- RDF::Literal(resource.object.strftime("%d").to_i)
21
+ resource.as_datetime.day
23
22
  when :object
24
23
  return nil unless resource.literal? || resource.variable?
25
24
  resource
@@ -18,8 +18,7 @@ module RDF::N3::Algebra::Time
18
18
  case position
19
19
  when :subject
20
20
  return nil unless resource.literal?
21
- resource = resource.as_datetime
22
- RDF::Literal(resource.object.strftime("%H").to_i)
21
+ resource.as_datetime.hours
23
22
  when :object
24
23
  return nil unless resource.literal? || resource.variable?
25
24
  resource
@@ -21,9 +21,8 @@ module RDF::N3::Algebra::Time
21
21
  when RDF::Query::Variable
22
22
  resource
23
23
  when RDF::Literal
24
- resource = resource.as_datetime
25
24
  # Subject evaluates to seconds from the epoc
26
- RDF::Literal::Integer.new(resource.object.strftime("%s"))
25
+ RDF::Literal::Integer.new(resource.as_datetime.object.strftime("%s"))
27
26
  else
28
27
  nil
29
28
  end
@@ -18,8 +18,7 @@ module RDF::N3::Algebra::Time
18
18
  case position
19
19
  when :subject
20
20
  return nil unless resource.literal?
21
- resource = resource.as_datetime
22
- RDF::Literal(resource.object.strftime("%M").to_i)
21
+ resource.as_datetime.minutes
23
22
  when :object
24
23
  return nil unless resource.literal? || resource.variable?
25
24
  resource
@@ -18,8 +18,7 @@ module RDF::N3::Algebra::Time
18
18
  case position
19
19
  when :subject
20
20
  return nil unless resource.literal?
21
- resource = resource.as_datetime
22
- RDF::Literal(resource.object.strftime("%m").to_i)
21
+ resource.as_datetime.month
23
22
  when :object
24
23
  return nil unless resource.literal? || resource.variable?
25
24
  resource
@@ -18,8 +18,7 @@ module RDF::N3::Algebra::Time
18
18
  case position
19
19
  when :subject
20
20
  return nil unless resource.literal?
21
- resource = resource.as_datetime
22
- RDF::Literal(resource.object.strftime("%S").to_i)
21
+ RDF::Literal(resource.as_datetime.seconds.to_i)
23
22
  when :object
24
23
  return nil unless resource.literal? || resource.variable?
25
24
  resource
@@ -18,8 +18,7 @@ module RDF::N3::Algebra::Time
18
18
  case position
19
19
  when :subject
20
20
  return nil unless resource.literal?
21
- resource = resource.as_datetime
22
- RDF::Literal(resource.object.strftime("%Z"))
21
+ resource.as_datetime.tz
23
22
  when :object
24
23
  return nil unless resource.literal? || resource.variable?
25
24
  resource
@@ -18,8 +18,7 @@ module RDF::N3::Algebra::Time
18
18
  case position
19
19
  when :subject
20
20
  return nil unless resource.literal?
21
- resource = resource.as_datetime
22
- RDF::Literal(resource.object.strftime("%Y").to_i)
21
+ resource.as_datetime.year
23
22
  when :object
24
23
  return nil unless resource.literal? || resource.variable?
25
24
  resource
data/lib/rdf/n3/format.rb CHANGED
@@ -17,7 +17,10 @@ module RDF::N3
17
17
  #
18
18
  # @see https://www.w3.org/TR/rdf-testcases/#ntriples
19
19
  class Format < RDF::Format
20
- content_type 'text/n3', extension: :n3, aliases: %w(text/rdf+n3;q=0.2 application/rdf+n3;q=0.2)
20
+ content_type 'text/n3',
21
+ extension: :n3,
22
+ aliases: %w(text/rdf+n3;q=0.2 application/rdf+n3;q=0.2),
23
+ uri: 'http://www.w3.org/ns/formats/N3'
21
24
  content_encoding 'utf-8'
22
25
 
23
26
  reader { RDF::N3::Reader }
data/lib/rdf/n3/reader.rb CHANGED
@@ -181,6 +181,7 @@ module RDF::N3
181
181
 
182
182
  # @!parse none
183
183
  terminal(:ANON, ANON)
184
+ terminal(:IPLSTART, IPLSTART)
184
185
  terminal(:BLANK_NODE_LABEL, BLANK_NODE_LABEL)
185
186
  terminal(:IRIREF, IRIREF, unescape: true)
186
187
  terminal(:DOUBLE, DOUBLE)
@@ -311,6 +312,9 @@ module RDF::N3
311
312
  prod(:triples, %w{.}) do
312
313
  error("read_triples", "Unexpected end of file") unless token = @lexer.first
313
314
  subject = case token.type || token.value
315
+ when IPLSTART
316
+ # iriPropertyList predicateObjectList?
317
+ read_iriPropertyList || error("Failed to parse iriPropertyList", production: :triples, token: @lexer.first)
314
318
  when '['
315
319
  # blankNodePropertyList predicateObjectList?
316
320
  read_blankNodePropertyList || error("Failed to parse blankNodePropertyList", production: :triples, token: @lexer.first)
@@ -435,6 +439,7 @@ module RDF::N3
435
439
  read_quickVar ||
436
440
  read_collection ||
437
441
  read_blankNodePropertyList ||
442
+ read_iriPropertyList ||
438
443
  read_literal ||
439
444
  read_formula
440
445
  end
@@ -523,6 +528,28 @@ module RDF::N3
523
528
  end
524
529
  end
525
530
 
531
+ ##
532
+ # Read a iriPropertyList
533
+ #
534
+ # [21] iriPropertyList ::= IPLSTART iri predicateObjectList ']'
535
+ #
536
+ # @return [RDF::Node]
537
+ def read_iriPropertyList
538
+ token = @lexer.first
539
+ if token.type == :IPLSTART
540
+ prod(:iriPropertyList, %{]}) do
541
+ @lexer.shift
542
+ progress("iriPropertyList", depth: options[:depth], token: token)
543
+ node = read_iri
544
+ debug("iriPropertyList: subject", depth: options[:depth]) {node.to_sxp}
545
+ read_predicateObjectList(node)
546
+ error("iriPropertyList", "Expected closing ']'") unless @lexer.first === ']'
547
+ @lexer.shift
548
+ node
549
+ end
550
+ end
551
+ end
552
+
526
553
  ##
527
554
  # Read a collection (`RDF::List`)
528
555
  #
@@ -799,6 +826,8 @@ module RDF::N3
799
826
  namespace(nil, iri("#{base_uri}#")) if prefix.nil? && !prefix(nil)
800
827
 
801
828
  base = prefix(prefix).to_s
829
+ suffix = suffix.gsub(PN_LOCAL_ESC) {|esc| esc[1]} if
830
+ suffix.match?(PN_LOCAL_ESC)
802
831
  suffix = suffix.to_s.sub(/^\#/, "") if base.index("#")
803
832
  iri(base + suffix.to_s)
804
833
  end
@@ -64,6 +64,9 @@ module RDF::N3
64
64
  # 25
65
65
  STRING_LITERAL_LONG_QUOTE = /"""(?:(?:"|"")?(?:[^"\\]|#{ECHAR}|#{UCHAR}))*"""/um.freeze
66
66
 
67
+ # 33
68
+ IPLSTART = /\[\s*id/um.freeze
69
+
67
70
  # 28t
68
71
  PREFIX = /@?prefix/ui.freeze
69
72
  # 29t
metadata CHANGED
@@ -1,15 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rdf-n3
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
8
8
  - Kellogg
9
- autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2022-01-28 00:00:00.000000000 Z
11
+ date: 2025-05-19 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: ebnf
@@ -17,140 +16,154 @@ dependencies:
17
16
  requirements:
18
17
  - - "~>"
19
18
  - !ruby/object:Gem::Version
20
- version: '2.2'
19
+ version: '2.5'
21
20
  type: :runtime
22
21
  prerelease: false
23
22
  version_requirements: !ruby/object:Gem::Requirement
24
23
  requirements:
25
24
  - - "~>"
26
25
  - !ruby/object:Gem::Version
27
- version: '2.2'
26
+ version: '2.5'
28
27
  - !ruby/object:Gem::Dependency
29
28
  name: rdf
30
29
  requirement: !ruby/object:Gem::Requirement
31
30
  requirements:
32
31
  - - "~>"
33
32
  - !ruby/object:Gem::Version
34
- version: '3.2'
33
+ version: '3.3'
35
34
  type: :runtime
36
35
  prerelease: false
37
36
  version_requirements: !ruby/object:Gem::Requirement
38
37
  requirements:
39
38
  - - "~>"
40
39
  - !ruby/object:Gem::Version
41
- version: '3.2'
40
+ version: '3.3'
42
41
  - !ruby/object:Gem::Dependency
43
42
  name: sparql
44
43
  requirement: !ruby/object:Gem::Requirement
45
44
  requirements:
46
45
  - - "~>"
47
46
  - !ruby/object:Gem::Version
48
- version: '3.2'
47
+ version: '3.3'
49
48
  type: :runtime
50
49
  prerelease: false
51
50
  version_requirements: !ruby/object:Gem::Requirement
52
51
  requirements:
53
52
  - - "~>"
54
53
  - !ruby/object:Gem::Version
55
- version: '3.2'
54
+ version: '3.3'
56
55
  - !ruby/object:Gem::Dependency
57
56
  name: sxp
58
57
  requirement: !ruby/object:Gem::Requirement
59
58
  requirements:
60
59
  - - "~>"
61
60
  - !ruby/object:Gem::Version
62
- version: '1.2'
61
+ version: '2.0'
63
62
  type: :runtime
64
63
  prerelease: false
65
64
  version_requirements: !ruby/object:Gem::Requirement
66
65
  requirements:
67
66
  - - "~>"
68
67
  - !ruby/object:Gem::Version
69
- version: '1.2'
68
+ version: '2.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: getoptlong
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.2'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.2'
70
83
  - !ruby/object:Gem::Dependency
71
84
  name: json-ld
72
85
  requirement: !ruby/object:Gem::Requirement
73
86
  requirements:
74
87
  - - "~>"
75
88
  - !ruby/object:Gem::Version
76
- version: '3.2'
89
+ version: '3.3'
77
90
  type: :development
78
91
  prerelease: false
79
92
  version_requirements: !ruby/object:Gem::Requirement
80
93
  requirements:
81
94
  - - "~>"
82
95
  - !ruby/object:Gem::Version
83
- version: '3.2'
96
+ version: '3.3'
84
97
  - !ruby/object:Gem::Dependency
85
98
  name: rdf-spec
86
99
  requirement: !ruby/object:Gem::Requirement
87
100
  requirements:
88
101
  - - "~>"
89
102
  - !ruby/object:Gem::Version
90
- version: '3.2'
103
+ version: '3.3'
91
104
  type: :development
92
105
  prerelease: false
93
106
  version_requirements: !ruby/object:Gem::Requirement
94
107
  requirements:
95
108
  - - "~>"
96
109
  - !ruby/object:Gem::Version
97
- version: '3.2'
110
+ version: '3.3'
98
111
  - !ruby/object:Gem::Dependency
99
112
  name: rdf-isomorphic
100
113
  requirement: !ruby/object:Gem::Requirement
101
114
  requirements:
102
115
  - - "~>"
103
116
  - !ruby/object:Gem::Version
104
- version: '3.2'
117
+ version: '3.3'
105
118
  type: :development
106
119
  prerelease: false
107
120
  version_requirements: !ruby/object:Gem::Requirement
108
121
  requirements:
109
122
  - - "~>"
110
123
  - !ruby/object:Gem::Version
111
- version: '3.2'
124
+ version: '3.3'
112
125
  - !ruby/object:Gem::Dependency
113
126
  name: rdf-trig
114
127
  requirement: !ruby/object:Gem::Requirement
115
128
  requirements:
116
129
  - - "~>"
117
130
  - !ruby/object:Gem::Version
118
- version: '3.2'
131
+ version: '3.3'
119
132
  type: :development
120
133
  prerelease: false
121
134
  version_requirements: !ruby/object:Gem::Requirement
122
135
  requirements:
123
136
  - - "~>"
124
137
  - !ruby/object:Gem::Version
125
- version: '3.2'
138
+ version: '3.3'
126
139
  - !ruby/object:Gem::Dependency
127
140
  name: rdf-vocab
128
141
  requirement: !ruby/object:Gem::Requirement
129
142
  requirements:
130
143
  - - "~>"
131
144
  - !ruby/object:Gem::Version
132
- version: '3.2'
145
+ version: '3.3'
133
146
  type: :development
134
147
  prerelease: false
135
148
  version_requirements: !ruby/object:Gem::Requirement
136
149
  requirements:
137
150
  - - "~>"
138
151
  - !ruby/object:Gem::Version
139
- version: '3.2'
152
+ version: '3.3'
140
153
  - !ruby/object:Gem::Dependency
141
154
  name: rspec
142
155
  requirement: !ruby/object:Gem::Requirement
143
156
  requirements:
144
157
  - - "~>"
145
158
  - !ruby/object:Gem::Version
146
- version: '3.10'
159
+ version: '3.12'
147
160
  type: :development
148
161
  prerelease: false
149
162
  version_requirements: !ruby/object:Gem::Requirement
150
163
  requirements:
151
164
  - - "~>"
152
165
  - !ruby/object:Gem::Version
153
- version: '3.10'
166
+ version: '3.12'
154
167
  - !ruby/object:Gem::Dependency
155
168
  name: rspec-its
156
169
  requirement: !ruby/object:Gem::Requirement
@@ -293,7 +306,6 @@ metadata:
293
306
  homepage_uri: https://github.com/ruby-rdf/rdf-n3
294
307
  mailing_list_uri: https://lists.w3.org/Archives/Public/public-rdf-ruby/
295
308
  source_code_uri: https://github.com/ruby-rdf/rdf-n3
296
- post_install_message:
297
309
  rdoc_options: []
298
310
  require_paths:
299
311
  - lib
@@ -301,15 +313,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
301
313
  requirements:
302
314
  - - ">="
303
315
  - !ruby/object:Gem::Version
304
- version: '2.6'
316
+ version: '3.0'
305
317
  required_rubygems_version: !ruby/object:Gem::Requirement
306
318
  requirements:
307
319
  - - ">="
308
320
  - !ruby/object:Gem::Version
309
321
  version: '0'
310
322
  requirements: []
311
- rubygems_version: 3.1.4
312
- signing_key:
323
+ rubygems_version: 3.6.7
313
324
  specification_version: 4
314
325
  summary: Notation3 reader/writer and reasoner for RDF.rb.
315
326
  test_files: []