VOS.VirtRDFViewDrupalScript

  • Topic
  • Discussion
  • VOS.VirtRDFViewDrupalScript(Last) -- DAVWikiAdmin? , 2017-06-29 07:39:48 Edit WebDAV System Administrator 2017-06-29 07:39:48

    Drupal Linked Data Views Script to set up your own instance


    use drupal;
    
    drop view poll_v;
    drop view forum_v;
    drop view blog_v;
    drop view blog_post_v;
    drop view forum_post_v;
    drop view poll_post_v;
    drop view aggregator_item_v;
    
    SPARQL
    prefix v: <http://www.openlinksw.com/schemas/drupal_v#>
    
    drop quad map virtrdf:Drupal .
    
    drop iri class v:user_iri .
    drop iri class v:iri .
    drop iri class v:feed_item_iri .
    drop iri class v:space_iri .
    drop iri class v:feed_iri .
    drop iri class v:poll_iri .
    drop iri class v:forum_iri .
    drop iri class v:blog_iri .
    drop iri class v:blog_post_iri .
    drop iri class v:forum_post_iri .
    drop iri class v:poll_post_iri .
    drop iri class v:mbox .
    ;
    
    
    use drupal;
    
    create procedure ts2date (in x int)
    {
      return dateadd ('second', x, stringdate ('1970-1-1'));
    };
    
    create view poll_v as select n.*, u.name from poll p, node n, users u where n.nid = p.nid and n.uid = u.uid;
    create view forum_v as select n.*, u.name from forum f, node n, users u where n.nid = f.nid and n.uid = u.uid;
    create view blog_v as select u.*, u.name||'\'s blog' as title_v from users u;
    create view blog_post_v as select nr.*, u.name, drupal..ts2date (n.created) as created, drupal..ts2date (n.changed) as changed
            from node n, node_revisions nr, users u where
            nr.nid = n.nid and nr.vid = n.vid and n.uid = u.uid and n.type in ('blog', 'story');
    create view forum_post_v as select nr.*, u.name, drupal..ts2date (n.created) as created, drupal..ts2date (n.changed) as changed
            from node n, node_revisions nr, users u where
            nr.nid = n.nid and nr.vid = n.vid and n.uid = u.uid and n.type = 'forum';
    create view poll_post_v as select nr.*, u.name, drupal..ts2date (n.created) as created, drupal..ts2date (n.changed) as changed
            from node n, node_revisions nr, users u where
            nr.nid = n.nid and nr.vid = n.vid and n.uid = u.uid and n.type = 'poll';
    create view aggregator_item_v as select *, drupal..ts2date(timestmp) as created from aggregator_item;
    
    grant select on poll_v to "SPARQL";
    grant select on forum_v to "SPARQL";
    grant select on blog_v to "SPARQL";
    grant select on blog_post_v to "SPARQL";
    grant select on forum_post_v to "SPARQL";
    grant select on poll_post_v to "SPARQL";
    grant select on aggregator_item_v to "SPARQL";
    grant execute on ts2date to "SPARQL";
    grant select on drupal..users to "SPARQL";
    grant select on drupal..aggregator_feed to "SPARQL";
    grant select on drupal..aggregator_item to "SPARQL";
    
    
    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 aowl: <http://atomowl.org/ontologies/atomrdf#>
    prefix v: <http://www.openlinksw.com/schemas/drupal_v#>
    
    create iri class v:user_iri "http://^{URIQADefaultHost}^/drupal/user/%U#this" (in user_name varchar not null) .
    create iri class v:iri "http://^{URIQADefaultHost}^/drupal/proxy/%s#this" (in uri varchar not null) .
    create iri class v:feed_item_iri "http://^{URIQADefaultHost}^/drupal/feed/item/%d#this" (in iid integer not null) .
    create iri class v:space_iri  "http://^{URIQADefaultHost}^/drupal/space/%s#this" (in uri varchar not null) .
    create iri class v:feed_iri "http://^{URIQADefaultHost}^/drupal/feed/%d#this" (in fid integer not null) .
    create iri class v:poll_iri "http://^{URIQADefaultHost}^/drupal/poll/%d#this" (in nid integer not null) .
    create iri class v:forum_iri "http://^{URIQADefaultHost}^/drupal/forum/%d#this" (in nid integer not null) .
    create iri class v:blog_iri "http://^{URIQADefaultHost}^/drupal/blog/%d#this" (in uid integer not null) .
    create iri class v:blog_post_iri "http://^{URIQADefaultHost}^/drupal/blog/%d/%d#this" (in uid integer not null, in nid integer not null) .
    create iri class v:forum_post_iri "http://^{URIQADefaultHost}^/drupal/forum/%d/%d#this" (in uid integer not null, in nid integer not null) .
    create iri class v:poll_post_iri "http://^{URIQADefaultHost}^/drupal/poll/%d/%d#this" (in uid integer not null, in nid integer not null) .
    create iri class v:mbox "mailto:%s" (in mail varchar not null) .
    
    alter quad storage virtrdf:DefaultQuadStorage
    
    from drupal.drupal.users as users
    from drupal.drupal.aggregator_feed as feed
    from drupal.DBA.aggregator_item_v as feed_item where (^{feed_item.}^.fid = ^{feed.}^.fid)
    from drupal.drupal.node as node
    from drupal.drupal.node_revisions as node_revisions
    from drupal.DBA.poll_v as poll
    from drupal.DBA.forum_v as forum
    from drupal.DBA.blog_v as blog
    from drupal.DBA.blog_post_v as blog_post
    from drupal.DBA.forum_post_v as forum_post
    from drupal.DBA.poll_post_v as poll_post
    
      {
        create virtrdf:Drupal as graph iri ("http://^{URIQADefaultHost}^/drupal_v") option (exclusive)
          {
            v:user_iri (users.name) a sioc:User as virtrdf:Drupal-User-cls ;
            sioc:name users.name as virtrdf:Drupal-User-name ;
            sioc:email v:mbox(users.mail) as virtrdf:Drupal-User-mail ;
            sioc:id users.uid as virtrdf:Drupal-User-sioc_id .
    
            v:feed_iri (feed.fid)
            a aowl:Feed as virtrdf:Drupal-Feed-cls ;
            aowl:title feed.title as virtrdf:Drupal-Feed-title ;
            aowl:link v:iri (feed.link) as virtrdf:Drupal-Feed-link ;
            dc:description feed.description as virtrdf:Drupal-Feed-desc .
    
            v:feed_iri (feed.fid)
            aowl:entry
            v:feed_item_iri (feed_item.iid) as virtrdf:Drupal-Feed-aowl-entry .
    
            v:feed_item_iri (feed_item.iid) a aowl:Entry as virtrdf:Drupal-FeedItem-cls ;
            aowl:title feed_item.title as virtrdf:Drupal-FeedItem-title ;
            aowl:link feed_item.link as virtrdf:Drupal-FeedItem-link ;
            sioc:id feed_item.iid as virtrdf:Drupal-FeedItem-sioc-id ;
            sioc:content feed_item.description as virtrdf:Drupal-FeedItem-sioc-content ;
            aowl:content feed_item.description as virtrdf:Drupal-FeedItem-aowl-content ;
            dct:created feed_item.created as virtrdf:Drupal-FeedItem-cr ;
            aowl:source
            v:feed_iri (feed.fid) as virtrdf:Drupal-FeedItem-aowl-src .
    
            v:poll_iri (poll.nid) a sioct:SurveyCollection as virtrdf:Drupal-Poll-cls ;
            sioc:id poll.nid as virtrdf:Drupal-Poll-sioc-id ;
            dc:title poll.title as virtrdf:Drupal-Poll-title ;
            dct:created poll.created as virtrdf:Drupal-Poll-cr ;
            dct:modified poll.changed as virtrdf:Drupal-Poll-mod ;
            sioc:has_owner v:user_iri (poll.name) as virtrdf:Drupal-Poll-owner.
    
            v:user_iri (poll.name) sioc:owner_of v:poll_iri (poll.nid) as virtrdf:Drupal-Poll-owner_of .
    
            v:blog_iri (blog.uid) a sioct:Weblog as virtrdf:Drupal-Blog-cls ;
            sioc:id blog.uid as virtrdf:Drupal-Blog-sioc-id ;
            dc:title blog.title_v as virtrdf:Drupal-Blog-title ;
            sioc:has_owner v:user_iri (blog.name) as virtrdf:Drupal-Blog-owner .
    
            v:user_iri (blog.name) sioc:owner_of v:blog_iri (blog.uid) as virtrdf:Drupal-Blog-owner_of .
    
            v:forum_iri (forum.nid) a sioc:Forum as virtrdf:Drupal-Forum-cls ;
            sioc:id forum.nid as virtrdf:Drupal-Forum-sioc-id ;
            dc:title forum.title as virtrdf:Drupal-Forum-title ;
            dct:created forum.created as virtrdf:Drupal-Forum-cr ;
            dct:modified forum.changed as virtrdf:Drupal-Forum-mod ;
            sioc:has_owner v:user_iri (forum.name) as virtrdf:Drupal-Forum-owner.
    
            v:user_iri (forum.name) sioc:owner_of v:forum_iri (forum.nid) as virtrdf:Drupal-Forum-owner_of .
    
            v:blog_post_iri (blog_post.uid, blog_post.nid) a sioct:BlogPost as virtrdf:Drupal-BlogPost-cls ;
            sioc:id blog_post.nid as virtrdf:Drupal-BlogPost-sioc-id ;
            dc:title blog_post.title as virtrdf:Drupal-BlogPost-dc-title ;
            sioc:content blog_post.body as virtrdf:Drupal-BlogPost-sioc-content ;
            dct:created blog_post.created as virtrdf:Drupal-BlogPost-cr ;
            dct:modified blog_post.changed as virtrdf:Drupal-BlogPost-mod ;
            sioc:has_container v:blog_iri (blog_post.uid) as virtrdf:Drupal-BlogPost-sioc-has_container ;
            sioc:has_creator v:user_iri (blog_post.name) as virtrdf:Drupal-BlogPost-owner .
    
            v:blog_iri (blog_post.uid) sioc:container_of v:blog_post_iri (blog_post.uid, blog_post.nid)
            as virtrdf:Drupal-BlogPost-container_of .
            v:user_iri (blog_post.name) sioc:creator_of v:blog_post_iri (blog_post.uid, blog_post.nid)
            as virtrdf:Drupal-BlogPost-creator_of .
    
            v:forum_post_iri (forum_post.uid, forum_post.nid) a sioc:Post as virtrdf:Drupal-ForumPost-cls ;
            sioc:id forum_post.nid as virtrdf:Drupal-ForumPost-sioc-id ;
            dc:title forum_post.title as virtrdf:Drupal-ForumPost-dc-title ;
            sioc:content forum_post.body as virtrdf:Drupal-ForumPost-sioc-content ;
            dct:created forum_post.created as virtrdf:Drupal-ForumPost-cr ;
            dct:modified forum_post.changed as virtrdf:Drupal-ForumPost-mod ;
            sioc:has_container v:forum_iri (forum_post.uid) as virtrdf:Drupal-ForumPost-sioc-has_container ;
            sioc:has_creator v:user_iri (forum_post.name) as virtrdf:Drupal-ForumPost-owner .
    
            v:forum_iri (forum_post.uid) sioc:container_of v:forum_post_iri (forum_post.uid, forum_post.nid)
            as virtrdf:Drupal-ForumPost-container_of .
            v:user_iri (forum_post.name) sioc:creator_of v:forum_post_iri (forum_post.uid, forum_post.nid)
            as virtrdf:Drupal-ForumPost-creator_of .
    
            v:poll_post_iri (poll_post.uid, poll_post.nid) a sioc:Poll as virtrdf:Drupal-PollPost-cls ;
            sioc:id poll_post.nid as virtrdf:Drupal-PollPost-sioc-id ;
            dc:title poll_post.title as virtrdf:Drupal-PollPost-dc-title ;
            sioc:content poll_post.body as virtrdf:Drupal-PollPost-sioc-content ;
            dct:created poll_post.created as virtrdf:Drupal-PollPost-cr ;
            dct:modified poll_post.changed as virtrdf:Drupal-PollPost-mod ;
            sioc:has_container v:poll_iri (poll_post.uid) as virtrdf:Drupal-PollPost-sioc-has_container ;
            sioc:has_creator v:user_iri (poll_post.name) as virtrdf:Drupal-PollPost-owner .
    
            v:poll_iri (poll_post.uid) sioc:container_of v:poll_post_iri (poll_post.uid, poll_post.nid)
            as virtrdf:Drupal-PollPost-container_of .
            v:user_iri (poll_post.name) sioc:creator_of v:poll_post_iri (poll_post.uid, poll_post.nid)
            as virtrdf:Drupal-PollPost-creator_of .
    
          }
      } .
    ;
    
    DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
        'drupal_rule2',
        1,
        '/drupal/([^#]*)',
        vector('path'),
        1,
        '/sparql?query=DESCRIBE+%%3Chttp%%3A//^{URIQADefaultHost}^/drupal/%U%%23this%%3E+FROM+%%3Chttp%%3A//^{URIQADefaultHost}^/drupal_v%%3E&format=%U',
        vector('path', 'path', '*accept*'),
        null,
        '(text/rdf.n3)|(application/rdf.xml)',
        2,
        null
        );
    
    DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
        'drupal_rule3',
        1,
        '/drupal/(user|post|site|proxy|wiki|forum|poll|blog|feed|space)/([^#]*)',
        vector('obj', 'path'),
        1,
        '/ode/index.html?uri=http%%3A//^{URIQADefaultHost}^/drupal/%U/%U%%23this',
        vector('obj', 'path'),
        null,
        '(text/html)|(\\*/\\*)',
        2,
        303
        );
    
    
    DB.DBA.URLREWRITE_CREATE_RULELIST (
        'drupal_rule_list1',
        1,
        vector (
                    'drupal_rule3',
                    'drupal_rule2'
              ));
    
    DB.DBA.VHOST_REMOVE (lpath=>'/drupal');
    DB.DBA.VHOST_DEFINE (lpath=>'/drupal', ppath=>'/vad/vsp/drupal/', is_dav=>0, vsp_user=>'dba', is_brws=>1, def_page=>'index.php',
        opts=>vector ('url_rewrite', 'drupal_rule_list1'));
    

    References