Attean - A Semantic Web Framework
This document describes Attean version 0.034
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 $graph = iri('http://graph-name/');
my $quads = $iter->as_quads($graph);
$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;
}
# run a SPARQL query and iterate over the results
my $sparql = 'SELECT * WHERE { ?s ?p ?o }';
my $s = Attean->get_parser('SPARQL')->new();
my ($algebra) = $s->parse($sparql);
my $results = $model->evaluate($algebra, $graph);
while (my $r = $results->next) {
say $r->as_string;
}
Attean provides APIs for parsing, storing, querying, and serializing Semantic Web (RDF and SPARQL) data.
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.
temporary_model
Returns a temporary, mutable quad model based on a AtteanX::Store::Memory store.
get_serializer( $NAME )
get_serializer( filename => $FILENAME )
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.
register_global_function( %uri_to_func )
get_global_function( $uri )
register_global_functional_form( %uri_to_func )
get_global_functional_form( $uri )
register_global_aggregate( %uri_to_hash )
get_global_aggregate( $uri )
register_datatype_role( %uri_to_role )
get_datatype_role( $uri )
Please report any bugs or feature requests to through the GitHub web interface at https://github.com/kasei/attean/issues.
Gregory Todd Williams <gwilliams@cpan.org>
Copyright (c) 2014--2022 Gregory Todd Williams. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.