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 <tobyink@cpan.org>.

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.

