class JSON::LD::Reader
A JSON-LD parser in Ruby.
@see www.w3.org/TR/json-ld11-api @author [Gregg Kellogg](greggkellogg.net/)
Public Class Methods
new(input = $stdin, **options) { |self| ... }
click to toggle source
Initializes the JSON-LD reader instance.
@param [IO, File, String] input @param [Hash{Symbol => Object}] options
any additional options (see `RDF::Reader#initialize` and {JSON::LD::API.initialize})
@yield [reader] ‘self` @yieldparam [RDF::Reader] reader @yieldreturn [void] ignored @raise [RDF::ReaderError] if the JSON
document cannot be loaded
Calls superclass method
# File lib/json/ld/reader.rb, line 76 def initialize(input = $stdin, **options, &block) options[:base_uri] ||= options[:base] options[:rename_bnodes] = false unless options.key?(:rename_bnodes) super do @options[:base] ||= base_uri.to_s if base_uri # Trim non-JSON stuff in script. @doc = if input.respond_to?(:read) input else StringIO.new(input.to_s.sub(/\A[^{\[]*/m, '').sub(/[^}\]]*\Z/m, '')) end if block case block.arity when 0 then instance_eval(&block) else yield(self) end end end end
options()
click to toggle source
JSON-LD Reader
options @see ruby-rdf.github.io/rdf/RDF/Reader#options-class_method
Calls superclass method
# File lib/json/ld/reader.rb, line 17 def self.options super + [ RDF::CLI::Option.new( symbol: :expandContext, control: :url2, datatype: RDF::URI, on: ["--expand-context CONTEXT"], description: "Context to use when expanding." ) { |arg| RDF::URI(arg).absolute? ? RDF::URI(arg) : StringIO.new(File.read(arg)) }, RDF::CLI::Option.new( symbol: :extractAllScripts, datatype: TrueClass, default: false, control: :checkbox, on: ["--[no-]extract-all-scripts"], description: "If set to true, when extracting JSON-LD script elements from HTML, unless a specific fragment identifier is targeted, extracts all encountered JSON-LD script elements using an array form, if necessary." ) { |arg| RDF::URI(arg) }, RDF::CLI::Option.new( symbol: :lowercaseLanguage, datatype: TrueClass, control: :checkbox, on: ["--[no-]lowercase-language"], description: "By default, language tags are left as is. To normalize to lowercase, set this option to `true`." ), RDF::CLI::Option.new( symbol: :processingMode, datatype: %w[json-ld-1.0 json-ld-1.1], control: :radio, on: ["--processingMode MODE", %w[json-ld-1.0 json-ld-1.1]], description: "Set Processing Mode (json-ld-1.0 or json-ld-1.1)" ), RDF::CLI::Option.new( symbol: :rdfDirection, datatype: %w[i18n-datatype compound-literal], default: 'null', control: :select, on: ["--rdf-direction DIR", %w[i18n-datatype compound-literal]], description: "How to serialize literal direction (i18n-datatype compound-literal)" ) { |arg| RDF::URI(arg) }, RDF::CLI::Option.new( symbol: :stream, datatype: TrueClass, control: :checkbox, on: ["--[no-]stream"], description: "Optimize for streaming JSON-LD to RDF." ) { |arg| arg } ] end
Public Instance Methods
each_statement(&block)
click to toggle source
@private @see RDF::Reader#each_statement
# File lib/json/ld/reader.rb, line 100 def each_statement(&block) if @options[:stream] stream_statement(&block) else API.toRdf(@doc, **@options, &block) end rescue ::JSON::ParserError, ::JSON::LD::JsonLdError => e log_fatal("Failed to parse input document: #{e.message}", exception: RDF::ReaderError) end
each_triple() { |*to_triple| ... }
click to toggle source
@private @see RDF::Reader#each_triple
# File lib/json/ld/reader.rb, line 113 def each_triple if block_given? each_statement do |statement| yield(*statement.to_triple) end end enum_for(:each_triple) end