<docbook><section><title>VirtRDFViewMediaWikiScript</title><bridgehead class="http://www.w3.org/1999/xhtml:h2"><ulink url="MediaWiki">MediaWiki</ulink> Linked Data Views Script to set up your own instance</bridgehead>
<programlisting>use mediawiki;

drop view mw_users_rdf;
drop view mw_posts_rdf;
drop table mw_site_rdf;


sparql
prefix v: &lt;http://www.openlinksw.com/schemas/mw#&gt;
drop quad map virtrdf:MediaWiki .
drop iri class v:user_iri .
drop iri class v:iri .
drop iri class v:post_iri .
drop iri class v:site_iri .
drop iri class v:forum_iri .
drop iri class v:mbox .
;

use mediawiki;

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

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


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

create view 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,
        user_name,
        url,
        concat (url, &#39;/&#39;, page_title) as post_url,
        name
        from
        mediawiki..page, mediawiki..revision, mediawiki..&quot;text&quot;, mediawiki..&quot;user&quot;, mediawiki..mw_site_rdf
        where page_latest = rev_id and rev_text_id = old_id and rev_user = user_id;


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

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

create iri class v:user_iri &quot;http://^{URIQADefaultHost}^/mediawiki/user/%U#this&quot; (in user_name  varchar not null) .
create iri class v:iri &quot;http://^{URIQADefaultHost}^/mediawiki/proxy/%s#this&quot; (in opluri varchar not null).
create iri class v:post_iri &quot;http://^{URIQADefaultHost}^/mediawiki/post/%U#this&quot; (in post_title
 varchar not null) .
create iri class v:site_iri  &quot;http://^{URIQADefaultHost}^/mediawiki/site/%U#this&quot; (in title varchar not null) .
create iri class v:forum_iri &quot;http://^{URIQADefaultHost}^/mediawiki/wiki/%U#this&quot; (in title varchar not null) .
create iri class v:mbox &quot;mailto:%s&quot; (in mail varchar not null) . 

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

        v:forum_iri (mediawiki.DBA.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) .

        v:user_iri (mediawiki.DBA.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 .

        v:post_iri (mediawiki.DBA.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 .

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

      }
  } .
;

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

DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
    &#39;mw_rule3&#39;,
    1,
    &#39;/mediawiki/(user|post|site|proxy|wiki)/([^#]*)&#39;,
    vector(&#39;obj&#39;, &#39;path&#39;),
    1,
    &#39;/ode/index.html?uri=http%%3A//^{URIQADefaultHost}^/mediawiki/%U/%U%%23this&#39;,
    vector(&#39;obj&#39;, &#39;path&#39;),
    null,
    &#39;(text/html)|(\\*/\\*)&#39;,
    0,
    303
    );


DB.DBA.URLREWRITE_CREATE_RULELIST (
    &#39;mw_rule_list1&#39;,
    1,
    vector (
                &#39;mw_rule3&#39;,
                &#39;mw_rule2&#39;
          ));

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

</programlisting><para> </para>
<bridgehead class="http://www.w3.org/1999/xhtml:h3">References</bridgehead>
<itemizedlist mark="bullet" spacing="compact"><listitem><ulink url="MediaWikiSIOCRef">MediaWiki SIOC Reference</ulink> </listitem>
<listitem><ulink url="http://ods.openlinksw.com/dataspace/dav/wiki/ODS/OdsIntegrationMediaWiki">MediaWiki Installation Guide</ulink> </listitem>
</itemizedlist></section></docbook>