class ActiveFedora::SparqlInsert
def build
def build query = deletes(subject).join query += "INSERT { \n" query += changes.map do |_, result| result.map do |statement| ::RDF::Query::Pattern.new(subject: subject, predicate: statement.predicate, object: statement.object).to_s end.join("\n") end.join("\n") query += "\n}\n WHERE { }" query end
def deletes(subject)
def deletes(subject) patterns(subject).map do |pattern| "DELETE { #{pattern} }\n WHERE { #{pattern} } ;\n" end end
def execute(uri)
def execute(uri) result = ActiveFedora.fedora.connection.patch(uri, build, "Content-Type" => "application/sparql-update") return true if result.status == 204 raise "Problem updating #{result.status} #{result.body}" end
def initialize(changes, subject = ::RDF::URI.new(nil))
def initialize(changes, subject = ::RDF::URI.new(nil)) @changes = changes @subject = subject end
def patterns(subject)
def patterns(subject) changes.map do |key, _| ::RDF::Query::Pattern.new(subject, key, :change).to_s end end