Class: JSON::LD::Writer
- Inherits:
-
RDF::Writer
- Object
- RDF::Writer
- JSON::LD::Writer
- Includes:
- Utils
- Defined in:
- lib/json/ld/writer.rb
Overview
A JSON-LD parser in Ruby.
Note that the natural interface is to write a whole graph at a time. Writing statements or Triples will create a graph to add them to and then serialize the graph.
The writer will add prefix definitions, and use them for creating @context definitions, and minting CURIEs
Select the :expand option to output JSON-LD in expanded form
Instance Attribute Summary collapse
- #context ⇒ Object readonly
- #graph ⇒ Object readonly
Class Method Summary collapse
-
.to_sym ⇒ Object
Override normal symbol generation.
Instance Method Summary collapse
-
#initialize(output = $stdout, options = {}) {|writer| ... } ⇒ Writer
constructor
Initializes the RDF-LD writer instance.
-
#write_epilogue ⇒ void
Outputs the Serialized JSON-LD representation of all stored statements.
-
#write_graph(graph) ⇒ void
Write whole graph.
-
#write_statement(statement) ⇒ void
Adds a statement to be serialized.
-
#write_triple(subject, predicate, object) ⇒ void
abstract
Addes a triple to be serialized.
Methods included from Utils
#blank_node?, #list?, #node?, #node_reference?, #value?
Constructor Details
#initialize(output = $stdout, options = {}) {|writer| ... } ⇒ Writer
Initializes the RDF-LD writer instance.
91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/json/ld/writer.rb', line 91 def initialize(output = $stdout, = {}, &block) [:base_uri] ||= [:base] if .has_key?(:base) [:base] ||= [:base_uri] if .has_key?(:base_uri) super do @repo = RDF::Graph.new if block_given? case block.arity when 0 then instance_eval(&block) else block.call(self) end end end end |
Instance Attribute Details
#context ⇒ Object (readonly)
61 62 63 |
# File 'lib/json/ld/writer.rb', line 61 def context @context end |
#graph ⇒ Object (readonly)
58 59 60 |
# File 'lib/json/ld/writer.rb', line 58 def graph @graph end |
Class Method Details
.to_sym ⇒ Object
Override normal symbol generation
65 66 67 |
# File 'lib/json/ld/writer.rb', line 65 def self.to_sym :jsonld end |
Instance Method Details
#write_epilogue ⇒ void
This method returns an undefined value.
Outputs the Serialized JSON-LD representation of all stored statements.
If provided a context or prefixes, we’ll create a context and use it to compact the output. Otherwise, we return un-compacted JSON-LD
144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 |
# File 'lib/json/ld/writer.rb', line 144 def write_epilogue @debug = @options[:debug] # Turn graph into a triple array statements = @repo.each_statement.to_a debug("writer") { "serialize #{statements.length} statements, #{@options.inspect}"} result = API.fromRDF(statements, nil, @options) # If we were provided a context, or prefixes, use them to compact the output context = RDF::Util::File.open_file(@options[:context]) if @options[:context].is_a?(String) context ||= @options[:context] context ||= if @options[:prefixes] || @options[:language] || @options[:standard_prefixes] ctx = EvaluationContext.new(@options) ctx.language = @options[:language] if @options[:language] @options[:prefixes].each do |prefix, iri| ctx.set_mapping(prefix, iri) if prefix && iri end if @options[:prefixes] ctx end # Perform compaction, if we have a context if context debug("writer") { "compact result"} result = API.compact(result, context, nil, @options) end @output.write(result.to_json(JSON_STATE)) end |
#write_graph(graph) ⇒ void
This method returns an undefined value.
Write whole graph
111 112 113 114 |
# File 'lib/json/ld/writer.rb', line 111 def write_graph(graph) debug {"Add graph #{graph.inspect}"} @repo = graph end |
#write_statement(statement) ⇒ void
This method returns an undefined value.
Adds a statement to be serialized
120 121 122 |
# File 'lib/json/ld/writer.rb', line 120 def write_statement(statement) @repo.insert(statement) end |
#write_triple(subject, predicate, object) ⇒ void
This method returns an undefined value.
Addes a triple to be serialized
132 133 134 |
# File 'lib/json/ld/writer.rb', line 132 def write_triple(subject, predicate, object) @repo.insert(Statement.new(subject, predicate, object)) end |