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 )