File: hexastore_query.pl

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 (47 lines) | stat: -rwxr-xr-x 1,229 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
45
46
47
#!/usr/bin/env 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();