File Coverage

blib/lib/RDF/Helper/Statement.pm
Criterion Covered Total %
statement 21 37 56.7
branch 0 2 0.0
condition n/a
subroutine 7 19 36.8
pod 1 12 8.3
total 29 70 41.4


line stmt bran cond sub pod time code
1             package RDF::Helper::Statement;
2 11     11   55 use Moose;
  11         14  
  11         53  
3 11     11   45286 use Moose::Util::TypeConstraints;
  11         26  
  11         98  
4              
5             class_type 'RDF::Helper::Node::Resource';
6             class_type 'RDF::Helper::Node::Literal';
7             class_type 'RDF::Helper::Node::Blank';
8              
9             my $ValidNode = subtype as
10             'RDF::Helper::Node::Resource|RDF::Helper::Node::Literal|RDF::Helper::Node::Blank';
11              
12             has [qw(subject predicate object)] => (
13             isa => $ValidNode,
14             is => 'ro',
15             required => 1
16             );
17              
18             sub BUILDARGS {
19 0     0 1   my $class = shift;
20 0           my ( $s, $p, $o ) = @_;
21 0           return { subject => $s, predicate => $p, object => $o };
22             }
23              
24             package RDF::Helper::Node::API;
25 11     11   19624 use Moose::Role;
  11         31657  
  11         30  
26              
27             requires 'as_string';
28              
29 0     0 0   sub is_resource { 0 }
30 0     0 0   sub is_literal { 0 }
31 0     0 0   sub is_blank { 0 }
32              
33             package RDF::Helper::Node::Resource;
34 11     11   39505 use Moose;
  11         15  
  11         44  
35 11     11   50553 use URI;
  11         38155  
  11         1007  
36             with qw(RDF::Helper::Node::API);
37              
38             has uri => (
39             isa => 'Str',
40             reader => 'uri_value',
41             required => 1,
42             );
43              
44 0     0 0   sub uri { URI->new( shift->uri_value ) }
45 0     0 0   sub is_resource { 1 }
46 0     0 0   sub as_string { shift->uri_value }
47              
48             package RDF::Helper::Node::Literal;
49 11     11   60 use Moose;
  11         19  
  11         62  
50             with qw(RDF::Helper::Node::API);
51              
52             has value => (
53             isa => 'Str',
54             reader => 'literal_value',
55             required => 1,
56             );
57              
58             has datatype => (
59             is => 'ro',
60             predicate => 'has_datatype'
61             );
62              
63             has language => (
64             reader => 'literal_value_language',
65             );
66              
67             sub literal_datatype {
68 0     0 0   my $self = shift;
69 0 0         return unless defined $self->has_datatype;
70 0           return URI->new( $self->datatype );
71             }
72              
73 0     0 0   sub is_literal { 1 }
74 0     0 0   sub as_string { shift->literal_value }
75              
76             package RDF::Helper::Node::Blank;
77 11     11   49354 use Moose;
  11         18  
  11         142  
78             with qw(RDF::Helper::Node::API);
79              
80             has identifier => (
81             isa => 'Str',
82             reader => 'blank_identifier',
83             required => 1
84             );
85              
86 0     0 0   sub is_blank { 1 }
87 0     0 0   sub as_string { shift->blank_identifier }
88              
89             1
90             __END__