class RDF::DataObjects::Adapters::Postgres

Postgres Adapter for RDF::DataObjects.

Public Class Methods

delete_sql() click to toggle source

SQL prepared statement for deletions

@return [String]

# File lib/rdf/do/adapters/postgres.rb, line 46
def self.delete_sql 
  "DELETE FROM quads where (subject = ? AND predicate = ? AND object = ? AND context = ?)"
end
insert_sql() click to toggle source

SQL prepared statement for insertions

@return [String]

# File lib/rdf/do/adapters/postgres.rb, line 30
def self.insert_sql
  'insert into quads (subject, predicate, object, context) VALUES (?, ?, ?, ?)'
end
migrate?(do_repository, opts = {}) click to toggle source

Indempotently migrate this database.

@param [RDF::DataObjects::Repository] do_repository @return [void]

# File lib/rdf/do/adapters/postgres.rb, line 18
    def self.migrate?(do_repository, opts = {})
      begin do_repository.exec('CREATE TABLE quads (subject varchar(255), predicate varchar(255), object varchar(255), context varchar(255), UNIQUE (subject, predicate, object, context))') rescue nil end
      begin do_repository.exec('CREATE INDEX quads_context_index ON quads (context)') rescue nil end
      begin do_repository.exec('CREATE INDEX quads_object_index ON quads (object)') rescue nil end
      begin do_repository.exec('CREATE INDEX quads_predicate_index ON quads (predicate)') rescue nil end
      begin do_repository.exec('CREATE INDEX quads_subject_index ON quads (subject)') rescue nil end
      do_repository.exec('CREATE OR REPLACE RULE "insert_ignore" AS ON INSERT TO quads WHERE EXISTS(SELECT true FROM quads WHERE subject = NEW.subject AND predicate = NEW.predicate AND object = NEW.object AND context = NEW.context) DO INSTEAD NOTHING;')
    end

    # SQL prepared statement for insertions
    #
    # @return [String]
    def self.insert_sql
      'insert into quads (subject, predicate, object, context) VALUES (?, ?, ?, ?)'
    end

    # SQL prepared statement for multiple insertion
    #
    # @param  [Integer] count The number of statements to be inserted
    # @return [String]
    def self.multiple_insert_sql(count)
      sql = 'insert into quads (subject, predicate, object, context) VALUES '
      sql + (1..count).map { "(?, ?, ?, ?)" }.join(',')
    end

    # SQL prepared statement for deletions
    #
    # @return [String]
    def self.delete_sql 
      "DELETE FROM quads where (subject = ? AND predicate = ? AND object = ? AND context = ?)"
    end

  end
end
multiple_insert_sql(count) click to toggle source

SQL prepared statement for multiple insertion

@param [Integer] count The number of statements to be inserted @return [String]

# File lib/rdf/do/adapters/postgres.rb, line 38
def self.multiple_insert_sql(count)
  sql = 'insert into quads (subject, predicate, object, context) VALUES '
  sql + (1..count).map { "(?, ?, ?, ?)" }.join(',')
end