The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

RDF::TrineShortcuts - totally unauthorised module for cheats and charlatans

VERSION

0.05

SYNOPSIS

  use RDF::TrineShortcuts;
  
  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', 'Turtle', '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.)

Query languages other than SPARQL may be used (see <RDF::Query> for a list of supported languages). e.g.

  rdf_query("SELECT ?s, ?p, ?o WHERE (?s, ?p, ?o)"
            $model,
            query_lang=>'rdql');

The query_base option can be used to resolve relative URIs in the query.

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_query("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/.

This module is distributed with two command-line RDF tools. trapper is an RDF fetcher/parser/serialiser; toquet is a SPARQL query tool.

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.