Benjamin Trott
and 1 contributors


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


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


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


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


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('');
        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="" />

    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;
        my $foaf = XML::FOAF->new(\$foaf_data, '');
  • 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, '');
  • 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', '');


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


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


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.



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


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