NAME

XML::FOAF - Parse FOAF (Friend of a Friend) data

SYNOPSIS

use XML::FOAF;
use URI;
my $foaf = XML::FOAF->new(URI->new('http://foo.com/my.foaf'));
print $foaf->person->mbox, "\n";

DESCRIPTION

XML::FOAF provides an object-oriented interface to FOAF (Friend of a Friend) data.

USAGE

XML::FOAF->new($data [, $base_uri ])

Reads in FOAF data from $data and parses it. Returns a XML::FOAF object on success, undef on error. If an error occurs, you can call

XML::FOAF->errstr

to get the text of the error.

$base_uri is the base URI to be used in constructing absolute URLs from resources defined in your FOAF data, and is required unless $data is a URI object, in which case the $base_uri can be obtained from that URI.

$data can be any of the following:

  • A URI object

    An object blessed into any URI subclass. For example:

    my $uri = URI->new('http://foo.com/my.foaf');
    my $foaf = XML::FOAF->new($uri);

    The URI can be either for a FOAF file (for example, the above), or an HTML page containing a <link> tag for FOAF auto-discovery:

    <link rel="meta" type="application/rdf+xml" title="FOAF" href="http://foo.com/my.foaf" />

    If the URI points to an HTML page with FOAF auto-discovery enabled, XML::FOAF will parse the HTML to find the FOAF file automatically.

  • A scalar reference

    This indicates a reference to a string containing the FOAF data. For example:

    my $foaf_data = <<FOAF;
    ...
    FOAF
    my $foaf = XML::FOAF->new(\$foaf_data, 'http://foo.com');
  • A filehandle

    An open filehandle from which the FOAF data can be read. For example:

    open my $fh, 'my.foaf' or die $!;
    my $foaf = XML::FOAF->new($fh, 'http://foo.com');
  • A file name

    A simple scalar containing the name of a file containing the FOAF data. For example:

    my $foaf = XML::FOAF->new('my.foaf', 'http://foo.com');

$foaf->person

Returns a XML::FOAF::Person object representing the main identity in the FOAF file.

$foaf->assurance

If the FOAF file indicates a PGP signature in wot:assurance, the URL for the detatched signature file will be returned, undef otherwise.

$foaf->verify

Attempts to verify the FOAF file using the PGP signature returned from assurance. verify will fetch the public key associated with the signature from a keyserver. If no PGP signature is noted in the FOAF file, or if an error occurs, undef is returned. If the signature is invalid, 0 is returned. If the signature is valid, the PGP identity (name and email address, generally) of the signer is returned.

Requires Crypt::OpenPGP to be installed.

REFERENCES

http://xmlns.com/foaf/0.1/

http://rdfweb.org/foaf/

LICENSE

XML::FOAF is free software; you may redistribute it and/or modify it under the same terms as Perl itself.

AUTHOR & COPYRIGHT

Except where otherwise noted, XML::FOAF is Copyright 2003 Benjamin Trott, cpan@stupidfool.org. All rights reserved.