ARC2 [0] based SPARQL Endpoint working now, as a SpecialPage, thanks to 
the hints.
Demo: http://smwsandbox.rilspace.org/wiki/Special:SPARQLEndpoint
Blog post: 
http://saml.rilspace.org/arc2-based-sparql-endpoint-for-semantic-mediawiki-up-running
Code: 
http://code.google.com/p/smw-rdf-connector/source/browse/#svn/trunk%3Fstate%3Dclosed

Still experimental state though, and a lot of refactoring to do, so 
beware of ugly code.
Feedback and hints are always welcome though!

Samuel

[0] http://arc.semsol.org/

On 06/29/2010 04:32 AM, Samuel Lampa wrote:
> Ah, there we go! :) Obviously didn't search the right places. Thanks!
>
> Samuel
>
> On 06/29/2010 03:07 AM, Brion Vibber wrote:
>> On Mon, Jun 28, 2010 at 8:19 PM, Samuel 
>> Lampa<[email protected]>wrote:
>>
>>
>>> Is it possible (and if so, how to) totally replace the output from a
>>> Special page (including the sending headers etc)?
>>>
>>> That is, can I use a SpecialPage as a SPARQL Endpoint and have it output
>>> pure RDF/XML (or similar) if a SPARQL query is sent to it via POST,
>>> while if not, it should just display the SpecialPage including a form
>>> for submitting a SPARQL query.
>>>
>>>
>> It sure is! In your execute() method, you'll want to call $wgOut->disable().
>> This'll turn off the regular page display output at the end of request
>> processing, and give you a chance to take over and do whatever you like, eg
>> sending appropriate HTTP headers and output directly.
>>
>> The traditional example I always like to use is Special:Export in the core
>> code. If you bump down a bit past the initialization code and input
>> validation, you'll see this code that's called just before we're actually
>> doing the XML output:
>>
>>           if ( $this->doExport ) {
>>               $wgOut->disable();
>>               // Cancel output buffering and gzipping if set
>>               // This should provide safer streaming for pages with history
>>               wfResetOutputBuffers();
>>               $wgRequest->response()->header( "Content-type: application/xml;
>> charset=utf-8" );
>>
>> You should always be sure to set the content-type correctly; and if
>> outputting XML or HTML, be sure to include a charset header.
>>
>> The wfResetOutputBuffers() bit isn't required in most cases, but if you're
>> outputting a *lot* of data it can help to let you stream output directly to
>> the downloader. (By default, buffering is used to apply gzip encoding and
>> send a Content-Size header. This is usually good, but means that all your
>> output has to be built and stored in memory before it actually gets sent to
>> the client... potentially a problem if you're streaming out fifty thousand
>> revisions of [[Hurricane Katrina]]!)
>>
>> When you're doing your raw output, you can go ahead and do 'print' or 'echo'
>> directly if you like -- you're now in control. ;)
>>
>> As a general note -- always be careful of your output to make sure you're
>> applying proper escaping when generating HTML or XML; raw output can be a
>> security risk if input isn't sanitized properly.
>>
>> -- brion vibber (brion @ pobox.com)
>> _______________________________________________
>> Wikitech-l mailing list
>> [email protected]
>> https://lists.wikimedia.org/mailman/listinfo/wikitech-l
>>
>>
>>
>
>


-- 
Samuel Lampa
---------------------------------------
Biotech Student @ Uppsala University
    GSoC Student @ Semantic MediaWiki
---------------------------------------
  E-mail: samuel.lampa[at]gmail.com
  Mobile: +46 (0)70-2073732
    Blog: http://saml.rilspace.org
Twitter: http://twitter.com/samuellampa
---------------------------------------


_______________________________________________
Wikitech-l mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

Reply via email to