File: open-test-files.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 (50 lines) | stat: -rwxr-xr-x 1,482 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
48
49
50
#!/usr/bin/env perl

use strict;
use warnings;
use lib "$ENV{HOME}/data/prog/git/perlrdf/RDF-Trine/lib";
use lib "$ENV{HOME}/data/prog/git/perlrdf/RDF-Query/lib";

use RDF::Trine;
use RDF::Query;
use File::Spec;
use File::Slurp;
use Data::Dumper;

my $editor	= $ENV{EDITOR} || '/usr/bin/bbedit';

while (my $test = shift) {
	my $file	= $test;
	$file		=~ s/#.*$/.ttl/;
	$file		=~ s#^#xt/dawg/data-r2/#;
	my $parse	= RDF::Trine::Parser->new('turtle');
	my $store	= RDF::Trine::Store->temporary_store();
	my $model	= RDF::Trine::Model->new( $store );
	my $parser	= RDF::Trine::Parser->new('turtle');
	
	my $rdf	= read_file( $file );
	my $uri	= 'file://' . File::Spec->rel2abs( $file );
	$parser->parse_into_model ( $uri, $rdf, $model );
	
	my $sparql	= <<"END";
	PREFIX mf: <http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#>
	PREFIX qt: <http://www.w3.org/2001/sw/DataAccess/tests/test-query#>
	PREFIX earl: <http://www.w3.org/ns/earl#>
	SELECT ?data ?query ?result WHERE {
		?test mf:name ?name ;
			mf:action [ qt:data ?data ; qt:query ?query ] ;
			mf:result ?result .
		FILTER( REGEX(STR(?test), "${test}") )
	}
END
	my $query	= RDF::Query->new( $sparql ) or warn RDF::Query->error;
	my $iter	= $query->execute( $model );
	while (my $row = $iter->next) {
		my @nodes	= map { $_->uri_value } grep { $_->isa('RDF::Trine::Node::Resource') } values %$row;
		for (@nodes) {
			substr($_, 0, index($_, "data-r2/")+8) = "xt/dawg/data-r2/";
		}
		system( $editor, @nodes );
	}

}