File Coverage

blib/lib/WQS/SPARQL/Query/Count.pm
Criterion Covered Total %
statement 29 29 100.0
branch 6 6 100.0
condition n/a
subroutine 7 7 100.0
pod 3 3 100.0
total 45 45 100.0


line stmt bran cond sub pod time code
1             package WQS::SPARQL::Query::Count;
2              
3 5     5   727542 use strict;
  5         10  
  5         197  
4 5     5   25 use warnings;
  5         17  
  5         382  
5              
6 5     5   2772 use Class::Utils qw(set_params);
  5         54228  
  5         115  
7 5     5   427 use Error::Pure qw(err);
  5         13  
  5         2700  
8              
9             our $VERSION = 0.03;
10              
11             sub new {
12 7     7 1 633507 my ($class, @params) = @_;
13              
14             # Create object.
15 7         25 my $self = bless {}, $class;
16              
17             # Process parameters.
18 7         42 set_params($self, @params);
19              
20 7         101 return $self;
21             }
22              
23             sub count_item {
24 3     3 1 26 my ($self, $property, $item) = @_;
25              
26 3 100       24 if ($property !~ m/^P\d+$/ms) {
27 1         7 err "Bad property '$property'.";
28             }
29 2 100       10 if ($item !~ m/^Q\d+$/ms) {
30 1         6 err "Bad item '$item'.";
31             }
32              
33 1         9 my $sparql = <<"END";
34             SELECT (COUNT(?item) as ?count) WHERE {
35             ?item wdt:$property wd:$item
36             }
37             END
38              
39 1         3 return $sparql;
40             }
41              
42             sub count_value {
43 3     3 1 27 my ($self, $property, $value) = @_;
44              
45 3 100       25 if ($property !~ m/^P\d+$/ms) {
46 1         8 err "Bad property '$property'.";
47             }
48              
49 2         9 $value =~ s/'/\\'/msg;
50 2         7 my $sparql = <<"END";
51             SELECT (COUNT(?item) as ?count) WHERE {
52             ?item wdt:$property '$value'
53             }
54             END
55              
56 2         9 return $sparql;
57             }
58              
59             1;
60              
61             __END__