Class: Lutaml::JsonLd::Transform

Inherits:
Rdf::Transform
  • Object
show all
Defined in:
lib/glossarist/rdf/ext/jsonld_transform_ext.rb

Instance Method Summary collapse

Instance Method Details

#data_to_model(data, _format, options = {}) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/glossarist/rdf/ext/jsonld_transform_ext.rb', line 25

def data_to_model(data, _format, options = {})
  mapping = extract_mapping(options)
  return model_class.new unless mapping

  hash = data.is_a?(String) ? JSON.parse(data) : data

  if hash.key?("@graph") && hash["@graph"].is_a?(Array) && !hash["@graph"].empty?
    graph_data = hash["@graph"]
    first = graph_data.first
    hash = first.is_a?(Hash) ? first : {}
  end

  hash = strip_jsonld_keywords(hash)

  attrs = {}
  mapping.rdf_predicates.each do |rule|
    value = hash[rule.predicate_name]
    next if value.nil?

    attrs[rule.to] = if rule.lang_tagged && value.is_a?(Hash)
                       flatten_language_map(value)
                     else
                       value
                     end
  end

  build_instance(attrs, options)
end

#model_to_data(instance, _format, options = {}) ⇒ Object



14
15
16
17
18
19
20
21
22
23
# File 'lib/glossarist/rdf/ext/jsonld_transform_ext.rb', line 14

def model_to_data(instance, _format, options = {})
  mapping = extract_mapping(options)
  return {} unless mapping

  if mapping.rdf_members.any?
    build_graph_document(mapping, instance)
  else
    build_resource_object(mapping, instance)
  end
end