Module: BELParser::Resource

Defined in:
lib/bel_parser/resource.rb,
lib/bel_parser/resource/value.rb,
lib/bel_parser/resource/reader.rb,
lib/bel_parser/resource/concept.rb,
lib/bel_parser/resource/dataset.rb,
lib/bel_parser/resource/lru_cache.rb,
lib/bel_parser/resource/lru_reader.rb,
lib/bel_parser/resource/eager_reader.rb,
lib/bel_parser/resource/file_resource.rb,
lib/bel_parser/resource/sparql_reader.rb,
lib/bel_parser/resource/concept_scheme.rb,
lib/bel_parser/resource/jena_tdb_reader.rb,
lib/bel_parser/resource/eager_sparql_reader.rb,
lib/bel_parser/resource/file_resource_value.rb,
lib/bel_parser/resource/resource_url_reader.rb

Defined Under Namespace

Modules: Dataset, EagerReader, LRUReader, Reader, Value Classes: Concept, ConceptScheme, EagerSPARQLReader, FileResource, FileResourceValue, JenaTDBReader, LRUCache, ResourceURLReader, SPARQLReader

Constant Summary collapse

DEFAULT_SPARQL_ENDPOINT =
'http://resources.openbel.org/sparql'

Class Method Summary collapse

Class Method Details

.default_uri_readerObject



20
21
22
23
24
# File 'lib/bel_parser/resource.rb', line 20

def self.default_uri_reader
  READER_LOCK.synchronize do
    @default_uri_reader
  end
end

.default_uri_reader=(uri_reader) ⇒ Object



26
27
28
29
30
# File 'lib/bel_parser/resource.rb', line 26

def self.default_uri_reader=(uri_reader)
  READER_LOCK.synchronize do
    @default_uri_reader = uri_reader
  end
end

.default_url_readerObject



32
33
34
35
36
# File 'lib/bel_parser/resource.rb', line 32

def self.default_url_reader
  READER_LOCK.synchronize do
    @default_url_reader
  end
end

.default_url_reader=(url_reader) ⇒ Object



38
39
40
41
42
# File 'lib/bel_parser/resource.rb', line 38

def self.default_url_reader=(url_reader)
  READER_LOCK.synchronize do
    @default_url_reader = url_reader
  end
end

.resolve_uri(resource_url) ⇒ String

Resolves the URI String from the annotation or namespace resource.

The resource must contain a _URIString=…_ property.



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/bel_parser/resource.rb', line 50

def self.resolve_uri(resource_url)
  resource_url = resource_url.to_s

  RESOLVE_URI_LOCK.synchronize do
    @uri_hash ||= {}
    return @uri_hash[resource_url] if @uri_hash.key?(resource_url)
  end

  uri              = URI(resource_url)
  request          = Net::HTTP::Get.new(uri)
  request['Range'] = 'bytes=0-5000'
  resource_uri     = nil

  http = Net::HTTP.new(uri.hostname, uri.port)
  http.request(request) do |response|
    response.read_body do |chunk|
      uristring    = chunk.lines.detect { |l| l =~ URISTRING_PATTERN }
      if uristring
        resource_uri = uristring.match(URISTRING_PATTERN)[1]
        break
      end
    end
  end

  RESOLVE_URI_LOCK.synchronize do
    @uri_hash ||= {}
    @uri_hash[resource_url] = resource_uri
  end

  resource_uri
end