Sha256: ea8390a5c1058524afff5689aeb6ed130682c32c26c63f77b566891d7c72072a

Contents?: true

Size: 1.84 KB

Versions: 9

Compression:

Stored size: 1.84 KB

Contents

module RDF::NTriples
  ##
  # N-Triples format specification.
  #
  # Note: Latest standards activities treat N-Triples as a subset
  # of Turtle. This includes application/n-triples mime type and a
  # new default encoding of utf-8.
  #
  # @example Obtaining an NTriples format class
  #   RDF::Format.for(:ntriples)     #=> RDF::NTriples::Format
  #   RDF::Format.for("etc/doap.nt")
  #   RDF::Format.for(file_name:      "etc/doap.nt")
  #   RDF::Format.for(file_extension: "nt")
  #   RDF::Format.for(content_type:   "application/n-triples")
  #
  # @see http://www.w3.org/TR/rdf-testcases/#ntriples
  # @see http://www.w3.org/TR/n-triples/
  class Format < RDF::Format
    content_type     'application/n-triples', extension: :nt, alias: ['text/plain']
    content_encoding 'utf-8'

    reader { RDF::NTriples::Reader }
    writer { RDF::NTriples::Writer }
    
    ##
    # Sample detection to see if it matches 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 (about 1K) of input.
    # @return [Boolean]
    def self.detect(sample)
      !!sample.match(%r(
        (?:(?:<[^>]*>) | (?:_:\w+))                             # Subject
        \s*
        (?:<[^>]*>)                                             # Predicate
        \s*
        (?:(?:<[^>]*>) | (?:_:\w+) | (?:"[^"\n]*"(?:^^|@\S+)?)) # Object
        \s*\.
      )x) && !(
        sample.match(%r(@(base|prefix|keywords)|\{)) ||         # Not Turtle/N3/TriG
        sample.match(%r(<(html|rdf))i)                          # Not HTML or XML
      ) && !RDF::NQuads::Format.detect(sample)
    end

    # Human readable name for this format
    def self.name; "N-Triples"; end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
rdf-2.1.0 lib/rdf/ntriples/format.rb
rdf-2.0.2 lib/rdf/ntriples/format.rb
rdf-2.0.1 lib/rdf/ntriples/format.rb
rdf-2.0.0 lib/rdf/ntriples/format.rb
rdf-2.0.0.beta2 lib/rdf/ntriples/format.rb
rdf-2.0.0.beta1 lib/rdf/ntriples/format.rb
rdf-1.99.1 lib/rdf/ntriples/format.rb
rdf-1.99.0.1 lib/rdf/ntriples/format.rb
rdf-1.99.0 lib/rdf/ntriples/format.rb