Class: BELRDF::Writer::RDFYielder

Inherits:
Object
  • Object
show all
Defined in:
lib/bel/translator/plugins/rdf/writer.rb

Constant Summary collapse

Rdf =
::BEL::Translator::Plugins::Rdf

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(io, format, options = {}) ⇒ RDFYielder

Returns a new instance of RDFYielder.



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/bel/translator/plugins/rdf/writer.rb', line 11

def initialize(io, format, options = {})
  rdf_writer = RDF::Writer.for(format)
  @writer    = rdf_writer.new(io, { :stream => true })

  if options[:void_dataset_uri]
    void_dataset_uri = options.delete(:void_dataset_uri)
    void_dataset_uri = RDF::URI(void_dataset_uri)
    unless void_dataset_uri.valid?
      raise ArgumentError.new 'void_dataset_uri is not a valid URI'
    end
    @void_dataset_uri = void_dataset_uri
  else
    @void_dataset_uri = nil
  end

  @writer.write_prologue
  @wrote_dataset    = false
end

Instance Attribute Details

#writerObject (readonly)

Returns the value of attribute writer.



7
8
9
# File 'lib/bel/translator/plugins/rdf/writer.rb', line 7

def writer
  @writer
end

Instance Method Details

#<<(nanopub) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/bel/translator/plugins/rdf/writer.rb', line 30

def <<(nanopub)
  if !@wrote_dataset && @void_dataset_uri
    void_dataset_triples = nanopub.to_void_dataset(@void_dataset_uri)
    if void_dataset_triples && void_dataset_triples.respond_to?(:each)
      void_dataset_triples.each do |void_triple|
        @writer.write_statement(void_triple)
      end
    end
  end
  nanopub_uri, statements = nanopub.to_rdf
  statements.each do |statement|
    @writer.write_statement(statement)
  end

  if @void_dataset_uri
    @writer.write_statement(RDF::Statement.new(@void_dataset_uri, RDF::DC.hasPart, nanopub_uri))
  end
end

#doneObject



49
50
51
# File 'lib/bel/translator/plugins/rdf/writer.rb', line 49

def done
  @writer.write_epilogue
end