module RDF::Serializers::Relationship

Attributes

association[RW]
image[RW]
predicate[RW]
sequence[RW]

Public Instance Methods

include_relationship?(record, serialization_params, included = false) click to toggle source
Calls superclass method
# File lib/rdf/serializers/relationship.rb, line 41
def include_relationship?(record, serialization_params, included = false)
  return false if lazy_load_data && !included

  super(record, serialization_params)
end
iris_from_record_and_relationship(record, params = {}) click to toggle source
# File lib/rdf/serializers/relationship.rb, line 47
def iris_from_record_and_relationship(record, params = {})
  initialize_static_serializer unless @initialized_static_serializer

  associated_object = fetch_associated_object(record, params)
  return [] unless associated_object

  if associated_object.respond_to? :map
    return associated_object.compact.map do |object|
      iri_from_record(object)
    end
  end

  [iri_from_record(associated_object)]
end
relationship_sequence(record, iris, serialization_params) click to toggle source
# File lib/rdf/serializers/relationship.rb, line 18
def relationship_sequence(record, iris, serialization_params)
  sequence = RDF::Node.new

  [
    value_to_hex(iri_from_record(record).to_s, predicate, sequence, nil, serialization_params),
    value_to_hex(sequence, RDF.type, RDF.Seq, nil, serialization_params)
  ] + iris.map.with_index do |iri, index|
    value_to_hex(sequence, RDF["_#{index}"], iri, nil, serialization_params)
  end
end
relationship_statements(record, iris, serialization_params) click to toggle source
# File lib/rdf/serializers/relationship.rb, line 29
def relationship_statements(record, iris, serialization_params)
  iris.map do |related_iri|
    value_to_hex(
      iri_from_record(record).to_s,
      predicate,
      related_iri,
      nil,
      serialization_params
    )
  end
end
serialize_hex(record, included, serialization_params) click to toggle source
# File lib/rdf/serializers/relationship.rb, line 10
def serialize_hex(record, included, serialization_params)
  return [] unless include_relationship?(record, serialization_params, included) && predicate.present?

  iris = iris_from_record_and_relationship(record, serialization_params)

  sequence ? relationship_sequence(record, iris, serialization_params) : relationship_statements(record, iris, serialization_params)
end