RDF::TriN3 - notation 3 extensions for RDF::Trine


This module extends RDF::Trine in three ways:

  • Adds a Notation 3 parser.

  • Adds a Notation 3 serializer.

  • Provides a subclass of literals to represent Notation 3 formulae.

In addition, a parser is provided for Notation 3 extended with ShorthandRDF notation -


Implementing N3 logic and the cwm built-ins is considered outside the scope of this module, though I am interested in doing that as part of a separate project.

RDF::TriN3 currently relies entirely on RDF::Trine to provide implementations of the concept of graphs, and storage. Thus any graphs that can't be represented using RDF::Trine can't be represented in RDF::TriN3. RDF::Trine's graph model is a superset of RDF, but a subset of Notation 3's model. While this allows literal subjects, and literal and blank node predicates, these may not be supported by all storage engines; additionally top-level variables (?foo), and top-level @forSome and @forAll (i.e. not nested inside a formula) might cause problems.

RDF::Trine::Store::DBI has some issues with literal subjects, and literal and blank node predicates, allowing them to be stored, but not retrieved. From version 0.128, RDF::Trine::Store::DBI offers a clear_restrictions method that should resolve these issues. RDF::Trine::Store::Memory is fine. Other stores are not tested.

Please report any bugs to


RDF::Trine::Node::Formula, RDF::Trine::Parser::Notation3, RDF::Trine::Serializer::Notation3.




Toby Inkster <>.


Copyright 2010 Toby Inkster

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.