openlogic-rdf 0.3.6
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/AUTHORS +3 -0
- data/CREDITS +9 -0
- data/README +361 -0
- data/UNLICENSE +24 -0
- data/VERSION +1 -0
- data/bin/rdf +18 -0
- data/etc/doap.nt +62 -0
- data/lib/df.rb +1 -0
- data/lib/rdf/cli.rb +200 -0
- data/lib/rdf/format.rb +383 -0
- data/lib/rdf/mixin/countable.rb +39 -0
- data/lib/rdf/mixin/durable.rb +31 -0
- data/lib/rdf/mixin/enumerable.rb +637 -0
- data/lib/rdf/mixin/indexable.rb +26 -0
- data/lib/rdf/mixin/inferable.rb +5 -0
- data/lib/rdf/mixin/mutable.rb +191 -0
- data/lib/rdf/mixin/queryable.rb +265 -0
- data/lib/rdf/mixin/readable.rb +15 -0
- data/lib/rdf/mixin/type_check.rb +21 -0
- data/lib/rdf/mixin/writable.rb +152 -0
- data/lib/rdf/model/graph.rb +263 -0
- data/lib/rdf/model/list.rb +731 -0
- data/lib/rdf/model/literal/boolean.rb +121 -0
- data/lib/rdf/model/literal/date.rb +73 -0
- data/lib/rdf/model/literal/datetime.rb +72 -0
- data/lib/rdf/model/literal/decimal.rb +86 -0
- data/lib/rdf/model/literal/double.rb +189 -0
- data/lib/rdf/model/literal/integer.rb +126 -0
- data/lib/rdf/model/literal/numeric.rb +184 -0
- data/lib/rdf/model/literal/time.rb +87 -0
- data/lib/rdf/model/literal/token.rb +47 -0
- data/lib/rdf/model/literal/xml.rb +39 -0
- data/lib/rdf/model/literal.rb +373 -0
- data/lib/rdf/model/node.rb +156 -0
- data/lib/rdf/model/resource.rb +28 -0
- data/lib/rdf/model/statement.rb +296 -0
- data/lib/rdf/model/term.rb +77 -0
- data/lib/rdf/model/uri.rb +570 -0
- data/lib/rdf/model/value.rb +133 -0
- data/lib/rdf/nquads.rb +152 -0
- data/lib/rdf/ntriples/format.rb +48 -0
- data/lib/rdf/ntriples/reader.rb +239 -0
- data/lib/rdf/ntriples/writer.rb +219 -0
- data/lib/rdf/ntriples.rb +104 -0
- data/lib/rdf/query/pattern.rb +329 -0
- data/lib/rdf/query/solution.rb +252 -0
- data/lib/rdf/query/solutions.rb +237 -0
- data/lib/rdf/query/variable.rb +221 -0
- data/lib/rdf/query.rb +404 -0
- data/lib/rdf/reader.rb +511 -0
- data/lib/rdf/repository.rb +389 -0
- data/lib/rdf/transaction.rb +161 -0
- data/lib/rdf/util/aliasing.rb +63 -0
- data/lib/rdf/util/cache.rb +139 -0
- data/lib/rdf/util/file.rb +38 -0
- data/lib/rdf/util/uuid.rb +36 -0
- data/lib/rdf/util.rb +6 -0
- data/lib/rdf/version.rb +19 -0
- data/lib/rdf/vocab/cc.rb +18 -0
- data/lib/rdf/vocab/cert.rb +13 -0
- data/lib/rdf/vocab/dc.rb +63 -0
- data/lib/rdf/vocab/dc11.rb +23 -0
- data/lib/rdf/vocab/doap.rb +45 -0
- data/lib/rdf/vocab/exif.rb +168 -0
- data/lib/rdf/vocab/foaf.rb +69 -0
- data/lib/rdf/vocab/geo.rb +13 -0
- data/lib/rdf/vocab/http.rb +26 -0
- data/lib/rdf/vocab/owl.rb +59 -0
- data/lib/rdf/vocab/rdfs.rb +17 -0
- data/lib/rdf/vocab/rsa.rb +12 -0
- data/lib/rdf/vocab/rss.rb +14 -0
- data/lib/rdf/vocab/sioc.rb +93 -0
- data/lib/rdf/vocab/skos.rb +36 -0
- data/lib/rdf/vocab/wot.rb +21 -0
- data/lib/rdf/vocab/xhtml.rb +9 -0
- data/lib/rdf/vocab/xsd.rb +58 -0
- data/lib/rdf/vocab.rb +215 -0
- data/lib/rdf/writer.rb +475 -0
- data/lib/rdf.rb +192 -0
- metadata +173 -0
@@ -0,0 +1,263 @@
|
|
1
|
+
module RDF
|
2
|
+
##
|
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
|
+
#
|
22
|
+
class Graph
|
23
|
+
include RDF::Resource
|
24
|
+
|
25
|
+
include RDF::Countable
|
26
|
+
include RDF::Durable
|
27
|
+
include RDF::Enumerable
|
28
|
+
include RDF::Queryable
|
29
|
+
include RDF::Mutable
|
30
|
+
|
31
|
+
##
|
32
|
+
# Returns the options passed to this graph when it was constructed.
|
33
|
+
#
|
34
|
+
# @return [Hash{Symbol => Object}]
|
35
|
+
attr_reader :options
|
36
|
+
|
37
|
+
##
|
38
|
+
# @return [RDF::Resource]
|
39
|
+
attr_accessor :context
|
40
|
+
|
41
|
+
##
|
42
|
+
# @return [RDF::Queryable]
|
43
|
+
attr_accessor :data
|
44
|
+
|
45
|
+
##
|
46
|
+
# Creates a new `Graph` instance populated by the RDF data returned by
|
47
|
+
# dereferencing the given context URL.
|
48
|
+
#
|
49
|
+
# @param [String, #to_s] url
|
50
|
+
# @param [Hash{Symbol => Object}] options
|
51
|
+
# Options from {RDF::Reader#initialize}, {RDF::Format.for} and {RDF::Graph#initialize}
|
52
|
+
# @yield [graph]
|
53
|
+
# @yieldparam [Graph] graph
|
54
|
+
# @return [Graph]
|
55
|
+
# @since 0.1.7
|
56
|
+
def self.load(url, options = {}, &block)
|
57
|
+
self.new(url, options) do |graph|
|
58
|
+
graph.load! unless graph.unnamed?
|
59
|
+
|
60
|
+
if block_given?
|
61
|
+
case block.arity
|
62
|
+
when 1 then block.call(graph)
|
63
|
+
else graph.instance_eval(&block)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
##
|
70
|
+
# @param [RDF::Resource] context
|
71
|
+
# @param [Hash{Symbol => Object}] options
|
72
|
+
# @yield [graph]
|
73
|
+
# @yieldparam [Graph]
|
74
|
+
def initialize(context = nil, options = {}, &block)
|
75
|
+
@context = case context
|
76
|
+
when nil then nil
|
77
|
+
when RDF::Resource then context
|
78
|
+
else RDF::URI.new(context)
|
79
|
+
end
|
80
|
+
|
81
|
+
@options = options.dup
|
82
|
+
@data = @options.delete(:data) || RDF::Repository.new
|
83
|
+
|
84
|
+
if block_given?
|
85
|
+
case block.arity
|
86
|
+
when 1 then block.call(self)
|
87
|
+
else instance_eval(&block)
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
##
|
93
|
+
# @return [void]
|
94
|
+
def load!(*args)
|
95
|
+
case
|
96
|
+
when args.empty?
|
97
|
+
load(context.to_s, context ? {:base_uri => context}.merge(@options) : @options)
|
98
|
+
else super
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
##
|
103
|
+
# Returns `true` to indicate that this is a graph.
|
104
|
+
#
|
105
|
+
# @return [Boolean]
|
106
|
+
def graph?
|
107
|
+
true
|
108
|
+
end
|
109
|
+
|
110
|
+
##
|
111
|
+
# Returns `true` if this is a named graph.
|
112
|
+
#
|
113
|
+
# @return [Boolean]
|
114
|
+
def named?
|
115
|
+
!unnamed?
|
116
|
+
end
|
117
|
+
|
118
|
+
##
|
119
|
+
# Returns `true` if this is a unnamed graph.
|
120
|
+
#
|
121
|
+
# @return [Boolean]
|
122
|
+
def unnamed?
|
123
|
+
context.nil?
|
124
|
+
end
|
125
|
+
|
126
|
+
##
|
127
|
+
# Returns `false` to indicate that this graph is not durable
|
128
|
+
#
|
129
|
+
# @return [Boolean]
|
130
|
+
# @see RDF::Durable#durable?
|
131
|
+
def durable?
|
132
|
+
false
|
133
|
+
end
|
134
|
+
|
135
|
+
##
|
136
|
+
# Returns all unique RDF contexts for this graph.
|
137
|
+
#
|
138
|
+
# @return [Enumerator<RDF::Resource>]
|
139
|
+
def contexts
|
140
|
+
(named? ? [context] : []).to_enum.extend(RDF::Countable)
|
141
|
+
end
|
142
|
+
|
143
|
+
##
|
144
|
+
# Returns the URI representation of this graph.
|
145
|
+
#
|
146
|
+
# @return [RDF::URI]
|
147
|
+
def to_uri
|
148
|
+
context
|
149
|
+
end
|
150
|
+
|
151
|
+
##
|
152
|
+
# Returns a string representation of this graph.
|
153
|
+
#
|
154
|
+
# @return [String]
|
155
|
+
def to_s
|
156
|
+
named? ? context.to_s : "<>"
|
157
|
+
end
|
158
|
+
|
159
|
+
##
|
160
|
+
# Returns `true` if this graph contains no RDF statements.
|
161
|
+
#
|
162
|
+
# @return [Boolean]
|
163
|
+
# @see RDF::Enumerable#empty?
|
164
|
+
def empty?
|
165
|
+
@data.empty?
|
166
|
+
end
|
167
|
+
|
168
|
+
##
|
169
|
+
# Returns `true` if this graph has an anonymous context, `false` otherwise.
|
170
|
+
#
|
171
|
+
# @return [Boolean]
|
172
|
+
def anonymous?
|
173
|
+
context.nil? ? false : context.anonymous?
|
174
|
+
end
|
175
|
+
|
176
|
+
##
|
177
|
+
# Returns the number of RDF statements in this graph.
|
178
|
+
#
|
179
|
+
# @return [Integer]
|
180
|
+
# @see RDF::Enumerable#count
|
181
|
+
def count
|
182
|
+
@data.query(:context => context).count
|
183
|
+
end
|
184
|
+
|
185
|
+
##
|
186
|
+
# Returns `true` if this graph contains the given RDF statement.
|
187
|
+
#
|
188
|
+
# @param [Statement] statement
|
189
|
+
# @return [Boolean]
|
190
|
+
# @see RDF::Enumerable#has_statement?
|
191
|
+
def has_statement?(statement)
|
192
|
+
statement = statement.dup
|
193
|
+
statement.context = context
|
194
|
+
@data.has_statement?(statement)
|
195
|
+
end
|
196
|
+
|
197
|
+
##
|
198
|
+
# Enumerates each RDF statement in this graph.
|
199
|
+
#
|
200
|
+
# @yield [statement]
|
201
|
+
# @yieldparam [Statement] statement
|
202
|
+
# @return [Enumerator]
|
203
|
+
# @see RDF::Enumerable#each_statement
|
204
|
+
def each(&block)
|
205
|
+
@data.query(:context => context).each(&block)
|
206
|
+
end
|
207
|
+
|
208
|
+
##
|
209
|
+
# @private
|
210
|
+
# @see RDF::Queryable#query
|
211
|
+
def query_pattern(pattern, &block)
|
212
|
+
pattern = pattern.dup
|
213
|
+
pattern.context = context
|
214
|
+
@data.query(pattern, &block)
|
215
|
+
end
|
216
|
+
|
217
|
+
##
|
218
|
+
# @private
|
219
|
+
# @see RDF::Mutable#insert
|
220
|
+
def insert_statement(statement)
|
221
|
+
statement = statement.dup
|
222
|
+
statement.context = context
|
223
|
+
@data.insert(statement)
|
224
|
+
end
|
225
|
+
|
226
|
+
##
|
227
|
+
# @private
|
228
|
+
# @see RDF::Mutable#delete
|
229
|
+
def delete_statement(statement)
|
230
|
+
statement = statement.dup
|
231
|
+
statement.context = context
|
232
|
+
@data.delete(statement)
|
233
|
+
end
|
234
|
+
|
235
|
+
##
|
236
|
+
# @private
|
237
|
+
# @see RDF::Mutable#clear
|
238
|
+
def clear_statements
|
239
|
+
@data.delete(:context => context)
|
240
|
+
end
|
241
|
+
|
242
|
+
protected :query_pattern
|
243
|
+
protected :insert_statement
|
244
|
+
protected :delete_statement
|
245
|
+
protected :clear_statements
|
246
|
+
|
247
|
+
##
|
248
|
+
# @private
|
249
|
+
# @see RDF::Enumerable#graphs
|
250
|
+
# @since 0.2.0
|
251
|
+
def graphs
|
252
|
+
enum_graph
|
253
|
+
end
|
254
|
+
|
255
|
+
##
|
256
|
+
# @private
|
257
|
+
# @see RDF::Enumerable#each_graph
|
258
|
+
# @since 0.2.0
|
259
|
+
def each_graph(&block)
|
260
|
+
block_given? ? block.call(self) : enum_graph
|
261
|
+
end
|
262
|
+
end
|
263
|
+
end
|