Module: LinkedRails::Model::IRI

Extended by:
ActiveSupport::Concern
Included in:
Collection, LinkedRails::Model
Defined in:
lib/linked_rails/model/iri.rb

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#anonymous_iriObject



8
9
10
# File 'lib/linked_rails/model/iri.rb', line 8

def anonymous_iri
  @anonymous_iri ||= RDF::Node.new
end

#anonymous_iri?Boolean

Returns:

  • (Boolean)


12
13
14
# File 'lib/linked_rails/model/iri.rb', line 12

def anonymous_iri?
  self.class < ActiveRecord::Base && new_record?
end

#iri(**opts) ⇒ RDF::URI

Returns .

Returns:

  • (RDF::URI)

    .



17
18
19
20
21
22
# 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_elementsObject



24
25
26
# File 'lib/linked_rails/model/iri.rb', line 24

def iri_elements
  root_relative_iri.to_s&.split('?')&.first&.split('/')&.map(&:presence)&.compact&.presence
end

#iri_optsHash

Returns:

  • (Hash)


29
30
31
32
33
34
# File 'lib/linked_rails/model/iri.rb', line 29

def iri_opts
  @iri_opts ||= {
    fragment: route_fragment,
    id: to_param
  }
end

#rdf_typeObject



36
37
38
# File 'lib/linked_rails/model/iri.rb', line 36

def rdf_type
  self.class.iri
end

#reload(**_opts) ⇒ Object



40
41
42
43
# File 'lib/linked_rails/model/iri.rb', line 40

def reload(**_opts)
  @iri = nil
  super
end

#root_relative_iri(**opts) ⇒ RDF::URI

Returns:

  • (RDF::URI)


46
47
48
# File 'lib/linked_rails/model/iri.rb', line 46

def root_relative_iri(**opts)
  RDF::URI(expand_iri_template(**iri_opts.merge(opts)))
end

#route_fragmentString, Symbol

Returns:

  • (String, Symbol)


51
# File 'lib/linked_rails/model/iri.rb', line 51

def route_fragment; end