Attean

 view release on metacpan or  search on metacpan

lib/AtteanX/Parser/RDFXML.pm  view on Meta::CPAN

	
		$self->push_namespace_pad( \%new );
	}
}

sub push_base {
	my $self	= shift;
	my $base	= shift;
	if ($base) {
		my $uri		= (blessed($base) and $base->isa('URI')) ? $base : URI->new($base->value );
		$uri->fragment( undef );
		$base	= iri( "$uri" );
	}
	unshift( @{ $self->{base} }, $base );
}

sub pop_base {
	my $self	= shift;
	shift( @{ $self->{base} } );
}

t/parser-rdfxml.t  view on Meta::CPAN


subtest 'simple triple parse with namespaces' => sub {
	my $map		= URI::NamespaceMap->new();
	my $parser	= Attean->get_parser('RDFXML')->new( namespaces => $map );
	my $store		= Attean->get_store('Memory')->new();
	my $content	= <<"END";
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:eg="http://example.org/"
         xml:base="http://example.org/dir/file">

 <rdf:Description rdf:ID="frag" eg:value="v" />
</rdf:RDF>
END
	my @list	= $parser->parse_list_from_bytes($content);
	is(scalar(@list), 1);
	my ($t)		= @list;
	does_ok($t, 'Attean::API::Triple');
	is($t->as_string, '<http://example.org/dir/file#frag> <http://example.org/value> "v" .');

	is_deeply([sort $map->list_prefixes], [qw(eg rdf)]);
	my $rdf	= $map->namespace_uri('rdf');
	isa_ok($rdf, 'URI::Namespace');
	is($rdf->as_string, 'http://www.w3.org/1999/02/22-rdf-syntax-ns#');
};

subtest 'bnode prefix' => sub {
	my $parser	= Attean->get_parser('RDFXML')->new( bnode_prefix => 'foo' );
	my ($t)		= $parser->parse_list_from_bytes(<<"END");



( run in 0.993 second using v1.01-cache-2.11-cpan-364913b4093 )