Attean
view release on metacpan or search on metacpan
lib/AtteanX/Parser/Turtle.pm view on Meta::CPAN
}
=head1 DESCRIPTION
This module implements a parser for the Turtle RDF format.
=head1 ROLES
This class consumes L<Attean::API::Parser>, L<Attean::API::PushParser>,
<Attean::API::AbbreviatingParser>, and <Attean::API::TripleParser>.
=head1 ATTRIBUTES
=over 4
=item C<< canonical_media_type >>
=item C<< media_types >>
=item C<< file_extensions >>
=item C<< canonicalize >>
A boolean indicating whether term values should be canonicalized during parsing.
=item C<< blank_nodes >>
=item C<< has_blank_nodes_map >>
=back
=head1 METHODS
=over 4
=cut
package AtteanX::Parser::Turtle 0.038 {
use Moo;
use Types::Standard qw(Bool HashRef ArrayRef HashRef Str Maybe InstanceOf ConsumerOf);
use Types::Namespace qw( NamespaceMap );
use utf8;
use Carp qw(carp);
use Encode qw(encode);
use Scalar::Util qw(blessed);
use AtteanX::Parser::Turtle::Constants;
use AtteanX::Parser::Turtle::Lexer;
use AtteanX::Parser::Turtle::Token;
use Attean::API::Parser;
use namespace::clean;
sub canonical_media_type { return "text/turtle" }
sub media_types {
return [qw(application/x-turtle application/turtle text/turtle)];
}
sub file_extensions { return [qw(ttl)] }
has 'canonicalize' => (is => 'rw', isa => Bool, default => 0);
has '_map' => (is => 'ro', isa => HashRef[Str], default => sub { +{} });
=item C<< has_namespaces >>
Returns true if the parser has a namespace map, false otherwise.
=cut
has 'namespaces' => (is => 'rw', isa => Maybe[NamespaceMap], predicate => 'has_namespaces');
has 'blank_nodes' => (is => 'ro', isa => HashRef[ConsumerOf['Attean::API::Blank']], predicate => 'has_blank_nodes_map', default => sub { +{} });
has '_stack' => (
is => 'ro',
isa => ArrayRef,
default => sub { [] },
init_arg => undef,
);
with 'Attean::API::TripleParser';
with 'Attean::API::AbbreviatingParser';
with 'Attean::API::PushParser';
with 'Attean::API::CDTBlankNodeMappingParser';
my $RDF = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#';
my $XSD = 'http://www.w3.org/2001/XMLSchema#';
=item C<< parse_cb_from_io( $fh ) >>
Calls the C<< $parser->handler >> function once for each
L<Attean::API::Binding> object that result from parsing
the data read from the L<IO::Handle> object C<< $fh >>.
=cut
sub parse_cb_from_io {
my $self = shift;
my $fh = shift;
unless (ref($fh)) {
my $filename = $fh;
undef $fh;
open( $fh, '<', $filename ) or die $!;
}
my $l = AtteanX::Parser::Turtle::Lexer->new($fh);
$self->_parse($l);
}
=item C<< parse_cb_from_bytes( $data ) >>
Calls the C<< $parser->handler >> function once for each
L<Attean::API::Binding> object that result from parsing
the data read from the UTF-8 encoded byte string C<< $data >>.
=cut
sub parse_cb_from_bytes {
my $self = shift;
my $data = shift;
open(my $fh, '<:encoding(UTF-8)', \$data);
my $l = AtteanX::Parser::Turtle::Lexer->new($fh);
$self->_parse($l);
}
=item C<< parse_term_from_bytes ( $bytes ) >>
=item C<< parse_node ( $bytes ) >>
Returns the Attean::API::Term object corresponding to the node whose N-Triples
serialization is found at the beginning of C<< $bytes >>.
( run in 0.674 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )