class RDF::Raptor::Turtle::Format

Turtle format specification.

@example Obtaining a Turtle format class

RDF::Format.for(:turtle)       #=> RDF::Raptor::Turtle::Format
RDF::Format.for("input.ttl")
RDF::Format.for(file_name:      "input.ttl")
RDF::Format.for(file_extension: "ttl")
RDF::Format.for(content_type:   "text/turtle")

Public Class Methods

detect(sample) click to toggle source

Sample detection to see if it matches Turtle (or N-Triples)

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/raptor/turtle.rb, line 53
def self.detect(sample)
  !!sample.match(%r(
    (?:@(base|prefix)) |                                            # Turtle keywords
    ["']{3} |                                                       # STRING_LITERAL_LONG_SINGLE_QUOTE/2
    "[^"]*"^^ | "[^"]*"@ |                                          # Typed/Language literals
    (?:
      (?:\s*(?:(?:<[^>]*>) | (?:\w*:\w+) | (?:"[^"]*"))\s*[,;]) ||
      (?:\s*(?:(?:<[^>]*>) | (?:\w*:\w+) | (?:"[^"]*"))){3}
    )
  )mx) && !(
    sample.match(%r([{}])) ||                                       # TriG
    sample.match(%r(@keywords|=>|\{)) ||                            # N3
    sample.match(%r(<(?:\/|html|rdf))i) ||                          # HTML, RDF/XML
    sample.match(%r(^(?:\s*<[^>]*>){4}.*\.\s*$)) ||                 # N-Quads
    sample.match(%r("@(context|subject|iri)"))                      # JSON-LD
  )
end
symbols() click to toggle source
# File lib/rdf/raptor/turtle.rb, line 71
def self.symbols
  [:turtle, :ttl]
end