---
name: "RDF::aREF"
section: "3pm"
platform: "linux"
package: "librdf-aref-perl"
version: "0.28-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/RDF::aREF"
---

# RDF::aREF(3pm)

Another RDF Encoding Form

## NAME

RDF::aREF - Another RDF Encoding Form

## SYNOPSIS

```
    use RDF::aREF;
    my $rdf = {
      _id       => 'http://example.com/people#alice',
      foaf_name => 'Alice Smith',
      foaf_age  => '42^xsd_integer',
      foaf_homepage => [
         {
           _id => 'http://personal.example.org/',
           dct_modified => '2010-05-29^xsd_date',
         },
        'http://work.example.com/asmith/',
      ],
      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;
```

## DESCRIPTION

**aREF** (another RDF Encoding Form \<http://gbv.github.io/aREF/\>) 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).

## WARNING

**aREF** has been an attempt to solve problems that meanwhile have largely been solved by JSON-LD \<https://json-ld.org/\>. Despite aRef having its own benefits, please consider using a more established technology (JSON-LD) instead!

## EXPORTED FUNCTIONS

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:

- •

  instance of RDF::Trine::Model

- •

  instance of RDF::Trine::Model::Iterator

- •

  an URL or a filename (only if RDF::Trine is installed)

- •

  instance of Attean::API::TripleIterator (experimental)

- •

  instance of Attean::API::TripleStore (experimental)

- •

  hash reference with RDF/JSON \<http://www.w3.org/TR/rdf-json/\> format (as returned by method `"as_hashref"` in RDF::Trine::Model)

### aref\_query $graph, \[ $origin \], @queries

Query parts of an aREF data structure by aREF query expressions \<http://gbv.github.io/aREF/aREF.html#aref-query\> 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.

## SEE ALSO

- •

  aREF is specified at \<http://github.com/gbv/aREF\>.

- •

  See Catmandu::RDF for an application of this module.

- •

  Usee RDF::Trine for more elaborated handling of RDF data in Perl.

- •

  See RDF::YAML for a similar (outdated) RDF encoding in YAML.

## COPYRIGHT AND LICENSE

Copyright Jakob Voss, 2014-

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