module LinkedRails::Model::Iri

Public Instance Methods

anonymous_iri() click to toggle source
# File lib/linked_rails/model/iri.rb, line 8
def anonymous_iri
  @anonymous_iri ||= RDF::Node.new
end
anonymous_iri?() click to toggle source
# File lib/linked_rails/model/iri.rb, line 12
def anonymous_iri?
  self.class < ActiveRecord::Base && new_record?
end
iri(opts = {}) click to toggle source

@return [RDF::URI].

# File lib/linked_rails/model/iri.rb, line 17
def iri(opts = {})
  return anonymous_iri if anonymous_iri?
  return iri_with_root(root_relative_iri(opts)) if opts.present?

  @iri ||= iri_with_root(root_relative_iri)
end
iri_opts() click to toggle source

@return [Hash]

# File lib/linked_rails/model/iri.rb, line 25
def iri_opts
  @iri_opts ||= {
    fragment: route_fragment,
    id: to_param
  }
end
rdf_type() click to toggle source
# File lib/linked_rails/model/iri.rb, line 32
def rdf_type
  self.class.iri
end
reload(_opts = {}) click to toggle source
Calls superclass method
# File lib/linked_rails/model/iri.rb, line 36
def reload(_opts = {})
  @iri = nil
  super
end
root_relative_iri(opts = {}) click to toggle source

@return [RDF::URI]

# File lib/linked_rails/model/iri.rb, line 42
def root_relative_iri(opts = {})
  RDF::URI(expand_iri_template(iri_opts.merge(opts)))
end
route_fragment() click to toggle source

@return [String, Symbol]

# File lib/linked_rails/model/iri.rb, line 47
def route_fragment; end

Private Instance Methods

expand_iri_template(args = {}) click to toggle source

@return [String]

# File lib/linked_rails/model/iri.rb, line 52
def expand_iri_template(args = {})
  iri_template.expand(args)
end
iri_template() click to toggle source

@return [URITemplate]

# File lib/linked_rails/model/iri.rb, line 65
def iri_template
  self.class.iri_template
end
iri_template_expand_path(template_base, path) click to toggle source

@return [URITemplate]

# File lib/linked_rails/model/iri.rb, line 70
def iri_template_expand_path(template_base, path)
  tokens = template_base.tokens

  ind = tokens.find_index do |t|
    t.is_a?(URITemplate::RFC6570::Expression::FormQuery) || t.is_a?(URITemplate::RFC6570::Expression::Fragment)
  end

  prefix = ind ? tokens[0...ind] : tokens
  suffix = ind ? tokens[ind..-1] : []
  URITemplate.new([prefix, path, suffix].flatten.join)
end
iri_template_with_fragment(template_base, fragment) click to toggle source

@return [URITemplate]

# File lib/linked_rails/model/iri.rb, line 83
def iri_template_with_fragment(template_base, fragment)
  URITemplate.new("#{template_base.to_s.sub(/{#[\w]+}/, '').split('#').first}##{fragment}")
end
iri_with_root(root_relative_iri) click to toggle source

@return [RDF::URI]

# File lib/linked_rails/model/iri.rb, line 57
def iri_with_root(root_relative_iri)
  iri = root_relative_iri.dup
  iri.scheme = LinkedRails.scheme
  iri.host = LinkedRails.host
  iri
end
singular_iri() click to toggle source
# File lib/linked_rails/model/iri.rb, line 87
def singular_iri; end
singular_iri_opts() click to toggle source
# File lib/linked_rails/model/iri.rb, line 89
def singular_iri_opts
  {}
end