rdf 0.1.8 → 0.1.9
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.
- data/VERSION +1 -1
- data/lib/rdf/mixin/enumerable.rb +67 -28
- data/lib/rdf/mixin/queryable.rb +137 -2
- data/lib/rdf/model/graph.rb +24 -13
- data/lib/rdf/model/value.rb +1 -0
- data/lib/rdf/query/solution.rb +2 -1
- data/lib/rdf/query/variable.rb +1 -0
- data/lib/rdf/version.rb +1 -1
- data/lib/rdf/vocab.rb +1 -1
- metadata +3 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.9
|
data/lib/rdf/mixin/enumerable.rb
CHANGED
@@ -87,8 +87,8 @@ module RDF
|
|
87
87
|
#
|
88
88
|
# @param [Hash{Symbol => Boolean}] options
|
89
89
|
# @return [Array<Statement>]
|
90
|
-
# @see
|
91
|
-
# @see
|
90
|
+
# @see #each_statement
|
91
|
+
# @see #enum_statement
|
92
92
|
def statements(options = {})
|
93
93
|
enum_statement.to_a
|
94
94
|
end
|
@@ -116,7 +116,7 @@ module RDF
|
|
116
116
|
# @return [Enumerator]
|
117
117
|
#
|
118
118
|
# @return [void]
|
119
|
-
# @see
|
119
|
+
# @see #enum_statement
|
120
120
|
def each_statement(&block)
|
121
121
|
if block_given?
|
122
122
|
# Invoke {#each} in the containing class:
|
@@ -130,7 +130,7 @@ module RDF
|
|
130
130
|
# Returns an enumerator for {#each_statement}.
|
131
131
|
#
|
132
132
|
# @return [Enumerator]
|
133
|
-
# @see
|
133
|
+
# @see #each_statement
|
134
134
|
def enum_statement
|
135
135
|
Enumerator.new(self, :each_statement)
|
136
136
|
end
|
@@ -142,8 +142,8 @@ module RDF
|
|
142
142
|
#
|
143
143
|
# @param [Hash{Symbol => Boolean}] options
|
144
144
|
# @return [Array<Array(Resource, URI, Value)>]
|
145
|
-
# @see
|
146
|
-
# @see
|
145
|
+
# @see #each_triple
|
146
|
+
# @see #enum_triple
|
147
147
|
def triples(options = {})
|
148
148
|
enum_statement.map { |statement| statement.to_triple }
|
149
149
|
end
|
@@ -173,7 +173,7 @@ module RDF
|
|
173
173
|
# @return [Enumerator]
|
174
174
|
#
|
175
175
|
# @return [void]
|
176
|
-
# @see
|
176
|
+
# @see #enum_triple
|
177
177
|
def each_triple(&block)
|
178
178
|
if block_given?
|
179
179
|
each_statement do |statement|
|
@@ -188,7 +188,7 @@ module RDF
|
|
188
188
|
# Returns an enumerator for {#each_triple}.
|
189
189
|
#
|
190
190
|
# @return [Enumerator]
|
191
|
-
# @see
|
191
|
+
# @see #each_triple
|
192
192
|
def enum_triple
|
193
193
|
Enumerator.new(self, :each_triple)
|
194
194
|
end
|
@@ -200,8 +200,8 @@ module RDF
|
|
200
200
|
#
|
201
201
|
# @param [Hash{Symbol => Boolean}] options
|
202
202
|
# @return [Array<Array(Resource, URI, Value, Resource)>]
|
203
|
-
# @see
|
204
|
-
# @see
|
203
|
+
# @see #each_quad
|
204
|
+
# @see #enum_quad
|
205
205
|
def quads(options = {})
|
206
206
|
enum_statement.map { |statement| statement.to_quad }
|
207
207
|
end
|
@@ -232,7 +232,7 @@ module RDF
|
|
232
232
|
# @return [Enumerator]
|
233
233
|
#
|
234
234
|
# @return [void]
|
235
|
-
# @see
|
235
|
+
# @see #enum_quad
|
236
236
|
def each_quad(&block)
|
237
237
|
if block_given?
|
238
238
|
each_statement do |statement|
|
@@ -247,7 +247,7 @@ module RDF
|
|
247
247
|
# Returns an enumerator for {#each_quad}.
|
248
248
|
#
|
249
249
|
# @return [Enumerator]
|
250
|
-
# @see
|
250
|
+
# @see #each_quad
|
251
251
|
def enum_quad
|
252
252
|
Enumerator.new(self, :each_quad)
|
253
253
|
end
|
@@ -260,8 +260,8 @@ module RDF
|
|
260
260
|
# @param [Hash{Symbol => Boolean}] options
|
261
261
|
# @option options [Boolean] :unique (true)
|
262
262
|
# @return [Array<Resource>]
|
263
|
-
# @see
|
264
|
-
# @see
|
263
|
+
# @see #each_subject
|
264
|
+
# @see #enum_subject
|
265
265
|
def subjects(options = {})
|
266
266
|
if options[:unique] == false
|
267
267
|
enum_statement.map { |statement| statement.subject }
|
@@ -293,7 +293,7 @@ module RDF
|
|
293
293
|
# @return [Enumerator]
|
294
294
|
#
|
295
295
|
# @return [void]
|
296
|
-
# @see
|
296
|
+
# @see #enum_subject
|
297
297
|
def each_subject(&block)
|
298
298
|
if block_given?
|
299
299
|
values = {}
|
@@ -313,7 +313,7 @@ module RDF
|
|
313
313
|
# Returns an enumerator for {#each_subject}.
|
314
314
|
#
|
315
315
|
# @return [Enumerator]
|
316
|
-
# @see
|
316
|
+
# @see #each_subject
|
317
317
|
def enum_subject
|
318
318
|
Enumerator.new(self, :each_subject)
|
319
319
|
end
|
@@ -326,8 +326,8 @@ module RDF
|
|
326
326
|
# @param [Hash{Symbol => Boolean}] options
|
327
327
|
# @option options [Boolean] :unique (true)
|
328
328
|
# @return [Array<URI>]
|
329
|
-
# @see
|
330
|
-
# @see
|
329
|
+
# @see #each_predicate
|
330
|
+
# @see #enum_predicate
|
331
331
|
def predicates(options = {})
|
332
332
|
if options[:unique] == false
|
333
333
|
enum_statement.map { |statement| statement.predicate }
|
@@ -359,7 +359,7 @@ module RDF
|
|
359
359
|
# @return [Enumerator]
|
360
360
|
#
|
361
361
|
# @return [void]
|
362
|
-
# @see
|
362
|
+
# @see #enum_predicate
|
363
363
|
def each_predicate(&block)
|
364
364
|
if block_given?
|
365
365
|
values = {}
|
@@ -379,7 +379,7 @@ module RDF
|
|
379
379
|
# Returns an enumerator for {#each_predicate}.
|
380
380
|
#
|
381
381
|
# @return [Enumerator]
|
382
|
-
# @see
|
382
|
+
# @see #each_predicate
|
383
383
|
def enum_predicate
|
384
384
|
Enumerator.new(self, :each_predicate)
|
385
385
|
end
|
@@ -392,8 +392,8 @@ module RDF
|
|
392
392
|
# @param [Hash{Symbol => Boolean}] options
|
393
393
|
# @option options [Boolean] :unique (true)
|
394
394
|
# @return [Array<Value>]
|
395
|
-
# @see
|
396
|
-
# @see
|
395
|
+
# @see #each_object
|
396
|
+
# @see #enum_object
|
397
397
|
def objects(options = {})
|
398
398
|
if options[:unique] == false
|
399
399
|
enum_statement.map { |statement| statement.object }
|
@@ -425,7 +425,7 @@ module RDF
|
|
425
425
|
# @return [Enumerator]
|
426
426
|
#
|
427
427
|
# @return [void]
|
428
|
-
# @see
|
428
|
+
# @see #enum_object
|
429
429
|
def each_object(&block) # FIXME: deduplication
|
430
430
|
if block_given?
|
431
431
|
values = {}
|
@@ -445,7 +445,7 @@ module RDF
|
|
445
445
|
# Returns an enumerator for {#each_object}.
|
446
446
|
#
|
447
447
|
# @return [Enumerator]
|
448
|
-
# @see
|
448
|
+
# @see #each_object
|
449
449
|
def enum_object
|
450
450
|
Enumerator.new(self, :each_object)
|
451
451
|
end
|
@@ -458,8 +458,8 @@ module RDF
|
|
458
458
|
# @param [Hash{Symbol => Boolean}] options
|
459
459
|
# @option options [Boolean] :unique (true)
|
460
460
|
# @return [Array<Resource>]
|
461
|
-
# @see
|
462
|
-
# @see
|
461
|
+
# @see #each_context
|
462
|
+
# @see #enum_context
|
463
463
|
def contexts(options = {})
|
464
464
|
if options[:unique] == false
|
465
465
|
enum_statement.map { |statement| statement.context }
|
@@ -491,7 +491,7 @@ module RDF
|
|
491
491
|
# @return [Enumerator]
|
492
492
|
#
|
493
493
|
# @return [void]
|
494
|
-
# @see
|
494
|
+
# @see #enum_context
|
495
495
|
def each_context(&block)
|
496
496
|
if block_given?
|
497
497
|
values = {}
|
@@ -511,13 +511,52 @@ module RDF
|
|
511
511
|
# Returns an enumerator for {#each_context}.
|
512
512
|
#
|
513
513
|
# @return [Enumerator]
|
514
|
-
# @see
|
514
|
+
# @see #each_context
|
515
515
|
def enum_context
|
516
516
|
Enumerator.new(self, :each_context)
|
517
517
|
end
|
518
518
|
|
519
519
|
alias_method :enum_contexts, :enum_context
|
520
520
|
|
521
|
+
##
|
522
|
+
# Iterates the given block for each RDF graph in `self`.
|
523
|
+
#
|
524
|
+
# If no block was given, returns an enumerator.
|
525
|
+
#
|
526
|
+
# @overload each_graph
|
527
|
+
# @yield [graph]
|
528
|
+
# @yieldparam [RDF::Graph] graph
|
529
|
+
# @return [void]
|
530
|
+
#
|
531
|
+
# @overload each_graph
|
532
|
+
# @return [Enumerator]
|
533
|
+
#
|
534
|
+
# @return [void]
|
535
|
+
# @see #enum_graph
|
536
|
+
# @since 0.1.19
|
537
|
+
def each_graph(&block)
|
538
|
+
if block_given?
|
539
|
+
block.call(RDF::Graph.new(nil, :data => self))
|
540
|
+
each_context do |context|
|
541
|
+
block.call(RDF::Graph.new(context, :data => self))
|
542
|
+
end
|
543
|
+
else
|
544
|
+
enum_graph
|
545
|
+
end
|
546
|
+
end
|
547
|
+
|
548
|
+
##
|
549
|
+
# Returns an enumerator for {#each_graph}.
|
550
|
+
#
|
551
|
+
# @return [Enumerator]
|
552
|
+
# @see #each_graph
|
553
|
+
# @since 0.1.19
|
554
|
+
def enum_graph
|
555
|
+
Enumerator.new(self, :each_graph)
|
556
|
+
end
|
557
|
+
|
558
|
+
alias_method :enum_graphs, :enum_graph
|
559
|
+
|
521
560
|
##
|
522
561
|
# Returns all RDF objects indexed by their subjects and predicates.
|
523
562
|
#
|
data/lib/rdf/mixin/queryable.rb
CHANGED
@@ -11,7 +11,7 @@ module RDF
|
|
11
11
|
include ::Enumerable
|
12
12
|
|
13
13
|
##
|
14
|
-
# Queries `self` for RDF statements matching the given pattern
|
14
|
+
# Queries `self` for RDF statements matching the given `pattern`.
|
15
15
|
#
|
16
16
|
# @example
|
17
17
|
# queryable.query([nil, RDF::DOAP.developer, nil])
|
@@ -22,7 +22,7 @@ module RDF
|
|
22
22
|
# @yieldparam [Statement]
|
23
23
|
# @return [Array<Statement>]
|
24
24
|
def query(pattern, &block)
|
25
|
-
raise TypeError.new("#{self} is not readable") if respond_to?(:readable) && !readable?
|
25
|
+
raise TypeError.new("#{self} is not readable") if respond_to?(:readable?) && !readable?
|
26
26
|
|
27
27
|
case pattern
|
28
28
|
when Query
|
@@ -41,5 +41,140 @@ module RDF
|
|
41
41
|
raise ArgumentError.new("expected RDF::Query, RDF::Pattern, Array or Hash, but got #{pattern.inspect}")
|
42
42
|
end
|
43
43
|
end
|
44
|
+
|
45
|
+
##
|
46
|
+
# Queries `self` for an RDF statement matching the given `pattern` and
|
47
|
+
# returns that statement if found.
|
48
|
+
#
|
49
|
+
# Returns `nil` if no statements match `pattern`.
|
50
|
+
#
|
51
|
+
# @overload first
|
52
|
+
# @return [RDF::Statement]
|
53
|
+
#
|
54
|
+
# @overload first(pattern)
|
55
|
+
# @param [Query, Statement, Array(Value), Hash] pattern
|
56
|
+
# @return [RDF::Statement]
|
57
|
+
#
|
58
|
+
# @return [RDF::Statement]
|
59
|
+
# @since 0.1.19
|
60
|
+
def first(pattern = nil)
|
61
|
+
if pattern
|
62
|
+
query(pattern) do |statement|
|
63
|
+
return statement
|
64
|
+
end
|
65
|
+
return nil
|
66
|
+
else
|
67
|
+
super()
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
##
|
72
|
+
# Queries `self` for an RDF statement matching the given `pattern` and
|
73
|
+
# returns the statement's subject term.
|
74
|
+
#
|
75
|
+
# Returns `nil` if no statements match `pattern`.
|
76
|
+
#
|
77
|
+
# @overload first_subject
|
78
|
+
# @return [RDF::Resource]
|
79
|
+
#
|
80
|
+
# @overload first_subject(pattern)
|
81
|
+
# @param [Query, Statement, Array(Value), Hash] pattern
|
82
|
+
# @return [RDF::Resource]
|
83
|
+
#
|
84
|
+
# @return [RDF::Resource]
|
85
|
+
# @since 0.1.19
|
86
|
+
def first_subject(pattern = nil)
|
87
|
+
__send__(*(pattern ? [:query, pattern] : [:each])) do |statement|
|
88
|
+
return statement.subject
|
89
|
+
end
|
90
|
+
return nil
|
91
|
+
end
|
92
|
+
|
93
|
+
##
|
94
|
+
# Queries `self` for an RDF statement matching the given `pattern` and
|
95
|
+
# returns the statement's predicate term.
|
96
|
+
#
|
97
|
+
# Returns `nil` if no statements match `pattern`.
|
98
|
+
#
|
99
|
+
# @overload first_predicate
|
100
|
+
# @return [RDF::URI]
|
101
|
+
#
|
102
|
+
# @overload first_predicate(pattern)
|
103
|
+
# @param [Query, Statement, Array(Value), Hash] pattern
|
104
|
+
# @return [RDF::URI]
|
105
|
+
#
|
106
|
+
# @return [RDF::URI]
|
107
|
+
# @since 0.1.19
|
108
|
+
def first_predicate(pattern = nil)
|
109
|
+
__send__(*(pattern ? [:query, pattern] : [:each])) do |statement|
|
110
|
+
return statement.predicate
|
111
|
+
end
|
112
|
+
return nil
|
113
|
+
end
|
114
|
+
|
115
|
+
##
|
116
|
+
# Queries `self` for an RDF statement matching the given `pattern` and
|
117
|
+
# returns the statement's object term.
|
118
|
+
#
|
119
|
+
# Returns `nil` if no statements match `pattern`.
|
120
|
+
#
|
121
|
+
# @overload first_object
|
122
|
+
# @return [RDF::Value]
|
123
|
+
#
|
124
|
+
# @overload first_object(pattern)
|
125
|
+
# @param [Query, Statement, Array(Value), Hash] pattern
|
126
|
+
# @return [RDF::Value]
|
127
|
+
#
|
128
|
+
# @return [RDF::Value]
|
129
|
+
# @since 0.1.19
|
130
|
+
def first_object(pattern = nil)
|
131
|
+
__send__(*(pattern ? [:query, pattern] : [:each])) do |statement|
|
132
|
+
return statement.object
|
133
|
+
end
|
134
|
+
return nil
|
135
|
+
end
|
136
|
+
|
137
|
+
##
|
138
|
+
# Queries `self` for RDF statements matching the given `pattern` and
|
139
|
+
# returns the first found object literal.
|
140
|
+
#
|
141
|
+
# Returns `nil` if no statements match `pattern` or if none of the found
|
142
|
+
# statements have a literal as their object term.
|
143
|
+
#
|
144
|
+
# @overload first_literal
|
145
|
+
# @return [RDF::Literal]
|
146
|
+
#
|
147
|
+
# @overload first_literal(pattern)
|
148
|
+
# @param [Query, Statement, Array(Value), Hash] pattern
|
149
|
+
# @return [RDF::Literal]
|
150
|
+
#
|
151
|
+
# @return [RDF::Literal]
|
152
|
+
# @since 0.1.19
|
153
|
+
def first_literal(pattern = nil)
|
154
|
+
__send__(*(pattern ? [:query, pattern] : [:each])) do |statement|
|
155
|
+
return statement.object if statement.object.is_a?(RDF::Literal)
|
156
|
+
end
|
157
|
+
return nil
|
158
|
+
end
|
159
|
+
|
160
|
+
##
|
161
|
+
# Queries `self` for RDF statements matching the given `pattern` and
|
162
|
+
# returns the value of the first found object literal.
|
163
|
+
#
|
164
|
+
# Returns `nil` if no statements match `pattern` or if none of the found
|
165
|
+
# statements have a literal as their object term.
|
166
|
+
#
|
167
|
+
# @overload first_value
|
168
|
+
# @return [Object]
|
169
|
+
#
|
170
|
+
# @overload first_value(pattern)
|
171
|
+
# @param [Query, Statement, Array(Value), Hash] pattern
|
172
|
+
# @return [Object]
|
173
|
+
#
|
174
|
+
# @return [Object]
|
175
|
+
# @since 0.1.19
|
176
|
+
def first_value(pattern = nil)
|
177
|
+
(literal = first_literal(pattern)) ? literal.value : nil
|
178
|
+
end
|
44
179
|
end
|
45
180
|
end
|
data/lib/rdf/model/graph.rb
CHANGED
@@ -1,6 +1,24 @@
|
|
1
1
|
module RDF
|
2
2
|
##
|
3
3
|
# An RDF graph.
|
4
|
+
#
|
5
|
+
# @example Creating an empty unnamed graph
|
6
|
+
# graph = Graph.new
|
7
|
+
#
|
8
|
+
# @example Creating an empty named graph
|
9
|
+
# graph = Graph.new("http://rubygems.org/")
|
10
|
+
#
|
11
|
+
# @example Loading graph data from a URL (1)
|
12
|
+
# require 'rdf/raptor' # for RDF/XML support
|
13
|
+
#
|
14
|
+
# graph = RDF::Graph.new("http://www.bbc.co.uk/programmes/b0081dq5.rdf")
|
15
|
+
# graph.load!
|
16
|
+
#
|
17
|
+
# @example Loading graph data from a URL (2)
|
18
|
+
# require 'rdf/raptor' # for RDF/XML support
|
19
|
+
#
|
20
|
+
# graph = RDF::Graph.load("http://www.bbc.co.uk/programmes/b0081dq5.rdf")
|
21
|
+
#
|
4
22
|
class Graph < Resource
|
5
23
|
include RDF::Enumerable
|
6
24
|
include RDF::Mutable
|
@@ -18,19 +36,12 @@ module RDF
|
|
18
36
|
# Creates a new `Graph` instance populated by the RDF data returned by
|
19
37
|
# dereferencing the given context URL.
|
20
38
|
#
|
21
|
-
# @
|
22
|
-
#
|
23
|
-
#
|
24
|
-
#
|
25
|
-
#
|
26
|
-
#
|
27
|
-
#
|
28
|
-
# @overload
|
29
|
-
# @param [String, #to_s] url
|
30
|
-
# @param [Hash{Symbol => Object}] options
|
31
|
-
# @return [Graph]
|
32
|
-
#
|
33
|
-
# @return [void]
|
39
|
+
# @param [String, #to_s] url
|
40
|
+
# @param [Hash{Symbol => Object}] options
|
41
|
+
# @yield [graph]
|
42
|
+
# @yieldparam [Graph] graph
|
43
|
+
# @return [Graph]
|
44
|
+
# @since 0.1.17
|
34
45
|
def self.load(url, options = {}, &block)
|
35
46
|
self.new(url, options) do |graph|
|
36
47
|
graph.load! unless graph.unnamed?
|
data/lib/rdf/model/value.rb
CHANGED
data/lib/rdf/query/solution.rb
CHANGED
@@ -21,7 +21,8 @@ class RDF::Query
|
|
21
21
|
# solution.to_hash #=> {:mbox => "jrhacker@example.org", ...}
|
22
22
|
#
|
23
23
|
class Solution
|
24
|
-
|
24
|
+
# Undefine all superfluous instance methods:
|
25
|
+
undef_method *(instance_methods.map { |s| s.to_sym } - [:__id__, :__send__, :__class__, :__eval__, :object_id, :instance_eval, :inspect, :class, :is_a?])
|
25
26
|
|
26
27
|
include Enumerable
|
27
28
|
|
data/lib/rdf/query/variable.rb
CHANGED
data/lib/rdf/version.rb
CHANGED
data/lib/rdf/vocab.rb
CHANGED
@@ -117,7 +117,7 @@ module RDF
|
|
117
117
|
end
|
118
118
|
|
119
119
|
# Undefine all superfluous instance methods:
|
120
|
-
undef_method *(instance_methods -
|
120
|
+
undef_method *(instance_methods.map { |s| s.to_sym } - [:__id__, :__send__, :__class__, :__eval__, :object_id, :instance_eval, :inspect, :class, :is_a?])
|
121
121
|
|
122
122
|
##
|
123
123
|
# @param [URI, String, #to_s]
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
8
|
+
- 9
|
9
|
+
version: 0.1.9
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Arto Bendiken
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-04-
|
18
|
+
date: 2010-04-21 00:00:00 +02:00
|
19
19
|
default_executable: rdf
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|