NAME

RDF::Simple::Serialiser - convert array of tripes to RDF string

DESCRIPTION

A simple RDF serialiser. Accepts an array of triples, returns a serialised RDF document.

SYNOPSIS

my $ser = RDF::Simple::Serialiser->new;
my @triples = (
               ['http://example.com/url#', 'dc:creator', 'zool@example.com'],
               ['http://example.com/url#', 'foaf:Topic', '_id:1234'],
               ['_id:1234','http://www.w3.org/2003/01/geo/wgs84_pos#lat','51.334422']
               );
my $rdf = $ser->serialise(@triples);

## Supply your own bNode id prefix, add namespaces:
my $ser = RDF::Simple::Serialiser->new( nodeid_prefix => 'a:' );
$ser->addns( foaf => 'http://xmlns.com/foaf/0.1/' );
my $node1 = $ser->genid;
my $node2 = $ser->genid;
my @triples = (
               [$node1, 'foaf:name', 'Jo Walsh'],
               [$node1, 'foaf:knows', $node2],
               [$node2, 'foaf:name', 'Robin Berjon'],
               [$node1, 'rdf:type', 'foaf:Person'],
               [$node2, 'rdf:type','http://xmlns.com/foaf/0.1/Person']
               );
my $rdf = $ser->serialise(@triples);

## Round-trip example:
my $parser = RDF::Simple::Parser->new();
my $rdf = LWP::Simple::get('http://www.zooleika.org.uk/foaf.rdf');
my @triples = $parser->parse_rdf($rdf);
my $new_rdf = $serialiser->serialise(@triples);

METHODS

new( [ nodeid_prefix => 'prefix' ])
serialise( @triples )

Accepts a 'bucket of triples' (an array of array references which are 'subject, predicate, object' statements) and returns a serialised RDF document.

If 'rdf:type' is not provided for a subject, the generic node type 'rdf:Description' is used.

serialize

A synonym for serialise() for American users.

addns( qname => 'http://example.com/rdf/vocabulary#', qname2 => 'http://yetanother.org/vocabulary/' )

add new namespaces to the RDF document. a namespace must exist for each predicate used in a triple. the RDF::Simple::NS module which supports this one provides the following vocabularies by default (you can override them if wished)

foaf => 'http://xmlns.com/foaf/0.1/',
dc => 'http://purl.org/dc/elements/1.1/',
rdfs => "http://www.w3.org/2000/01/rdf-schema#",
daml => 'http://www.w3.org/2001/10/daml+oil#',
space => 'http://frot.org/space/0.1/',
geo => 'http://www.w3.org/2003/01/geo/wgs84_pos#',
rdf => "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
owl => 'http://www.w3.org/2002/07/owl#',
ical => 'http://www.w3.org/2002/12/cal/ical#',
dcterms=>"http://purl.org/dc/terms/",
wiki=>"http://purl.org/rss/1.0/modules/wiki/",
chefmoz=>"http://chefmoz.org/rdf/elements/1.0/",
genid( )

generates a random identifier for use as a bNode (anonymous node) nodeID. if nodeid_prefix is set, the generated id uses the prefix, followed by 8 random numbers.

render

Does the heavy lifting of converting the "objects" to a string. Users of this module should call serialize(); Subclassers of this module will probably rewrite render().

BUGS

Please report bugs via the RT web site http://rt.cpan.org/Ticket/Create.html?Queue=RDF-Simple

NOTES

The original author was British, so this is a Serialiser. For American programmers, RDF::Simple::Serializer will work as an alias to the module, and serialize() does the same as serialise().

Neither parser or serialiser makes an effort to differentiate formally between URIs and literals, as is more general RDF practise. This was a conscious effort to keep things simple, but I plan to add a make_life_complex option to both.

THANKS

Thanks particularly to Tom Hukins, and also to Paul Mison, for providing patches.

AUTHOR

Jo Walsh <jo@london.pm.org> Currently maintained by Martin Thurn <mthurn@cpan.org>

LICENSE

This module is available under the same terms as perl itself.