# RDF::Redland::Storage - perldoc - [phpMan]

## NAME
    [RDF::Redland::Storage](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3AStorage/markdown) - Redland RDF Storage Class

## SYNOPSIS
      use [RDF::Redland](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland/markdown);
      my $storage=new [RDF::Redland::Storage](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3AStorage/markdown)("hashes", "test", "new='yes',hash-type='memory'");
      ...

## DESCRIPTION
    Create objects for storing [RDF::Redland::Model](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3AModel/markdown) objects either persistently or in memory.

## CONSTRUCTORS
    new STORAGE_NAME [NAME [OPTIONS_STRING]]
        Create a new [RDF::Redland::Storage](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3AStorage/markdown) 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:

        new='yes'
            Create a new storage erasing any existing one (boolean, default).

        write='yes'
            Provide write access to store (boolean, default) otherwise is read only.

        dir='DIR'
            Work in DIR directory when creating files.

        mode='MODE'
            File creation mode, default is (octal) 0644 Takes decimal (123), hex (0x123) or octal
            (0123).

        contexts='yes'
            Enable statement contexts. Each statement can be stored with an optional context Node
            and the context retrieved after queries. Boolean.

        hash-type='TYPE' (*hashes* storage only)
            Use the TYPE hash-type for *hashes* storage. Current defined types are 'memory' and
            'bdb' but is dependent on the hash factories available.

        index-predicates='yes' (*hashes* storage only)
            Enable indexing from predicates to (subject,object) which can in particular be useful
            for rdf:type relations. Boolean.

        bulk='no' (*mysql* storage only)
            Whether model/storage method add_statements should be optimized, until a model/storage
            sync operation. Boolean.

        merge='no' (*mysql* storage only)
            Whether to maintain a table with merged models. Boolean.

        Example, string form:

          $storage=new [RDF::Redland::Storage](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3AStorage/markdown)("hashes", "test",
                                    "new='yes',hash-type='bdb',dir='.'");

        Example, Perl hash form:

          $storage=new [RDF::Redland::Storage](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3AStorage/markdown)("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](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3AStorage/markdown)("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.

    new_from_storage STORAGE
        Create a new [RDF::Redland::Storage](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3AStorage/markdown) object from [RDF::Redland::Storage](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3AStorage/markdown) *STORAGE* (copy
        constructor). The new storage may have a new name chosen by the storage factory.

## SEE ALSO
    [RDF::Redland::Model](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3AModel/markdown)

## AUTHOR
    Dave Beckett - <http://www.dajobe.org/>

