Attean
view release on metacpan or search on metacpan
lib/Test/Attean/W3CManifestTestSuite.pm view on Meta::CPAN
}
sub construct_data {
my $self = shift;
my $model = shift;
my $action = shift;
my ($queryd) = $model->objects( $action, iri("${RQ}query") )->elements;
my @data = $model->objects( $action, iri("${RQ}data") )->elements;
my @gdata = $model->objects( $action, iri("${RQ}graphData") )->elements;
my @sdata = $model->objects( $action, iri("${RQ}serviceData") )->elements;
my @cdata = $model->objects( $action, iri("${RQ}constructDataFile") )->elements;
my ($fnode) = $model->objects( $action, iri("${RQ}format") )->elements;
my $format = blessed($fnode) ? $fnode->value : 'text/turtle';
my $uri = URI->new( $queryd->value );
my $filename = $uri->file;
my (undef,$base,undef) = File::Spec->splitpath( $filename );
$base = "file://${base}";
warn "Loading SPARQL query from file $filename" if ($self->debug);
my $sparql = do { local($/) = undef; open(my $fh, '<', $filename) or do { warn("$!: $filename"); return }; binmode($fh, ':utf8'); <$fh> };
lib/Test/Attean/W3CManifestTestSuite.pm view on Meta::CPAN
}
}
foreach my $g (@gdata) {
my $start = $test_model->size;
$test_model->load_urls_into_graph($g, $g);
my $end = $test_model->size;
unless ($start < $end) {
warn "*** Loading file did not result in any new quads: " . $g;
}
}
foreach my $n (@cdata) {
my ($bytes, $format) = $self->construct_data($model, $n);
my $p = Attean->get_parser(media_type => $format)->new();
my $iter = $p->parse_iter_from_bytes($bytes);
$test_model->add_iter($iter->as_quads($self->default_graph));
}
print STDERR "ok\n" if ($self->debug);
if ($self->debug) {
my $q = $sparql;
lib/Test/Attean/W3CManifestTestSuite.pm view on Meta::CPAN
my $count = shift // 1;
my ($action) = $model->objects( $test, iri("${MF}action") )->elements;
my ($result) = $model->objects( $test, iri("${MF}result") )->elements;
my ($req) = $model->objects( $test, iri("${MF}requires") )->elements;
my ($approved) = $model->objects( $test, iri("${DAWGT}approval") )->elements;
my ($queryd) = $model->objects( $action, iri("${RQ}query") )->elements;
my @data = $model->objects( $action, iri("${RQ}data") )->elements;
my @gdata = $model->objects( $action, iri("${RQ}graphData") )->elements;
my @sdata = $model->objects( $action, iri("${RQ}serviceData") )->elements;
my @cdata = $model->objects( $action, iri("${RQ}constructDataFile") )->elements;
if ($self->strict_approval) {
unless ($approved) {
warn "- skipping test because it isn't approved\n" if ($self->debug);
return;
}
if ($approved->equal("${DAWGT}NotClassified")) {
warn "- skipping test because its approval is dawgt:NotClassified\n" if ($self->debug);
return;
}
lib/Test/Attean/W3CManifestTestSuite.pm view on Meta::CPAN
my $q = $sparql;
$q =~ s/\s+/ /g;
if ($self->debug) {
warn "### test : " . $test->value . "\n";
warn "# sparql : $q\n";
foreach my $data (@data) {
warn "# data : " . ($data->value =~ s#file://##r) . "\n" if (blessed($data));
}
warn "# graph data : " . ($_->value =~ s#file://##r) . "\n" for (@gdata);
warn "# constructed data : " . ($_->value =~ s#file://##r) . "\n" for (@cdata);
warn "# result : " . ($result->value =~ s#file://##r) . "\n";
warn "# requires : " . ($req->value =~ s#file://##r) . "\n" if (blessed($req));
}
STRESS: foreach (1 .. $count) {
print STDERR "constructing model... " if ($self->debug);
my $test_model = $self->test_model();
my $next_stress = 0;
try {
foreach my $data (@data) {
lib/Test/Attean/W3CManifestTestSuite.pm view on Meta::CPAN
}
}
foreach my $g (@gdata) {
my $start = $test_model->size;
$test_model->load_urls_into_graph($g, $g);
my $end = $test_model->size;
unless ($start < $end) {
warn "*** Loading file did not result in any new quads: " . $g;
}
}
foreach my $n (@cdata) {
my ($bytes, $format) = $self->construct_data($model, $n);
my $p = Attean->get_parser(media_type => $format)->new();
my $iter = $p->parse_iter_from_bytes($bytes);
$test_model->add_iter($iter->as_quads($self->default_graph));
}
} catch {
fail($test->value);
$self->record_result('evaluation', 0, $test->value);
print "# died: " . $test->value . ": $_\n";
$next_stress++;
( run in 0.280 second using v1.01-cache-2.11-cpan-454fe037f31 )