@@ -74,7 +74,7 @@ class Transaction
7474 ##
7575 # @see RDF::Enumerable#each
7676 def each ( *args , &block )
77- @snapshot . each ( *args , &block )
77+ read_target . each ( *args , &block )
7878 end
7979
8080 ##
@@ -203,6 +203,12 @@ def readable?
203203 true
204204 end
205205
206+ ##
207+ # @see RDF::Enumerable#has_statement?
208+ def has_statement? ( statement )
209+ read_target . has_statement? ( statement )
210+ end
211+
206212 ##
207213 # Returns a developer-friendly representation of this transaction.
208214 #
@@ -271,11 +277,11 @@ def delete_statement(statement)
271277 end
272278
273279 def query_pattern ( *args , &block )
274- @snapshot . send ( :query_pattern , *args , &block )
280+ read_target . send ( :query_pattern , *args , &block )
275281 end
276282
277283 def query_execute ( *args , &block )
278- @snapshot . send ( :query_execute , *args , &block )
284+ read_target . send ( :query_execute , *args , &block )
279285 end
280286
281287 undef_method :load , :update , :clear
@@ -289,12 +295,18 @@ def query_execute(*args, &block)
289295 # @param statement [RDF::Statement]
290296 # @return [RDF::Statement]
291297 def process_statement ( statement )
292- if graph_name && statement . graph_name . nil?
298+ if graph_name
293299 statement = statement . dup
294300 statement . graph_name = graph_name
295301 end
296302 statement
297303 end
304+
305+ def read_target
306+ return @snapshot if graph_name . nil?
307+ return @snapshot . project_graph ( nil ) if graph_name == false
308+ @snapshot . project_graph ( graph_name )
309+ end
298310
299311 public
300312
0 commit comments