Net-Flickr-RDF
view release on metacpan or search on metacpan
lib/Net/Flickr/RDF.pm view on Meta::CPAN
}
=head2 $obj->collect_cc_data()
Returns a hash ref of the Creative Commons licenses used by Flickr.
If any errors are unencounter an error is recorded via the B<log>
method and the method returns undef.
=cut
sub collect_cc_data {
my $self = shift;
if (exists($self->{'__cc'})) {
return $self->{'__cc'};
}
my %cc = ();
my $licenses = $self->api_call({"method" => "flickr.photos.licenses.getInfo"});
if (! $licenses) {
return undef;
}
foreach my $l ($licenses->findnodes("/rsp/licenses/license")) {
$cc{ $l->getAttribute("id") } = $l->getAttribute("url");
}
$self->{'__cc'} = \%cc;
return $self->{'__cc'};
}
=head2 $obj->collect_comment_data()
Returns a hash ref of comments made about a photo.
=cut
sub collect_comment_data {
my $self = shift;
my $data = shift;
my %comments = ();
my $list = $self->api_call({method => "flickr.photos.comments.getList",
args => {photo_id => $data->{photo_id}}});
if ($list) {
foreach my $c ($list->findnodes("/rsp/comments/comment")) {
my $permalink = $c->getAttribute("permalink");
my $user = $self->collect_user_data($c->getAttribute("author"));
if (! exists($data->{users}->{$user->{user_id}})) {
$data->{users}->{$user->{user_id}} = $user;
}
my %cdata = (user_id => $user->{user_id},
content => $c->string_value(),
date => $c->getAttribute("datecreate"),
id => $c->getAttribute("id"));
$comments{$permalink} = \%cdata;
}
}
return \%comments;
}
=head2 $obj->make_photo_triples(\%data)
Returns an array ref (or alist in a wantarray context) of array refs
of the meta data associated with a photo (I<%data>).
=cut
sub make_photo_triples {
my $self = shift;
my $data = shift;
my $photo = sprintf("%s%s/%s", $FLICKR_URL_PHOTOS, $data->{user_id}, $data->{photo_id});
my @triples = ();
#
my $now = time();
my $rdf_version = $Net::Flickr::RDF::VERSION;
my $doc_version = $rdf_version . ":" . $now;
my $rdf = "#";
push @triples, [$rdf, $self->uri_shortform("dc", "creator"), "http://search.cpan.org/dist/Net-Flickr-RDF-$rdf_version"];
push @triples, [$rdf, $self->uri_shortform("dc", "created"), time2str("%Y-%m-%dT%H:%M:%S%z", $now)];
push @triples, [$rdf, $self->uri_shortform("dcterms", "hasVersion"), $doc_version];
push @triples, [$rdf, $self->uri_shortform("a", "annotates"), $photo];
#
my $flickr_photo = $DEFAULT_NS{flickr}."photo";
my $flickr_photoset = $DEFAULT_NS{flickr}."photoset";
my $flickr_user = $DEFAULT_NS{flickr}."user";
my $flickr_tag = $DEFAULT_NS{flickr}."tag";
my $flickr_machinetag = $DEFAULT_NS{flickr}."machinetag";
my $flickr_note = $DEFAULT_NS{flickr}."note";
my $flickr_comment = $DEFAULT_NS{flickr}."comment";
my $flickr_persontag = $DEFAULT_NS{flickr}."persontag";
my $flickr_group = $DEFAULT_NS{flickr}."group";
my $flickr_grouppool = $DEFAULT_NS{flickr}."grouppool";
my $dc_still_image = $DEFAULT_NS{dcterms}."StillImage";
my $foaf_person = $DEFAULT_NS{foaf}."Person";
my $skos_concept = $DEFAULT_NS{skos}."Concept";
my $anno_annotation = $DEFAULT_NS{a}."Annotation";
if (scalar(keys %{$data->{users}})) {
push @triples, [$flickr_user, $self->uri_shortform("rdfs","subClassOf"), $foaf_person];
}
if (exists($data->{tags})) {
push @triples, [$flickr_tag, $self->uri_shortform("rdfs","subClassOf"), $skos_concept];
push @triples, [$flickr_machinetag, $self->uri_shortform("rdfs","subClassOf"), $skos_concept];
}
( run in 2.097 seconds using v1.01-cache-2.11-cpan-8450f2e95f3 )