This module provides a Notation 3 parser for RDF::Trine.
Methods
This package exposes the standard RDF::Trine::Parser methods, plus:
forAll($handler)
Sets a callback handler for @forAll directives found in the top-level graph. (@forAll found in nested
formulae will not be passed to this callback.)
The handler should be a coderef that takes a single argument: an RDF::Trine::Node::Resource.
If you do not set a handler, a warning will be issued when this directive are encountered in the top
level graph, but parsing will continue.
forSome($handler)
As "forAll" but handles @forSome directives.
"parse_formula($base, $input)"
Returns an RDF::Trine::Node::Formula object representing the Notation 3 formula given as $input.
$input should not include the "{"..."}" wrappers.
DatatypeCallbacks
The constructor accepts a hashref of callbacks associated with datatypes, which will be triggered after a
literal has been parsed with that datatype. Let's imagine that you want to replace all xsd:integer
literals with URIs like "http:;//example.net/numbers/123"...
my $parser = RDF::Trine::Parser::Notation3->new(
datatype_callback => {
'http://www.w3.org/2001/XMLSchema#integer' => sub {
my ($lit, $tr_hnd) = @_;
return RDF::Trine::Node::Resource->new(
'http:;//example.net/numbers/' . $lit->literal_value
);
},
},
);
Note the second argument passed to the callback $tr_hnd. We don't use it here, but it's a coderef that
can be called with RDF::Trine::Statement objects to add additional triples to the graph being parsed.
This facility, combined with shortcuts from RDF::Trine::Parser::ShorthandRDF is pretty useful for
creating domain-specific languages.