summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgebele <gebele@in-silico.ch>2013-05-15 16:39:15 +0200
committergebele <gebele@in-silico.ch>2013-05-15 16:39:15 +0200
commit48df3bf1b0c8f0dc68a3f91e93448d55a0cf5c0e (patch)
tree682b6fcd661fe3705bb8e8ce908763c07dfc3838
parent1c353553c3213138cfd98256e93363980367794f (diff)
prevent 4store from dublicates
-rw-r--r--lib/4store.rb7
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/4store.rb b/lib/4store.rb
index 67297c0..f3ab026 100644
--- a/lib/4store.rb
+++ b/lib/4store.rb
@@ -42,7 +42,12 @@ module OpenTox
bad_request_error "'#{mime_type}' is not a supported content type. Please use one of #{@@content_type_formats.join(", ")}." unless @@content_type_formats.include? mime_type
bad_request_error "Reqest body empty." unless rdf
mime_type = "application/x-turtle" if mime_type == "text/plain"
- RestClientWrapper.put File.join(four_store_uri,"data",uri), rdf, :content_type => mime_type
+ RestClientWrapper.put File.join(four_store_uri,"data",uri), rdf, :content_type => mime_type
+ # prevent 4store from dublicates
+ # sparql for modified time (DELETE WHERE is not supported)-> delete -> insert new time
+ date = query "SELECT ?date WHERE { <#{uri}> <#{RDF::DC.modified}> ?date }", "application/sparql-results+xml"
+ date = date.match("\<literal\>.*\<\/literal\>").to_s.gsub(/\<literal\>|<\/literal\>/, "")
+ update "DELETE DATA { GRAPH <#{uri}> { <#{uri}> <#{RDF::DC.modified}> \"#{date}\" } }" if date.size >0
update "INSERT DATA { GRAPH <#{uri}> { <#{uri}> <#{RDF::DC.modified}> \"#{DateTime.now}\" } }"
end