def _create_and_hydrate_resources_from_sparql(select_sparql, opts={})
      # TODO: Optimization?: if return_graph option is false, then don't do this next line?
      uris_and_graphs = _select_uris_and_graphs(select_sparql, :uri_variable => opts[:uri_variable], :graph_variable => opts[:graph_variable])

      #there are no resources if there are no uris and graphs
      if uris_and_graphs.empty?
        []
      else
        construct_query = _construct_query_for_uris_and_graphs(uris_and_graphs)
        graph = _graph_of_triples_from_construct_or_describe(construct_query)
        _resources_from_graph(graph, uris_and_graphs)
      end
    end
def _create_and_hydrate_resources_from_sparql(select_sparql, opts={})
      # TODO: Optimization?: if return_graph option is false, then don't do this next line?
      uris_and_graphs = _select_uris_and_graphs(select_sparql, :uri_variable => opts[:uri_variable], :graph_variable => opts[:graph_variable])

      #there are no resources if there are no uris and graphs
      if uris_and_graphs.empty?
        []
      else
        construct_query = _construct_query_for_uris_and_graphs(uris_and_graphs)
        graph = _graph_of_triples_from_construct_or_describe(construct_query)
        _resources_from_graph(graph, uris_and_graphs)
      end
    end
Given a select query, perform a DESCRIBE query to get a graph of data from which we
 create and hydrate a collection of resources.

 @option options [ String ] uri_variable The name of the uri variable in the query, if not 'uri'
 @option options [ String ] graph_variable The name of the uri variable in the query, if not 'graph'