Author image Jakob Voß
and 4 contributors


RDF::aREF - Another RDF Encoding Form


    use RDF::aREF;

    my $rdf = {
      _id       => '',
      foaf_name => 'Alice Smith',
      foaf_age  => '42^xsd_integer',
      foaf_homepage => [
           _id => '',
           dct_modified => '2010-05-29^xsd_date',
      foaf_knows => {
        dct_description => 'a nice guy@en',

    decode_aref( $rdf,
        callback => sub {
            my ($subject, $predicate, $object, $language, $datatype) = @_;
    my @lastmod = aref_query $rdf, 'foaf_homepage.dct_modified^';

    my $model = RDF::Trine::Model->new;
    decode_aref( $rdf, callback => $model );
    print RDF::Trine::Serializer->new('Turtle')->serialize_model_to_string($model);

    my $model = RDF::Trine::Model->new;
    RDF::Trine::Parser->parse_url_into_model($url, $model);
    my $aref = encode_aref $model;


aREF (another RDF Encoding Form) is an encoding of RDF graphs in form of arrays, hashes, and Unicode strings. This module provides methods for decoding from aREF data to RDF triples (RDF::aREF::Decoder), for encoding RDF data in aREF (RDF::aREF::Encoder), and for querying parts of an RDF graph (RDF::aREF::Query).


aREF has been an attempt to solve problems that meanwhile have largely been solved by JSON-LD. Despite aRef having its own benefits, please consider using a more established technology (JSON-LD) instead!


The following functions are exported by default.

decode_aref $aref [, %options ]

Decodes an aREF document given as hash reference with RDF::aREF::Decoder. Equivalent to RDF::aREF::Decoder->new(%options)->decode($aref).

encode_aref $graph [, %options ]

Construct an aREF subject mapfrom an RDF graph. The RDF::aREF::Encoder for possible options. The $graph can be supplied as:

aref_query $graph, [ $origin ], @queries

Query parts of an aREF data structure by aREF query expressions and return a list. See RDF::aREF::Query for details.

aref_query_map( $graph, [ $origin ], $query_map )

Map parts of an aREF data structure to a flat key-value structure.



Copyright Jakob Voss, 2014-

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.