rdf 1.0.6 → 1.0.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ MDhiOWNkYTQ3MGU2ZDJjZDYzM2E0NTg4ODdmODkyYjZmYTc3YWRhNQ==
5
+ data.tar.gz: !binary |-
6
+ MDg3YzA1NjYzZjBiYmM5NGE4ODdmYjE2MDZmOGMxYjVjNzcwM2NkMg==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ ZmY2MzBlOWNiYjMyY2YyMzUyODMzNzliMTM5M2M1YTRkZGNiMTNhOTY1NmE5
10
+ YWNmMmFlZDY0NjlkY2JiNzY3OTFkNjllYzdmMTYzNzk5MmI1ZGRiOThlNjQ3
11
+ ZDEyZmU5NTc5NWQ3ZDU5ODM4MjkyN2ZlOTY1NDg2YTMxOGVlMzE=
12
+ data.tar.gz: !binary |-
13
+ NjJiMmQ2MjA1MWQ1OGM0ZmE1ZDM5NmJhNzY1Y2IwYjg2ZGEzYTdhYzZjODI5
14
+ MTU4NjJiN2ZiN2FmYWRiYTRjYzhjNmRiYWI4NDEzNjQ4ZTc1ODU4YTg4Zjdh
15
+ NmVjNDk4NDgzODIxYzYwMWYyNThiMGUyNWUyYWU3OWJmNTRmMTI=
data/CREDITS CHANGED
@@ -8,3 +8,4 @@
8
8
  * John Fieber <jrf@ursamaris.org>
9
9
  * Keita Urashima <ursm@ursm.jp>
10
10
  * Pius Uzamere <pius@alum.mit.edu>
