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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 07635fa242cf39764de458b06e4afe87fbaddf311a37fb67c4e2a1137389ab20
4
- data.tar.gz: 654c79cfc3d28e9ac29f890f264552c9c9af13d19aca0361cb79dfca19c38002
3
+ metadata.gz: 0e75c24da7eb57a1b7c670665192cfd023907a461ab813222231130699562965
4
+ data.tar.gz: 3d89941dde1e6cf0528ff3b70ea9019551524d85c4f09ec09b97125b36f868d8
5
5
  SHA512:
6
- metadata.gz: b303be11f5f865989558acb9865c5a5cf55f2a16f464e14ad049b30ff316b87eec2006fa3ad6f13fd081332ae12a11fd1500d6cb66d75acebc59d1b95c351212
7
- data.tar.gz: 5406d22674e0fe00252c6b26c60265e1e0dd8340317fae6c8f7cf2b2dd3223152a0fa065f47644878613e076754b6cd76de21b182047f0e272ed161e4f82af28
6
+ metadata.gz: 791384df059259071ece3543ada759724b64420d21e78ef01479fded2fbaabb7035cff17c4feb2f1e4d9dedffb1961d07db4271c095563b9b4ce7b12724a9cdb
7
+ data.tar.gz: 9925f559f0a2f77b7128561024bce44c577958a5dc7fb644eb05ca0e7cd2e307bc539b35c19de4e176922b2cda88bf21fec4fe77034de5e3ed596c4fd27c7bf1
data/README.md CHANGED
@@ -1,4 +1,13 @@
1
- # rdf-reasoner
1
+ # RDF::Reasoner
2
+
3
+ A partial RDFS/OWL/schema.org reasoner for [RDF.rb][].
4
+
5
+ [![Gem Version](https://badge.fury.io/rb/rdf-reasoner.png)](https://badge.fury.io/rb/rdf-reasoner)
6
+ [![Build Status](https://github.com/ruby-rdf/rdf-reasoner/workflows/CI/badge.svg?branch=develop)](https://github.com/ruby-rdf/rdf-reasoner/actions?query=workflow%3ACI)
7
+ [![Coverage Status](https://coveralls.io/repos/ruby-rdf/rdf-reasoner/badge.svg?branch=develop)](https://coveralls.io/github/ruby-rdf/rdf-reasoner?branch=develop)
8
+ [![Gitter chat](https://badges.gitter.im/ruby-rdf/rdf.png)](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.4)
116
- * [RDF.rb](https://rubygems.org/gems/rdf) (~> 3.1)
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://lists.w3.org/Archives/Public/public-rdf-ruby/2010May/0013.html
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.6.2
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.attributes[:'schema:supersededBy']
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.attributes[:'schema:supersededBy']
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
- "Subject #{show_resource(stmt.subject)} not compatible with domainIncludes (#{term.domainIncludes.map {|d| d.pname|| d}.join(',')})"
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
- "Object #{show_resource(stmt.object)} not compatible with rangeIncludes (#{term.rangeIncludes.map {|d| d.pname|| d}.join(',')})"
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
@@ -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?(RDF::Vocab::OGC)
293
+ elsif range.start_with?("http://ogp.me/ns/class#")
294
294
  case range
295
- when RDF::Vocab::OGC.boolean_str
296
- [RDF::Vocab::OGC.boolean_str, RDF::XSD.boolean].include?(resource.datatype) ||
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::Vocab::OGC.date_time_str
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::Vocab::OGC.determiner_str
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::Vocab::OGC.float_str
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::Vocab::OGC.float_str, RDF::Literal::Double, RDF::Literal::Float].include?(resource.datatype) ||
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::Vocab::OGC.integer_str
313
+ when RDF::URI("http://ogp.me/ns/class#integer_str")
314
314
  resource.is_a?(RDF::Literal::Integer) ||
315
- [RDF::Vocab::OGC.integer_str].include?(resource.datatype) ||
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::Vocab::OGC.mime_type_str
317
+ when RDF::URI("http://ogp.me/ns/class#mime_type_str")
318
318
  # Valid mime type strings \(e.g., "application/mp3"\).
319
- [RDF::Vocab::OGC.mime_type_str].include?(resource.datatype) ||
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::Vocab::OGC.string
321
+ when RDF::URI("http://ogp.me/ns/class#string")
322
322
  resource.plain?
323
- when RDF::Vocab::OGC.url
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::Vocab::OGC.url ||
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
@@ -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) - [RDF::OWL.Thing]
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::Vocab::SCHEMA.Role) &&
38
- !queryable.query({predicate: self, object: resource}).empty?
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) - [RDF::OWL.Thing]).empty?
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::Vocab::SCHEMA.Text then resource.plain? || resource.datatype == RDF::Vocab::SCHEMA.Text
63
- when RDF::Vocab::SCHEMA.Boolean
64
- [RDF::Vocab::SCHEMA.Boolean, RDF::XSD.boolean].include?(resource.datatype) ||
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::Vocab::SCHEMA.Date
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::Vocab::SCHEMA.DateTime
75
- resource.datatype == RDF::Vocab::SCHEMA.DateTime ||
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::Vocab::SCHEMA.Duration
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::Vocab::SCHEMA.Duration ||
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::Vocab::SCHEMA.Time
85
- resource.datatype == RDF::Vocab::SCHEMA.Time ||
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::Vocab::SCHEMA.Number
100
+ when RDF::URI("http://schema.org/Number"), RDF::URI("https://schema.org/Number")
89
101
  resource.is_a?(RDF::Literal::Numeric) ||
90
- [RDF::Vocab::SCHEMA.Number, RDF::Vocab::SCHEMA.Float, RDF::Vocab::SCHEMA.Integer].include?(resource.datatype) ||
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::Vocab::SCHEMA.Float
112
+ when RDF::URI("http://schema.org/Float"), RDF::URI("https://schema.org/Float")
94
113
  resource.is_a?(RDF::Literal::Double) ||
95
- [RDF::Vocab::SCHEMA.Number, RDF::Vocab::SCHEMA.Float].include?(resource.datatype) ||
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::Vocab::SCHEMA.Integer
121
+ when RDF::URI("http://schema.org/Integer"), RDF::URI("https://schema.org/Integer")
98
122
  resource.is_a?(RDF::Literal::Integer) ||
99
- [RDF::Vocab::SCHEMA.Number, RDF::Vocab::SCHEMA.Integer].include?(resource.datatype) ||
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::Vocab::SCHEMA.URL
102
- resource.datatype == RDF::Vocab::SCHEMA.URL ||
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(True False).map {|v| RDF::Vocab::SCHEMA[v]}.include?(resource) && ranges.include?(RDF::Vocab::SCHEMA.Boolean)
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::Vocab::SCHEMA.URL) && resource.uri?
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::Vocab::SCHEMA.Text] && resource.uri?
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::Vocab::SCHEMA.Role) &&
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, RDF::Vocab::SCHEMA.Text, RDF::Vocab::SCHEMA.Boolean, RDF::Vocab::SCHEMA.Date,
162
- RDF::Vocab::SCHEMA.DateTime, RDF::Vocab::SCHEMA.Time, RDF::Vocab::SCHEMA.URL,
163
- RDF::Vocab::SCHEMA.Number, RDF::Vocab::SCHEMA.Float, RDF::Vocab::SCHEMA.Integer
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
@@ -1,6 +1,5 @@
1
1
  require 'rdf'
2
2
  require 'rdf/reasoner/extensions'
3
- require 'rdf/vocab'
4
3
 
5
4
  module RDF
6
5
  ##
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.6.2
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: 2020-07-10 00:00:00.000000000 Z
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.1'
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.1'
30
- - - ">="
31
- - !ruby/object:Gem::Version
32
- version: 3.1.2
26
+ version: '3.2'
33
27
  - !ruby/object:Gem::Dependency
34
- name: rdf-vocab
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.1'
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.1'
50
- - - ">="
51
- - !ruby/object:Gem::Version
52
- version: 3.1.5
40
+ version: '3.2'
53
41
  - !ruby/object:Gem::Dependency
54
- name: rdf-xsd
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.1'
60
- type: :runtime
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.1'
54
+ version: '3.2'
67
55
  - !ruby/object:Gem::Dependency
68
- name: rdf-spec
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.1'
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.1'
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.1'
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.1'
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.1'
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.1'
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.9'
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.9'
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.20
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.20
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.4'
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.1.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: []