module Redlander class Uri def initialize(uri) return nil if uri.nil? uri = uri.is_a?(URI) ? uri.to_s : uri @rdf_uri = Redland.librdf_new_uri(rdf_world, uri) raise RedlandError.new("Failed to create URI from '#{uri}'") if @rdf_uri.null? ObjectSpace.define_finalizer(self, proc { Redland.librdf_free_uri(@rdf_uri) }) rdf_uri end end end