NAME
    XML::GRDDL - transform XML and XHTML to RDF
SYNOPSIS
    High-level interface:
     my $grddl = XML::GRDDL->new;
     my $model = $grddl->data($xmldoc, $baseuri);
     # $model is an RDF::Trine::Model
    Low-level interface:
     my $grddl = XML::GRDDL->new;
     my @transformations = $grddl->discover($xmldoc, $baseuri);
     foreach my $t (@transformations)
     {
       # $t is an XML::GRDDL::Transformation
       my ($output, $mediatype) = $t->transform($xmldoc);
       # $output is a string of type $mediatype.
     }
DESCRIPTION
    GRDDL is a W3C Recommendation for extracting RDF data from arbitrary XML
    and XHTML via a transformation, typically written in XSLT. See
     for more details.
    This module implements GRDDL in Perl. It offers both a low level
    interface, allowing you to generate a list of transformations associated
    with the document being processed, and thus the ability to selectively
    run the transformation; and a high-level interface where a single RDF
    model is returned representing the union of the RDF graphs generated by
    applying all available transformations.
  Constructor
    "XML::GRDDL->new"
        The constructor accepts no parameters and returns an XML::GRDDL
        object.
  Methods
    "$grddl->discover($xml, $base, %options)"
        Processes the document to discover the transformations associated
        with it. $xml is the raw XML source of the document, or an
        XML::LibXML::Document object. ($xml cannot be "tag soup" HTML,
        though you should be able to use HTML::HTML5::Parser to parse tag
        soup into an XML::LibXML::Document.) $base is the base URI for
        resolving relative references.
        Returns a list of XML::GRDDL::Transformation objects.
        Options include:
        *   force_rel - boolean; interpret XHTML rel="transformation" even
            in the absence of the GRDDL profile.
        *   strings - boolean; return a list of plain strings instead of
            blessed objects.
    "$grddl->data($xml, $base, %options)"
        Processes the document, discovers the transformations associated
        with it, applies the transformations and merges the results into a
        single RDF model. $xml and $base are as per "discover".
        Returns an RDF::Trine::Model containing the data. Statement contexts
        (a.k.a. named graphs / quads) are used to distinguish between data
        from the result of each transformation.
        Options include:
        *   force_rel - boolean; interpret XHTML rel="transformation" even
            in the absence of the GRDDL profile.
        *   metadata - boolean; include provenance information in the
            default graph (a.k.a. nil context).
    "$grddl->ua( [$ua] )"
        Get/set the user agent used for HTTP requests. $ua, if supplied,
        must be an LWP::UserAgent.
FEATURES
    XML::GRDDL supports transformations written in XSLT 1.0, and in
    RDF-EASE.
    XML::GRDDL is a good HTTP citizen: Referer headers are included in
    requests, and appropriate Accept headers supplied. To be an even better
    citizen, I recommend changing the User-Agent header to advertise the
    name of the application:
     $grddl->ua->default_header(user_agent => 'MyApp/1.0 ');
    Provenance information for GRDDL transformations is returned using the
    GRDDL vocabulary at .
    Certain XHTML profiles and XML namespaces known not to contain any
    transformations, or to contain useless transformations are skipped. See
    XML::GRDDL::Namespace and XML::GRDDL::Profile for details. In particular
    profiles for RDFa and many Microformats are skipped, as
    RDF::RDFa::Parser and HTML::Microformats will typically yield far
    superior results.
BUGS
    Please report any bugs to .
    Known limitations:
    *   Recursive GRDDL doesn't work yet.
        That is, the profile documents and namespace documents linked to
        from your primary document cannot themselves rely on GRDDL.
SEE ALSO
    XML::GRDDL::Transformation, XML::GRDDL::Namespace, XML::GRDDL::Profile,
    XML::GRDDL::Transformation::RDF_EASE::Functional, XML::Saxon::XSLT2.
    HTML::HTML5::Parser, RDF::RDFa::Parser, HTML::Microformats.
    JSON::GRDDL.
    .
    .
    This module is derived from Swignition
    .
AUTHOR
    Toby Inkster .
COPYRIGHT
    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.