rb_cObject
An RDF parser object class
$Id$
Copyright © 2008-2009, Michael Granger All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Return a Hash of supported features from the underlying Redland library.
Redleaf::Parser.features # => {"raptor" => "", "grddl" => "Gleaning Resource Descriptions from Dialects of Languages", "rdfxml" => "RDF/XML", "guess" => "Pick the parser to use using content type and URI", "rdfa" => "RDF/A via librdfa", "trig" => "TriG - Turtle with Named Graphs", "turtle" => "Turtle Terse RDF Triple Language", "ntriples" => "N-Triples", "rss-tag-soup" => "RSS Tag Soup"}
static VALUE rleaf_redleaf_parser_s_features( VALUE klass )
Find a parser class by name.
# File lib/redleaf/parser.rb, line 51 51: def self::find_by_name( name ) 52: begin 53: require "redleaf/parser/#{name}" 54: rescue LoadError => err 55: Redleaf.logger.error "%s while trying to load a parser named %p: %s" % 56: [ err.class.name, name, err.message ] 57: end 58: 59: return self.subclasses.find {|klass| klass.parser_type.to_s == name } 60: end
Guess the type of parser required given one or more of a mimetype, a buffer containing RDF content, and/or an RDF uri.
static VALUE rleaf_redleaf_parser_s_guess_type( int argc, VALUE *argv, VALUE self )
Inheritance callback — keep track of all subclasses so we can search for them by name later.
# File lib/redleaf/parser.rb, line 42 42: def self::inherited( subclass ) 43: if self == Redleaf::Parser 44: @subclasses << subclass 45: end 46: super 47: end
Returns true if the Redland parser type required by the receiving store class is supported by the local installation.
# File lib/redleaf/parser.rb, line 89 89: def self::is_supported? 90: return self.features.include?( self.validated_parser_type ) 91: end
Check to be sure the parser type is supported before instantiating it
# File lib/redleaf/parser.rb, line 95 95: def self::new( *args ) 96: raise Redleaf::FeatureError, "unsupported parser type %p" % [ self.parser_type ] unless 97: self.is_supported? 98: super 99: end
Initialize an instance of a subclass of Redleaf::Parser.
static VALUE rleaf_redleaf_parser_initialize( VALUE self )
Set the class’s Redland parser type to new_setting if given, and return the current (new) setting.
# File lib/redleaf/parser.rb, line 65 65: def self::parser_type( new_setting=nil ) 66: if new_setting 67: Redleaf.logger.debug "Setting backend for %p to %p" % [ self, new_setting ] 68: @parser_type = new_setting.to_sym 69: 70: unless self.is_supported? 71: Redleaf.logger.warn "local Redland library doesn't have %p parser; valid values are: %p" % 72: [ @parser_type.to_s, self.features ] 73: end 74: end 75: 76: return @parser_type 77: end
Get the parser_type for the class after making sure it’s valid and supported by the local installation. Raises a Redleaf::FeatureError if there is a problem.
# File lib/redleaf/parser.rb, line 82 82: def self::validated_parser_type 83: return self.parser_type.to_s.gsub( /_/, '-' ) 84: end
Return an HTTP Accept header value for the parser.
Redleaf::Parser.new.accept_header # => "application/rdf+xml, text/rdf;q=0.6"
static VALUE rleaf_redleaf_parser_accept_header( VALUE self )
Return an HTTP Accept header value for the parser.
Redleaf::Parser.new.accept_header # => "application/rdf+xml, text/rdf;q=0.6"
static VALUE rleaf_redleaf_parser_accept_header( VALUE self )
Parse the content in the specified string and return a Redleaf::Graph containing any resulting statements.
static VALUE rleaf_redleaf_parser_parse( int argc, VALUE *argv, VALUE self )
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.