README
1NAME
2 Net::Flickr::RDF - a.k.a RDF::Describes::Flickr
3
4SYNOPSIS
5 use Net::Flickr::RDF;
6 use Config::Simple;
7 use IO::AtomicFile;
8
9 my $cfg = Config::Simple->new("/path/to/my.cfg");
10 my $rdf = Net::Flickr::RDF->new($cfg);
11
12 my $fh = IO::AtomicFile->open("/foo/bar.rdf","w");
13
14 $rdf->describe_photo({photo_id => 123,
15 secret => 567,
16 fh => \*$fh});
17
18 $fh->close();
19
20DESCRIPTION
21 Describe Flickr photos as RDF.
22
23 This package inherits from *Net::Flickr::API*.
24
25OPTIONS
26 Options are passed to Net::Flickr::Backup using a Config::Simple object
27 or a valid Config::Simple config file. Options are grouped by "block".
28
29 flickr
30
31 * api_key
32 String. *required*
33
34 A valid Flickr API key.
35
36 * api_secret
37 String. *required*
38
39 A valid Flickr Auth API secret key.
40
41 * auth_token
42 String. *required*
43
44 A valid Flickr Auth API token.
45
46 rdf
47
48 * query_geonames
49 Boolean.
50
51 If true and a photo has geodata (latitude, longitude) associated
52 with it, then the geonames.org database will be queried for a
53 corresponding match. Data will be added as properties of the photo's
54 geo:Point description. For example :
55
56 <geo:Point rdf:about="http://www.flickr.com/photos/35034348999@N01/272880469#location">
57 <geo:long>-122.025151</geo:long>
58 <flickr:accuracy>16</ymaps:flickr>
59 <acl:access>visbility</acl:access>
60 <geo:lat>37.417839</geo:lat>
61 <acl:accessor>public</acl:accessor>
62 <geoname:Feature rdf:resource="http://ws.geonames.org/rdf?geonameId=5409655"/>
63 </geo:Point>
64
65 <geoname:Feature rdf:about="http://ws.geonames.org/rdf?geonameId=5409655">
66 <geoname:featureCode>PPLX</geoname:featureCode>
67 <geoname:countryCode>US</geoname:countryCode>
68 <geoname:regionCode>CA</geoname:regionCode>
69 <geoname:region>California</geoname:region>
70 <geoname:city>Santa Clara</geoname:city>
71 <geoname:gtopo30>2</geoname:gtopo30>
72 </geoname:Feature>
73
74 Default is false.
75
76PACKAGE METHODS
77 __PACKAGE__->new($cfg)
78
79 Where $cfg is either a valid *Config::Simple* object or the path to a
80 file that can be parsed by *Config::Simple*.
81
82 Returns a *Net::Flickr::RDF* object.
83
84PACKAGE METHODS YOU MAY CARE ABOUT
85 __PACKAGE__->build_photo_uri(\%data)
86
87 Returns a URL as a string.
88
89 __PACKAGE__->build_geo_uri(\%data)
90
91 __PACKAGE__->build_user_tag_uri(\@data)
92
93 Returns a URL as a string.
94
95 __PACKAGE__->build_global_tag_uri(\@data)
96
97 Returns a URL as a string.
98
99 __PACKAGE__->build_machinetag_uri(\@data)
100
101 Returns a URL as a string.
102
103 __PACKAGE__->build_user_uri($user_id)
104
105 Returns a URL as a string.
106
107 __PACKAGE__->build_group_uri($group_id)
108
109 Returns a URL as a string.
110
111 __PACKAGE__->build_grouppool_uri($group_id)
112
113 Returns a URL as a string.
114
115 __PACKAGE__->build_photoset_uri(\%set_data)
116
117 Returns a URL as a string.
118
119 __PACKAGE__->prune_triples(\@triples)
120
121 Removes duplicate triples from *@triples*. Returns an array reference.
122
123OBJECT METHODS YOU SHOULD CARE ABOUT
124 $obj->describe_photo(\%args)
125
126 Valid arguments are :
127
128 * photo_id
129 Int. *required*
130
131 * secret
132 String.
133
134 * fh
135 File-handle.
136
137 Default is STDOUT.
138
139 Returns true or false.
140
141OBJECT METHODS YOU MAY CARE ABOUT
142 $obj->collect_photo_data($photo_id,$secret)
143
144 Returns a hash ref of the meta data associated with a photo.
145
146 If any errors are unencounter an error is recorded via the log method
147 and the method returns undef.
148
149 $obj->collect_group_data($group_id)
150
151 Returns a hash ref of the meta data associated with a group.
152
153 If any errors are unencounter an error is recorded via the log method
154 and the method returns undef.
155
156 $obj->collect_user_data($user_id)
157
158 Returns a hash ref of the meta data associated with a user.
159
160 If any errors are unencounter an error is recorded via the log method
161 and the method returns undef.
162
163 $obj->collect_photoset_data($photoset_id)
164
165 Returns a hash ref of the meta data associated with a photoset.
166
167 If any errors are unencounter an error is recorded via the log method
168 and the method returns undef.
169
170 $obj->collect_cc_data()
171
172 Returns a hash ref of the Creative Commons licenses used by Flickr.
173
174 If any errors are unencounter an error is recorded via the log method
175 and the method returns undef.
176
177 $obj->collect_comment_data()
178
179 Returns a hash ref of comments made about a photo.
180
181 $obj->make_photo_triples(\%data)
182
183 Returns an array ref (or alist in a wantarray context) of array refs of
184 the meta data associated with a photo (*%data*).
185
186 $obj->make_user_triples(\%user_data)
187
188 Returns an array ref (or list in a wantarray context) of array refs of
189 the meta data associated with a user (*%user_data*).
190
191 $obj->make_tag_triples(\@tag_data)
192
193 Returns an array ref (or list in a wantarray context) of array refs of
194 the meta data associated with a tag (*@tag_data*).
195
196 $pkg->make_photoset_triples(\%set_data)
197
198 Returns an array ref (or list in a wantarray context) of array refs of
199 the meta data associated with a photoset (*%set_data*).
200
201 $obj->make_geo_triples(\%geo_data)
202
203 $obj->make_flickr_places_triples(\%geo_data)
204
205 $obj->make_geonames_triples(\%geo_data)
206
207 $obj->make_group_triples(\%group_data)
208
209 Returns an array ref (or list in a wantarray context) of array refs of
210 the meta data associated with a group (*%group_data*).
211
212 $obj->make_grouppool_triples(\%group_data)
213
214 Returns an array ref (or list in a wantarray context) of array refs of
215 the meta data associated with a group pool (*%group_data*).
216
217 $obj->make_cc_triples($url)
218
219 Returns an array ref (or list in a wantarray context) of array refs of
220 the meta data associated with a Creative Commons license (*$url*).
221
222 $obj->make_comment_triples(\%data)
223
224 Returns an array ref (or alist in a wantarray context) of array refs of
225 the meta data associated with a photo comment (*%data*).
226
227 $obj->geodata_from_tags(\%data)
228
229 Try to parse out geolocative data from a collection of tag data.
230
231 Returns a hash ref (containing 'lat' and 'long' keys) on success or
232 undef if there were no matches.
233
234 $obj->namespaces()
235
236 Returns a hash ref of the prefixes and namespaces used by
237 *Net::Flickr::RDF*
238
239 The default key/value pairs are :
240
241 a http://www.w3.org/2000/10/annotation-ns
242
243 acl http://www.w3.org/2001/02/acls#
244
245 atom
246 http://www.w3.org/2005/Atom/
247
248 cc http://web.resource.org/cc/
249
250 dc http://purl.org/dc/elements/1.1/
251
252 dcterms
253 http://purl.org/dc/terms/
254
255 exif
256 http://nwalsh.com/rdf/exif#
257
258 exifi
259 http://nwalsh.com/rdf/exif-intrinsic#
260
261 flickr
262 x-urn:flickr:
263
264 foaf
265 http://xmlns.com/foaf/0.1/#
266
267 geo http://www.w3.org/2003/01/geo/wgs84_pos#
268
269 geoname
270 http://www.geonames.org/onto#
271
272 i http://www.w3.org/2004/02/image-regions#
273
274 rdf http://www.w3.org/1999/02/22-rdf-syntax-ns#
275
276 rdfs
277 http://www.w3.org/2000/01/rdf-schema#
278
279 skos
280 http://www.w3.org/2004/02/skos/core#
281
282 ymaps
283 urn:yahoo:maps
284
285 $obj->add_namespace($prefix, $namespace)
286
287 Add a prefix and namespace URI to the list of known namespaces.
288
289 This method returns a string containing the prefix you should use for
290 the namespace URI passed. If the prefix passed to the method is already
291 reserved for another namespace the method will return the following
292 string:
293
294 "nfr_" + I<the prefix passed to the method>
295
296 $obj->namespace_prefix($uri)
297
298 Return the namespace prefix for *$uri*
299
300 $obj->uri_shortform($prefix,$name)
301
302 Returns a string in the form of *prefix*:*property*. The property is the
303 value of $name. The prefix passed may or may be the same as the prefix
304 returned depending on whether or not the user has defined or redefined
305 their own list of namespaces.
306
307 Unless this package is subclassed the prefix passed to the method is
308 assumed to be one of prefixes in the default list of namespaces.
309
310 $obj->api_call(\%args)
311
312 Valid args are :
313
314 * method
315 A string containing the name of the Flickr API method you are
316 calling.
317
318 * args
319 A hash ref containing the key value pairs you are passing to
320 *method*
321
322 If the method encounters any errors calling the API, receives an API
323 error or can not parse the response it will log an error event, via the
324 log method, and return undef.
325
326 Otherwise it will return a *XML::LibXML::Document* object (if
327 XML::LibXML is installed) or a *XML::XPath* object.
328
329 $obj->log()
330
331 Returns a *Log::Dispatch* object.
332
333 $obj->serialise_triples(\@triples,\*$fh)
334
335 Print *@triples* as RDF/XML to a filehandle (*$fh*). If no filehandle is
336 defined, prints to STDOUT.
337
338 $obj->serialize_triples(\@triples,\*$fh)
339
340 An alias for *serialise_triples*
341
342VERSION
343 2.2
344
345DATE
346 $Date: 2010/12/19 19:06:12 $
347
348AUTHOR
349 Aaron Straup Cope <ascope@cpan.org>
350
351CONTRIBUTORS
352 Thomas Sibley <tsibley@cpan.org>
353
354EXAMPLES
355 CONFIG FILES
356
357 This is an example of a Config::Simple file used to collect RDF data
358 from Flickr
359
360 [flickr]
361 api_key=asd6234kjhdmbzcxi6e323
362 api_secret=s00p3rs3k3t
363 auth_token=123-omgwtf4u
364
365 RDF
366
367 This is an example of an RDF dump for a photograph backed up from Flickr
368 :
369
370 http://flickr.com/photos/straup/2269291707/
371
372 <?xml version='1.0'?>
373 <rdf:RDF
374 xmlns:geoname="http://www.geonames.org/onto#"
375 xmlns:a="http://www.w3.org/2000/10/annotation-ns"
376 xmlns:filtr="http://www.machinetags.org/wiki/filtr#process"
377 xmlns:ph="http://www.machinetags.org/wiki/ph#camera"
378 xmlns:exif="http://nwalsh.com/rdf/exif#"
379 xmlns:mt="x-urn:flickr:machinetag:"
380 xmlns:exifi="http://nwalsh.com/rdf/exif-intrinsic#"
381 xmlns:geonames="http://www.machinetags.org/wiki/geonames#locality"
382 xmlns:dcterms="http://purl.org/dc/terms/"
383 xmlns:places="http://www.flickr.com/places/"
384 xmlns:dc="http://purl.org/dc/elements/1.1/"
385 xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
386 xmlns:acl="http://www.w3.org/2001/02/acls#"
387 xmlns:skos="http://www.w3.org/2004/02/skos/core#"
388 xmlns:foaf="http://xmlns.com/foaf/0.1/"
389 xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
390 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
391 xmlns:computer="x-urn:freebsd:"
392 xmlns:flickr="x-urn:flickr:"
393 >
394
395 <rdf:Description rdf:about="file:///home/asc/photos/2008/02/16/20080216-2269291707-ambient_pork_m.jpg">
396 <dcterms:created>2008-02-17T10:36:02Z</dcterms:created>
397 <dc:creator rdf:resource="x-urn:no#asc"/>
398 <rdfs:seeAlso rdf:resource="http://www.flickr.com/photos/35034348999@N01/2269291707"/>
399 </rdf:Description>
400
401 <flickr:photoset rdf:about="http://www.flickr.com/photos/35034348999@N01/sets/72157603613223494">
402 <dc:description></dc:description>
403 <dc:title>Untitled Set #2008</dc:title>
404 <dc:creator rdf:resource="http://www.flickr.com/people/35034348999@N01"/>
405 </flickr:photoset>
406
407 <flickr:tag rdf:about="http://www.flickr.com/photos/35034348999@N01/tags/filtr:process=filtr">
408 <skos:altLabel>filtr</skos:altLabel>
409 <dc:creator rdf:resource="http://www.flickr.com/people/35034348999@N01"/>
410 <skos:broader rdf:resource="http://www.flickr.com/photos/tags/filtr:process=filtr"/>
411 <skos:prefLabel rdf:resource="filtr:process=filtr"/>
412 </flickr:tag>
413
414 <dcterms:StillImage rdf:about="http://farm3.static.flickr.com/2326/2269291707_bc16eb038a.jpg">
415 <dcterms:relation>Medium</dcterms:relation>
416 <exifi:height>375</exifi:height>
417 <exifi:width>500</exifi:width>
418 <dcterms:isVersionOf rdf:resource="http://farm3.static.flickr.com/2326/2269291707_2ec279037a_o.jpg"/>
419 <rdfs:seeAlso rdf:resource="http://www.flickr.com/photos/35034348999@N01/2269291707"/>
420 <rdfs:seeAlso rdf:resource="http://www.flickr.com/photos/35034348999@N01/2269291707#exif"/>
421 </dcterms:StillImage>
422
423 <flickr:place rdf:about="http://www.flickr.com/places/United+States/California/San+Francisco">
424 <places:locality>San Francisco</places:locality>
425 <places:region>California</places:region>
426 <places:county>San Francisco</places:county>
427 <places:id>kH8dLOubBZRvX_YZ</places:id>
428 <places:country>United States</places:country>
429 <dc:isReferencedBy rdf:resource="http://www.flickr.com/photos/35034348999@N01/2269291707"/>
430 </flickr:place>
431
432 <dcterms:StillImage rdf:about="http://farm3.static.flickr.com/2326/2269291707_2ec279037a_o.jpg">
433 <dcterms:relation>Original</dcterms:relation>
434 <exifi:height>1944</exifi:height>
435 <exifi:width>2592</exifi:width>
436 <rdfs:seeAlso rdf:resource="http://www.flickr.com/photos/35034348999@N01/2269291707"/>
437 <rdfs:seeAlso rdf:resource="http://www.flickr.com/photos/35034348999@N01/2269291707#exif"/>
438 </dcterms:StillImage>
439
440 <flickr:tag rdf:about="http://www.flickr.com/photos/tags/cameraphone">
441 <skos:prefLabel>cameraphone</skos:prefLabel>
442 </flickr:tag>
443
444 <flickr:tag rdf:about="http://www.flickr.com/photos/35034348999@N01/tags/filtr">
445 <skos:prefLabel>filtr</skos:prefLabel>
446 <dc:creator rdf:resource="http://www.flickr.com/people/35034348999@N01"/>
447 <skos:broader rdf:resource="http://www.flickr.com/photos/tags/filtr"/>
448 </flickr:tag>
449
450 <rdf:Description rdf:about="x-urn:flickr:tag">
451 <rdfs:subClassOf rdf:resource="http://www.w3.org/2004/02/skos/core#Concept"/>
452 </rdf:Description>
453
454 <rdf:Description rdf:about="x-urn:freebsd:user">
455 <rdfs:subClassOf rdf:resource="http://xmlns.com/foaf/0.1/Person"/>
456 </rdf:Description>
457
458 <flickr:tag rdf:about="http://www.flickr.com/photos/35034348999@N01/tags/sanfrancisco">
459 <skos:prefLabel>sanfrancisco</skos:prefLabel>
460 <dc:creator rdf:resource="http://www.flickr.com/people/35034348999@N01"/>
461 <skos:broader rdf:resource="http://www.flickr.com/photos/tags/sanfrancisco"/>
462 </flickr:tag>
463
464 <flickr:tag rdf:about="http://www.flickr.com/photos/tags/sanfrancisco">
465 <skos:prefLabel>sanfrancisco</skos:prefLabel>
466 </flickr:tag>
467
468 <flickr:user rdf:about="http://www.flickr.com/people/32373682187@N01">
469 <foaf:mbox_sha1sum></foaf:mbox_sha1sum>
470 <foaf:name>heather powazek champ</foaf:name>
471 <foaf:nick>heather</foaf:nick>
472 </flickr:user>
473
474 <rdf:Description rdf:about="http://www.flickr.com/photos/35034348999@N01/2269291707#location">
475 <skos:broader rdf:resource="http://ws.geonames.org/rdf?geonameId=5326012"/>
476 <skos:broader rdf:resource="http://www.flickr.com/places/United+States/California/San+Francisco"/>
477 </rdf:Description>
478
479 <dcterms:StillImage rdf:about="http://farm3.static.flickr.com/2326/2269291707_bc16eb038a_s.jpg">
480 <dcterms:relation>Square</dcterms:relation>
481 <exifi:height>75</exifi:height>
482 <exifi:width>75</exifi:width>
483 <dcterms:isVersionOf rdf:resource="http://farm3.static.flickr.com/2326/2269291707_2ec279037a_o.jpg"/>
484 <rdfs:seeAlso rdf:resource="http://www.flickr.com/photos/35034348999@N01/2269291707"/>
485 <rdfs:seeAlso rdf:resource="http://www.flickr.com/photos/35034348999@N01/2269291707#exif"/>
486 </dcterms:StillImage>
487
488 <dcterms:StillImage rdf:about="http://farm3.static.flickr.com/2326/2269291707_bc16eb038a_t.jpg">
489 <dcterms:relation>Thumbnail</dcterms:relation>
490 <exifi:height>75</exifi:height>
491 <exifi:width>100</exifi:width>
492 <dcterms:isVersionOf rdf:resource="http://farm3.static.flickr.com/2326/2269291707_2ec279037a_o.jpg"/>
493 <rdfs:seeAlso rdf:resource="http://www.flickr.com/photos/35034348999@N01/2269291707"/>
494 <rdfs:seeAlso rdf:resource="http://www.flickr.com/photos/35034348999@N01/2269291707#exif"/>
495 </dcterms:StillImage>
496
497 <rdf:Description rdf:about="http://www.flickr.com/photos/35034348999@N01/2269291707#exif">
498 <exif:flash>Flash did not fire, auto mode</exif:flash>
499 <exif:digitalZoomRatio>100/100</exif:digitalZoomRatio>
500 <exif:isoSpeedRatings>100</exif:isoSpeedRatings>
501 <exif:pixelXDimension>2592</exif:pixelXDimension>
502 <exif:apertureValue>297/100</exif:apertureValue>
503 <exif:pixelYDimension>1944</exif:pixelYDimension>
504 <exif:focalLength>5.6 mm</exif:focalLength>
505 <exif:dateTimeDigitized>2008-02-16T14:22:32PST</exif:dateTimeDigitized>
506 <exif:colorSpace>sRGB</exif:colorSpace>
507 <exif:fNumber>f/2.8</exif:fNumber>
508 <exif:dateTimeOriginal>2008-02-16T14:22:32PST</exif:dateTimeOriginal>
509 <exif:shutterSpeedValue>7643/1000</exif:shutterSpeedValue>
510 <exif:exposureTime>0.005 sec (1/200)</exif:exposureTime>
511 </rdf:Description>
512
513 <flickr:tag rdf:about="http://www.flickr.com/photos/35034348999@N01/tags/cameraphone">
514 <skos:prefLabel>cameraphone</skos:prefLabel>
515 <dc:creator rdf:resource="http://www.flickr.com/people/35034348999@N01"/>
516 <skos:broader rdf:resource="http://www.flickr.com/photos/tags/cameraphone"/>
517 </flickr:tag>
518
519 <flickr:user rdf:about="http://www.flickr.com/people/35034348999@N01">
520 <foaf:mbox_sha1sum>b0571f7ec59c0b59e19a3f054f78d953cb32b071</foaf:mbox_sha1sum>
521 <foaf:name>Aaron Straup Cope</foaf:name>
522 <foaf:nick>straup</foaf:nick>
523 </flickr:user>
524
525 <rdf:Description rdf:about="x-urn:flickr:comment">
526 <rdfs:subClassOf rdf:resource="http://www.w3.org/2000/10/annotation-nsAnnotation"/>
527 </rdf:Description>
528
529 <dcterms:StillImage rdf:about="http://farm3.static.flickr.com/2326/2269291707_bc16eb038a_m.jpg">
530 <dcterms:relation>Small</dcterms:relation>
531 <exifi:height>180</exifi:height>
532 <exifi:width>240</exifi:width>
533 <dcterms:isVersionOf rdf:resource="http://farm3.static.flickr.com/2326/2269291707_2ec279037a_o.jpg"/>
534 <rdfs:seeAlso rdf:resource="http://www.flickr.com/photos/35034348999@N01/2269291707"/>
535 <rdfs:seeAlso rdf:resource="http://www.flickr.com/photos/35034348999@N01/2269291707#exif"/>
536 </dcterms:StillImage>
537
538 <flickr:machinetag rdf:about="http://www.machinetags.org/wiki/filtr#process">
539 <mt:predicate>process</mt:predicate>
540 <mt:namespace>filtr</mt:namespace>
541 <dc:isReferencedBy rdf:resource="http://www.flickr.com/photos/35034348999@N01/2269291707"/>
542 </flickr:machinetag>
543
544 <rdf:Description rdf:about="x-urn:flickr:machinetag">
545 <rdfs:subClassOf rdf:resource="http://www.w3.org/2004/02/skos/core#Concept"/>
546 </rdf:Description>
547
548 <flickr:machinetag rdf:about="http://www.machinetags.org/wiki/geonames#locality">
549 <mt:predicate>locality</mt:predicate>
550 <mt:namespace>geonames</mt:namespace>
551 <dc:isReferencedBy rdf:resource="http://www.flickr.com/photos/35034348999@N01/2269291707"/>
552 </flickr:machinetag>
553
554 <flickr:tag rdf:about="http://www.flickr.com/photos/tags/geonames:locality=5391959">
555 <skos:altLabel>5391959</skos:altLabel>
556 <skos:broader rdf:resource="http://www.machinetags.org/wiki/geonames#locality"/>
557 <skos:prefLabel rdf:resource="geonames:locality=5391959"/>
558 </flickr:tag>
559
560 <rdf:Description rdf:about="file:///home/asc/photos/2008/02/16/20080216-2269291707-ambient_pork.jpg">
561 <dcterms:created>2008-02-17T10:36:02Z</dcterms:created>
562 <dc:creator rdf:resource="x-urn:no#asc"/>
563 <rdfs:seeAlso rdf:resource="http://www.flickr.com/photos/35034348999@N01/2269291707"/>
564 </rdf:Description>
565
566 <flickr:tag rdf:about="http://www.flickr.com/photos/tags/filtr:process=filtr">
567 <skos:altLabel>filtr</skos:altLabel>
568 <skos:broader rdf:resource="http://www.machinetags.org/wiki/filtr#process"/>
569 <skos:prefLabel rdf:resource="filtr:process=filtr"/>
570 </flickr:tag>
571
572 <flickr:photo rdf:about="http://www.flickr.com/photos/35034348999@N01/2269291707">
573 <filtr:process>filtr</filtr:process>
574 <acl:access>visbility</acl:access>
575 <dc:title>Ambient Pork</dc:title>
576 <ph:camera>n82</ph:camera>
577 <dc:rights>All rights reserved.</dc:rights>
578 <acl:accessor>public</acl:accessor>
579 <dc:description></dc:description>
580 <geonames:locality>5391959</geonames:locality>
581 <dc:created>2008-02-16T14:22:32-0800</dc:created>
582 <dc:dateSubmitted>2008-02-16T14:32:59-0800</dc:dateSubmitted>
583 <dc:creator rdf:resource="http://www.flickr.com/people/35034348999@N01"/>
584 <dc:subject rdf:resource="http://www.flickr.com/photos/35034348999@N01/tags/cameraphone"/>
585 <dc:subject rdf:resource="http://www.flickr.com/photos/35034348999@N01/tags/filtr:process=filtr"/>
586 <dc:subject rdf:resource="http://www.flickr.com/photos/35034348999@N01/tags/filtr"/>
587 <dc:subject rdf:resource="http://www.flickr.com/photos/35034348999@N01/tags/sanfrancisco"/>
588 <dc:subject rdf:resource="http://www.flickr.com/photos/35034348999@N01/tags/ph:camera=n82"/>
589 <dc:subject rdf:resource="http://www.flickr.com/photos/35034348999@N01/tags/geonames:locality=5391959"/>
590 <dcterms:isPartOf rdf:resource="http://www.flickr.com/photos/35034348999@N01/sets/72157603613223494"/>
591 <a:hasAnnotation rdf:resource="http://www.flickr.com/photos/straup/2269291707/#comment72157603921497994"/>
592 <geo:Point rdf:resource="http://www.flickr.com/photos/35034348999@N01/2269291707#location"/>
593 </flickr:photo>
594
595 <computer:user rdf:about="x-urn:no#asc">
596 <foaf:name>Aaron Straup Cope</foaf:name>
597 <foaf:nick>asc</foaf:nick>
598 </computer:user>
599
600 <rdf:Description rdf:about="#">
601 <dcterms:hasVersion>2.1:1203244560</dcterms:hasVersion>
602 <dc:created>2008-02-17T02:36:00-0800</dc:created>
603 <dc:creator rdf:resource="http://search.cpan.org/dist/Net-Flickr-RDF-2.1"/>
604 <a:annotates rdf:resource="http://www.flickr.com/photos/35034348999@N01/2269291707"/>
605 </rdf:Description>
606
607 <flickr:tag rdf:about="http://www.flickr.com/photos/tags/filtr">
608 <skos:prefLabel>filtr</skos:prefLabel>
609 </flickr:tag>
610
611 <rdf:Description rdf:about="x-urn:flickr:user">
612 <rdfs:subClassOf rdf:resource="http://xmlns.com/foaf/0.1/Person"/>
613 </rdf:Description>
614
615 <rdf:Description rdf:about="http://www.flickr.com/places/kH8dLOubBZRvX_YZ">
616 <rdfs:seeAlso rdf:resource="http://www.flickr.com/places/United+States/California/San+Francisco"/>
617 </rdf:Description>
618
619 <flickr:machinetag rdf:about="http://www.machinetags.org/wiki/ph#camera">
620 <mt:predicate>camera</mt:predicate>
621 <mt:namespace>ph</mt:namespace>
622 <dc:isReferencedBy rdf:resource="http://www.flickr.com/photos/35034348999@N01/2269291707"/>
623 </flickr:machinetag>
624
625 <flickr:comment rdf:about="http://www.flickr.com/photos/straup/2269291707/#comment72157603921497994">
626 <dc:identifier>6065-2269291707-72157603921497994</dc:identifier>
627 <dc:created>2008-02-16T16:39:31</dc:created>
628 <a:body>best. title. ever.</a:body>
629 <dc:creator rdf:resource="http://www.flickr.com/people/32373682187@N01"/>
630 <a:annotates rdf:resource="http://www.flickr.com/photos/35034348999@N01/2269291707"/>
631 </flickr:comment>
632
633 <flickr:tag rdf:about="http://www.flickr.com/photos/35034348999@N01/tags/geonames:locality=5391959">
634 <skos:altLabel>5391959</skos:altLabel>
635 <dc:creator rdf:resource="http://www.flickr.com/people/35034348999@N01"/>
636 <skos:broader rdf:resource="http://www.flickr.com/photos/tags/geonames:locality=5391959"/>
637 <skos:prefLabel rdf:resource="geonames:locality=5391959"/>
638 </flickr:tag>
639
640 <flickr:tag rdf:about="http://www.flickr.com/photos/tags/ph:camera=n82">
641 <skos:altLabel>n82</skos:altLabel>
642 <skos:broader rdf:resource="http://www.machinetags.org/wiki/ph#camera"/>
643 <skos:prefLabel rdf:resource="ph:camera=n82"/>
644 </flickr:tag>
645
646 <geoname:Feature rdf:about="http://ws.geonames.org/rdf?geonameId=5326012">
647 <geoname:featureCode>PPLX</geoname:featureCode>
648 <geoname:countryCode>US</geoname:countryCode>
649 <geoname:regionCode>CA</geoname:regionCode>
650 <geoname:gtopo30>23</geoname:gtopo30>
651 <geoname:region>California</geoname:region>
652 <geoname:city>San Francisco County</geoname:city>
653 <dc:isReferencedBy rdf:resource="http://www.flickr.com/photos/35034348999@N01/2269291707"/>
654 </geoname:Feature>
655
656 <flickr:tag rdf:about="http://www.flickr.com/photos/35034348999@N01/tags/ph:camera=n82">
657 <skos:altLabel>n82</skos:altLabel>
658 <dc:creator rdf:resource="http://www.flickr.com/people/35034348999@N01"/>
659 <skos:broader rdf:resource="http://www.flickr.com/photos/tags/ph:camera=n82"/>
660 <skos:prefLabel rdf:resource="ph:camera=n82"/>
661 </flickr:tag>
662
663 <rdf:Description rdf:about="http://www.flickr.com/geo/United%20States/California/San%20Francisco/San%20Francisco">
664 <rdfs:seeAlso rdf:resource="http://www.flickr.com/places/United+States/California/San+Francisco"/>
665 </rdf:Description>
666
667 <dcterms:StillImage rdf:about="http://farm3.static.flickr.com/2326/2269291707_bc16eb038a_b.jpg">
668 <dcterms:relation>Large</dcterms:relation>
669 <exifi:height>768</exifi:height>
670 <exifi:width>1024</exifi:width>
671 <dcterms:isVersionOf rdf:resource="http://farm3.static.flickr.com/2326/2269291707_2ec279037a_o.jpg"/>
672 <rdfs:seeAlso rdf:resource="http://www.flickr.com/photos/35034348999@N01/2269291707"/>
673 <rdfs:seeAlso rdf:resource="http://www.flickr.com/photos/35034348999@N01/2269291707#exif"/>
674 </dcterms:StillImage>
675
676 <rdf:Description rdf:about="file:///home/asc/photos/2008/02/16/20080216-2269291707-ambient_pork_s.jpg">
677 <dcterms:created>2008-02-17T10:36:02Z</dcterms:created>
678 <dc:creator rdf:resource="x-urn:no#asc"/>
679 <rdfs:seeAlso rdf:resource="http://www.flickr.com/photos/35034348999@N01/2269291707"/>
680 </rdf:Description>
681
682 </rdf:RDF>
683
684SEE ALSO
685 Net::Flickr::API
686
687 RDF::Simple
688
689TO DO
690 * Methods for describing more than just a photo; groups, tags, etc.
691
692 * Update bounding boxes to be relative to individual images
693
694 * Proper tests
695
696 Patches are welcome.
697
698BUGS
699 Please report all bugs via http://rt.cpan.org/
700
701LICENSE
702 Copyright (c) 2005-2008 Aaron Straup Cope. All Rights Reserved.
703
704 This is free software. You may redistribute it and/or modify it under
705 the same terms as Perl itself.
706
707