Sha256: fd1ca63e6eb91440ec6e844c23e77396f47eeeb5d2d172e1f8b679aef886b6b2

Contents?: true

Size: 1.5 KB

Versions: 1

Compression:

Stored size: 1.5 KB

Contents

module PubliSci
  module DSL
    attr_reader :base_url

    # Use to set base url for whole script; helps when referring to dataset
    # resources from metadata and
    def base_url=(url)
      @base_url = url
      Prov.base_url=url
    end

    def data(&block)
      inst=PubliSci::Dataset::DSL::Instance.new
      inst.instance_eval(&block)
      @_dsl_data ||= [] << inst
      inst
    end

    def metadata(&block)
      inst=PubliSci::Metadata::DSL::Instance.new
      inst.instance_eval(&block)
      @_dsl_metadata = inst
      inst
    end

    def provenance(&block)
      inst=PubliSci::Prov::DSL::Instance.new
      inst.instance_eval(&block)
      @_dsl_prov = inst
      inst
    end

    def configuration
      @_dsl_config ||= DSL::Configuration.new
    end

    def configure
      yield configuration
    end

    def settings
      configuration
    end

    def generate_n3
      out = ""
      @_dsl_data.each{|dat| out << dat.generate_n3 } if @_dsl_data
      out << @_dsl_metadata.generate_n3 if @_dsl_metadata
      out << @_dsl_prov.generate_n3 if @_dsl_prov
      out
    end

    def to_repository(turtle_string=generate_n3)
      repo = settings.repository
      case repo
      when :in_memory
        repo = RDF::Repository.new
      when :fourstore
        repo = RDF::FourStore::Repository.new('http://localhost:8080')
      end
      f=Tempfile.new(['repo','.ttl'])
      f.write(turtle_string)
      f.close
      repo.load(f.path, :format => :ttl).to_s
      f.unlink
      repo
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
bio-publisci-0.0.7 lib/bio-publisci/dsl/dsl.rb