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 +4 -4
- data/README.md +31 -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 +29 -0
- data/lib/rdf/n3/terminals.rb +3 -0
- metadata +38 -27
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8e18f6769d2dea883dd5f6a3f18fa6ed30618a0bc0baa9f8704dfc33393bb2ba
|
4
|
+
data.tar.gz: c0760c6e9f67aa5319e4458da9d5bbca1c90a52e01fb12c85448dc734b191ea7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
[](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)
|
@@ -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.
|
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
|
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
|
#
|
@@ -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
|
data/lib/rdf/n3/terminals.rb
CHANGED
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.
|
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:
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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: '
|
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: '
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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: '
|
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.
|
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: []
|