summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormr <mr@mrautenberg.de>2011-01-11 17:01:53 +0100
committermr <mr@mrautenberg.de>2011-01-11 17:01:53 +0100
commit6edd4387f6e1eaf0178321ca97d9814deb8f3e1f (patch)
tree69d13080ba6d2950c4687cea9749a720b1b49315
parent96356b0d439342b9132847b9f6c38cb7a10206c8 (diff)
get metadata for models / indenting
-rw-r--r--application.rb23
-rw-r--r--lazar.rb30
2 files changed, 42 insertions, 11 deletions
diff --git a/application.rb b/application.rb
index 99e4619..4fc749d 100644
--- a/application.rb
+++ b/application.rb
@@ -52,27 +52,30 @@ end
get '/?' do # get index of models
response['Content-Type'] = 'text/uri-list'
+ params.delete_if{|k,v| k=="subjectid"}
ModelStore.all(params).collect{|m| m.uri}.join("\n") + "\n"
end
delete '/:id/?' do
- begin
- uri = ModelStore.get(params[:id]).uri
- ModelStore.get(params[:id]).destroy!
- "Model #{params[:id]} deleted."
- if params[:subjectid] and !ModelStore.get(params[:id]) and uri
+ begin
+ uri = ModelStore.get(params[:id]).uri
+ ModelStore.get(params[:id]).destroy!
+ "Model #{params[:id]} deleted."
+ subjectid = params[:subjectid] if params[:subjectid]
+ subjectid = request.env['HTTP_SUBJECTID'] if !subjectid and request.env['HTTP_SUBJECTID']
+ if subjectid and !ModelStore.get(params[:id]) and uri
begin
- aa = OpenTox::Authorization.delete_policies_from_uri(uri, params[:subjectid])
- LOGGER.debug "Policy deleted for Model URI: #{uri} with subjectid: #{params[:subjectid]} with result: #{aa}"
+ res = OpenTox::Authorization.delete_policies_from_uri(uri, subjectid)
+ LOGGER.debug "Policy deleted for Model URI: #{uri} with subjectid: #{subjectid} with result: #{res}"
rescue
LOGGER.warn "Policy delete error for Model URI: #{uri}"
end
end
response['Content-Type'] = 'text/plain'
"Model #{params[:id]} deleted."
- rescue
- halt 404, "Model #{params[:id]} does not exist."
- end
+ rescue
+ halt 404, "Model #{params[:id]} does not exist."
+ end
end
diff --git a/lazar.rb b/lazar.rb
index ba34361..c37c629 100644
--- a/lazar.rb
+++ b/lazar.rb
@@ -20,6 +20,7 @@ end
# Get model representation
# @return [application/rdf+xml,application/x-yaml] Model representation
get '/:id/?' do
+
accept = request.env['HTTP_ACCEPT']
accept = "application/rdf+xml" if accept == '*/*' or accept == '' or accept.nil?
# workaround for browser links
@@ -47,6 +48,33 @@ get '/:id/?' do
end
end
+get '/:id/metadata.?:ext?' do
+
+ metadata = YAML.load(ModelStore.get(params[:id]).yaml).metadata
+
+ accept = request.env['HTTP_ACCEPT']
+ accept = "application/rdf+xml" if accept == '*/*' or accept == '' or accept.nil?
+ if params[:ext]
+ case params[:ext]
+ when "yaml"
+ accept = 'application/x-yaml'
+ when "rdf", "rdfxml"
+ accept = 'application/rdf+xml'
+ end
+ end
+ response['Content-Type'] = accept
+ case accept
+ when /yaml/
+ metadata.to_yaml
+ else #when /rdf/ and anything else
+ serializer = OpenTox::Serializer::Owl.new
+ serializer.add_metadata url_for("/#{params[:id]}",:full), metadata
+ serializer.to_rdfxml
+ end
+
+end
+
+
# Store a lazar model. This method should not be called directly, use OpenTox::Algorithm::Lazr to create a lazar model
# @param [Body] lazar Model representation in YAML format
# @return [String] Model URI
@@ -92,7 +120,7 @@ post '/:id/?' do
end
elsif dataset_uri
task = OpenTox::Task.create("Predict dataset",url_for("/#{@lazar.id}", :full)) do
- @lazar.predict_dataset(dataset_uri).uri
+ @lazar.predict_dataset(dataset_uri, subjectid).uri
end
halt 503,task.uri+"\n" if task.status == "Cancelled"
halt 202,task.uri