Apache-SPARQL
view release on metacpan or search on metacpan
lib/Apache/SPARQL.pm view on Meta::CPAN
package Apache::SPARQL;
$Apache::SPARQL::VERSION = '0.22';
use strict;
use mod_perl;
use LWP::UserAgent;
use constant MP2 => ($mod_perl::VERSION >= 1.99) ? 1 : 0;
BEGIN {
if (MP2) {
require Apache2;
require Apache::RequestRec;
require Apache::RequestIO;
require Apache::RequestUtil;
require Apache::Const;
require Apache::Log;
require Apache::URI;
require Apache::File;
require APR::Table;
require APR::URI;
require CGI;
CGI->compile(qw(param));
} else {
require Apache;
require Apache::Constants;
require Apache::Log;
require Apache::Request;
require Apache::URI;
require Apache::File;
};
};
# see http://www.w3.org/2001/sw/DataAccess/proto-wd/#mapping
%Apache::SPARQL::Responses = (
'OK' => 200,
'GraphCreated' => 201,
'OperationRequestAccepted' => 202,
'PermanentlyMoved' => 301,
'TemporarilyMoved' => 307,
'MalformedRequest' => 400,
'MalformedQuery' => 400,
'Unauthorized' => 401,
'Forbidden' => 403,
'NotFound' => 404,
'NoDeletionPerformed' => 409,
'RequestRefused' => 409,
'OperationPointError' => 500,
'UnsupportedOperation' => 501,
'Unavailable' => 503
);
sub handler($$) {
my ($class, $ap) = @_;
return $Apache::SPARQL::Responses{ 'MalformedRequest' }
unless( $ap->method eq 'GET' or
$ap->method eq 'OPTIONS' );
my $uri_query_string = $ap->args;
if( $uri_query_string and
$uri_query_string ne '' and
$uri_query_string !~ m/^\s*$/ ) {
my $query_lang = $class->_param($ap, 'query-lang');
$query_lang = 'sparql'
unless($query_lang);
my $query = $class->_param($ap, 'query');
my $query_uri = $class->_param($ap, 'query-uri');
my @graph_id = $class->_param($ap, 'graph-id');
# see some more at http://lists.w3.org/Archives/Public/public-rdf-dawg/2005AprJun/0054.html
my @data = $class->_param($ap, 'data');
push @graph_id, @data; #merge graph-id and data parameters - need to clarify this
my $format = $class->_param($ap, 'format');
my $output_xslt = $class->_param($ap, 'output-xslt');
my $output_type = $class->_param($ap, 'output-type');
my $limit = $class->_param($ap, 'limit');
# FIXME - if no query params assumes getGraph() - correct?
if( $query or
$query_uri ) {
return $class->query( $ap, $query, $query_uri, \@graph_id, $output_xslt, $output_type, $format, $limit );
} else {
return $class->getGraph( $ap, \@graph_id, $format );
};
} else {
return $class->getServiceDescription( $ap );
};
};
sub query {
my ($class, $ap, $query, $query_uri, $graph_id, $output_xslt, $output_type, $format, $limit ) = @_;
return $Apache::SPARQL::Responses{ 'MalformedRequest' };
};
sub getGraph {
my ($class, $ap, $graph_id, $format ) = @_;
return $Apache::SPARQL::Responses{ 'MalformedRequest' };
};
sub getServiceDescription {
( run in 2.174 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )