Class: Lutaml::Rdf::LinkedDataTransform
- Inherits:
-
Transform
- Object
- Model::Transform
- Transform
- Lutaml::Rdf::LinkedDataTransform
show all
- Defined in:
- lib/lutaml/rdf/linked_data_transform.rb
Instance Method Summary
collapse
Methods inherited from Transform
#each_member, #extract_language, #member_mapping_for, #resolve_single_type_uri, #resolve_subject_uri, #resolve_type_uris
Instance Method Details
#data_to_model(data, format, options = {}) ⇒ Object
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
# File 'lib/lutaml/rdf/linked_data_transform.rb', line 17
def data_to_model(data, format, options = {})
mapping = (format, options)
return model_class.new unless mapping
hash = data.is_a?(Hash) ? data : {}
if hash.key?("@graph") && hash["@graph"].is_a?(Array) && !hash["@graph"].empty?
first = hash["@graph"].first
hash = first.is_a?(Hash) ? first : {}
end
hash = strip_linked_data_keywords(hash)
attrs = {}
mapping.rdf_predicates.each do |rule|
value = hash[rule.predicate_name]
next if value.nil?
attrs[rule.to] = if rule.kind == :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
6
7
8
9
10
11
12
13
14
15
|
# File 'lib/lutaml/rdf/linked_data_transform.rb', line 6
def model_to_data(instance, format, options = {})
mapping = (format, options)
return {} unless mapping
if mapping.rdf_members.any?
build_graph_document(mapping, instance, format)
else
build_resource_object(mapping, instance, format)
end
end
|