RDF::R...erator(3pm)

πŸ“¦
version 0.204 Β· 5 versions
, in debian trixie, ubuntu resolute, ubuntu stonking

✨ NAME ✨

RDF::RDFa::Generator β€” bestie, this module generates data for RDFa serialization. It's giving "I make RDFa out of thin air" energy and honestly? Iconic. πŸ’…


🌸 DESCRIPTION 🌸

πŸ’– Constructor

$gen = RDF::RDFa::Generator->new(style => $style, %options)

Okay so this creates a brand-new generator object for you, no cap. 🫢 The $style you pass in has to be one of these three strings, and heads up β€” it's case-sensitive, so don't get cute with the capitalization:

  • 'HTML::Head' β€” the default, she's the main character πŸ‘‘
  • 'HTML::Hidden'
  • 'HTML::Pretty'

You can also construct an object like this, if that's more your vibe:

$gen = RDF::RDFa::Generator::HTML::Head->new(%options);

Now, the options, and yes we're listing every single one because we don't skip. πŸŽ€

  • base β€” the base URL where the output data is gonna be published. This lets the generated RDFa include relative URIs in some cases. Lowkey handy.
  • data_context β€” if it's non-null, this is an Attean Blank or IRI object, or an RDF::Trine::Node, and it indicates the context (that's the named graph, bestie) containing the data you want RDFa for.
  • namespacemap β€” a URI::NamespaceMap object stuffed with your preferred CURIE prefixes. This is the preferred method, so peek at the note below. πŸ’œ
  • namespaces β€” a {prefix=>uri} hashref of preferred CURIE prefixes.
  • ns β€” a {uri=>prefix} hashref of preferred CURIE prefixes. DEPRECATED β€” use namespaces instead, fr fr.
  • prefix_attr β€” use the @prefix attribute for CURIE prefixes (RDFa 1.1 only). Boolean, defaults to false.
  • safe_xml_literals β€” stops XML literals from injecting arbitrary XHTML into the output. Boolean, defaults to FALSE. Safety first, babes. πŸ›‘οΈ
  • title β€” assign a <title> element for generated XHTML documents.
  • version β€” set the 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 object (where the graph name is not used, okay?) providing the triples. Returns an XML::LibXML::Document object, suitable for serializing using its toString method. Slay.

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. Trust. πŸ’…

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 object (where the graph name is not used) 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 object (where the graph name is not used) 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. Cute, right? πŸ“


🌈 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. Buckle up, bestie. 😭

πŸ’€ 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. No more shortcuts, sorry. πŸ™ˆ

Since RDF 1.1 abandons untyped literals, this module also ceases to emit them. Periodt.

πŸŽ€ 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>. Do it. Be the main character. πŸ‘‘


πŸ‘€ 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 (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/>.


That's the whole page, bestie β€” this is RDF::R...erator(3pm) from the User Contributed Perl Documentation, and it's yours truly from perl v5.40.0, dated 2025-01-21. Go forth and generate RDFa, you absolute legend. πŸ’–βœ¨πŸŽ€

πŸ“¦ where this page comes from