class BELParser::Expression::Model::Namespace

Namespace represents a catalog of biological identifiers that are to identify parameter values like genes (e.g. AKT1), diseases (e.g. hypertropia), and processes (e.g. anaphase).

Attributes

keyword[RW]
uri[RW]
uri_reader[R]
url[RW]
url_reader[R]

Public Class Methods

new(keyword, uri = nil, url = nil, options = {}) click to toggle source
# File lib/bel_parser/expression/model/namespace.rb, line 17
def initialize(keyword, uri = nil, url = nil, options = {})
  raise(ArgumentError, 'keyword is nil') unless keyword
  @keyword = keyword
  @uri     = uri
  @url     = url

  # configure reader for URIs (RDF).
  @uri_reader = options.fetch(:uri_reader, BELParser::Resource.default_uri_reader)
  BELParser::Resource::Reader.assert_reader(@uri_reader, 'uri_reader')

  # configure reader for URLs (Resource files).
  @url_reader = options.fetch(:url_reader, BELParser::Resource.default_url_reader)
  BELParser::Resource::Reader.assert_reader(@url_reader, 'url_reader')
end

Public Instance Methods

==(other) click to toggle source
# File lib/bel_parser/expression/model/namespace.rb, line 131
def ==(other)
  return false if other.nil?
  @keyword == other.keyword && @uri == other.uri && @url == other.url
end
[](value) click to toggle source
# File lib/bel_parser/expression/model/namespace.rb, line 82
def [](value)
  resolved_value =
    if uri? && @uri_reader
      @uri_reader.retrieve_value_from_resource(@uri, value)
    elsif url? && @url_reader
      @url_reader.retrieve_value_from_resource(@url, value)
    else
      nil
    end

  if resolved_value
    match =
      if resolved_value.size == 1
        resolved_value.first
      else
        # first, find match by name, identifier, title
        # otherwise, select first match (e.g. multiple match by synonym)
        resolved_value.find { |v|
          [v.name, v.identifier, v.title].any? { |s| s == value }
        } || resolved_value.first
      end
    Parameter.new(self, match.name, match.encodings)
  else
    Parameter.new(self, value, nil)
  end
end
domain() click to toggle source
# File lib/bel_parser/expression/model/namespace.rb, line 59
def domain
  case
  when uri?
    @uri
  when url?
    @url
  else
    nil
  end
end
domain_equal?(other) click to toggle source
# File lib/bel_parser/expression/model/namespace.rb, line 137
def domain_equal?(other)
  return false if other.nil?
  @uri == other.uri && @url == other.url
end
each() { |parameter| ... } click to toggle source
# File lib/bel_parser/expression/model/namespace.rb, line 109
def each
  if block_given?
    values =
      if uri?
        @uri_reader.retrieve_values_from_resource(@uri)
      elsif url?
        @url_reader.retrieve_values_from_resource(@url)
      else
        []
      end
    values.each do |value|
      yield Parameter.new(self, value.name, value.encodings)
    end
  else
    to_enum(:each)
  end
end
hash() click to toggle source
# File lib/bel_parser/expression/model/namespace.rb, line 127
def hash
  [@keyword, @uri, @url].hash
end
include?(value) click to toggle source
# File lib/bel_parser/expression/model/namespace.rb, line 70
def include?(value)
  resolved_value =
    if uri? && @uri_reader
      @uri_reader.retrieve_value_from_resource(@uri, value)
    elsif url? && @url_reader
      @url_reader.retrieve_value_from_resource(@url, value)
    else
      nil
    end
  !resolved_value.nil?
end
initialize_copy(original) click to toggle source
# File lib/bel_parser/expression/model/namespace.rb, line 32
def initialize_copy(original)
  @keyword    = original.keyword
  @uri        = original.uri
  @uri_reader = original.uri_reader
  @url        = original.url
  @url_reader = original.url_reader
end
to_s() click to toggle source
# File lib/bel_parser/expression/model/namespace.rb, line 142
def to_s
  @keyword.to_s
end
type() click to toggle source
# File lib/bel_parser/expression/model/namespace.rb, line 48
def type
  case
  when uri?
    :uri
  when url?
    :url
  else
    nil
  end
end
uri?() click to toggle source
# File lib/bel_parser/expression/model/namespace.rb, line 40
def uri?
  !@uri.nil?
end
url?() click to toggle source
# File lib/bel_parser/expression/model/namespace.rb, line 44
def url?
  !@url.nil?
end