rdf-reasoner 0.6.2 → 0.8.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 +16 -5
- data/VERSION +1 -1
- data/lib/rdf/reasoner/extensions.rb +8 -4
- data/lib/rdf/reasoner/rdfs.rb +14 -14
- data/lib/rdf/reasoner/schema.rb +85 -29
- data/lib/rdf/reasoner.rb +0 -1
- metadata +27 -39
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0e75c24da7eb57a1b7c670665192cfd023907a461ab813222231130699562965
|
4
|
+
data.tar.gz: 3d89941dde1e6cf0528ff3b70ea9019551524d85c4f09ec09b97125b36f868d8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 791384df059259071ece3543ada759724b64420d21e78ef01479fded2fbaabb7035cff17c4feb2f1e4d9dedffb1961d07db4271c095563b9b4ce7b12724a9cdb
|
7
|
+
data.tar.gz: 9925f559f0a2f77b7128561024bce44c577958a5dc7fb644eb05ca0e7cd2e307bc539b35c19de4e176922b2cda88bf21fec4fe77034de5e3ed596c4fd27c7bf1
|
data/README.md
CHANGED
@@ -1,4 +1,13 @@
|
|
1
|
-
#
|
1
|
+
# RDF::Reasoner
|
2
|
+
|
3
|
+
A partial RDFS/OWL/schema.org reasoner for [RDF.rb][].
|
4
|
+
|
5
|
+
[](https://badge.fury.io/rb/rdf-reasoner)
|
6
|
+
[](https://github.com/ruby-rdf/rdf-reasoner/actions?query=workflow%3ACI)
|
7
|
+
[](https://coveralls.io/github/ruby-rdf/rdf-reasoner?branch=develop)
|
8
|
+
[](https://gitter.im/ruby-rdf/rdf)
|
9
|
+
|
10
|
+
## Description
|
2
11
|
|
3
12
|
Reasons over RDFS/OWL vocabularies and schema.org to generate statements which are entailed based on base RDFS/OWL rules along with vocabulary information. It can also be used to ask specific questions, such as if a given object is consistent with the vocabulary ruleset. This can be used to implement [SPARQL Entailment][] Regimes and [RDF Schema][] entailment.
|
4
13
|
|
@@ -112,8 +121,8 @@ The `rdf` command-line interface is extended with `entail` and `lint` commands.
|
|
112
121
|
|
113
122
|
## Dependencies
|
114
123
|
|
115
|
-
* [Ruby](https://ruby-lang.org/) (>= 2.
|
116
|
-
* [RDF.rb](https://rubygems.org/gems/rdf) (~> 3.
|
124
|
+
* [Ruby](https://ruby-lang.org/) (>= 2.6)
|
125
|
+
* [RDF.rb](https://rubygems.org/gems/rdf) (~> 3.2)
|
117
126
|
|
118
127
|
## Mailing List
|
119
128
|
|
@@ -136,7 +145,9 @@ The `rdf` command-line interface is extended with `entail` and `lint` commands.
|
|
136
145
|
list in the the `README`. Alphabetical order applies.
|
137
146
|
* Do note that in order for us to merge any non-trivial changes (as a rule
|
138
147
|
of thumb, additions larger than about 15 lines of code), we need an
|
139
|
-
explicit [public domain dedication][PDD] on record from you
|
148
|
+
explicit [public domain dedication][PDD] on record from you,
|
149
|
+
which you will be asked to agree to on the first commit to a repo within the organization.
|
150
|
+
Note that the agreement applies to all repos in the [Ruby RDF](https://github.com/ruby-rdf/) organization.
|
140
151
|
|
141
152
|
## License
|
142
153
|
|
@@ -147,7 +158,7 @@ see <https://unlicense.org/> or the accompanying {file:UNLICENSE} file.
|
|
147
158
|
[RDF]: https://www.w3.org/RDF/
|
148
159
|
[YARD]: https://yardoc.org/
|
149
160
|
[YARD-GS]: https://rubydoc.info/docs/yard/file/docs/GettingStarted.md
|
150
|
-
[PDD]: https://
|
161
|
+
[PDD]: https://unlicense.org/#unlicensing-contributions
|
151
162
|
[SPARQL]: https://en.wikipedia.org/wiki/SPARQL
|
152
163
|
[SPARQL Query]: https://www.w3.org/TR/2013/REC-sparql11-query-20130321/
|
153
164
|
[SPARQL Entailment]:https://www.w3.org/TR/sparql11-entailment/
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.8.0
|
@@ -241,7 +241,7 @@ module RDF
|
|
241
241
|
# Must be a defined term, not in RDF or RDFS vocabularies
|
242
242
|
if term && term.class?
|
243
243
|
# Warn against using a deprecated term
|
244
|
-
superseded = term.
|
244
|
+
superseded = term.properties[:'http://schema.org/supersededBy']
|
245
245
|
superseded = superseded.pname if superseded.respond_to?(:pname)
|
246
246
|
(messages[:class] ||= {})[pname] = ["Term is superseded by #{superseded}"] if superseded
|
247
247
|
else
|
@@ -266,7 +266,7 @@ module RDF
|
|
266
266
|
# Must be a defined property
|
267
267
|
if term.respond_to?(:property?) && term.property?
|
268
268
|
# Warn against using a deprecated term
|
269
|
-
superseded = term.
|
269
|
+
superseded = term.properties[:'http://schema.org/supersededBy']
|
270
270
|
superseded = superseded.pname if superseded.respond_to?(:pname)
|
271
271
|
(messages[:property] ||= {})[pname] = ["Term is superseded by #{superseded}"] if superseded
|
272
272
|
else
|
@@ -285,7 +285,9 @@ module RDF
|
|
285
285
|
((messages[:property] ||= {})[pname] ||= []) << if !term.domain.empty?
|
286
286
|
"Subject #{show_resource(stmt.subject)} not compatible with domain (#{Array(term.domain).map {|d| d.pname|| d}.join(',')})"
|
287
287
|
else
|
288
|
-
|
288
|
+
domains = Array(term.domainIncludes) +
|
289
|
+
Array(term.properties[:'https://schema.org/domainIncludes'])
|
290
|
+
"Subject #{show_resource(stmt.subject)} not compatible with domainIncludes (#{domains.map {|d| d.pname|| d}.join(',')})"
|
289
291
|
end
|
290
292
|
end
|
291
293
|
|
@@ -300,7 +302,9 @@ module RDF
|
|
300
302
|
((messages[:property] ||= {})[pname] ||= []) << if !term.range.empty?
|
301
303
|
"Object #{show_resource(stmt.object)} not compatible with range (#{Array(term.range).map {|d| d.pname|| d}.join(',')})"
|
302
304
|
else
|
303
|
-
|
305
|
+
ranges = Array(term.rangeIncludes) +
|
306
|
+
Array(term.properties[:'https://schema.org/rangeIncludes'])
|
307
|
+
"Object #{show_resource(stmt.object)} not compatible with rangeIncludes (#{ranges.map {|d| d.pname|| d}.join(',')})"
|
304
308
|
end
|
305
309
|
end
|
306
310
|
end
|
data/lib/rdf/reasoner/rdfs.rb
CHANGED
@@ -290,12 +290,12 @@ module RDF::Reasoner
|
|
290
290
|
# XSD types are valid if the datatype matches, or they are plain and valid according to the grammar of the range
|
291
291
|
resource.datatype == range ||
|
292
292
|
resource.plain? && RDF::Literal.new(resource.value, datatype: range).valid?
|
293
|
-
elsif range.start_with?(
|
293
|
+
elsif range.start_with?("http://ogp.me/ns/class#")
|
294
294
|
case range
|
295
|
-
when RDF::
|
296
|
-
[RDF::
|
295
|
+
when RDF::URI("http://ogp.me/ns/class#boolean_str")
|
296
|
+
[RDF::URI("http://ogp.me/ns/class#boolean_str"), RDF::XSD.boolean].include?(resource.datatype) ||
|
297
297
|
resource.plain? && RDF::Literal::Boolean.new(resource.value).valid?
|
298
|
-
when RDF::
|
298
|
+
when RDF::URI("http://ogp.me/ns/class#date_time_str")
|
299
299
|
# Schema.org date based on ISO 8601, mapped to appropriate XSD types for validation
|
300
300
|
case resource
|
301
301
|
when RDF::Literal::Date, RDF::Literal::Time, RDF::Literal::DateTime, RDF::Literal::Duration
|
@@ -303,27 +303,27 @@ module RDF::Reasoner
|
|
303
303
|
else
|
304
304
|
ISO_8601.match(resource.value)
|
305
305
|
end
|
306
|
-
when RDF::
|
306
|
+
when RDF::URI("http://ogp.me/ns/class#determiner_str")
|
307
307
|
# The lexical space: "", "the", "a", "an", and "auto".
|
308
308
|
resource.plain? && (%w(the a an auto) + [""]).include?(resource.value)
|
309
|
-
when RDF::
|
309
|
+
when RDF::URI("http://ogp.me/ns/class#float_str")
|
310
310
|
# A string representation of a 64-bit signed floating point number. Example lexical values include "1.234", "-1.234", "1.2e3", "-1.2e3", and "7E-10".
|
311
|
-
[RDF::
|
311
|
+
[RDF::URI("http://ogp.me/ns/class#float_str"), RDF::Literal::Double, RDF::Literal::Float].include?(resource.datatype) ||
|
312
312
|
resource.plain? && RDF::Literal::Double.new(resource.value).valid?
|
313
|
-
when RDF::
|
313
|
+
when RDF::URI("http://ogp.me/ns/class#integer_str")
|
314
314
|
resource.is_a?(RDF::Literal::Integer) ||
|
315
|
-
[RDF::
|
315
|
+
[RDF::URI("http://ogp.me/ns/class#integer_str")].include?(resource.datatype) ||
|
316
316
|
resource.plain? && RDF::Literal::Integer.new(resource.value).valid?
|
317
|
-
when RDF::
|
317
|
+
when RDF::URI("http://ogp.me/ns/class#mime_type_str")
|
318
318
|
# Valid mime type strings \(e.g., "application/mp3"\).
|
319
|
-
[RDF::
|
319
|
+
[RDF::URI("http://ogp.me/ns/class#mime_type_str")].include?(resource.datatype) ||
|
320
320
|
resource.plain? && resource.value =~ %r(^[\w\-\+]+/[\w\-\+]+$)
|
321
|
-
when RDF::
|
321
|
+
when RDF::URI("http://ogp.me/ns/class#string")
|
322
322
|
resource.plain?
|
323
|
-
when RDF::
|
323
|
+
when RDF::URI("http://ogp.me/ns/class#url")
|
324
324
|
# A string of Unicode characters forming a valid URL having the http or https scheme.
|
325
325
|
u = RDF::URI(resource.value)
|
326
|
-
resource.datatype == RDF::
|
326
|
+
resource.datatype == RDF::URI("http://ogp.me/ns/class#url") ||
|
327
327
|
resource.datatype == RDF::XSD.anyURI ||
|
328
328
|
resource.simple? && u.valid? && u.scheme.to_s =~ /^https?$/
|
329
329
|
else
|
data/lib/rdf/reasoner/schema.rb
CHANGED
@@ -24,7 +24,9 @@ module RDF::Reasoner
|
|
24
24
|
# Fully entailed types of resource, if not provided, they are queried
|
25
25
|
def domain_compatible_schema?(resource, queryable, options = {})
|
26
26
|
raise RDF::Reasoner::Error, "#{self} can't get domains" unless property?
|
27
|
-
domains = Array(self.domainIncludes)
|
27
|
+
domains = Array(self.domainIncludes) +
|
28
|
+
Array(self.properties[:'https://schema.org/domainIncludes']) -
|
29
|
+
[RDF::OWL.Thing]
|
28
30
|
|
29
31
|
# Fully entailed types of the resource
|
30
32
|
types = entailed_types(resource, queryable, **options) unless domains.empty?
|
@@ -34,8 +36,8 @@ module RDF::Reasoner
|
|
34
36
|
|
35
37
|
# Resource may still be acceptable if types include schema:Role, and any any other resource references `resource` using this property
|
36
38
|
resource_acceptable ||
|
37
|
-
types.include?(RDF::
|
38
|
-
|
39
|
+
(types.include?(RDF::URI("http://schema.org/Role")) || types.include?(RDF::URI("https://schema.org/Role"))) &&
|
40
|
+
!queryable.query({predicate: self, object: resource}).empty?
|
39
41
|
end
|
40
42
|
|
41
43
|
##
|
@@ -54,16 +56,23 @@ module RDF::Reasoner
|
|
54
56
|
# Fully entailed types of resource, if not provided, they are queried
|
55
57
|
def range_compatible_schema?(resource, queryable, options = {})
|
56
58
|
raise RDF::Reasoner::Error, "#{self} can't get ranges" unless property?
|
57
|
-
if !(ranges = Array(self.rangeIncludes)
|
59
|
+
if !(ranges = Array(self.rangeIncludes) +
|
60
|
+
Array(self.properties[:'https://schema.org/rangeIncludes']) -
|
61
|
+
[RDF::OWL.Thing]).empty?
|
58
62
|
if resource.literal?
|
59
63
|
ranges.any? do |range|
|
60
64
|
case range
|
61
65
|
when RDF::RDFS.Literal then true
|
62
|
-
when RDF::
|
63
|
-
|
64
|
-
|
66
|
+
when RDF::URI("http://schema.org/Text"), RDF::URI("https://schema.org/Text")
|
67
|
+
resource.plain? || resource.datatype == RDF::URI("http://schema.org/Text")
|
68
|
+
when RDF::URI("http://schema.org/Boolean"), RDF::URI("https://schema.org/Boolean")
|
69
|
+
[
|
70
|
+
RDF::URI("http://schema.org/Boolean"),
|
71
|
+
RDF::URI("https://schema.org/Boolean"),
|
72
|
+
RDF::XSD.boolean
|
73
|
+
].include?(resource.datatype) ||
|
65
74
|
resource.plain? && RDF::Literal::Boolean.new(resource.value).valid?
|
66
|
-
when RDF::
|
75
|
+
when RDF::URI("http://schema.org/Date"), RDF::URI("https://schema.org/Date")
|
67
76
|
# Schema.org date based on ISO 8601, mapped to appropriate XSD types for validation
|
68
77
|
case resource
|
69
78
|
when RDF::Literal::Date, RDF::Literal::Time, RDF::Literal::DateTime, RDF::Literal::Duration
|
@@ -71,35 +80,56 @@ module RDF::Reasoner
|
|
71
80
|
else
|
72
81
|
ISO_8601.match(resource.value)
|
73
82
|
end
|
74
|
-
when RDF::
|
75
|
-
resource.datatype == RDF::
|
83
|
+
when RDF::URI("http://schema.org/DateTime"), RDF::URI("https://schema.org/DateTime")
|
84
|
+
resource.datatype == RDF::URI("http://schema.org/DateTime") ||
|
85
|
+
resource.datatype == RDF::URI("https://schema.org/DateTime") ||
|
76
86
|
resource.is_a?(RDF::Literal::DateTime) ||
|
77
87
|
resource.plain? && RDF::Literal::DateTime.new(resource.value).valid?
|
78
|
-
when RDF::
|
88
|
+
when RDF::URI("http://schema.org/Duration"), RDF::URI("https://schema.org/Duration")
|
79
89
|
value = resource.value
|
80
90
|
value = "P#{value}" unless value.start_with?("P")
|
81
|
-
resource.datatype == RDF::
|
91
|
+
resource.datatype == RDF::URI("http://schema.org/Duration") ||
|
92
|
+
resource.datatype == RDF::URI("https://schema.org/Duration") ||
|
82
93
|
resource.is_a?(RDF::Literal::Duration) ||
|
83
94
|
resource.plain? && RDF::Literal::Duration.new(value).valid?
|
84
|
-
when RDF::
|
85
|
-
resource.datatype == RDF::
|
95
|
+
when RDF::URI("http://schema.org/Time"), RDF::URI("https://schema.org/Time")
|
96
|
+
resource.datatype == RDF::URI("http://schema.org/Time") ||
|
97
|
+
resource.datatype == RDF::URI("https://schema.org/Time") ||
|
86
98
|
resource.is_a?(RDF::Literal::Time) ||
|
87
99
|
resource.plain? && RDF::Literal::Time.new(resource.value).valid?
|
88
|
-
when RDF::
|
100
|
+
when RDF::URI("http://schema.org/Number"), RDF::URI("https://schema.org/Number")
|
89
101
|
resource.is_a?(RDF::Literal::Numeric) ||
|
90
|
-
[
|
102
|
+
[
|
103
|
+
RDF::URI("http://schema.org/Number"),
|
104
|
+
RDF::URI("http://schema.org/Float"),
|
105
|
+
RDF::URI("http://schema.org/Integer"),
|
106
|
+
RDF::URI("https://schema.org/Number"),
|
107
|
+
RDF::URI("https://schema.org/Float"),
|
108
|
+
RDF::URI("https://schema.org/Integer"),
|
109
|
+
].include?(resource.datatype) ||
|
91
110
|
resource.plain? && RDF::Literal::Integer.new(resource.value).valid? ||
|
92
111
|
resource.plain? && RDF::Literal::Double.new(resource.value).valid?
|
93
|
-
when RDF::
|
112
|
+
when RDF::URI("http://schema.org/Float"), RDF::URI("https://schema.org/Float")
|
94
113
|
resource.is_a?(RDF::Literal::Double) ||
|
95
|
-
[
|
114
|
+
[
|
115
|
+
RDF::URI("http://schema.org/Number"),
|
116
|
+
RDF::URI("http://schema.org/Float"),
|
117
|
+
RDF::URI("https://schema.org/Number"),
|
118
|
+
RDF::URI("https://schema.org/Float"),
|
119
|
+
].include?(resource.datatype) ||
|
96
120
|
resource.plain? && RDF::Literal::Double.new(resource.value).valid?
|
97
|
-
when RDF::
|
121
|
+
when RDF::URI("http://schema.org/Integer"), RDF::URI("https://schema.org/Integer")
|
98
122
|
resource.is_a?(RDF::Literal::Integer) ||
|
99
|
-
[
|
123
|
+
[
|
124
|
+
RDF::URI("http://schema.org/Number"),
|
125
|
+
RDF::URI("http://schema.org/Integer"),
|
126
|
+
RDF::URI("https://schema.org/Number"),
|
127
|
+
RDF::URI("https://schema.org/Integer"),
|
128
|
+
].include?(resource.datatype) ||
|
100
129
|
resource.plain? && RDF::Literal::Integer.new(resource.value).valid?
|
101
|
-
when RDF::
|
102
|
-
resource.datatype == RDF::
|
130
|
+
when RDF::URI("http://schema.org/URL"), RDF::URI("https://schema.org/URL")
|
131
|
+
resource.datatype == RDF::URI("http://schema.org/URL") ||
|
132
|
+
resource.datatype == RDF::URI("https://schema.org/URL") ||
|
103
133
|
resource.datatype == RDF::XSD.anyURI ||
|
104
134
|
resource.plain? && RDF::Literal::AnyURI.new(resource.value).valid?
|
105
135
|
else
|
@@ -117,11 +147,21 @@ module RDF::Reasoner
|
|
117
147
|
end
|
118
148
|
end
|
119
149
|
end
|
120
|
-
elsif %w(
|
150
|
+
elsif %w(
|
151
|
+
http://schema.org/True
|
152
|
+
http://schema.org/False
|
153
|
+
https://schema.org/True
|
154
|
+
https://schema.org/False
|
155
|
+
).include?(resource) &&
|
156
|
+
(ranges.include?(RDF::URI("http://schema.org/Boolean")) || ranges.include?(RDF::URI("https://schema.org/Boolean")))
|
121
157
|
true # Special case for schema boolean resources
|
122
|
-
elsif ranges.include?(RDF::
|
158
|
+
elsif (ranges.include?(RDF::URI("http://schema.org/URL")) || ranges.include?(RDF::URI("https://schema.org/URL"))) &&
|
159
|
+
resource.uri?
|
123
160
|
true # schema:URL matches URI resources
|
124
|
-
elsif ranges == [RDF::
|
161
|
+
elsif ranges == [RDF::URI("http://schema.org/Text")] && resource.uri?
|
162
|
+
# Allowed if resource is untyped
|
163
|
+
entailed_types(resource, queryable, **options).empty?
|
164
|
+
elsif ranges == [RDF::URI("https://schema.org/Text")] && resource.uri?
|
125
165
|
# Allowed if resource is untyped
|
126
166
|
entailed_types(resource, queryable, **options).empty?
|
127
167
|
elsif literal_range?(ranges)
|
@@ -137,7 +177,7 @@ module RDF::Reasoner
|
|
137
177
|
resource_acceptable ||
|
138
178
|
|
139
179
|
# Resource also acceptable if it is a Role, and the Role object contains the same predicate having a compatible object
|
140
|
-
types.include?(RDF::
|
180
|
+
(types.include?(RDF::URI("http://schema.org/Role")) || types.include?(RDF::URI("https://schema.org/Role"))) &&
|
141
181
|
queryable.query({subject: resource, predicate: self}).any? do |stmt|
|
142
182
|
acc = self.range_compatible_schema?(stmt.object, queryable)
|
143
183
|
acc
|
@@ -158,9 +198,25 @@ module RDF::Reasoner
|
|
158
198
|
def literal_range?(ranges)
|
159
199
|
ranges.all? do |range|
|
160
200
|
case range
|
161
|
-
when RDF::RDFS.Literal,
|
162
|
-
RDF::
|
163
|
-
RDF::
|
201
|
+
when RDF::RDFS.Literal,
|
202
|
+
RDF::URI("http://schema.org/Text"),
|
203
|
+
RDF::URI("http://schema.org/Boolean"),
|
204
|
+
RDF::URI("http://schema.org/Date"),
|
205
|
+
RDF::URI("http://schema.org/DateTime"),
|
206
|
+
RDF::URI("http://schema.org/Time"),
|
207
|
+
RDF::URI("http://schema.org/URL"),
|
208
|
+
RDF::URI("http://schema.org/Number"),
|
209
|
+
RDF::URI("http://schema.org/Float"),
|
210
|
+
RDF::URI("http://schema.org/Integer"),
|
211
|
+
RDF::URI("https://schema.org/Text"),
|
212
|
+
RDF::URI("https://schema.org/Boolean"),
|
213
|
+
RDF::URI("https://schema.org/Date"),
|
214
|
+
RDF::URI("https://schema.org/DateTime"),
|
215
|
+
RDF::URI("https://schema.org/Time"),
|
216
|
+
RDF::URI("https://schema.org/URL"),
|
217
|
+
RDF::URI("https://schema.org/Number"),
|
218
|
+
RDF::URI("https://schema.org/Float"),
|
219
|
+
RDF::URI("https://schema.org/Integer")
|
164
220
|
true
|
165
221
|
else
|
166
222
|
# If this is an XSD range, look for appropriate literal
|
data/lib/rdf/reasoner.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rdf-reasoner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gregg Kellogg
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-12-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rdf
|
@@ -16,96 +16,84 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '3.
|
20
|
-
- - ">="
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: 3.1.2
|
19
|
+
version: '3.2'
|
23
20
|
type: :runtime
|
24
21
|
prerelease: false
|
25
22
|
version_requirements: !ruby/object:Gem::Requirement
|
26
23
|
requirements:
|
27
24
|
- - "~>"
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version: '3.
|
30
|
-
- - ">="
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: 3.1.2
|
26
|
+
version: '3.2'
|
33
27
|
- !ruby/object:Gem::Dependency
|
34
|
-
name: rdf-
|
28
|
+
name: rdf-xsd
|
35
29
|
requirement: !ruby/object:Gem::Requirement
|
36
30
|
requirements:
|
37
31
|
- - "~>"
|
38
32
|
- !ruby/object:Gem::Version
|
39
|
-
version: '3.
|
40
|
-
- - ">="
|
41
|
-
- !ruby/object:Gem::Version
|
42
|
-
version: 3.1.5
|
33
|
+
version: '3.2'
|
43
34
|
type: :runtime
|
44
35
|
prerelease: false
|
45
36
|
version_requirements: !ruby/object:Gem::Requirement
|
46
37
|
requirements:
|
47
38
|
- - "~>"
|
48
39
|
- !ruby/object:Gem::Version
|
49
|
-
version: '3.
|
50
|
-
- - ">="
|
51
|
-
- !ruby/object:Gem::Version
|
52
|
-
version: 3.1.5
|
40
|
+
version: '3.2'
|
53
41
|
- !ruby/object:Gem::Dependency
|
54
|
-
name: rdf-
|
42
|
+
name: rdf-spec
|
55
43
|
requirement: !ruby/object:Gem::Requirement
|
56
44
|
requirements:
|
57
45
|
- - "~>"
|
58
46
|
- !ruby/object:Gem::Version
|
59
|
-
version: '3.
|
60
|
-
type: :
|
47
|
+
version: '3.2'
|
48
|
+
type: :development
|
61
49
|
prerelease: false
|
62
50
|
version_requirements: !ruby/object:Gem::Requirement
|
63
51
|
requirements:
|
64
52
|
- - "~>"
|
65
53
|
- !ruby/object:Gem::Version
|
66
|
-
version: '3.
|
54
|
+
version: '3.2'
|
67
55
|
- !ruby/object:Gem::Dependency
|
68
|
-
name: rdf-
|
56
|
+
name: rdf-vocab
|
69
57
|
requirement: !ruby/object:Gem::Requirement
|
70
58
|
requirements:
|
71
59
|
- - "~>"
|
72
60
|
- !ruby/object:Gem::Version
|
73
|
-
version: '3.
|
61
|
+
version: '3.2'
|
74
62
|
type: :development
|
75
63
|
prerelease: false
|
76
64
|
version_requirements: !ruby/object:Gem::Requirement
|
77
65
|
requirements:
|
78
66
|
- - "~>"
|
79
67
|
- !ruby/object:Gem::Version
|
80
|
-
version: '3.
|
68
|
+
version: '3.2'
|
81
69
|
- !ruby/object:Gem::Dependency
|
82
70
|
name: rdf-turtle
|
83
71
|
requirement: !ruby/object:Gem::Requirement
|
84
72
|
requirements:
|
85
73
|
- - "~>"
|
86
74
|
- !ruby/object:Gem::Version
|
87
|
-
version: '3.
|
75
|
+
version: '3.2'
|
88
76
|
type: :development
|
89
77
|
prerelease: false
|
90
78
|
version_requirements: !ruby/object:Gem::Requirement
|
91
79
|
requirements:
|
92
80
|
- - "~>"
|
93
81
|
- !ruby/object:Gem::Version
|
94
|
-
version: '3.
|
82
|
+
version: '3.2'
|
95
83
|
- !ruby/object:Gem::Dependency
|
96
84
|
name: json-ld
|
97
85
|
requirement: !ruby/object:Gem::Requirement
|
98
86
|
requirements:
|
99
87
|
- - "~>"
|
100
88
|
- !ruby/object:Gem::Version
|
101
|
-
version: '3.
|
89
|
+
version: '3.2'
|
102
90
|
type: :development
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
93
|
requirements:
|
106
94
|
- - "~>"
|
107
95
|
- !ruby/object:Gem::Version
|
108
|
-
version: '3.
|
96
|
+
version: '3.2'
|
109
97
|
- !ruby/object:Gem::Dependency
|
110
98
|
name: equivalent-xml
|
111
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -126,28 +114,28 @@ dependencies:
|
|
126
114
|
requirements:
|
127
115
|
- - "~>"
|
128
116
|
- !ruby/object:Gem::Version
|
129
|
-
version: '3.
|
117
|
+
version: '3.10'
|
130
118
|
type: :development
|
131
119
|
prerelease: false
|
132
120
|
version_requirements: !ruby/object:Gem::Requirement
|
133
121
|
requirements:
|
134
122
|
- - "~>"
|
135
123
|
- !ruby/object:Gem::Version
|
136
|
-
version: '3.
|
124
|
+
version: '3.10'
|
137
125
|
- !ruby/object:Gem::Dependency
|
138
126
|
name: yard
|
139
127
|
requirement: !ruby/object:Gem::Requirement
|
140
128
|
requirements:
|
141
129
|
- - "~>"
|
142
130
|
- !ruby/object:Gem::Version
|
143
|
-
version: 0.9
|
131
|
+
version: '0.9'
|
144
132
|
type: :development
|
145
133
|
prerelease: false
|
146
134
|
version_requirements: !ruby/object:Gem::Requirement
|
147
135
|
requirements:
|
148
136
|
- - "~>"
|
149
137
|
- !ruby/object:Gem::Version
|
150
|
-
version: 0.9
|
138
|
+
version: '0.9'
|
151
139
|
description: Reasons over RDFS/OWL vocabularies to generate statements which are entailed
|
152
140
|
based on base RDFS/OWL rules along with vocabulary information. It can also be used
|
153
141
|
to ask specific questions, such as if a given object is consistent with the vocabulary
|
@@ -172,7 +160,7 @@ homepage: https://github.com/ruby-rdf/rdf-reasoner
|
|
172
160
|
licenses:
|
173
161
|
- Unlicense
|
174
162
|
metadata: {}
|
175
|
-
post_install_message:
|
163
|
+
post_install_message:
|
176
164
|
rdoc_options: []
|
177
165
|
require_paths:
|
178
166
|
- lib
|
@@ -180,15 +168,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
180
168
|
requirements:
|
181
169
|
- - ">="
|
182
170
|
- !ruby/object:Gem::Version
|
183
|
-
version: '2.
|
171
|
+
version: '2.6'
|
184
172
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
185
173
|
requirements:
|
186
174
|
- - ">="
|
187
175
|
- !ruby/object:Gem::Version
|
188
176
|
version: '0'
|
189
177
|
requirements: []
|
190
|
-
rubygems_version: 3.
|
191
|
-
signing_key:
|
178
|
+
rubygems_version: 3.3.3
|
179
|
+
signing_key:
|
192
180
|
specification_version: 4
|
193
181
|
summary: RDFS/OWL Reasoner for RDF.rb
|
194
182
|
test_files: []
|