NAME
   JSON::GRDDL - transform JSON to RDF

SYNOPSIS
    # Low-Level Interface
    #
    my $grddl = JSON::GRDDL->new;
    my @transformations = $grddl->discover($jsondoc, $baseuri);
    foreach my $trans (@transformations)
    {
      my $model = $grddl->transform_by_uri($jsondoc, $baseuri, $trans);
      # $model is an RDF::Trine::Model
    }

    # High-Level Interface
    #
    my $grddl = JSON::GRDDL->new;
    my $model = $grddl->data($jsondoc, $baseuri);
    # $model is an RDF::Trine::Model

DESCRIPTION
   This module implements jsonGRDDL, a port of GRDDL concepts from XML to
   JSON.

   jsonGRDDL is described at <http://buzzword.org.uk/2008/jsonGRDDL/spec>.

   This module attempts to provide a similar API to XML::GRDDL but differs
   in some respects.

 Constructor
   "JSON::GRDDL->new"
       The constructor accepts no parameters and returns a JSON::GRDDL
       object.

 Methods
   "$grddl->ua"
   "$grddl->ua($ua)"
       Get/set an LWP::UserAgent object for HTTP requests.

   "$grddl->data($json, $base, %options)"
       This is usually what you want to call. It's a high-level method that
       does everything for you and returns the RDF you wanted. $json is the
       raw JSON source of the document, or an equivalent Perl
       hashref/arrayref structure. $base is the base URI for resolving
       relative references.

       Returns an RDF::Trine::Model.

   "$grddl->discover($json, $base, %options)"
       You only need to call this method if you're doing something unusual.

       Processes the JSON document to discover the transformation
       associated with it. $json is the raw JSON source of the document, or
       an equivalent Perl hashref/arrayref structure. $base is the base URI
       for resolving relative references.

       Returns a list of URLs as strings.

   "$grddl->transform_by_uri($json, $base, $transformation, %options)"
       You only need to call this method if you're doing something unusual.

       Transforms a JSON document into RDF using a JsonT transformation,
       specified by URI. $json is the raw JSON source of the document, or
       an equivalent Perl hashref/arrayref structure. $base is the base URI
       for resolving relative references. $transformation is the URI for
       the JsonT transformation.

       Returns an RDF::Trine::Model.

   "$grddl->transform_by_jsont($json, $base, $code, $name, %options)"
       You only need to call this method if you're doing something unusual.

       Transforms a JSON document into RDF using a JsonT transformation,
       specified as a Javascript code, variable name pair. $json is the raw
       JSON source of the document, or an equivalent Perl hashref/arrayref
       structure. $base is the base URI for resolving relative references.
       $code and $name must be suitable for passing to the "new"
       constructor from the JSON::T package.

       Returns an RDF::Trine::Model.

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

SEE ALSO
   Specification: <http://buzzword.org.uk/2008/jsonGRDDL/spec>.

   Related modules: JSON, JSON::T, JSON::Path, JSON::Hyper, JSON::Schema,
   XML::GRDDL.

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

   This module is derived from Swignition
   <http://buzzword.org.uk/swignition/>.

AUTHOR
   Toby Inkster <[email protected]>.

COPYRIGHT AND LICENCE
   Copyright 2008-2011 Toby Inkster.

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

DISCLAIMER OF WARRANTIES
   THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
   WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
   MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.