예제 #1
0
    def get(self, request):
        query = request.REQUEST.get('query')
        form = SparqlQueryForm(request.REQUEST if query else None,
                               formats=self.get_format_choices())

        context = self.context
        context.update({
            'namespaces': sorted(NS.items()),
            'form': form,
            'store': self.store
        })

        if form.is_valid():
            try:
                results = self.perform_query(
                    request, query, form.cleaned_data['common_prefixes'])
            except QueryError, e:
                context['error'] = e.message
                context['status_code'] = e.status_code
            else:
                context['additional_headers'][
                    'X-Humfrey-SPARQL-Duration'] = results.duration

                context['queries'] = [results.query]
                context['duration'] = results.duration
                context['results'] = results

                if results.format_type == 'sparql-results':
                    return self._sparql_results_view(request, context)
                elif results.format_type == 'graph':
                    return self._graph_view(request, context)
                raise AssertionError("Unexpected format type: {0}".format(
                    results.format_type))