module OpenTox module Ontology module Echa require 'sparql/client' @sparql = SPARQL::Client.new("http://apps.ideaconsult.net:8080/ontology") def self.qs(classname="Endpoints") return "PREFIX ot: PREFIX ota: PREFIX owl: PREFIX dc: PREFIX rdfs: PREFIX rdf: PREFIX otee: PREFIX toxcast: select * where { ?endpoint rdfs:subClassOf otee:#{classname}. ?endpoint dc:title ?title. }" end def self.make_option_list(endpoint="Endpoints", level=1) out = "" results = @sparql.query(qs(endpoint)) rescue results = [] results.each do |result| endpointname = result.Endpoints.to_s.split('#').last title = result.bound?(:title) ? result.title : endpointname out += "\n" out += make_option_list(endpointname, level + 1) end return out end def self.get_endpoint_selectlist(include_blank=true) out = "\n" return out end def self.endpoints#(endpoint="Endpoints") endpoint_datasets = {} RestClientWrapper.get("http://apps.ideaconsult.net:8080/ambit2/query/ndatasets_endpoint",:accept => "text/csv").each do |line| if line.match(/^http/) e = line.split(',') endpoint_datasets["#{e.first} (#{e[1]})"] = RestClientWrapper.get(e.last, :accept => "text/uri-list").split("\n")#[0..e[1].to_i-1] # hack to get only the first count entries end end endpoint_datasets end end end end