You are here:
/ Dashboard / Main / VirtRDFViewMediaWiki

RDF View for MediaWiki


use mediawiki;

create table mediawiki.mediawiki.mw_site_rdf (url varchar primary key, name varchar, description long varchar);
insert soft mediawiki.mediawiki.mw_site_rdf values ('http://'||cfg_item_value (virtuoso_ini_path (), 'URIQA', 'DefaultHost')||'/mediawiki', 'DemoWiki', '');

create procedure w3c_date (in x decimal)
{
  declare r any;
  r := sprintf ('%fZ', x/1000000);
  return replace (r, '.', 'T');
};


create view mediawiki.mediawiki.mw_users_rdf as
select user_id, user_name, user_email as user_email, sha1_digest (user_email) as user_email_sha1
from mediawiki.mediawiki.users;

create view  mediawiki.mediawiki.mw_posts_rdf as select
	page_title as post_title,
	page_id as post_id,
	old_text as post_content,
        mediawiki..w3c_date (rev_timestamp) as post_date_gmt,
	mediawiki..w3c_date (page_touched) as post_modified_gmt,
	coalesce (user_name, 'anonymous') as user_name,
       	url,
	concat (url, '/', page_title) as post_url,
	name
	from
	(select page_title, page_id, old_text, rev_timestamp, page_touched, user_name from
	mediawiki.mediawiki.page join mediawiki.mediawiki.revision on (page_latest = rev_id) join mediawiki.mediawiki.texts on (rev_text_id = old_id)
	left join mediawiki.mediawiki.users on (rev_user = user_id)) sub,  mediawiki.mediawiki.mw_site_rdf;


grant select on mediawiki.mediawiki.mw_users_rdf to "SPARQL";
grant select on mediawiki.mediawiki.mw_posts_rdf to "SPARQL";
grant select on mediawiki.mediawiki.mw_site_rdf to "SPARQL";
grant execute on mediawiki..w3c_date to "SPARQL";

--grant insert,select,update,delete on DB.DBA.NEWS_MULTI_MSG to wikiuser;
--grant insert,select,update,delete on DB.DBA.NEWS_GROUPS to wikiuser;
--grant insert,select,update,delete on DB.DBA.NEWS_MSG to wikiuser;
--grant insert,select,update,delete on DB.DBA.HTTP_ACL to wikiuser;

sparql
prefix sioc: <http://rdfs.org/sioc/ns#>
prefix sioct: <http://rdfs.org/sioc/types#>
prefix atom: <http://atomowl.org/ontologies/atomrdf#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
prefix foaf: <http://xmlns.com/foaf/0.1/>
prefix dc: <http://purl.org/dc/elements/1.1/>
prefix dct: <http://purl.org/dc/terms/>
prefix skos: <http://www.w3.org/2004/02/skos/core#>
prefix geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
prefix wikiont: <http://sw.deri.org/2005/04/wikipedia/wikiont.owl#>
prefix v: <http://www.openlinksw.com/schemas/mw#>

create iri class v:user_iri "http://^{URIQADefaultHost}^/mediawiki/user/%U#this" (in user_name varchar not null) .
create iri class v:post_iri "http://^{URIQADefaultHost}^/mediawiki/post/%U#this" (in post_title varchar not null) .
create iri class v:site_iri  "http://^{URIQADefaultHost}^/mediawiki/site/%U#this" (in title varchar not null) .
create iri class v:forum_iri "http://^{URIQADefaultHost}^/mediawiki/wiki/%U#this" (in title varchar not null) .

create iri class v:iri "http://^{URIQADefaultHost}^/about/rdf/%s#this" (in uri varchar not null) .
create iri class v:mbox "mailto:%s" (in mail varchar not null) .

alter quad storage virtrdf:DefaultQuadStorage
  {
    create virtrdf:MediaWiki as graph iri ("http://^{URIQADefaultHost}^/mw_v")
      {
	v:site_iri (mediawiki.mediawiki.mw_site_rdf.name) a sioc:Space ;
	dc:title name ;
	sioc:link v:iri (url) ;
	sioc:host_of v:forum_iri (name) ;
	rdfs:isDefinedBy sioc: .

        v:forum_iri (mediawiki.mediawiki.mw_site_rdf.name) a sioc:Container ;
	a sioct:Wiki ;
	dc:title name ;
	sioc:description description ;
	sioc:link v:iri (url) ;
	sioc:has_host v:site_iri (name) ;
	rdfs:isDefinedBy sioc: .

	v:user_iri (mediawiki.mediawiki.mw_users_rdf.user_name) a sioc:User ;
	sioc:id user_name ;
	sioc:name user_name ;
	sioc:email v:mbox (user_email) ;
	sioc:email_sha1 user_email_sha1 ;
	rdfs:isDefinedBy sioc: .

        v:post_iri (mediawiki.mediawiki.mw_posts_rdf.post_title) a sioc:Item ;
	a sioc:Post ;
	a wikiont:Article ;
	dc:title post_title ;
	dct:created post_date_gmt ;
	dct:modified post_modified_gmt ;
	sioc:has_creator v:user_iri (user_name) ;
	sioc:has_container v:forum_iri (name) ;
	sioc:content post_content ;
	sioc:link v:iri (post_url) ;
	sioc:id post_id ;
	rdfs:isDefinedBy sioc: .

       v:forum_iri (mediawiki.mediawiki.mw_posts_rdf.name) sioc:container_of v:post_iri (post_title) .
       v:user_iri (mediawiki.mediawiki.mw_posts_rdf.user_name) sioc:creator_of v:post_iri (post_title) .

      }
  } .
;

DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
    'mw_rule2',
    1,
    '/mediawiki/([^#]*)',
    vector('path'),
    1,
    '/sparql?query=DESCRIBE+%%3Chttp%%3A//^{URIQADefaultHost}^/mediawiki/%U%%23this%%3E+FROM+%%3Chttp%%3A//^{URIQADefaultHost}^/mw_v%%3E&format=%U',
    vector('path', '*accept*'),
    null,
    '(text/rdf.n3)|(application/rdf.xml)',
    2,
    null
    );

DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
    'mw_rule3',
    1,
    '/mediawiki/(user|post|site|proxy|wiki)/([^#]*)',
    vector('obj', 'path'),
    1,
    '/about/html/http://^{URIQADefaultHost}^/mediawiki/%U/%U%%23this',
    vector('obj', 'path'),
    null,
    '(text/html)|(\\*/\\*)',
    0,
    303
    );


DB.DBA.URLREWRITE_CREATE_RULELIST (
    'mw_rule_list1',
    1,
    vector (
  	 	'mw_rule3',
  	 	'mw_rule2'
	  ));

DB.DBA.VHOST_REMOVE (lpath=>'/mediawiki');
DB.DBA.VHOST_DEFINE (lpath=>'/mediawiki', ppath=>'/vad/vsp/mediawiki/', is_dav=>0, vsp_user=>'dba', is_brws=>1, def_page=>'index.php',
    opts=>vector ('url_rewrite', 'mw_rule_list1'));

Virtuoso and the Virtuoso Website are Copyright (C) OpenLink Software 2006-
SourceForge.net Logo