1use Test::More tests => 16; 2use Test::Exception; 3use FindBin qw($Bin); 4use File::Spec; 5use Data::Dumper; 6use utf8; 7binmode( \*STDOUT, ':utf8' ); 8binmode( \*STDERR, ':utf8' ); 9 10use RDF::Trine qw(iri blank literal); 11use RDF::Trine::Parser; 12 13################################################################################ 14# Log::Log4perl::init( \q[ 15# log4perl.category.rdf.trine.model = TRACE, Screen 16# 17# log4perl.appender.Screen = Log::Log4perl::Appender::Screen 18# log4perl.appender.Screen.stderr = 0 19# log4perl.appender.Screen.layout = Log::Log4perl::Layout::SimpleLayout 20# ] ); 21################################################################################ 22 23my $parser = RDF::Trine::Parser->new( 'nquads' ); 24isa_ok( $parser, 'RDF::Trine::Parser::NQuads' ); 25 26{ 27 my $model = RDF::Trine::Model->temporary_model; 28 my $nquads = <<"END"; 29 _:a <b> <a> . 30 _:a <b> <a> <g1> . 31 <a> <b> _:a <g2> . 32END 33 $parser->parse_into_model(undef, $nquads, $model); 34 35 is( $model->size, 3, 'expected model size after nquads parse' ); 36 is( $model->count_statements(undef, undef, undef, undef), 3, 'expected 3 count ffff' ); 37 is( $model->count_statements(blank('a'), undef, undef, undef), 2, 'expected 2 count bfff' ); 38 is( $model->count_statements(iri('a')), 1, 'expected 1 count bff' ); 39 is( $model->count_statements(iri('a'), undef, undef, undef), 1, 'expected 1 count bfff' ); 40 is( $model->count_statements(iri('b')), 0, 'expected 0 count bff' ); 41 is( $model->count_statements(iri('b'), undef, undef, undef), 0, 'expected 0 count bfff' ); 42 is( $model->count_statements(undef, iri('b')), 2, 'expected 2 count fbf' ); 43 is( $model->count_statements(undef, iri('b'), undef, undef), 3, 'expected 3 count fbff' ); 44 is( $model->count_statements(undef, undef, undef, iri('g1')), 1, 'expected 1 count fffb' ); 45} 46 47{ 48 # Canonicalization tests 49 my $parser = RDF::Trine::Parser->new( 'nquads', canonicalize => 1 ); 50 { 51 my $model = RDF::Trine::Model->temporary_model; 52 my $ntriples = qq[_:a <http://example.com/integer> "-0123"^^<http://www.w3.org/2001/XMLSchema#integer> <g> .\n]; 53 $parser->parse_into_model(undef, $ntriples, $model); 54 is( $model->count_statements(undef, undef, literal('-123', undef, 'http://www.w3.org/2001/XMLSchema#integer')), 1, 'expected 1 count for canonical integer value' ); 55 } 56 { 57 my $model = RDF::Trine::Model->temporary_model; 58 my $ntriples = qq[_:a <http://example.com/integer> "+0000123"^^<http://www.w3.org/2001/XMLSchema#integer> <g> .\n]; 59 $parser->parse_into_model(undef, $ntriples, $model); 60 is( $model->count_statements(undef, undef, literal('123', undef, 'http://www.w3.org/2001/XMLSchema#integer')), 1, 'expected 1 count for canonical integer value' ); 61 } 62 { 63 my $model = RDF::Trine::Model->temporary_model; 64 my $ntriples = qq[_:a <http://example.com/decimal> "+100000.00"^^<http://www.w3.org/2001/XMLSchema#decimal> <g> .\n]; 65 $parser->parse_into_model(undef, $ntriples, $model); 66 is( $model->count_statements(undef, undef, literal('100000.0', undef, 'http://www.w3.org/2001/XMLSchema#decimal')), 1, 'expected 1 count for canonical decimal value' ); 67 } 68 { 69 my $model = RDF::Trine::Model->temporary_model; 70 my $ntriples = qq[_:a <http://example.com/decimal> "0"^^<http://www.w3.org/2001/XMLSchema#boolean> <g> .\n]; 71 $parser->parse_into_model(undef, $ntriples, $model); 72 is( $model->count_statements(undef, undef, literal('false', undef, 'http://www.w3.org/2001/XMLSchema#boolean')), 1, 'expected 1 count for canonical boolean value' ); 73 } 74 { 75 my $model = RDF::Trine::Model->temporary_model; 76 my $ntriples = qq[_:a <http://example.com/decimal> "1"^^<http://www.w3.org/2001/XMLSchema#boolean> <g> .\n]; 77 $parser->parse_into_model(undef, $ntriples, $model); 78 is( $model->count_statements(undef, undef, literal('true', undef, 'http://www.w3.org/2001/XMLSchema#boolean')), 1, 'expected 1 count for canonical boolean value' ); 79 } 80} 81