Mediawiki with Fuseki triplestore backen

From artserver wiki

In this page I will go over the steps required to setup Semantic Mediawiki with a Triple Storage graph database, with Apache Jena Fuseki[1] SPARQL server.

According to SMW documentation:[2]

By default, Semantic MediaWiki (SMW) stores all data in the same relational database (usually, a MySQL database) that is used by MediaWiki. This ensures a simple setup, but a relational database is not an ideal type of storage for semantic data. A more natural data model for SMW data is RDF, a data format that organizes information in graphs rather than in fixed database tables.

See more in SMW2.0 Release Notes [3]

Running Fuseki

See Fuseki SPARQL server



SMW Setting for Fuseki

With SMW installed and enabled

enableSemantics( 'localhost' );

The following settings are added to LocalSettings.php

$smwgDefaultStore = 'SMWSparqlStore';
$smwgSparqlRepositoryConnector = 'fuseki';

$smwgSparqlEndpoint["query"] = 'http://localhost:3030/test/query';
$smwgSparqlEndpoint["update"] = 'http://localhost:3030/test/update';
$smwgSparqlEndpoint["data"] = '';

And an update needs to be performed:

php maintenance/update.php


After setting triple storage

After the configuration was changed, there is no data yet in the RDF database. To fill it with the current content of the wiki, it is necessary to refresh all data.[4]

So we will rebuild the semantic wiki data

php rebuildData.php -v -s 1000 -e 2999

Test queries

All triples

In SPARQL interface

SELECT *
{
?s ?p ?v .
}
LIMIT 20

In curl:

curl http://sparql.oooooooooo.io/wiki/query -X POST --data 'query=%0ASELECT+*%0A%7B%0A%3Fs+%3Fp+%3Fv+.%0A%7D%0ALIMIT+20' -H 'Accept: application/sparql-results+json,*/*;q=0.9'

In SPARQL query run by ARQ

file: query.rq

SELECT *  
	WHERE {
		SERVICE <http://sparql.oooooooooo.io/wiki/query>
		{
		?s ?p ?v .
		}
	}


Or, a query for all the triples that have Property: wiki:Property:Section Value: "Blog"

PREFIX swivt: <http://semantic-mediawiki.org/swivt/1.0#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX wiki: <http://oooooooooo.io/index.php/Special:URIResolver/>

SELECT ?s  
	WHERE {
		SERVICE <http://sparql.oooooooooo.io/wiki/query>
		{
		?s 	wiki:Property-3ASection "Blog" .
		}
	}

Which can be run by ARQ

arq --query wiki_query.rq 


In Fuseki interface

All Page type properties:

swivt:page

Note: SWIVT is the Semantic Wiki Vocabulary and Terminology[5]

PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX triplewiki: <http://localhost/triplestorage/index.php/>
PREFIX swivt: <http://semantic-mediawiki.org/swivt/1.0#>
SELECT *
{?o swivt:page ?v}

All Page type properties:


<source lang="sparql"> PREFIX swivt: <http://semantic-mediawiki.org/swivt/1.0#> PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX owl: <http://www.w3.org/2002/07/owl#> PREFIX wiki: <http://oooooooooo.io/index.php/> SELECT * { ?s ?p "Blog" . }