NAME
RDF::RDFa::Generator - Generate data for RDFa serialization
DESCRIPTION
Constructor
`$gen = RDF::RDFa::Generator->new(style => $style, %options)`
Creates a new generator object. $style is one of the following
case-sensitive strings: 'HTML::Head' (the default), 'HTML::Hidden' or
'HTML::Pretty'. You can also construct an object like this:
$gen = RDF::RDFa::Generator::HTML::Head->new(%options);
Options include:
* base - the base URL where the output data will be published. This
allows in some cases for the generated RDFa to include relative
URIs.
* data_context - if non-null, an Attean Blank or IRI object or an
RDF::Trine::Node which indicates the context (named graph)
containing the data to generate RDFa for.
* namespacemap - a URI::NamespaceMap object containing preferred
CURIE prefixes. This is the preferred method, see note below.
* namespaces - a {prefix=>uri} hashref of preferred CURIE prefixes.
* ns - a {uri=>prefix} hashref of preferred CURIE prefixes.
DEPRECATED - use namespaces instead.
* prefix_attr - use the @prefix attribute for CURIE prefixes (RDFa
1.1 only). Boolean, defaults to false.
* safe_xml_literals - prevents XML literals from injecting arbitrary
XHTML into the output. Boolean, defaults to FALSE.
* title - assign a
element for generated XHTML documents.
* version - set generated RDFa version. Valid values are '1.0' (the
default) or '1.1'.
Public Methods
`$gen->create_document($model, %opts)`
Creates a new RDFa file containing triples. $model is an
Attean::QuadModel (where the graph name is not used) object providing
the triples. Returns an XML::LibXML::Document object suitable for
serializing using its `toString` method.
If you're planning on serving the RDFa with the text/html media type,
then it is recommended that you use HTML::HTML5::Writer to serialize
the document rather than `toString`.
Can also be called as a class method:
$document = RDF::RDFa::Generator->create_document($model)
# Same as:
# $document = RDF::RDFa::Generator->new->create_document($model)
Options can also be passed as a HASH. This is typically used for
style-specific options.
`$gen->inject_document($document, $model)`
Injects an existing document with triples. $document is an
XML::LibXML::Document to inject, or a well-formed XML string. $model
is an Attean::QuadModel (where the graph name is not used) object
providing the triples. Returns an XML::LibXML::Document object
suitable for serializing using its `toString` method.
See `create_document` for information about serving the RDFa with the
text/html media type.
Can also be called as a class method. See `create_document` for
details.
`$gen->nodes($model)`
Provides triple-laden XML::LibXML::Elements to be added to a document.
$model is an Attean::QuadModel (where the graph name is not used)
object providing the triples. If called in list context, returns a
list of XML::LibXML::Element objects which can be added to a document;
otherwise returns an XML::LibXML::NodeList containing a list of such
elements.
Can also be called as a class method. See `create_document` for
details.
The HTML::Pretty generator can be passed a couple of additional
options:
$gen->nodes($model, notes_heading=>'Additional Info', notes=>\@notes);
The notes are a list of RDF::RDFa::Generator::HTML::Pretty::Note
objects which are added as notes to the end of each subject's data.
UPGRADING TO 0.200
The recommended upgrade path is to migrate your application to use Attean
rather than RDF::Trine as your RDF library. If that is not an option, you
may continue to use RDF::Trine, by using a compatibility layer. If you are
using this module directly, to upgrade from earlier releases, you would
simply add
use RDF::TrineX::Compatibility::Attean;
alongside the import of this module. It is in a separate distribution that
needs to be installed. If you use the RDF::Trine::Serializer methods, you
should instead use RDF::Trine::Serializer::RDFa.
NOTE
Version 0.200 introduced a large number of changes to be compatible with
both Attean and RDF::Trine. Some of these were backwards-incompatible,
some were to support new features, such as the use of URI::NamespaceMap.
Backwards-incompatible changes
The methods `serialize_model_to_file`, `serialize_model_to_string`,
`serialize_iterator_to_file` and `serialize_iterator_to_string` that were
provided for compatibility with the RDF::Trine::Serializer interface have
been moved to a module RDF::Trine::Serializer::RDFa that has to be
installed separately to use this with RDF::Trine.
`data_context` previously accepted a plain-text string URI. Now, it
requires an appropriate object, as documented.
Since RDF 1.1 abandons untyped literals, this module also ceases to emit
them.
Namespace mappings
The way namespace mappings are handled have been rewritten. Now, the
preferred method to add them is to pass an URI::NamespaceMap object to
`namespacemap`. This will override any other options.
The namespace mappings for the following prefixes will always be added:
`rdfa`, `rdf`, `rdfs` and `xsd`.
If URI::NamespaceMap is not used, but `namespaces` is given as a hashref
of prefix-URI pairs, the pairs will be added. If neither are given, all
mappings from RDF::NS::Curated, which includes all if RDFa Initial Context
will be added. Finally, any pairs from the deprecated `ns` option will be
added, but a warning will be emitted.
BUGS
Please report any bugs to
.
SEE ALSO
You may want to use the framework-specific frontends:
RDF::Trine::Serializer::RDFa or AtteanX::Serializer::RDFa.
Other relevant modules:
HTML::HTML5::Writer, XML::LibXML, RDF::RDFa::Parser, RDF::Trine,
URI::NamespaceMap, Attean.
AUTHOR
Toby Inkster .
Kjetil Kjernsmo .
COPYRIGHT AND LICENCE
Copyright (C) 2010 by Toby Inkster, 2017, 2018 Kjetil Kjernsmo
This library is free software; you can redistribute it and/or modify it
under the same terms as Perl itself, either Perl version 5.8 or, at your
option, any later version of Perl 5 you may have available.
Icons
RDF::RDFa::Generator::HTML::Pretty uses the FamFamFam Silk icons; see
.