File Coverage

blib/lib/Attean/Quad.pm
Criterion Covered Total %
statement 23 23 100.0
branch n/a
condition n/a
subroutine 8 8 100.0
pod n/a
total 31 31 100.0


line stmt bran cond sub pod time code
1 50     50   607 use v5.14;
  50         170  
2 50     50   265 use warnings;
  50         113  
  50         2077  
3              
4             =head1 NAME
5              
6             Attean::Quad - RDF Quads
7              
8             =head1 VERSION
9              
10             This document describes Attean::Quad version 0.032
11              
12             =head1 SYNOPSIS
13              
14             use v5.14;
15             use Attean;
16             my $quad = Attean::Quad->new( $s, $p, $o, $g );
17              
18             =head1 DESCRIPTION
19              
20             The Attean::Quad class represents an RDF quad.
21             It conforms to the L<Attean::API::Quad|Attean::API::Binding> role.
22              
23             =head1 ROLES
24              
25             This class consumes L<Attean::API::Quad>.
26              
27             =head1 METHODS
28              
29             =over 4
30              
31             =item C<< subject >>
32              
33             =item C<< predicate >>
34              
35             =item C<< object >>
36              
37             =item C<< graph >>
38              
39             =back
40              
41             =cut
42              
43             use Moo;
44 50     50   248 use Scalar::Util qw(blessed);
  50         106  
  50         311  
45 50     50   15551 use Attean::RDF;
  50         126  
  50         2334  
46 50     50   353 use Attean::API::Binding;
  50         137  
  50         415  
47 50     50   34417
  50         120  
  50         4741  
48             has 'subject' => (is => 'ro', required => 1);
49             has 'predicate' => (is => 'ro', required => 1);
50             has 'object' => (is => 'ro', required => 1);
51             has 'graph' => (is => 'ro', required => 1);
52            
53             with 'Attean::API::QuadPattern';
54             }
55              
56             use Moo;
57             use Attean::API::Binding;
58 50     50   362
  50         122  
  50         248  
59 50     50   14509 has 'subject' => (is => 'ro', does => 'Attean::API::BlankOrIRI', required => 1);
  50         116  
  50         8795  
60             has 'predicate' => (is => 'ro', does => 'Attean::API::IRI', required => 1);
61             has 'object' => (is => 'ro', does => 'Attean::API::Term', required => 1);
62             has 'graph' => (is => 'ro', does => 'Attean::API::BlankOrIRI', required => 1);
63            
64             with 'Attean::API::Quad';
65            
66             around BUILDARGS => sub {
67             my $orig = shift;
68             my $class = shift;
69             if (scalar(@_) == 4) {
70             my %args;
71             @args{ $class->variables } = @_;
72             return $class->$orig(%args);
73             }
74             return $class->$orig(@_);
75             };
76             }
77              
78             1;
79              
80              
81             =head1 BUGS
82              
83             Please report any bugs or feature requests to through the GitHub web interface
84             at L<https://github.com/kasei/attean/issues>.
85              
86             =head1 SEE ALSO
87              
88              
89              
90             =head1 AUTHOR
91              
92             Gregory Todd Williams C<< <gwilliams@cpan.org> >>
93              
94             =head1 COPYRIGHT
95              
96             Copyright (c) 2014--2022 Gregory Todd Williams.
97             This program is free software; you can redistribute it and/or modify it under
98             the same terms as Perl itself.
99              
100             =cut