---
name: "RDF::RDFa::Generator"
section: "3pm"
platform: "linux"
package: "librdf-rdfa-generator-perl"
version: "0.204-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/RDF::RDFa::Generator"
---

# RDF::RDFa::Generator(3pm)

Generate data for RDFa serialization

## 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 \<title\> 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 \<https://github.com/kjetilk/p5-rdf-rdfa-generator/issues\>.

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

Kjetil Kjernsmo \<kjetilk@cpan.org\>.

## 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 \<http://famfamfam.com/lab/icons/silk/\>.
