rdf-reasoner 0.3.0 → 0.4.0.beta1
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 +4 -4
- data/VERSION +1 -1
- data/lib/rdf/reasoner/extensions.rb +2 -2
- data/lib/rdf/reasoner/owl.rb +4 -4
- data/lib/rdf/reasoner/rdfs.rb +18 -18
- data/lib/rdf/reasoner/schema.rb +1 -1
- metadata +62 -38
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a2462f0f18c4790b96eac4f876b5b86e02dcf954
|
4
|
+
data.tar.gz: b4bbb74da3b2aabb56cd0aec8342b81e5ee77ec3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 00d0ba92e3a61bf6a4d9b584121a2979670d65188b6b1afee2ee388763a10b414aa13d09a01a997a2246954b541632c258b22903846b3aa5eb7ef08297de296e
|
7
|
+
data.tar.gz: 1d8dd8ced1e8a0a87919287d9b2a0db357783e8e922a0134ebe7ce50d05b4a17dc2e709bc2dce1206f552cfd0ac7a17daed324da4b3775246c193d60ff8bbbf5
|
data/README.md
CHANGED
@@ -51,7 +51,7 @@ Domain and Range entailment include specific rules for schema.org vocabularies.
|
|
51
51
|
RDF::Reasoner.apply(:rdfs)
|
52
52
|
graph = RDF::Graph.load("etc/doap.ttl")
|
53
53
|
subj = RDF::URI("http://rubygems.org/gems/rdf-reasoner")
|
54
|
-
RDF::DOAP.name.domain_compatible?(subj, graph) # => true
|
54
|
+
RDF::Vocab::DOAP.name.domain_compatible?(subj, graph) # => true
|
55
55
|
|
56
56
|
### Determine if a resource is compatible with the ranges of a property
|
57
57
|
|
@@ -61,7 +61,7 @@ Domain and Range entailment include specific rules for schema.org vocabularies.
|
|
61
61
|
RDF::Reasoner.apply(:rdfs)
|
62
62
|
graph = RDF::Graph.load("etc/doap.ttl")
|
63
63
|
obj = RDF::Literal(Date.new)
|
64
|
-
RDF::DOAP.created.range_compatible?(obj, graph) # => true
|
64
|
+
RDF::Vocab::DOAP.created.range_compatible?(obj, graph) # => true
|
65
65
|
|
66
66
|
### Perform equivalentClass entailment on a graph
|
67
67
|
|
@@ -99,8 +99,8 @@ Domain and Range entailment include specific rules for schema.org vocabularies.
|
|
99
99
|
|
100
100
|
## Dependencies
|
101
101
|
|
102
|
-
* [Ruby](http://ruby-lang.org/) (>=
|
103
|
-
* [RDF.rb](http://rubygems.org/gems/rdf) (>=
|
102
|
+
* [Ruby](http://ruby-lang.org/) (>= 2.0)
|
103
|
+
* [RDF.rb](http://rubygems.org/gems/rdf) (>= 2.0)
|
104
104
|
|
105
105
|
## Mailing List
|
106
106
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.4.0.beta1
|
@@ -186,7 +186,7 @@ module RDF
|
|
186
186
|
# Must be a defined term, not in RDF or RDFS vocabularies
|
187
187
|
if term && term.class?
|
188
188
|
# Warn against using a deprecated term
|
189
|
-
superseded = term.attributes['schema:supersededBy']
|
189
|
+
superseded = term.attributes[:'schema:supersededBy']
|
190
190
|
(messages[:class] ||= {})[pname] = ["Term is superseded by #{superseded}"] if superseded
|
191
191
|
else
|
192
192
|
(messages[:class] ||= {})[pname] = ["No class definition found"] unless vocab.nil? || [RDF::RDFV, RDF::RDFS].include?(vocab)
|
@@ -203,7 +203,7 @@ module RDF
|
|
203
203
|
# Must be a defined property
|
204
204
|
if term && term.property?
|
205
205
|
# Warn against using a deprecated term
|
206
|
-
superseded = term.attributes['schema:supersededBy']
|
206
|
+
superseded = term.attributes[:'schema:supersededBy']
|
207
207
|
(messages[:property] ||= {})[pname] = ["Term is superseded by #{superseded}"] if superseded
|
208
208
|
else
|
209
209
|
((messages[:property] ||= {})[pname] ||= []) << "No property definition found" unless vocab.nil?
|
data/lib/rdf/reasoner/owl.rb
CHANGED
@@ -50,7 +50,7 @@ module RDF::Reasoner
|
|
50
50
|
if self.predicate == RDF.type
|
51
51
|
if term = (RDF::Vocabulary.find_term(self.object) rescue nil)
|
52
52
|
term._entail_equivalentClass do |t|
|
53
|
-
statements << RDF::Statement
|
53
|
+
statements << RDF::Statement(self.to_hash.merge(object: t))
|
54
54
|
end
|
55
55
|
end
|
56
56
|
end
|
@@ -89,7 +89,7 @@ module RDF::Reasoner
|
|
89
89
|
statements = []
|
90
90
|
if term = (RDF::Vocabulary.find_term(self.predicate) rescue nil)
|
91
91
|
term._entail_equivalentProperty do |t|
|
92
|
-
statements << RDF::Statement
|
92
|
+
statements << RDF::Statement(self.to_hash.merge(predicate: t))
|
93
93
|
end
|
94
94
|
end
|
95
95
|
statements.each {|s| yield s} if block_given?
|
@@ -107,7 +107,7 @@ module RDF::Reasoner
|
|
107
107
|
# @return [Array<RDF::Vocabulary::Term>]
|
108
108
|
def equivalentClass
|
109
109
|
raise RDF::Reasoner::Error, "#{self} Can't entail equivalentClass" unless class?
|
110
|
-
Array(self.attributes["owl:equivalentClass"]).map {|t| RDF::Vocabulary.expand_pname(t)}
|
110
|
+
Array(self.attributes[:"owl:equivalentClass"]).map {|t| RDF::Vocabulary.expand_pname(t)}
|
111
111
|
end
|
112
112
|
|
113
113
|
##
|
@@ -119,7 +119,7 @@ module RDF::Reasoner
|
|
119
119
|
# @return [Array<RDF::Vocabulary::Term>]
|
120
120
|
def equivalentProperty
|
121
121
|
raise RDF::Reasoner::Error, "#{self} Can't entail equivalentProperty" unless property?
|
122
|
-
Array(self.attributes["owl:equivalentProperty"]).map {|t| RDF::Vocabulary.expand_pname(t)}
|
122
|
+
Array(self.attributes[:"owl:equivalentProperty"]).map {|t| RDF::Vocabulary.expand_pname(t)}
|
123
123
|
end
|
124
124
|
|
125
125
|
def self.included(mod)
|
data/lib/rdf/reasoner/rdfs.rb
CHANGED
@@ -58,7 +58,7 @@ module RDF::Reasoner
|
|
58
58
|
if self.predicate == RDF.type
|
59
59
|
if term = (RDF::Vocabulary.find_term(self.object) rescue nil)
|
60
60
|
term._entail_subClassOf do |t|
|
61
|
-
statements << RDF::Statement
|
61
|
+
statements << RDF::Statement(self.to_hash.merge(object: t))
|
62
62
|
end
|
63
63
|
end
|
64
64
|
#$stderr.puts("subClassf(#{self.predicate.pname}): #{statements.map(&:object).map {|r| r.respond_to?(:pname) ? r.pname : r.to_ntriples}}}")
|
@@ -127,7 +127,7 @@ module RDF::Reasoner
|
|
127
127
|
statements = []
|
128
128
|
if term = (RDF::Vocabulary.find_term(self.predicate) rescue nil)
|
129
129
|
term._entail_subPropertyOf do |t|
|
130
|
-
statements << RDF::Statement
|
130
|
+
statements << RDF::Statement(self.to_hash.merge(predicate: t))
|
131
131
|
end
|
132
132
|
#$stderr.puts("subPropertyOf(#{self.predicate.pname}): #{statements.map(&:object).map {|r| r.respond_to?(:pname) ? r.pname : r.to_ntriples}}}")
|
133
133
|
end
|
@@ -146,7 +146,7 @@ module RDF::Reasoner
|
|
146
146
|
statements = []
|
147
147
|
if term = (RDF::Vocabulary.find_term(self.predicate) rescue nil)
|
148
148
|
term.domain.each do |t|
|
149
|
-
statements << RDF::Statement
|
149
|
+
statements << RDF::Statement(self.to_hash.merge(predicate: RDF.type, object: t))
|
150
150
|
end
|
151
151
|
end
|
152
152
|
#$stderr.puts("domain(#{self.predicate.pname}): #{statements.map(&:object).map {|r| r.respond_to?(:pname) ? r.pname : r.to_ntriples}}}")
|
@@ -165,7 +165,7 @@ module RDF::Reasoner
|
|
165
165
|
statements = []
|
166
166
|
if object.resource? && term = (RDF::Vocabulary.find_term(self.predicate) rescue nil)
|
167
167
|
term.range.each do |t|
|
168
|
-
statements << RDF::Statement
|
168
|
+
statements << RDF::Statement(self.to_hash.merge(subject: self.object, predicate: RDF.type, object: t))
|
169
169
|
end
|
170
170
|
end
|
171
171
|
#$stderr.puts("range(#{self.predicate.pname}): #{statements.map(&:object).map {|r| r.respond_to?(:pname) ? r.pname : r.to_ntriples}}")
|
@@ -227,12 +227,12 @@ module RDF::Reasoner
|
|
227
227
|
# XSD types are valid if the datatype matches, or they are plain and valid according to the grammar of the range
|
228
228
|
resource.datatype == range ||
|
229
229
|
resource.plain? && RDF::Literal.new(resource.value, datatype: range).valid?
|
230
|
-
elsif range.start_with?(RDF::OGC)
|
230
|
+
elsif range.start_with?(RDF::Vocab::OGC)
|
231
231
|
case range
|
232
|
-
when RDF::OGC.boolean_str
|
233
|
-
[RDF::OGC.boolean_str, RDF::XSD.boolean].include?(resource.datatype) ||
|
232
|
+
when RDF::Vocab::OGC.boolean_str
|
233
|
+
[RDF::Vocab::OGC.boolean_str, RDF::XSD.boolean].include?(resource.datatype) ||
|
234
234
|
resource.plain? && RDF::Literal::Boolean.new(resource.value).valid?
|
235
|
-
when RDF::OGC.date_time_str
|
235
|
+
when RDF::Vocab::OGC.date_time_str
|
236
236
|
# Schema.org date based on ISO 8601, mapped to appropriate XSD types for validation
|
237
237
|
case resource
|
238
238
|
when RDF::Literal::Date, RDF::Literal::Time, RDF::Literal::DateTime, RDF::Literal::Duration
|
@@ -240,27 +240,27 @@ module RDF::Reasoner
|
|
240
240
|
else
|
241
241
|
ISO_8601.match(resource.value)
|
242
242
|
end
|
243
|
-
when RDF::OGC.determiner_str
|
243
|
+
when RDF::Vocab::OGC.determiner_str
|
244
244
|
# The lexical space: "", "the", "a", "an", and "auto".
|
245
245
|
resource.plain? && (%w(the a an auto) + [""]).include?(resource.value)
|
246
|
-
when RDF::OGC.float_str
|
246
|
+
when RDF::Vocab::OGC.float_str
|
247
247
|
# 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".
|
248
|
-
[RDF::OGC.float_str, RDF::Literal::Double, RDF::Literal::Float].include?(resource.datatype) ||
|
248
|
+
[RDF::Vocab::OGC.float_str, RDF::Literal::Double, RDF::Literal::Float].include?(resource.datatype) ||
|
249
249
|
resource.plain? && RDF::Literal::Double.new(resource.value).valid?
|
250
|
-
when RDF::OGC.integer_str
|
250
|
+
when RDF::Vocab::OGC.integer_str
|
251
251
|
resource.is_a?(RDF::Literal::Integer) ||
|
252
|
-
[RDF::OGC.integer_str].include?(resource.datatype) ||
|
252
|
+
[RDF::Vocab::OGC.integer_str].include?(resource.datatype) ||
|
253
253
|
resource.plain? && RDF::Literal::Integer.new(resource.value).valid?
|
254
|
-
when RDF::OGC.mime_type_str
|
254
|
+
when RDF::Vocab::OGC.mime_type_str
|
255
255
|
# Valid mime type strings \(e.g., "application/mp3"\).
|
256
|
-
[RDF::OGC.mime_type_str].include?(resource.datatype) ||
|
256
|
+
[RDF::Vocab::OGC.mime_type_str].include?(resource.datatype) ||
|
257
257
|
resource.plain? && resource.value =~ %r(^[\w\-\+]+/[\w\-\+]+$)
|
258
|
-
when RDF::OGC.string
|
258
|
+
when RDF::Vocab::OGC.string
|
259
259
|
resource.plain?
|
260
|
-
when RDF::OGC.url
|
260
|
+
when RDF::Vocab::OGC.url
|
261
261
|
# A string of Unicode characters forming a valid URL having the http or https scheme.
|
262
262
|
u = RDF::URI(resource.value)
|
263
|
-
resource.datatype == RDF::OGC.url ||
|
263
|
+
resource.datatype == RDF::Vocab::OGC.url ||
|
264
264
|
resource.datatype == RDF::XSD.anyURI ||
|
265
265
|
resource.simple? && u.valid? && u.scheme.to_s =~ /^https?$/
|
266
266
|
else
|
data/lib/rdf/reasoner/schema.rb
CHANGED
@@ -163,7 +163,7 @@ module RDF::Reasoner
|
|
163
163
|
acc
|
164
164
|
end ||
|
165
165
|
# Resource also acceptable if it is a List, and every member of the list is range compatible with the predicate
|
166
|
-
(list = RDF::List.new(resource, queryable)).valid? && list.all? do |member|
|
166
|
+
(list = RDF::List.new(subject: resource, graph: queryable)).valid? && list.all? do |member|
|
167
167
|
self.range_compatible_schema?(member, queryable)
|
168
168
|
end
|
169
169
|
end
|
metadata
CHANGED
@@ -1,91 +1,115 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rdf-reasoner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0.beta1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gregg Kellogg
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-02-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rdf
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '1.1'
|
20
17
|
- - ">="
|
21
18
|
- !ruby/object:Gem::Version
|
22
|
-
version:
|
19
|
+
version: 2.0.0.beta
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '3'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
|
-
- - "~>"
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: '1.1'
|
30
27
|
- - ">="
|
31
28
|
- !ruby/object:Gem::Version
|
32
|
-
version:
|
29
|
+
version: 2.0.0.beta
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '3'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: rdf-xsd
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
|
-
- - "
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: 2.0.0.beta
|
40
|
+
- - "<"
|
38
41
|
- !ruby/object:Gem::Version
|
39
|
-
version: '
|
42
|
+
version: '3'
|
40
43
|
type: :runtime
|
41
44
|
prerelease: false
|
42
45
|
version_requirements: !ruby/object:Gem::Requirement
|
43
46
|
requirements:
|
44
|
-
- - "
|
47
|
+
- - ">="
|
45
48
|
- !ruby/object:Gem::Version
|
46
|
-
version:
|
49
|
+
version: 2.0.0.beta
|
50
|
+
- - "<"
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '3'
|
47
53
|
- !ruby/object:Gem::Dependency
|
48
|
-
name:
|
54
|
+
name: json-ld
|
49
55
|
requirement: !ruby/object:Gem::Requirement
|
50
56
|
requirements:
|
51
|
-
- - "
|
57
|
+
- - ">="
|
52
58
|
- !ruby/object:Gem::Version
|
53
|
-
version:
|
54
|
-
|
59
|
+
version: 2.0.0.beta
|
60
|
+
- - "<"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '3'
|
63
|
+
type: :development
|
55
64
|
prerelease: false
|
56
65
|
version_requirements: !ruby/object:Gem::Requirement
|
57
66
|
requirements:
|
58
|
-
- - "
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 2.0.0.beta
|
70
|
+
- - "<"
|
59
71
|
- !ruby/object:Gem::Version
|
60
|
-
version: '
|
72
|
+
version: '3'
|
61
73
|
- !ruby/object:Gem::Dependency
|
62
|
-
name: rdf-
|
74
|
+
name: rdf-turtle
|
63
75
|
requirement: !ruby/object:Gem::Requirement
|
64
76
|
requirements:
|
65
|
-
- - "
|
77
|
+
- - ">="
|
66
78
|
- !ruby/object:Gem::Version
|
67
|
-
version:
|
68
|
-
|
79
|
+
version: 2.0.0.beta
|
80
|
+
- - "<"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '3'
|
83
|
+
type: :development
|
69
84
|
prerelease: false
|
70
85
|
version_requirements: !ruby/object:Gem::Requirement
|
71
86
|
requirements:
|
72
|
-
- - "
|
87
|
+
- - ">="
|
73
88
|
- !ruby/object:Gem::Version
|
74
|
-
version:
|
89
|
+
version: 2.0.0.beta
|
90
|
+
- - "<"
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: '3'
|
75
93
|
- !ruby/object:Gem::Dependency
|
76
|
-
name:
|
94
|
+
name: rdf-vocab
|
77
95
|
requirement: !ruby/object:Gem::Requirement
|
78
96
|
requirements:
|
79
|
-
- - "
|
97
|
+
- - ">="
|
80
98
|
- !ruby/object:Gem::Version
|
81
|
-
version:
|
99
|
+
version: 2.0.0.beta
|
100
|
+
- - "<"
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '3'
|
82
103
|
type: :development
|
83
104
|
prerelease: false
|
84
105
|
version_requirements: !ruby/object:Gem::Requirement
|
85
106
|
requirements:
|
86
|
-
- - "
|
107
|
+
- - ">="
|
87
108
|
- !ruby/object:Gem::Version
|
88
|
-
version:
|
109
|
+
version: 2.0.0.beta
|
110
|
+
- - "<"
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: '3'
|
89
113
|
- !ruby/object:Gem::Dependency
|
90
114
|
name: equivalent-xml
|
91
115
|
requirement: !ruby/object:Gem::Requirement
|
@@ -106,14 +130,14 @@ dependencies:
|
|
106
130
|
requirements:
|
107
131
|
- - "~>"
|
108
132
|
- !ruby/object:Gem::Version
|
109
|
-
version: '3.
|
133
|
+
version: '3.4'
|
110
134
|
type: :development
|
111
135
|
prerelease: false
|
112
136
|
version_requirements: !ruby/object:Gem::Requirement
|
113
137
|
requirements:
|
114
138
|
- - "~>"
|
115
139
|
- !ruby/object:Gem::Version
|
116
|
-
version: '3.
|
140
|
+
version: '3.4'
|
117
141
|
- !ruby/object:Gem::Dependency
|
118
142
|
name: yard
|
119
143
|
requirement: !ruby/object:Gem::Requirement
|
@@ -149,7 +173,7 @@ files:
|
|
149
173
|
- lib/rdf/reasoner/version.rb
|
150
174
|
homepage: http://github.com/gkellogg/rdf-reasoner
|
151
175
|
licenses:
|
152
|
-
-
|
176
|
+
- Unlicense
|
153
177
|
metadata: {}
|
154
178
|
post_install_message:
|
155
179
|
rdoc_options: []
|
@@ -159,15 +183,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
159
183
|
requirements:
|
160
184
|
- - ">="
|
161
185
|
- !ruby/object:Gem::Version
|
162
|
-
version:
|
186
|
+
version: '2.0'
|
163
187
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
164
188
|
requirements:
|
165
|
-
- - "
|
189
|
+
- - ">"
|
166
190
|
- !ruby/object:Gem::Version
|
167
|
-
version:
|
191
|
+
version: 1.3.1
|
168
192
|
requirements: []
|
169
193
|
rubyforge_project:
|
170
|
-
rubygems_version: 2.
|
194
|
+
rubygems_version: 2.5.1
|
171
195
|
signing_key:
|
172
196
|
specification_version: 4
|
173
197
|
summary: RDFS/OWL Reasoner for RDF.rb
|