File Coverage

blib/lib/RDF/Helper/API.pm
Criterion Covered Total %
statement 3 102 2.9
branch 0 44 0.0
condition 0 12 0.0
subroutine 1 15 6.6
pod 0 14 0.0
total 4 187 2.1


line stmt bran cond sub pod time code
1             package RDF::Helper::API;
2 11     11   7586 use Moose::Role;
  11         17  
  11         84  
3              
4             requires qw(
5             arrayref2rdf
6             assert_literal
7             assert_resource
8             deep_prophash
9             exists
10             get_perl_type
11             hashlist_from_statement
12             hashref2rdf
13             include_model
14             include_rdfxml
15             model
16             namespaces
17             new_bnode
18             prefixed2resolved
19             property_hash
20             query_interface
21             remove_statements
22             resolved2prefixed
23             resourcelist
24             serialize
25             tied_property_hash
26             update_node
27             );
28              
29             sub normalize_triple_pattern {
30 0     0 0   my $self = shift;
31 0           my ( $s, $p, $o ) = @_;
32 0           my ( $subj, $pred, $obj ) = ( undef, undef, undef );
33              
34 0 0         if ( defined($s) ) {
35             $subj =
36             ref($s)
37             ? $s
38             : $self->new_resource(
39 0 0         $self->{ExpandQNames} ? $self->qname2resolved($s) : $s );
    0          
40             }
41 0 0         if ( defined($p) ) {
42             $pred =
43             ref($p)
44             ? $p
45             : $self->new_resource(
46 0 0         $self->{ExpandQNames} ? $self->qname2resolved($p) : $p );
    0          
47             }
48 0 0         if ( defined($o) ) {
49 0 0         if ( ref($o) ) {
50 0           $obj = $o;
51             }
52             else {
53             my $testval =
54 0 0         $self->{ExpandQNames} ? $self->qname2resolved($o) : $o;
55 0           my $type = $self->get_perl_type($testval);
56 0 0         if ( $type eq 'resource' ) {
57 0           $obj = $self->new_resource("$testval");
58             }
59             else {
60 0           $obj = $self->new_literal("$testval");
61             }
62             }
63             }
64 0           return ( $subj, $pred, $obj );
65             }
66              
67             sub new_resource {
68 0     0 0   my $self = shift;
69 0           my $uri = shift;
70 0           return RDF::Helper::Node::Resource->new( uri => $uri );
71             }
72              
73             sub get_object {
74 0     0 0   my $self = shift;
75 0           my $resource = shift;
76 0 0         my %args = ref( $_[0] ) eq 'HASH' ? %{ $_[0] } : @_;
  0            
77 0           my $obj = new RDF::Helper::Object(
78             RDFHelper => $self,
79             ResourceURI => $resource,
80             %args
81             );
82 0           return $obj;
83             }
84              
85             sub new_query {
86 0     0 0   my $self = shift;
87 0           my ( $query_string, $query_lang ) = @_;
88              
89 0           my $class = $self->query_interface;
90 0           Class::MOP::load_class($class);
91 0           return $class->new( $query_string, $query_lang, $self->model );
92             }
93              
94             sub new_literal {
95 0     0 0   my $self = shift;
96 0           my ( $val, $lang, $type ) = @_;
97 0           return RDF::Helper::Node::Literal->new(
98             value => $val,
99             language => $lang,
100             datatype => $type
101             );
102             }
103              
104             sub new_bnode {
105 0     0 0   my $self = shift;
106 0           my $id = shift;
107 0   0       $id ||= time . 'r' . $self->{bnodecounter}++;
108 0           return RDF::Helper::Node::Blank->new( identifier => $id );
109             }
110              
111             sub get_statements {
112 0     0 0   my $self = shift;
113 0           my @ret_array = ();
114              
115 0           my $e = $self->get_enumerator(@_);
116 0           while ( my $s = $e->next ) {
117 0           push @ret_array, $s;
118             }
119              
120 0           return @ret_array;
121             }
122              
123             sub get_triples {
124 0     0 0   my $self = shift;
125 0           my @ret_array = ();
126              
127 0           foreach my $stmnt ( $self->get_statements(@_) ) {
128 0           my $subj = $stmnt->subject;
129 0           my $obj = $stmnt->object;
130              
131 0 0         my $subj_value =
132             $subj->is_blank ? $subj->blank_identifier : $subj->uri->as_string;
133 0           my $obj_value;
134 0 0         if ( $obj->is_literal ) {
    0          
135 0           $obj_value = $obj->literal_value;
136             }
137             elsif ( $obj->is_resource ) {
138 0           $obj_value = $obj->uri->as_string;
139             }
140             else {
141 0           $obj_value = $obj->as_string;
142             }
143              
144 0           push @ret_array,
145             [ $subj_value, $stmnt->predicate->uri->as_string, $obj_value ];
146             }
147              
148 0           return @ret_array;
149             }
150              
151             sub exists {
152 0     0 0   my $self = shift;
153 0 0         if ( $self->count(@_) > 0 ) {
154 0           return 1;
155             }
156 0           return 0;
157             }
158              
159             sub update_literal {
160 0     0 0   my $self = shift;
161 0           my ( $s, $p, $o, $new ) = @_;
162              
163 0           my $count = $self->remove_statements( $s, $p, $o );
164 0 0         warn "More than one resource removed.\n" if $count > 1;
165 0           return $self->assert_literal( $s, $p, $new );
166             }
167              
168             sub update_resource {
169 0     0 0   my $self = shift;
170 0           my ( $s, $p, $o, $new ) = @_;
171              
172 0           my $count = $self->remove_statements( $s, $p, $o );
173 0 0         warn "More than one resource removed.\n" if $count > 1;
174 0           return $self->assert_resource( $s, $p, $new );
175             }
176              
177             sub helper2native {
178 0     0 0   my $self = shift;
179 0           my $in = shift;
180              
181 0           my $out = undef;
182 0 0         return undef unless $in;
183 0 0         if ( $in->is_resource ) {
    0          
184 0           $out = $self->new_native_resource( $in->uri->as_string );
185             }
186             elsif ( $in->is_blank ) {
187 0           $out = $self->new_native_bnode( $in->blank_identifier );
188             }
189             else {
190 0           my $type_uri = undef;
191 0 0         if ( my $uri = $in->literal_datatype ) {
192 0           $type_uri = $uri->as_string;
193             }
194             $out =
195 0           $self->new_native_literal( $in->literal_value,
196             $in->literal_value_language, $type_uri );
197             }
198 0           return $out;
199             }
200              
201             sub count {
202 0     0 0   my $self = shift;
203 0           my ( $s, $p, $o ) = @_;
204              
205 0           my $retval = 0;
206              
207             # if no args are passed, just return the size of the model
208 0 0 0       unless ( defined($s) or defined($p) or defined($o) ) {
      0        
209 0           return $self->model->size;
210             }
211              
212 0           my $stream = $self->get_enumerator( $s, $p, $o );
213              
214 0           my $e = $self->get_enumerator(@_);
215 0           while ( my $s = $e->next ) {
216 0           $retval++;
217             }
218              
219 0           return $retval;
220              
221             }
222              
223             sub include_model {
224 0     0 0   my $self = shift;
225 0           my $model = shift;
226              
227 0           my $stream = $model->as_stream;
228              
229 0   0       while ( $stream && !$stream->end ) {
230 0           $self->model->add_statement( $stream->current );
231 0           $stream->next;
232             }
233              
234 0           return 1;
235             }
236              
237             1;
238             __END__