The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;

use Test::More;
use RDF::Trine qw(iri literal blank statement);
use RDF::Trine::NamespaceMap;
use RDF::Trine::Parser;

use RDF::Lazy;

my $base = 'http://example.org/';
my $model = RDF::Trine::Model->new;
my $parser = RDF::Trine::Parser->new('turtle');
$parser->parse_into_model( $base, join('',<DATA>), $model );

my $g = RDF::Lazy->new( $model,
    namespaces => { foaf => 'http://xmlns.com/foaf/0.1/' }
);

my $a = $g->resource('http://example.org/alice');
my $b = $g->resource('http://example.org/bob');

is( $a->foaf_knows->str, "$b", 'alice knows bob' );
is( $a->rel('foaf_knows')->str, "$b", 'alice knows bob' );
is( $a->rel('foaf:knows')->str, "$b", 'alice knows bob' );

is( $model->size, 6, 'model used as reference' );
$g = RDF::Lazy->new( $model, namespaces => $g->namespaces );
is( $model->size, 6, 'model used as reference' );

done_testing;

__DATA__
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
<http://example.org/alice> foaf:knows <http://example.org/bob> .
<http://example.org/bob>   foaf:knows <http://example.org/alice> .
<http://example.org/bob>   foaf:knows <http://example.org/dave> .
<http://example.org/alice> foaf:name "Alice" .
<http://example.org/bob>   foaf:name "Bob" .
<http://example.org/dave>  foaf:name "Dave" .