Sha256: 384a509749e865e45a971f685a769c5b48291279a5df3d90b14acd8d6fdb978f

Contents?: true

Size: 1.3 KB

Versions: 3

Compression:

Stored size: 1.3 KB

Contents

# Author:: Eyal Oren
# Copyright:: (c) 2005-2006 Eyal Oren
# License:: LGPL

# FetchingAdapter is an extension to rdflite for fetching RDF from online sources.
module ActiveRDF
  class FetchingAdapter < RDFLite
    ConnectionPool.register_adapter(:fetching, self)

    # TODO: check that rapper is installed

    # fetches RDF/XML data from given url and adds it to the datastore, using the
    # source url as context identifier.
    def fetch(url, syntax = nil)
      # check if url starts with http://
      return unless url.match(/http:\/\/(.*)/)

    ActiveRdfLogger::log_debug(self) { "Fetching from #{url}" }

      #model = Redland::Model.new
      #parser = Redland::Parser.new('rdfxml')
      #scan = Redland::Uri.new('http://feature.librdf.org/raptor-scanForRDF')
      #enable = Redland::Literal.new('1')
      #Redland::librdf_parser_set_feature(parser, scan.uri, enable.node)
      #parser.parse_into_model(model, url)
      #triples = Redland::Serializer.ntriples.model_to_string(nil, model)

      opts = syntax ? "-i #{syntax}" : "--scan"
      triples = `rapper #{opts} --quiet "#{url}"`
      lines = triples.split($/)
    ActiveRdfLogger::log_debug(self) { "Found #{lines.size} triples" }

    context = Query.resource_class.new(url)
      add_ntriples(triples, context)
    end
    alias :load :fetch
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
activerdf_net7-1.7.2 activerdf-rdflite/lib/activerdf_rdflite/fetching.rb
activerdf_net7-1.7.1 activerdf-rdflite/lib/activerdf_rdflite/fetching.rb
activerdf_net7-1.7.0 activerdf-rdflite/lib/activerdf_rdflite/fetching.rb