rdf-n3 3.2.1 → 3.3.0
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 +4 -4
- data/README.md +27 -6
- data/VERSION +1 -1
- data/lib/rdf/n3/algebra/time/day.rb +1 -2
- data/lib/rdf/n3/algebra/time/hour.rb +1 -2
- data/lib/rdf/n3/algebra/time/in_seconds.rb +1 -2
- data/lib/rdf/n3/algebra/time/minute.rb +1 -2
- data/lib/rdf/n3/algebra/time/month.rb +1 -2
- data/lib/rdf/n3/algebra/time/second.rb +1 -2
- data/lib/rdf/n3/algebra/time/timezone.rb +1 -2
- data/lib/rdf/n3/algebra/time/year.rb +1 -2
- data/lib/rdf/n3/format.rb +4 -1
- data/lib/rdf/n3/reader.rb +27 -0
- data/lib/rdf/n3/terminals.rb +3 -0
- metadata +24 -24
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0b8ad4f6d7ca32219722ad7a0c73be390e31f4f1e8f743f3602bdfd4e0b2227d
|
4
|
+
data.tar.gz: a10d3b799d6dd79edb57c9e30842f20ec173dcdb5cce1bb82ed0cf658223171e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 29ec8639b1e5471a19f15108ddacc23c3c5e5e2df3e8684a488f346d49eeb00cf2741dfbe76c22ee54dbbee6e60b002471f16a84573d5981bef556cb75f78073
|
7
|
+
data.tar.gz: 3793b5d2e0fa7c488af872c57e6ebc136e123554d734ab64c5e19e20aa0cc87d886f17346937505705c709d5aba296fa2ba61d14fa5ac65f164d05a81598dbae
|
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
|
-
[](https://badge.fury.io/rb/rdf-n3)
|
5
5
|
[](https://github.com/ruby-rdf/rdf-n3/actions?query=workflow%3ACI)
|
6
6
|
[](https://coveralls.io/github/ruby-rdf/rdf-n3?branch=develop)
|
7
7
|
[](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/) (>=
|
197
|
-
* [RDF.rb](https://rubygems.org/gems/rdf) (~> 3.
|
198
|
-
* [EBNF][EBNF gem] (~> 2.
|
199
|
-
* [SPARQL][SPARQL gem] (~> 3.
|
200
|
-
* [SXP][SXP gem] (~> 1.
|
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)
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.
|
1
|
+
3.3.0
|
@@ -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
|
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
|
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
|
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
|
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
|
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
|
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
|
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',
|
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
|
#
|
data/lib/rdf/n3/terminals.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rdf-n3
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gregg
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2023-08-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: ebnf
|
@@ -17,140 +17,140 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: '2.
|
20
|
+
version: '2.4'
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: '2.
|
27
|
+
version: '2.4'
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: rdf
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
32
|
- - "~>"
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: '3.
|
34
|
+
version: '3.3'
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
39
|
- - "~>"
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: '3.
|
41
|
+
version: '3.3'
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: sparql
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
46
|
- - "~>"
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
version: '3.
|
48
|
+
version: '3.3'
|
49
49
|
type: :runtime
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
53
|
- - "~>"
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version: '3.
|
55
|
+
version: '3.3'
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
57
|
name: sxp
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
59
59
|
requirements:
|
60
60
|
- - "~>"
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version: '1.
|
62
|
+
version: '1.3'
|
63
63
|
type: :runtime
|
64
64
|
prerelease: false
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
67
|
- - "~>"
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version: '1.
|
69
|
+
version: '1.3'
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: json-ld
|
72
72
|
requirement: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
74
|
- - "~>"
|
75
75
|
- !ruby/object:Gem::Version
|
76
|
-
version: '3.
|
76
|
+
version: '3.3'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
79
|
version_requirements: !ruby/object:Gem::Requirement
|
80
80
|
requirements:
|
81
81
|
- - "~>"
|
82
82
|
- !ruby/object:Gem::Version
|
83
|
-
version: '3.
|
83
|
+
version: '3.3'
|
84
84
|
- !ruby/object:Gem::Dependency
|
85
85
|
name: rdf-spec
|
86
86
|
requirement: !ruby/object:Gem::Requirement
|
87
87
|
requirements:
|
88
88
|
- - "~>"
|
89
89
|
- !ruby/object:Gem::Version
|
90
|
-
version: '3.
|
90
|
+
version: '3.3'
|
91
91
|
type: :development
|
92
92
|
prerelease: false
|
93
93
|
version_requirements: !ruby/object:Gem::Requirement
|
94
94
|
requirements:
|
95
95
|
- - "~>"
|
96
96
|
- !ruby/object:Gem::Version
|
97
|
-
version: '3.
|
97
|
+
version: '3.3'
|
98
98
|
- !ruby/object:Gem::Dependency
|
99
99
|
name: rdf-isomorphic
|
100
100
|
requirement: !ruby/object:Gem::Requirement
|
101
101
|
requirements:
|
102
102
|
- - "~>"
|
103
103
|
- !ruby/object:Gem::Version
|
104
|
-
version: '3.
|
104
|
+
version: '3.3'
|
105
105
|
type: :development
|
106
106
|
prerelease: false
|
107
107
|
version_requirements: !ruby/object:Gem::Requirement
|
108
108
|
requirements:
|
109
109
|
- - "~>"
|
110
110
|
- !ruby/object:Gem::Version
|
111
|
-
version: '3.
|
111
|
+
version: '3.3'
|
112
112
|
- !ruby/object:Gem::Dependency
|
113
113
|
name: rdf-trig
|
114
114
|
requirement: !ruby/object:Gem::Requirement
|
115
115
|
requirements:
|
116
116
|
- - "~>"
|
117
117
|
- !ruby/object:Gem::Version
|
118
|
-
version: '3.
|
118
|
+
version: '3.3'
|
119
119
|
type: :development
|
120
120
|
prerelease: false
|
121
121
|
version_requirements: !ruby/object:Gem::Requirement
|
122
122
|
requirements:
|
123
123
|
- - "~>"
|
124
124
|
- !ruby/object:Gem::Version
|
125
|
-
version: '3.
|
125
|
+
version: '3.3'
|
126
126
|
- !ruby/object:Gem::Dependency
|
127
127
|
name: rdf-vocab
|
128
128
|
requirement: !ruby/object:Gem::Requirement
|
129
129
|
requirements:
|
130
130
|
- - "~>"
|
131
131
|
- !ruby/object:Gem::Version
|
132
|
-
version: '3.
|
132
|
+
version: '3.3'
|
133
133
|
type: :development
|
134
134
|
prerelease: false
|
135
135
|
version_requirements: !ruby/object:Gem::Requirement
|
136
136
|
requirements:
|
137
137
|
- - "~>"
|
138
138
|
- !ruby/object:Gem::Version
|
139
|
-
version: '3.
|
139
|
+
version: '3.3'
|
140
140
|
- !ruby/object:Gem::Dependency
|
141
141
|
name: rspec
|
142
142
|
requirement: !ruby/object:Gem::Requirement
|
143
143
|
requirements:
|
144
144
|
- - "~>"
|
145
145
|
- !ruby/object:Gem::Version
|
146
|
-
version: '3.
|
146
|
+
version: '3.12'
|
147
147
|
type: :development
|
148
148
|
prerelease: false
|
149
149
|
version_requirements: !ruby/object:Gem::Requirement
|
150
150
|
requirements:
|
151
151
|
- - "~>"
|
152
152
|
- !ruby/object:Gem::Version
|
153
|
-
version: '3.
|
153
|
+
version: '3.12'
|
154
154
|
- !ruby/object:Gem::Dependency
|
155
155
|
name: rspec-its
|
156
156
|
requirement: !ruby/object:Gem::Requirement
|
@@ -301,14 +301,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
301
301
|
requirements:
|
302
302
|
- - ">="
|
303
303
|
- !ruby/object:Gem::Version
|
304
|
-
version: '
|
304
|
+
version: '3.0'
|
305
305
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
306
306
|
requirements:
|
307
307
|
- - ">="
|
308
308
|
- !ruby/object:Gem::Version
|
309
309
|
version: '0'
|
310
310
|
requirements: []
|
311
|
-
rubygems_version: 3.
|
311
|
+
rubygems_version: 3.2.33
|
312
312
|
signing_key:
|
313
313
|
specification_version: 4
|
314
314
|
summary: Notation3 reader/writer and reasoner for RDF.rb.
|