openlogic-rdf 0.3.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (80) hide show
  1. data/AUTHORS +3 -0
  2. data/CREDITS +9 -0
  3. data/README +361 -0
  4. data/UNLICENSE +24 -0
  5. data/VERSION +1 -0
  6. data/bin/rdf +18 -0
  7. data/etc/doap.nt +62 -0
  8. data/lib/df.rb +1 -0
  9. data/lib/rdf/cli.rb +200 -0
  10. data/lib/rdf/format.rb +383 -0
  11. data/lib/rdf/mixin/countable.rb +39 -0
  12. data/lib/rdf/mixin/durable.rb +31 -0
  13. data/lib/rdf/mixin/enumerable.rb +637 -0
  14. data/lib/rdf/mixin/indexable.rb +26 -0
  15. data/lib/rdf/mixin/inferable.rb +5 -0
  16. data/lib/rdf/mixin/mutable.rb +191 -0
  17. data/lib/rdf/mixin/queryable.rb +265 -0
  18. data/lib/rdf/mixin/readable.rb +15 -0
  19. data/lib/rdf/mixin/type_check.rb +21 -0
  20. data/lib/rdf/mixin/writable.rb +152 -0
  21. data/lib/rdf/model/graph.rb +263 -0
  22. data/lib/rdf/model/list.rb +731 -0
  23. data/lib/rdf/model/literal/boolean.rb +121 -0
  24. data/lib/rdf/model/literal/date.rb +73 -0
  25. data/lib/rdf/model/literal/datetime.rb +72 -0
  26. data/lib/rdf/model/literal/decimal.rb +86 -0
  27. data/lib/rdf/model/literal/double.rb +189 -0
  28. data/lib/rdf/model/literal/integer.rb +126 -0
  29. data/lib/rdf/model/literal/numeric.rb +184 -0
  30. data/lib/rdf/model/literal/time.rb +87 -0
  31. data/lib/rdf/model/literal/token.rb +47 -0
  32. data/lib/rdf/model/literal/xml.rb +39 -0
  33. data/lib/rdf/model/literal.rb +373 -0
  34. data/lib/rdf/model/node.rb +156 -0
  35. data/lib/rdf/model/resource.rb +28 -0
  36. data/lib/rdf/model/statement.rb +296 -0
  37. data/lib/rdf/model/term.rb +77 -0
  38. data/lib/rdf/model/uri.rb +570 -0
  39. data/lib/rdf/model/value.rb +133 -0
  40. data/lib/rdf/nquads.rb +152 -0
  41. data/lib/rdf/ntriples/format.rb +48 -0
  42. data/lib/rdf/ntriples/reader.rb +239 -0
  43. data/lib/rdf/ntriples/writer.rb +219 -0
  44. data/lib/rdf/ntriples.rb +104 -0
  45. data/lib/rdf/query/pattern.rb +329 -0
  46. data/lib/rdf/query/solution.rb +252 -0
  47. data/lib/rdf/query/solutions.rb +237 -0
  48. data/lib/rdf/query/variable.rb +221 -0
  49. data/lib/rdf/query.rb +404 -0
  50. data/lib/rdf/reader.rb +511 -0
  51. data/lib/rdf/repository.rb +389 -0
  52. data/lib/rdf/transaction.rb +161 -0
  53. data/lib/rdf/util/aliasing.rb +63 -0
  54. data/lib/rdf/util/cache.rb +139 -0
  55. data/lib/rdf/util/file.rb +38 -0
  56. data/lib/rdf/util/uuid.rb +36 -0
  57. data/lib/rdf/util.rb +6 -0
  58. data/lib/rdf/version.rb +19 -0
  59. data/lib/rdf/vocab/cc.rb +18 -0
  60. data/lib/rdf/vocab/cert.rb +13 -0
  61. data/lib/rdf/vocab/dc.rb +63 -0
  62. data/lib/rdf/vocab/dc11.rb +23 -0
  63. data/lib/rdf/vocab/doap.rb +45 -0
  64. data/lib/rdf/vocab/exif.rb +168 -0
  65. data/lib/rdf/vocab/foaf.rb +69 -0
  66. data/lib/rdf/vocab/geo.rb +13 -0
  67. data/lib/rdf/vocab/http.rb +26 -0
  68. data/lib/rdf/vocab/owl.rb +59 -0
  69. data/lib/rdf/vocab/rdfs.rb +17 -0
  70. data/lib/rdf/vocab/rsa.rb +12 -0
  71. data/lib/rdf/vocab/rss.rb +14 -0
  72. data/lib/rdf/vocab/sioc.rb +93 -0
  73. data/lib/rdf/vocab/skos.rb +36 -0
  74. data/lib/rdf/vocab/wot.rb +21 -0
  75. data/lib/rdf/vocab/xhtml.rb +9 -0
  76. data/lib/rdf/vocab/xsd.rb +58 -0
  77. data/lib/rdf/vocab.rb +215 -0
  78. data/lib/rdf/writer.rb +475 -0
  79. data/lib/rdf.rb +192 -0
  80. 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