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

## NAME
    [RDF::Redland::Model](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3AModel/markdown) - Redland RDF Model 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'");
      my $model=new [RDF::Redland::Model](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3AModel/markdown)($storage, "");
      ...

      my(@sources)=$model->targets($predicate_node, $object_node);

      ...

## DESCRIPTION
    Manipulate the RDF model.

## CONSTRUCTORS
    new STORAGE OPTIONS_STRING
    new_with_options STORAGE OPTIONS_HASH
        Create a new [RDF::Redland::Model](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3AModel/markdown) object using [RDF::Redland::Storage](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3AStorage/markdown) object *STORAGE* with a
        options. The options can be given either as a string in the first form as *OPTIONS_STRING*.
        The options take the form key1='value1',key2='value2'. The quotes are required. In the
        second case *OPTIONS_HASH* is a reference to a Perl hash of options.

    new_from_model MODEL
        Create a new model from an existing [RDF::Redland::Model](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3AModel/markdown) *MODEL* (copy constructor).

## METHODS
    size
        Return the size of the model (number of statements).

    sync
        Synchronise the model to the underlying storage.

    add SUBJECT PREDICATE OBJECT
        Add a new statement to the model with *SUBJECT*, *PREDICATE* and *OBJECT*. These can be
        [RDF::Redland::Node](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3ANode/markdown), [RDF::Redland::URI](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3AURI/markdown) or perl URI objects.

    add_typed_literal_statement SUBJECT PREDICATE STRING [XML_LANGUAGE [DATATYPE]]
        Add a new statement to the model containing a typed literal string object *STRING* with
        (optional) XML language (xml:lang attribute) *XML_LANGUAGE* and (optional) datatype URI
        *DATATYPE*. *XML_LANGUAGE* or *DATATYPE* can either or both be set to undef.

    add_statement STATEMENT [CONTEXT] | NODE NODE NODE [CONTEXT]
        Add [RDF::Redland::Statement](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3AStatement/markdown) *STATEMENT* or the statement formed by *NODE NODE NODE* to the
        model. If the optional *CONTEXT* is given, associate it with that context. Any of *NODE* or
        *CONTEXT* can be a [RDF::Redland::Node](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3ANode/markdown), [RDF::Redland::URI](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3AURI/markdown) or perl URI object.

    add_statements STREAM [CONTEXT]
        Add the statements from the [RDF::Redland::Stream](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3AStream/markdown) *STREAM* to the model. If the optional
        *CONTEXT* is given, associate it with that context. *CONTEXT* can be a [RDF::Redland::Node](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3ANode/markdown),
        [RDF::Redland::URI](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3AURI/markdown) or perl URI object.

    remove_statement STATEMENT [CONTEXT] | NODE NODE NODE [CONTEXT]
        Remove [RDF::Redland::Statement](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3AStatement/markdown) *STATEMENT* or the statement formed by *NODE NODE NODE* from
        the model. If the optional *CONTEXT* is given, remove only the statement stored with that
        context. Any of *NODE* or *CONTEXT* can be a [RDF::Redland::Node](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3ANode/markdown), [RDF::Redland::URI](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3AURI/markdown) or perl
        URI object.

    remove_context_statements CONTEXT
        Remove all [RDF::Redland::Statement](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3AStatement/markdown) *STATEMENT*s from the model with the given *CONTEXT*
        context. *CONTEXT* can be a [RDF::Redland::Node](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3ANode/markdown), [RDF::Redland::URI](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3AURI/markdown) or perl URI object.

    contains_statement STATEMENT
        Return non 0 if the model contains [RDF::Redland::Statement](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3AStatement/markdown) *STATEMENT*.

    as_stream [CONTEXT]
        Return a new [RDF::Redland::Stream](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3AStream/markdown) object seralising the entire model, or just those
        statements with *CONTEXT*, as [RDF::Redland::Statement](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3AStatement/markdown) objects. If given, *CONTEXT* can be a
        [RDF::Redland::Node](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3ANode/markdown), [RDF::Redland::URI](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3AURI/markdown) or perl URI object.

    find_statements STATEMENT [CONTEXT]
        Find all matching statements in the model matching partial [RDF::Redland::Statement](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3AStatement/markdown)
        *STATEMENT* (any of the subject, predicate, object [RDF::Redland::Node](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3ANode/markdown) can be undef). If
        *CONTEXT* is given, finds statements only in that context.

        In an array context, returns an array of the matching [RDF::Redland::Statement](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3AStatement/markdown) objects. In a
        scalar context, returns the [RDF::Redland::Stream](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3AStream/markdown) object representing the results.

    sources ARC TARGET
        Get all source [RDF::Redland::Node](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3ANode/markdown) objects for a given arc *ARC*, target *TARGET*>
        [RDF::Redland::Node](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3ANode/markdown) objects as a list of [RDF::Redland::Node](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3ANode/markdown) objects.

    arcs SOURCE TARGET
        Get all arc [RDF::Redland::Node](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3ANode/markdown) objects for a given source *SOURCE*, target *TARGET*
        [RDF::Redland::Node](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3ANode/markdown) objects as a list of [RDF::Redland::Node](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3ANode/markdown) objects.

    targets SOURCE ARC
        Get all target [RDF::Redland::Node](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3ANode/markdown) objects for a given source *SOURCE*, arc *ARC*
        [RDF::Redland::Node](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3ANode/markdown) objects as a list of [RDF::Redland::Node](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3ANode/markdown) objects.

    sources_iterator ARC TARGET
        Get all source [RDF::Redland::Node](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3ANode/markdown) objects for a given arc *ARC*, target *TARGET*
        [RDF::Redland::Node](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3ANode/markdown) objects as an [RDF::Redland::Iterator](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3AIterator/markdown) or undef on failure.

    arcs_iterator SOURCE TARGET
        Get all arc [RDF::Redland::Node](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3ANode/markdown) objects for a given source *SOURCE*, target *TARGET*
        [RDF::Redland::Node](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3ANode/markdown) objects as an [RDF::Redland::Iterator](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3AIterator/markdown) or undef on failure.

    targets_iterator SOURCE ARC
        Get all target [RDF::Redland::Node](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3ANode/markdown) objects for a given source *SOURCE*, arc *ARC*
        [RDF::Redland::Node](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3ANode/markdown) objects as an [RDF::Redland::Iterator](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3AIterator/markdown) or undef on failure.

    source ARC TARGET
        Get one source [RDF::Redland::Node](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3ANode/markdown) object that matches a given arc *ARC*, target *TARGET*
        [RDF::Redland::Node](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3ANode/markdown) objects or undef if there is no match.

    arc SOURCE TARGET
        Get one arc [RDF::Redland::Node](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3ANode/markdown) object that matches a given source *SOURCE*, target *TARGET*
        [RDF::Redland::Node](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3ANode/markdown) objects or undef if there is no match.

    target SOURCE ARC
        Get one target [RDF::Redland::Node](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3ANode/markdown) object that matches a given source *SOURCE*, arc *ARC*
        [RDF::Redland::Node](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3ANode/markdown) objects or undef if there is no match.

    contexts
        Get all context [RDF::Redland::Node](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3ANode/markdown) objects in the model

    feature URI [VALUE]
        Get/set a model feature. The feature is named via [RDF::Redland::URI](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3AURI/markdown) *URI* and the value is a
        [RDF::Redland::Node](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3ANode/markdown). If *VALUE* is given, the feature is set to that value, otherwise the
        current value is returned.

    query_execute QUERY
        Execute the *QUERY* [RDF::Redland::Query](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3AQuery/markdown) against the model returning a result set
        [RDF::Redland::QueryResults](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3AQueryResults/markdown) or undef on failure.

    load URI [SYNTAX-NAME [ MIME-TYPE [SYNTAX-URI [HANDLER ]]]
        Load content from *URI* into the model, guessing the parser.

    to_string [BASE-URI [SYNTAX-NAME [ MIME-TYPE [SYNTAX-URI]]]
        Serialize the model to a syntax. If no serializer name is given, the default serializer
        RDF/XML is used.

## OLDER METHODS
    serialise
    serialize
        Return a new [RDF::Redland::Stream](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3AStream/markdown) object seralising the model as [RDF::Redland::Statement](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3AStatement/markdown)
        objects. Replaced by as_stream to reduce confusion with the [RDF::Redland::Serializer](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3ASerializer/markdown) class.

## SEE ALSO
    [RDF::Redland::Storage](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3AStorage/markdown), [RDF::Redland::Node](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3ANode/markdown) and [RDF::Redland::Statement](https://www.chedong.com/phpMan.php/perldoc/RDF%3A%3ARedland%3A%3AStatement/markdown)

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

