class RDF::Tabular::Format

Tabular Data/CSV format specification.

@example Obtaining a Tabular format class

RDF::Format.for(:tabular)        #=> RDF::Tabular::Format
RDF::Format.for(:csv)            #=> RDF::Tabular::Format
RDF::Format.for(:tsv)            #=> RDF::Tabular::Format
RDF::Format.for("etc/foaf.csv")
RDF::Format.for("etc/foaf.tsv")
RDF::Format.for(file_name:      "etc/foaf.csv")
RDF::Format.for(file_name:      "etc/foaf.tsv")
RDF::Format.for(file_extension: "csv")
RDF::Format.for(file_extension: "tsv")
RDF::Format.for(content_type:   "text/csv")
RDF::Format.for(content_type:   "text/tab-separated-values")
RDF::Format.for(content_type:   "application/csvm+json")

@example Obtaining serialization format MIME types

RDF::Format.content_types      #=> {"text/csv" => [RDF::Tabular::Format]}

@example Obtaining serialization format file extension mappings

RDF::Format.file_extensions    #=> {:csv => "text/csv"}

@see www.w3.org/TR/rdf-testcases/#ntriples

Public Class Methods

cli_commands() click to toggle source

Hash of CLI commands appropriate for this format @return [Hash{Symbol => Lambda(Array, Hash)}]

# File lib/rdf/tabular/format.rb, line 53
def self.cli_commands
  {
    "tabular-json": {
      description: "Serialize using tabular JSON",
      parse: false,
      filter: {format: :tabular},  # Only shows output format set
      option_use: {output_format: :disabled},
      help: "tabular-json --input-format tabular files ...\nGenerate tabular JSON output, rather than RDF for Tabular data",
      lambda: ->(argv, opts) do
        raise ArgumentError, "Outputting Tabular JSON only allowed when input format is tabular." unless opts[:format] == :tabular
        out = opts[:output] || $stdout
        out.set_encoding(Encoding::UTF_8) if RUBY_PLATFORM == "java"
        RDF::CLI.parse(argv, **opts) do |reader|
          out.puts reader.to_json
        end
      end
    }
  }
end
detect(sample) click to toggle source

Sample detection to see if it matches JSON-LD

Use a text sample to detect the format of an input file. Sub-classes implement a matcher sufficient to detect probably format matches, including disambiguating between other similar formats.

@param [String] sample Beginning several bytes (~ 1K) of input. @return [Boolean]

# File lib/rdf/tabular/format.rb, line 46
def self.detect(sample)
  !!sample.match(/^(?:(?:\w )+,(?:\w ))$/)
end