Class: Lutaml::Turtle::Transform

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

Instance Method Summary collapse

Instance Method Details

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



33
34
35
36
37
38
39
40
41
42
43
# File 'lib/glossarist/rdf/ext/turtle_transform_ext.rb', line 33

def data_to_model(data, _format, options = {})
  mapping = extract_turtle_mapping(options)
  unless mapping&.rdf_subject
    raise MissingSubjectError,
          "Turtle mapping requires a subject block"
  end

  graph = data.is_a?(RDF::Graph) ? data : Lutaml::Turtle::Adapter.parse(data)
  attrs = extract_attributes(graph, mapping)
  build_instance(attrs, options)
end

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



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/glossarist/rdf/ext/turtle_transform_ext.rb', line 15

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

  if !mapping.rdf_subject && mapping.has_types_or_predicates? && mapping.rdf_members.empty?
    raise MissingSubjectError,
          "Turtle mapping requires a subject block"
  end

  graph = build_graph(mapping, instance)
  return "" if graph.empty?

  prefixes = collect_all_prefixes(mapping, instance)
  RDF::Turtle::Writer.buffer(prefixes: prefixes) do |writer|
    graph.each_statement { |stmt| writer << stmt }
  end.strip
end