NAME
    RDF::Trine::Shortcuts - totally unauthorised module for cheats and
    charlatans

VERSION
    0.02

SYNOPSIS
      use RDF::Trine::Shortcuts;
  
      my $model = rdf_parse('http://example.com/data.rdf');
      my $query = 'ASK WHERE {?person a <http://xmlns.com/foaf/0.1/Person>}';
      if (rdf_query($query, $model))
      {
        print "Document describes a person.\n";
      }
      else
      {
        print "Document doesn't describe a person.\n";
        print "What does it describe? Let's see...\n";
        print rdf_string($model);
      }

DESCRIPTION
    This module exports three functions which simplify frequently performed
    tasks using RDF::Trine and RDF::Query.

    In addition, because it calls "use RDF::Trine", "use RDF::Query", and
    "use RDF::Query::Client", your code doesn't need to.

    "rdf_parse($data)"
        $data can be some serialised RDF (in RDF/XML, Turtle, RDF/JSON, or
        any other format that RDF::Trine::Parser supports); or a URI (string
        or URI object); or an HTTP::Message object; or a hashref (as per
        RDF::Trine::Model's add_hashref method); or a file name or an open
        file handle; or an RDF::Trine::Iterator::Graph. Essentially it could
        be anything you could reasonably expect to grab RDF from. It can be
        undef.

        The function returns an RDF::Trine::Model.

        There are additional optional named arguments, of which the two most
        useful are probably 'base', which sets the base URI for any relative
        URI references; and 'type', which indicates the media type of the
        input (though the function can usually guess this quite reliably).

          $model = rdf_parse($input,
                             'base' => 'http://example.com/',
                             'type' => 'application/rdf+xml');

        Other named arguments include 'model' to provide an existing
        RDF::Trine::Model to add statements to; and 'context' for providing
        a context/graph URI (which may be a string, URI object or
        RDF::Trine::Node).

    "rdf_string($model, $format)"
        Serialises an RDF::Trine::Model to a string.

        $model is the model to serialise. If $model is not an
        RDF::Trine::Model object, then it's automatically passed through
        rdf_parse first.

        $format is the format to use. One of 'RDFXML' (the default),
        'RDFJSON', 'Canonical NTriples' or 'NTriples'. If $format is not one
        of the above, then the function will try to guess what you meant.

    "rdf_query($sparql, $endpoint)"
        $sparql is a SPARQL query to be run at $endpoint.

        $endpoint may be either an endpoint URI (string or URI object) or a
        model supported by RDF::Query (e.g. an RDF::Trine::Model.)

        If the SPARQL query returns a boolean (i.e. an ASK query), then this
        function returns a boolean. If the query returns a graph (i.e.
        CONSTRUCT or DESCRIBE), then this function returns an
        RDF::Trine::Model corresponding to the graph. Otherwise (i.e.
        SELECT) it returns an RDF::Trine::Iterator object.

        For queries which return a graph, an optional $model parameter can
        be passed containing an existing RDF::Trine::Model to add statements
        to:

          rdf_parse("CONSTRUCT {?s ?p ?o} WHERE {?s ?p ?o}",
                    'http://example.com/sparql',
                    model => $model);

BUGS
    Please report any bugs to <http://rt.cpan.org/>.

SEE ALSO
    RDF::Trine, RDF::Query, RDF::Query::Client.

    <http://www.perlrdf.org/>.

AUTHOR
    Toby Inkster <tobyink@cpan.org>.

COPYRIGHT
    Copyright 2010 Toby Inkster

    This library is free software; you can redistribute it and/or modify it
    under the same terms as Perl itself.

