Class: RDF::JSON::Writer

Inherits:
Writer
  • Object
show all
Defined in:
lib/rdf/json/writer.rb

Overview

RDF/JSON serializer.

Examples:

Loading RDF/JSON serialization support

require 'rdf/json'

Obtaining an RDF/JSON writer class

RDF::Writer.for(:json)         #=> RDF::JSON::Writer
RDF::Writer.for("etc/test.rj")
RDF::Writer.for(:file_name      => "etc/test.rj")
RDF::Writer.for(:file_extension => "rj")
RDF::Writer.for(:content_type   => "application/rdf+json")

Serializing RDF statements into an RDF/JSON file

RDF::JSON::Writer.open("etc/test.rj") do |writer|
  graph.each_statement do |statement|
    writer << statement
  end
end

Serializing RDF statements into an RDF/JSON string

RDF::JSON::Writer.buffer do |writer|
  graph.each_statement do |statement|
    writer << statement
  end
end

See Also:

Instance Method Summary collapse

Instance Method Details

#format_literal(value, **options) ⇒ String

Returns the RDF/JSON representation of a literal.

Parameters:

  • value (RDF::Literal, String, #to_s)
  • options (Hash{Symbol => Object})

Returns:

  • (String)


87
88
89
90
91
92
# File 'lib/rdf/json/writer.rb', line 87

def format_literal(value, **options)
  case value
    when RDF::Literal then value.to_rdf_json.to_json
    else RDF::Literal.new(value).to_rdf_json.to_json
  end
end

#format_node(value, **options) ⇒ String

Returns the RDF/JSON representation of a blank node.

Parameters:

  • value (RDF::Node)
  • options (Hash{Symbol => Object})

Returns:

  • (String)


67
68
69
# File 'lib/rdf/json/writer.rb', line 67

def format_node(value, **options)
  value.to_rdf_json.to_json
end

#format_uri(value, **options) ⇒ String

Returns the RDF/JSON representation of a URI reference.

Parameters:

  • value (RDF::URI)
  • options (Hash{Symbol => Object})

Returns:

  • (String)


77
78
79
# File 'lib/rdf/json/writer.rb', line 77

def format_uri(value, **options)
  value.to_rdf_json.to_json
end

#write_epilogue

This method returns an undefined value.

Outputs the RDF/JSON representation of all stored triples.

See Also:



56
57
58
59
# File 'lib/rdf/json/writer.rb', line 56

def write_epilogue
  puts @json.to_json
  super
end

#write_triple(subject, predicate, object)

This method returns an undefined value.

Stores the RDF/JSON representation of a triple.

Parameters:

  • subject (RDF::Resource)
  • predicate (RDF::URI)
  • object (RDF::Value)

See Also:



41
42
43
44
45
46
47
48
49
# File 'lib/rdf/json/writer.rb', line 41

def write_triple(subject, predicate, object)
  s = subject.to_s
  p = predicate.to_s
  o = object.is_a?(RDF::Value) ? object : RDF::Literal.new(object)
  @json       ||= {}
  @json[s]    ||= {}
  @json[s][p] ||= []
  @json[s][p] << o.to_rdf_json
end