#!/usr/bin/perl
use strict;
use warnings;
no warnings 'redefine';
use File::Spec;
use URI::file;
use lib qw(. t lib .. ../t ../lib);
unless (@ARGV) {
print <<"END";
USAGE: perl $0 data.hxs query.rq
END
exit;
}
use RDF::Query;
use RDF::Trine::Store::Hexastore;
use List::Util qw(first);
use Time::HiRes qw(tv_interval gettimeofday);
use Benchmark;
################################################################################
# Log::Log4perl::init( \q[
# log4perl.category.rdf.query.algebra = DEBUG, Screen
# log4perl.appender.Screen = Log::Log4perl::Appender::Screen
# log4perl.appender.Screen.stderr = 0
# log4perl.appender.Screen.layout = Log::Log4perl::Layout::SimpleLayout
# ] );
################################################################################
my $file = shift;
my $sparql = do { local($/) = undef; <> };
my $store = RDF::Trine::Store::Hexastore->load( $file );
my $model = RDF::Trine::Model->new( $store );
#DB::enable_profile();
my $query = new RDF::Query ( $sparql, undef, undef, 'sparql', optimize => 1 );
my ($p,$c) = $query->prepare( $model );
my $stream = $query->execute_plan( $p, $c );
while (my $r = $stream->next) {
print "$r\n";
}
#DB::disable_profile();