11
+ * Judson Lester <nyarly@gmail.com>
data/README CHANGED
@@ -334,6 +334,7 @@ follows:
334
334
  * [John Fieber](http://github.com/jfieber) - <http://github.com/jfieber>
335
335
  * [Keita Urashima](http://github.com/ursm) - <http://ursm.jp/>
336
336
  * [Pius Uzamere](http://github.com/pius) - <http://pius.me/>
337
+ * [Judson Lester](https://github.com/nyarly) - <https://github.com/nyarly>
337
338
 
338
339
  ## Contributing
339
340
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.6
1
+ 1.0.7
@@ -38,10 +38,12 @@ module RDF
38
38
  # @yield [list]
39
39
  # @yieldparam [RDF::List] list
40
40
  def initialize(subject = nil, graph = nil, values = nil, &block)
41
- @subject = subject || RDF::Node.new
41
+ @subject = subject || RDF.nil
42
42
  @graph = graph || RDF::Graph.new
43
43
 
44
- values.each { |value| self << value } unless values.nil? || values.empty?
44
+ unless values.to_a.empty?
45
+ values.reverse_each {|value| self.unshift(value)}
46
+ end
45
47
 
46
48
  if block_given?
47
49
  case block.arity
@@ -69,6 +71,7 @@ module RDF
69
71
  rest = nil
70
72
  firsts = rests = 0
71
73
  @graph.query(:subject => li) do |st|
74
+ return false unless st.subject.node?
72
75
  case st.predicate
73
76
  when RDF.type
74
77
  # Be tollerant about rdf:type entries, as some OWL vocabularies use it excessively
@@ -205,6 +208,71 @@ module RDF
205
208
  at(index)
206
209
  end
207
210
 
211
+ ##
212
+ # Appends an element to the head of this list. Existing references are not updated, as the list subject changes as a side-effect.
213
+ #
214
+ # @example
215
+ # RDF::List[].unshift(1).unshift(2).unshift(3) #=> RDF::List[3, 2, 1]
216
+ #
217
+ # @param [RDF::Term] value
218
+ # @return [RDF::List]
219
+ # @see http://www.ruby-doc.org/core-1.9.3/Array.html#method-i-unshift
220
+ #
221
+ def unshift(value)
222
+ value = case value
223
+ when nil then RDF.nil
224
+ when RDF::Value then value
225
+ when Array then RDF::List.new(nil, graph, value)
226
+ else value
227
+ end
228
+
229
+ new_subject, old_subject = RDF::Node.new, subject
230
+
231
+ graph.insert([new_subject, RDF.type, RDF.List])
232
+ graph.insert([new_subject, RDF.first, value.is_a?(RDF::List) ? value.subject : value])
233
+ graph.insert([new_subject, RDF.rest, old_subject])
234
+
235
+ @subject = new_subject
236
+
237
+ return self
238
+ end
239
+
240
+ ##
241
+ # Removes and returns the element at the head of this list.
242
+ #
243
+ # @example
244
+ # RDF::List[1,2,3].shift #=> 1
245
+ #
246
+ # @return [RDF::Term]
247
+ # @see http://www.ruby-doc.org/core-1.9.3/Array.html#method-i-shift
248
+ def shift
249
+ return nil if empty?
250
+
251
+ value = first
252
+ old_subject, new_subject = subject, rest_subject
253
+ graph.delete([old_subject, RDF.type, RDF.List])
254
+ graph.delete([old_subject, RDF.first, value])
255
+ graph.delete([old_subject, RDF.rest, new_subject])
256
+
257
+ @subject = new_subject
258
+ return value
259
+ end
260
+
261
+ ##
262
+ # Empties this list
263
+ #
264
+ # @example
265
+ # RDF::List[1, 2, 2, 3].clear #=> RDF::List[]
266
+ #
267
+ # @return [RDF::List]
268
+ # @see http://ruby-doc.org/core-1.9.3/classes/Array.html#method-i-clear
269
+ def clear
270
+ until empty?
271
+ shift
272
+ end
273
+ return self
274
+ end
275
+
208
276
  ##
209
277
  # Appends an element to the tail of this list.
210
278
  #
@@ -223,7 +291,7 @@ module RDF
223
291
  end
224
292
 
225
293
  if empty?
226
- new_subject = subject
294
+ @subject = new_subject = RDF::Node.new
227
295
  else
228
296
  old_subject, new_subject = last_subject, RDF::Node.new
229
297
  graph.delete([old_subject, RDF.rest, RDF.nil])
@@ -182,12 +182,11 @@ module RDF
182
182
  end
183
183
 
184
184
  ##
185
- # Returns `true` if the subject or object of this statement is a blank
186
- # node.
185
+ # Returns `true` if any resource of this statement is a blank node.
187
186
  #
188
187
  # @return [Boolean]
189
188
  def has_blank_nodes?
190
- (has_object? && object.node?) || (has_subject? && subject.node?)
189
+ to_quad.compact.any?(&:node?)
191
190
  end
192
191
 
193
192
  ##
@@ -38,12 +38,14 @@ module RDF
38
38
  def self.detect(sample)
39
39
  !!sample.match(%r(
40
40
  (?:\s*(?:<[^>]*>) | (?:_:\w+)) # Subject
41
+ \s*
41
42
  (?:\s*<[^>]*>) # Predicate
42
43
  \s*
43
44
  (?:(?:<[^>]*>) | (?:_:\w+) | (?:"[^"\n]*"(?:^^|@\S+)?)) # Object
44
- (?:\s*<[^>]*>) # Context
45
+ \s*
46
+ (?:\s*(?:<[^>]*>) | (?:_:\w+)) # Context
45
47
  \s*\.
46
- )mx) && !(
48
+ )x) && !(
47
49
  sample.match(%r(@(base|prefix|keywords)|\{)) || # Not Turtle/N3/TriG
48
50
  sample.match(%r(<(html|rdf))i) # Not HTML or XML
49
51
  )
@@ -40,7 +40,7 @@ module RDF::NTriples
40
40
  \s*
41
41
  (?:(?:<[^>]*>) | (?:_:\w+) | (?:"[^"\n]*"(?:^^|@\S+)?)) # Object
42
42
  \s*\.
43
- )mx) && !(
43
+ )x) && !(
44
44
  sample.match(%r(@(base|prefix|keywords)|\{)) || # Not Turtle/N3/TriG
45
45
  sample.match(%r(<(html|rdf))i) # Not HTML or XML
46
46
  ) && !RDF::NQuads::Format.detect(sample)
@@ -182,17 +182,33 @@ class RDF::Query
182
182
 
183
183
  ##
184
184
  # Compatible Mappings
185
+ #
185
186
  # Two solution mappings u1 and u2 are compatible if, for every variable v in dom(u1) and in dom(u2), u1(v) = u2(v).
186
187
  #
187
188
  # @param [RDF::Query::Solution, #to_hash] other
188
189
  # another query solution or hash bindings
189
190
  # @return [Boolean]
191
+ # @see http://www.w3.org/TR/2013/REC-sparql11-query-20130321/#defn_algCompatibleMapping
190
192
  def compatible?(other)
191
193
  @bindings.all? do |k, v|
192
194
  !other.to_hash.has_key?(k) || other[k].eql?(v)
193
195
  end
194
196
  end
195
-
197
+
198
+ ##
199
+ # Disjoint mapping
200
+ #
201
+ # A solution is disjoint with another solution if it shares no common variables in their domains.
202
+ #
203
+ # @param [RDF::Query::Solution] other
204
+ # @return [Boolean]
205
+ # @see http://www.w3.org/TR/2013/REC-sparql11-query-20130321/#defn_algMinus
206
+ def disjoint?(other)
207
+ @bindings.none? do |k, v|
208
+ v && other.to_hash.has_key?(k) && other[k].eql?(v)
209
+ end
210
+ end
211
+
196
212
  ##
197
213
  # Isomorphic Mappings
198
214
  # Two solution mappings u1 and u2 are isomorphic if,
@@ -106,6 +106,20 @@ module RDF; class Query
106
106
  end
107
107
  alias_method :filter!, :filter
108
108
 
109
+ ##
110
+ # Difference between solution sets, from SPARQL 1.1.
111
+ #
112
+ # The `minus` operation on solutions returns those solutions which either have no compatible solution in `other`, or the solution domains are disjoint.
113
+ #
114
+ # @param [RDF::Query::Solutions] other
115
+ # @return [RDF::Query::Solutions] a new solution set
116
+ # @see http://www.w3.org/TR/2013/REC-sparql11-query-20130321/#defn_algMinus
117
+ def minus(other)
118
+ self.dup.filter! do |soln|
119
+ !other.any? {|soln2| soln.compatible?(soln2) && !soln.disjoint?(soln2)}
120
+ end
121
+ end
122
+
109
123
  ##
110
124
  # Reorders this solution sequence by the given `variables`.
111
125
  #
metadata CHANGED
@@ -1,101 +1,89 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rdf
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.6
5
- prerelease:
4
+ version: 1.0.7
6
5
  platform: ruby
7
6
  authors:
8
7
  - Arto Bendiken
9
8
  - Ben Lavender
10
9
  - Gregg Kellogg
11
- autorequire:
10
+ autorequire:
12
11
  bindir: bin
13
12
  cert_chain: []
14
- date: 2013-05-01 00:00:00.000000000 Z
13
+ date: 2013-06-15 00:00:00.000000000 Z
15
14
  dependencies:
16
15
  - !ruby/object:Gem::Dependency
17
16
  name: addressable
18
- version_requirements: !ruby/object:Gem::Requirement
19
- requirements:
20
- - - ">="
21
- - !ruby/object:Gem::Version
22
- version: '2.2'
23
- none: false
24
17
  requirement: !ruby/object:Gem::Requirement
25
18
  requirements:
26
- - - ">="
19
+ - - ! '>='
27
20
  - !ruby/object:Gem::Version
28
21
  version: '2.2'
29
- none: false
30
- prerelease: false
31
22
  type: :runtime
32
- - !ruby/object:Gem::Dependency
33
- name: rdf-spec
23
+ prerelease: false
34
24
  version_requirements: !ruby/object:Gem::Requirement
35
25
  requirements:
36
- - - "~>"
26
+ - - ! '>='
37
27
  - !ruby/object:Gem::Version
38
- version: '1.0'
39
- none: false
28
+ version: '2.2'
29
+ - !ruby/object:Gem::Dependency
30
+ name: rdf-spec
40
31
  requirement: !ruby/object:Gem::Requirement
41
32
  requirements:
42
- - - "~>"
33
+ - - ~>
43
34
  - !ruby/object:Gem::Version
44
- version: '1.0'
45
- none: false
46
- prerelease: false
35
+ version: 1.0.7
47
36
  type: :development
48
- - !ruby/object:Gem::Dependency
49
- name: rdf-rdfxml
37
+ prerelease: false
50
38
  version_requirements: !ruby/object:Gem::Requirement
51
39
  requirements:
52
- - - ">="
40
+ - - ~>
53
41
  - !ruby/object:Gem::Version
54
- version: !binary |-
55
- MA==
56
- none: false
42
+ version: 1.0.7
43
+ - !ruby/object:Gem::Dependency
44
+ name: rdf-rdfxml
57
45
  requirement: !ruby/object:Gem::Requirement
58
46
  requirements:
59
- - - ">="
47
+ - - ! '>='
60
48
  - !ruby/object:Gem::Version
61
- version: !binary |-
62
- MA==
63
- none: false
64
- prerelease: false
49
+ version: '0'
65
50
  type: :development
66
- - !ruby/object:Gem::Dependency
67
- name: rspec
51
+ prerelease: false
68
52
  version_requirements: !ruby/object:Gem::Requirement
69
53
  requirements:
70
- - - ">="
54
+ - - ! '>='
71
55
  - !ruby/object:Gem::Version
72
- version: '2.12'
73
- none: false
56
+ version: '0'
57
+ - !ruby/object:Gem::Dependency
58
+ name: rspec
74
59
  requirement: !ruby/object:Gem::Requirement
75
60
  requirements:
76
- - - ">="
61
+ - - ! '>='
77
62
  - !ruby/object:Gem::Version
78
63
  version: '2.12'
79
- none: false
80
- prerelease: false
81
64
  type: :development
82
- - !ruby/object:Gem::Dependency
83
- name: yard
65
+ prerelease: false
84
66
  version_requirements: !ruby/object:Gem::Requirement
85
67
  requirements:
86
- - - ">="
68
+ - - ! '>='
87
69
  - !ruby/object:Gem::Version
88
- version: '0.8'
89
- none: false
70
+ version: '2.12'
71
+ - !ruby/object:Gem::Dependency
72
+ name: yard
90
73
  requirement: !ruby/object:Gem::Requirement
91
74
  requirements:
92
- - - ">="
75
+ - - ! '>='
93
76
  - !ruby/object:Gem::Version
94
77
  version: '0.8'
95
- none: false
96
- prerelease: false
97
78
  type: :development
98
- description: RDF.rb is a pure-Ruby library for working with Resource Description Framework (RDF) data.
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ! '>='
83
+ - !ruby/object:Gem::Version
84
+ version: '0.8'
85
+ description: RDF.rb is a pure-Ruby library for working with Resource Description Framework
86
+ (RDF) data.
99
87
  email: public-rdf-ruby@w3.org
100
88
  executables:
101
89
  - rdf
@@ -110,19 +98,8 @@ files:
110
98
  - bin/rdf
111
99
  - etc/doap.nt
112
100
  - lib/df.rb
113
- - lib/rdf.rb
114
101
  - lib/rdf/cli.rb
115
102
  - lib/rdf/format.rb
116
- - lib/rdf/nquads.rb
117
- - lib/rdf/ntriples.rb
118
- - lib/rdf/query.rb
119
- - lib/rdf/reader.rb
120
- - lib/rdf/repository.rb
121
- - lib/rdf/transaction.rb
122
- - lib/rdf/util.rb
123
- - lib/rdf/version.rb
124
- - lib/rdf/vocab.rb
125
- - lib/rdf/writer.rb
126
103
  - lib/rdf/mixin/countable.rb
127
104
  - lib/rdf/mixin/durable.rb
128
105
  - lib/rdf/mixin/enumerable.rb
@@ -135,13 +112,6 @@ files:
135
112
  - lib/rdf/mixin/writable.rb
136
113
  - lib/rdf/model/graph.rb
137
114
  - lib/rdf/model/list.rb
138
- - lib/rdf/model/literal.rb
139
- - lib/rdf/model/node.rb
140
- - lib/rdf/model/resource.rb
141
- - lib/rdf/model/statement.rb
142
- - lib/rdf/model/term.rb
143
- - lib/rdf/model/uri.rb
144
- - lib/rdf/model/value.rb
145
115
  - lib/rdf/model/literal/boolean.rb
146
116
  - lib/rdf/model/literal/date.rb
147
117
  - lib/rdf/model/literal/datetime.rb
@@ -153,18 +123,33 @@ files:
153
123
  - lib/rdf/model/literal/time.rb
154
124
  - lib/rdf/model/literal/token.rb
155
125
  - lib/rdf/model/literal/xml.rb
126
+ - lib/rdf/model/literal.rb
127
+ - lib/rdf/model/node.rb
128
+ - lib/rdf/model/resource.rb
129
+ - lib/rdf/model/statement.rb
130
+ - lib/rdf/model/term.rb
131
+ - lib/rdf/model/uri.rb
132
+ - lib/rdf/model/value.rb
133
+ - lib/rdf/nquads.rb
156
134
  - lib/rdf/ntriples/format.rb
157
135
  - lib/rdf/ntriples/reader.rb
158
136
  - lib/rdf/ntriples/writer.rb
137
+ - lib/rdf/ntriples.rb
159
138
  - lib/rdf/query/hash_pattern_normalizer.rb
160
139
  - lib/rdf/query/pattern.rb
161
140
  - lib/rdf/query/solution.rb
162
141
  - lib/rdf/query/solutions.rb
163
142
  - lib/rdf/query/variable.rb
143
+ - lib/rdf/query.rb
144
+ - lib/rdf/reader.rb
145
+ - lib/rdf/repository.rb
146
+ - lib/rdf/transaction.rb
164
147
  - lib/rdf/util/aliasing.rb
165
148
  - lib/rdf/util/cache.rb
166
149
  - lib/rdf/util/file.rb
167
150
  - lib/rdf/util/uuid.rb
151
+ - lib/rdf/util.rb
152
+ - lib/rdf/version.rb
168
153
  - lib/rdf/vocab/cc.rb
169
154
  - lib/rdf/vocab/cert.rb
170
155
  - lib/rdf/vocab/dc.rb
@@ -184,31 +169,32 @@ files:
184
169
  - lib/rdf/vocab/wot.rb
185
170
  - lib/rdf/vocab/xhtml.rb
186
171
  - lib/rdf/vocab/xsd.rb
172
+ - lib/rdf/vocab.rb
173
+ - lib/rdf/writer.rb
174
+ - lib/rdf.rb
187
175
  homepage: http://ruby-rdf.github.com/
188
176
  licenses:
189
177
  - Public Domain
190
- post_install_message:
178
+ metadata: {}
179
+ post_install_message:
191
180
  rdoc_options: []
192
181
  require_paths:
193
182
  - lib
194
183
  required_ruby_version: !ruby/object:Gem::Requirement
195
184
  requirements:
196
- - - ">="
185
+ - - ! '>='
197
186
  - !ruby/object:Gem::Version
198
187
  version: 1.8.1
199
- none: false
200
188
  required_rubygems_version: !ruby/object:Gem::Requirement
201
189
  requirements:
202
- - - ">="
190
+ - - ! '>='
203
191
  - !ruby/object:Gem::Version
204
- version: !binary |-
205
- MA==
206
- none: false
192
+ version: '0'
207
193
  requirements: []
208
194
  rubyforge_project: rdf
209
- rubygems_version: 1.8.24
210
- signing_key:
211
- specification_version: 3
195
+ rubygems_version: 2.0.3
196
+ signing_key:
197
+ specification_version: 4
212
198
  summary: A Ruby library for working with Resource Description Framework (RDF) data.
213
199
  test_files: []
214
200
  has_rdoc: false