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(subject, *subjects) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/datafoodconsortium/connector/json_ld_serializer.rb', line 33

def process(subject, *subjects)
    subjects.insert(0, subject)

    if (subjects.empty?)
        return ""
    end

    inputs = []
    
    # 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.
    subjects.each do |subject|
        input = { "@context" => "https://www.datafoodconsortium.org" }
        input.merge!(subject.serialize(@hashSerializer))
        inputs.push(input)
    end

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

    return JSON.generate(jsonLd)
end