Class: DataFoodConsortium::Connector::JsonLdSerializer

Inherits:
Object
  • Object
show all
Defined in:
lib/datafoodconsortium/connector/json_ld_serializer.rb

Instance Method Summary collapse

Constructor Details

#initialize(outputContext = nil, inputContext = nil) ⇒ JsonLdSerializer

Returns a new instance of JsonLdSerializer.



28
29
30
31
# File 'lib/datafoodconsortium/connector/json_ld_serializer.rb', line 28

def initialize(outputContext = nil, inputContext = nil)
    @outputContext = outputContext
    @hashSerializer = VirtualAssembly::Semantizer::HashSerializer.new(inputContext)
end

Instance Method Details

#process(*subjects) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/datafoodconsortium/connector/json_ld_serializer.rb', line 33

def process(*subjects)
    return "" if subjects.empty?

    # Insert an input context on each subject so the properties could be prefixed. This way,
    # the DFC's context can be used.
    # See https://github.com/datafoodconsortium/connector-ruby/issues/11.
    inputs = subjects.map do |subject|
      # JSON::LD needs a context on every input using prefixes.
      subject.serialize(@hashSerializer).merge("@context" => @outputContext)
    end

    jsonLd = JSON::LD::API.compact(inputs, @outputContext)

    JSON.generate(jsonLd)
end