---
name: "RDF::Trine::Parser::Notation3"
section: "3pm"
platform: "linux"
package: "librdf-trin3-perl"
version: "0.206-4"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/RDF::Trine::Parser::Notation3"
---

# RDF::Trine::Parser::Notation3(3pm)

Notation 3 Parser

## NAME

RDF::Trine::Parser::Notation3 - Notation 3 Parser

## SYNOPSIS

```
 use RDF::Trine::Parser;
 my $parser     = RDF::Trine::Parser->new( 'Notation3' );
 $parser->parse_into_model( $base_uri, $data, $model );
```

## DESCRIPTION

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.

### Datatype Callbacks

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.

## BUGS

Please report any bugs to \<http://rt.cpan.org/Dist/Display.html?Queue=RDF-TriN3\>.

## SEE ALSO

RDF::Trine::Parser::NTriples, RDF::Trine::Parser::Turtle, RDF::Trine::Parser::ShorthandRDF.

## AUTHOR

Toby Inkster  `"<tobyink@cpan.org>"`

Based on RDF::Trine::Parser::Turtle by Gregory Todd Williams.

## COPYRIGHT AND LICENCE

Copyright (c) 2006-2010 Gregory Todd Williams.

Copyright (c) 2010-2012 Toby Inkster.

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

## DISCLAIMER OF WARRANTIES

THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
