File: sparql11-subselect.t

package info (click to toggle)
librdf-query-perl 2.919-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,580 kB
  • sloc: perl: 30,628; javascript: 131; sh: 13; makefile: 2
file content (44 lines) | stat: -rw-r--r-- 1,097 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#!/usr/bin/env perl
use strict;
use warnings;
no warnings 'redefine';
use URI::file;

use lib qw(. t);
BEGIN { require "models.pl"; }

my @files	= map { "data/$_" } qw(foaf.xrdf);
my @models	= test_models( @files );

use Test::More;
plan tests => (5 * scalar(@models));

foreach my $model (@models) {
	print "\n#################################\n";
	print "### Using model: $model\n\n";
	
	{
		print "# subselect\n";
		my $query	= new RDF::Query ( <<"END", { lang => 'sparql11' } );
			PREFIX foaf: <http://xmlns.com/foaf/0.1/>
			SELECT * WHERE {
				?p foaf:schoolHomepage ?school
				{
					SELECT ?p WHERE {
						?p a foaf:Person .
					} LIMIT 1
				}
			}
END
		isa_ok( $query, 'RDF::Query' );
		warn RDF::Query->error unless ($query);
		
		my $iter	= $query->execute( $model );
		my @results	= $iter->get_all;
		is( scalar(@results), 2, 'expected result count' );
		isa_ok( $results[0], 'HASH' );
		
		is_deeply( $results[0]{p}, $results[1]{p}, 'same value bound to ?p' );
		isnt( $results[0]{school}->uri_value, $results[1]{school}->uri_value, 'different values bound to ?school' );
	}
}