NAME

Attean - A Semantic Web Framework

VERSION

This document describes Attean version 0.012

SYNOPSIS

use v5.14;
use Attean;
use Attean::RDF qw(iri);
my $store = Attean->get_store('Memory')->new();
my $parser = Attean->get_parser('NTriples')->new();

# iterator of triples and quads
my $iter = $parser->parse_iter_from_io(\*STDIN);

# add a graph name to all triples
my $quads = $iter->as_quads(iri('http://graph-name/'));

$store->add_iter($quads);
my $model = Attean::QuadModel->new( store => $store );
my $iter = $model->get_quads();
while (my $quad = $iter->next) {
  say $quad->object->ntriples_string;
}

DESCRIPTION

Attean provides APIs for parsing, storing, querying, and serializing Semantic Web (RDF and SPARQL) data.

METHODS

get_store( $NAME )

Attempts to find a Attean::API::Store implementation with the given $NAME. This is done using Module::Pluggable and will generally be searching for class names AtteanX::Store::$NAME.

Returns the full class name if a matching implementation is found, otherwise returns undef.

get_serializer( $NAME )
get_serializer( media_type => $MEDIA_TYPE )

Attempts to find a Attean::API::Serializer serializer class with the given $NAME, or that can serialize files with the $MEDIA_TYPE media type.

Returns the full class name if a matching implementation is found, otherwise returns undef.

get_parser( $NAME )
get_parser( filename => $FILENAME )
get_parser( media_type => $MEDIA_TYPE )

Attempts to find a Attean::API::Parser parser class with the given $NAME, or that can parse files with the same extension as $FILENAME, or that can parse files with the $MEDIA_TYPE media type.

Returns the full class name if a matching implementation is found, otherwise returns undef.

negotiate_serializer ( request_headers => $request_headers, restrict => \@serializer_names, extend => \%media_types )

Returns a two-element list containing an appropriate media type and Attean::API::Serializer class as decided by HTTP::Negotiate. If the 'request_headers' key-value is supplied, the $request_headers is passed to HTTP::Negotiate::choose. The option 'restrict', set to a list of serializer names, can be used to limit the serializers to choose from. Finally, an <'extend'> option can be set to a hashref that contains MIME-types as keys and a custom variant as value. This will enable the user to use this negotiator to return a type that isn't supported by any serializers. The subsequent code will have to find out how to return a representation.

acceptable_parsers ( handles => $item_role, prefer => $parser_role )

Returns a string value expressing the media types that are acceptable to the parsers available to the system. This string may be used as an 'Accept' HTTP header value.

If a handles role is supplied, only parsers that produce objects that conform to $item_role will be included.

If a prefer role is supplied, only parsers that conform to $parser_role will be included.

Parsers are given a quality-value (expressing a preferred order or use) based on the roles each parser consumes. Parsers consuming Attean::API::PullParser are preferred, while those consuming Attean::API::AtOnceParser are not preferred. An exact ordering between parsers consuming similar roles is currently undefined.

BUGS

Please report any bugs or feature requests to through the GitHub web interface at https://github.com/kasei/attean/issues.

SEE ALSO

http://www.perlrdf.org/

AUTHOR

Gregory Todd Williams <gwilliams@cpan.org>

COPYRIGHT

Copyright (c) 2014--2016 Gregory Todd Williams. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.