| Redland documentation | Contained in the Redland distribution. |
RDF::Redland::Storage - Redland RDF Storage Class
use RDF::Redland;
my $storage=new RDF::Redland::Storage("hashes", "test", "new='yes',hash-type='memory'");
...
Create objects for storing RDF::Redland::Model objects either persistently or in memory.
Create a new RDF::Redland::Storage object for the storage factory named STORAGE_NAME with storage named NAME and storage options OPTIONS_STRING which are specific to the storage factory type.
The storage options may be given either as a Perl hash or as a string. The string form are formatted in the form key1='value1',key2='value2' and the single quotes are required. The Perl hash form follows normal Perl conventions, and the boolean options use normal Perl concepts of truth.
Currently defined storage options:
Create a new storage erasing any existing one (boolean, default).
Provide write access to store (boolean, default) otherwise is read only.
Work in DIR directory when creating files.
File creation mode, default is (octal) 0644 Takes decimal (123), hex (0x123) or octal (0123).
Enable statement contexts. Each statement can be stored with an optional context Node and the context retrieved after queries. Boolean.
Use the TYPE hash-type for hashes storage. Current defined types are 'memory' and 'bdb' but is dependent on the hash factories available.
Enable indexing from predicates to (subject,object) which can in particular be useful for rdf:type relations. Boolean.
Whether model/storage method add_statements should be optimized, until a model/storage sync operation. Boolean.
Whether to maintain a table with merged models. Boolean.
Example, string form:
$storage=new RDF::Redland::Storage("hashes", "test",
"new='yes',hash-type='bdb',dir='.'");
Example, Perl hash form:
$storage=new RDF::Redland::Storage("hashes", "test",
{new=>1,hash-type=>'bdb',dir=>'.'});
Creates a new storage of the hashes type (indexed hashes) named test (these will be file names or URIs if the storage is persistent) and with options new='yes',hash-type='bdb',dir='.' so a new storage is created with BerkeleyDB (BDB) key:value hashes i.e. persistent and in the current directory.
Example, Perl hash form:
$storage=new RDF::Redland::Storage("mysql", "test", {host=>'localhost',database=>'testdb',user=>'testuser',new=>0,password=>'',contexts=>1});
Uses an existing storage of the mysql type, named test on localhost with database name testdb using a user testuser and no password. Contexts are enabled.
Create a new RDF::Redland::Storage object from RDF::Redland::Storage STORAGE (copy constructor). The new storage may have a new name chosen by the storage factory.
Dave Beckett - http://purl.org/net/dajobe/
| Redland documentation | Contained in the Redland distribution. |
# -*- Mode: Perl -*- # # Storage.pm - Redland Perl RDF Storage module # # $Id: Storage.pm 10593 2006-03-05 08:30:38Z dajobe $ # # Copyright (C) 2000-2005 David Beckett - http://purl.org/net/dajobe/ # Copyright (C) 2000-2005 University of Bristol - http://www.bristol.ac.uk/ # # This package is Free Software or Open Source available under the # following licenses (these are alternatives): # 1. GNU Lesser General Public License (LGPL) # 2. GNU General Public License (GPL) # 3. Mozilla Public License (MPL) # # See LICENSE.html or LICENSE.txt at the top of this package for the # full license terms. # # # package RDF::Redland::Storage; use strict;
######################################################################
sub new ($$;$$) { my($proto,$storage_name,$name,$options)=@_; my $class = ref($proto) || $proto; my $self = {}; my $options_string = $options; # Default to use the string as is. if (ref($options) eq 'HASH') { # Build the string from a key=>value hash my %booleans = (new=>1,bulk=>1,merge=>1,write=>1,contexts=>1,'index-predicates'=>1); $options_string = ''; while (my ($key, $value) = each(%{$options})) { if (defined($value)) { if (length($options_string) > 0) { $options_string .= ','; } if ($booleans{$key}) { $options_string .= "$key='". (($value) ? 'yes':'no') ."'"; } else { $options_string .= "$key='$value'"; } } } } warn qq{RDF::Redland::Storage->new("$storage_name", "$name", "$options_string")\n} if $RDF::Redland::Debug; $self->{STORAGE}=&RDF::Redland::CORE::librdf_new_storage($RDF::Redland::World->{WORLD},$storage_name,$name,$options_string); return undef if !$self->{STORAGE}; bless ($self, $class); return $self; }
sub new_from_storage ($$$) { my($proto,$storage)=@_; my $class = ref($proto) || $proto; my $self = {}; $self->{STORAGE}=&RDF::Redland::CORE::librdf_new_storage_from_storage($storage->{STORAGE}); return undef if !$self->{STORAGE}; bless ($self, $class); return $self; }
sub DESTROY ($) { my $self=shift; warn "RDF::Redland::Storage DESTROY $self" if $RDF::Redland::Debug; if(!$self->{STORAGE}) { warn "RDF::Redland::Storage DESTROY - librdf storage object gone\n" if $RDF::Redland::Debug; } else { &RDF::Redland::CORE::librdf_free_storage($self->{STORAGE}); } warn "RDF::Redland::Storage DESTROY done\n" if $RDF::Redland::Debug; }
1;