[Home]ModWiki

MeatballWiki | RecentChanges | Random Page | Indices | Categories

RDF Site Summary 1.0 Module: Wiki


Table of Contents

1. Abstract
2. Status
3. Introduction
4. Motivation
5. User stories
6. Syntax
6.1. Namespace
6.2. Wiki elements
6.3. Recommended usage
7. Example
8. Discussion


1. Abstract

RSS 1.0 Wiki Module is an extension module for RSS to describe metadata particular to wiki applications. As such it's an XML application conforming to the W3C's RDF Specification and the RSS specification of the RSS-DEV Working Group.

2. Status

Proposed

3. Introduction

RSS 1.0 Wiki Module is an extension module for [RSS] to describe metadata particular to wiki applications. As such it's an XML application conforming to the W3C's [RDF] Specification and the RSS specification of the RSS-DEV Working Group.

The RSS 1.0 Wiki Module augments the [RSS core] and [Dublin Core] module's metadata with channel-level and item-level elements specific to wiki data. These elements are based on what is commonly shown on RecentChanges pages of many wiki sites. For your quick reference an example is given at [1].

Discussion about this module takes place at ModWikiDiscussion.

4. Motivation

A logical extension to this module is the ability to export the complete content of a WikiPage in a standard format as well. That however is not within the scope of this specification. Discussion about such an extension takes place at WikiInterchangeFormat.

5. User stories

In the tradition of Wiki:UserStory, this is a list of data that people feel is necessary to send in a RichSiteSummary.

RSS channel meta-data:

RSS item meta-data

6. Syntax

The Wiki module is built upon the following:

Please consult those before implementing the Wiki module.

Mime Type
When serving an RSS document the mimetype recommended to use is application/xml.

Is this still accurate? - http://blogs.law.harvard.edu/crimson1/2004/05/06#a1519

URL
The URL pointing to an RSS document does not need a specific extension. Either .rdf or .xml is recommended, but e.g. http://mysite.com/MyPage.xml?anyparam=ok is also possible.

6.1. Namespace

The URI of the namespace for all Wiki elements is:

  http://www.usemod.com/cgi-bin/mb.pl?ModWiki or http://purl.org/rss/1.0/modules/wiki/

Note: the old URL (http://purl.org/rss/1.0/modules/wiki/) is 404ing. This will cause any feed using it to fail validation at feedvalidator.org. Until such time as the URL is fixed, you should use the URL of this page as the namespace.

If you change the URL root, you break forwards and backwards compatibility with all correct parsers of your feed, because they will not understand the URLs you are using. We should fix the purl.org link, not break feed compatibility.

That the purl.org link needs fixing goes without saying.

On the other hand, I have to disagree with your comment about compatibility; "correct" parsers do not "understand" xmlns: URLs at all. This is demonstrated by the fact that [presumably] 100% of ModWiki-enabled feeds are using a dead URL as a namespace prefix. You could redefine the URL as 'http://example.com/' if you wished without making a difference; xmlns prefixes serve as pointers to schema definition documents (of which at present this page seems to serve for ModWiki). The only thing that might break would be if you were trying to explore the schema with a tool like [SWOOP]; but, then again, given that the URL was dead in the first place it was broken already! A parser only cares that there's consistent usage of prefixes, not what the prefixes expand to. If your parser has that URL hardcoded in it for any reason, it's broken. -- EarleMartin

If I talk about Wolfgang Amadeus Mozart, does it matter that he's dead? No. It makes no sense to start attributing his works to an alive composer instead! The point is the name: if we start changing the name, we break compatibility. RDF does not demand that a URL can be resolved. Indeed, it doesn't care. All that matters is that the URL doesn't change.

What prefixes expand to is 100% the point. The URL is the predicate. If your parser relies on the abbreviated prefix for any reason, it's broken by the RDF specs. And RSS 1.0 is RDF. -- ChrisPurcell

It's not a case of the composer being dead, it's the work that's dead. It's a case of pointing a library visitor to a book of Mozart pieces that actually exists, as opposed to one that got lost and is known not to be in the library any more.

You seem to be arguing against yourself; you say that "what prefixes expand to is 100% the point" and yet you say it doesn't matter whether what the prefix expands to is dead or not! If your namespace doesn't actually exist, your RDF is semantically worthless and might as well be completely arbitrary XML. A predicate defined by a non-existent resource is an empty predicate. Hence my changing the URL to point to this page, which at least contains a human-readable description of those predicates. I would note, though, that that is very much a bottom-of-the-barrel temporary solution, because this page does not actually contain a parseable schema document. Until one exists, the ModWiki specification is useless as a Semantic Web format. -- EarleMartin

All I can suggest is that you go learn about RDF. Try the semantic-web@w3.org archives. -- ChrisPurcell

The PURL currently points to the right place, apparently, which is the RSS module directory. It used to point to OpenWiki, I believe. Another option is to contact the webmaster at the target of the PURL and put copy of or a link to this page. -- SunirShah

Mail sent. Will let you know. Who owns the PURL? By the way, the namespace might be better hosted at xmlns.com, which seems more [reliable] than web.resource.org, in addition to being designed specifically for XML namespaces - it's run by Dan Brickley, who's one of the W3C's core RDF developers. -- EM

6.2. Wiki elements

<interwiki>

The value of the MeatBall:InterWiki moniker (an abbreviated name) used to refer to the source wiki.

 Syntax: <interwiki>{interwiki_moniker}</interwiki>
 Requirement: Optional; if present it must be part of the <channel> element 
              from the RSS Core.
 Model: (#PCDATA)
 Comments: See paragraph "Recommended Usage" for extra notes.
 Example:
        <rss:channel rdf:about="http://openwiki.com">
            ...
            <wiki:interwiki>OpenWiki</wiki:interwiki>
        </rss:channel>

The rss:link property may be used to indicate the MeatBall:InterWiki prefix. (The InterWiki prefix, when prepended to a wiki page name, gives the URL to the wiki page.) For best compatibility with non-RDF based parsers, the following syntax is recommended:

        <rss:channel rdf:about="http://openwiki.com">
            ...
            <wiki:interwiki>
                <rdf:Description rss:link="http://openwiki.com/?">
                    <rdf:value>OpenWiki</rdf:value>
                </rdf:Description>
            </wiki:interwiki>
        </rss:channel>

<host>

The host (HTTP client) from which the wiki page was edited.

 Syntax: <host>{ip_or_hostname}</host>
 Requirement: Optional; if present it must be part of the <contributor> element 
              from the Dublin Core Module.
 Model: (#PCDATA)
 Comments: See paragraph "Recommended Usage" for extra notes.
 Example:
        <dc:contributor>
            <rdf:Description link="http://openwiki.com/?MaryMcConnell"
                             wiki:host="192.168.1.10">
                <rdf:value>Mary McConnell</rdf:value>
            </rdf:Description>
        </dc:contributor>

(Expand on acceptable formats. Are mangled IP's, e.g. "192.168.1.xxx" okay?)

<version>

The version of the page.

 Syntax: <version>{page_version}</version>
 Requirement: Optional
 Model: (#PCDATA)
 (Suggested) Maximum Length: 30

<status>

The status of the change to the page.

 Syntax: <status>{status_value}</status>
 Requirement: Optional
 Model: ('new' | 'updated' | 'deleted')

<importance>

The importance of the change to the page.

 Syntax: <importance>{importance_value}</importance>
 Requirement: Optional
 Model: ('major' | 'minor')

<diff>

The URL that will show the difference between a previous version and the current version of the page.

To which exact previous version of a page the current version is compared is decided by the wiki application providing the URL. Usually it will be the previous version, but other possibilities include the previous major version or the previous author version.

 Syntax: <diff>{diff_link}</diff>
 Requirement: Optional
 Model: (#PCDATA)
 (Suggested) Maximum Length: 500

<history>

The URL to a list showing the history of changes for the page.

 Syntax: <history>{history_link}</history>
 Requirement: Optional
 Model: (#PCDATA)
 (Suggested) Maximum Length: 500

6.3. Recommended usage

Item URIs
There must (should?) be a one-to-one mapping between the URIs (used in the rdf:about attributes) of the rss:items and the triples, ( wiki, page, revision ). In particular, this means that the URIs must (should?) be unique to a particular page revision.

Use of dc:date within rss:item
The use of the dc:date property for rss:items is optional but highly encouraged (particularly when the Wiki module is used to list RecentChanges.) If used, its value must be the modification time of the corresponding wiki page. It is recommended that dc:date be specified to minute precision or better. See [W3CDTF] for acceptable formats.

Use of dc:contributor within rss:item
The dc:contributor property for rss:items is used to indicate the author, or editor of a wiki page revision. It's value can be the authors name, or for anonymous authors, the HTTP client hostname, IP number, or some mangling of any of those.

   <rss:item rdf:about="http://openwiki.com/ow.asp?p=SandBox&version=23">
     ...
     <dc:contributor>Joe User</dc:contributor>
   </rss:item>

The rss:link property can be used to indicate a link to a document containing information about the author, and the wiki:host property can be used to indicate the HTTP client from which the author committed the edit. If either of these properties are used, the following syntax is recommended, for best compatibility with older, non-RDF aware parsers:

   <rss:item rdf:about="http://openwiki.com/ow.asp?p=SandBox&version=23">
     ...
     <dc:contributor>
       <rdf:Description rss:link="http://openwiki.com/?MaryMcConnell"
                        wiki:host="192.168.1.10">
         <rdf:value>Mary McConnell</rdf:value>
       </rdf:Description>
     </dc:contributor>
   </rss:item>

7. Example


<?xml version="1.0" encoding="ISO-8859-1"?>
<rdf:RDF
     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
     xmlns="http://purl.org/rss/1.0/"
     xmlns:rss="http://purl.org/rss/1.0/"
     xmlns:dc="http://purl.org/dc/elements/1.1/"
     xmlns:wiki="http://purl.org/rss/1.0/modules/wiki/"
>
    <channel rdf:about="http://openwiki.com">
        <title>OpenWiki</title>
        <link>http://openwiki.com</link>
        <description>Bringing XML to the wiki world.</description>
        <wiki:interwiki>
            <rdf:Description rss:link="http://openwiki.com/?">
                <rdf:value>OpenWiki</rdf:value>
            </rdf:Description>
        </wiki:interwiki>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="http://openwiki.com?p=SandBox&amp;version=23"/>
            </rdf:Seq>
        </items>
    </channel>

    <item rdf:about="http://openwiki.com/ow.asp?p=SandBox&amp;version=23">
        <title>SandBox</title>
        <link>http://openwiki.com/?SandBox</link>
        <description>Added example of numbered lists</description>
        <dc:date>2001-11-25T15:01:00+01:00</dc:date>
        <dc:contributor>
            <rdf:Description link="http://openwiki.com/?MaryMcConnell"
                             wiki:host="192.168.1.10">
                <rdf:value>Mary McConnell</rdf:value>
            </rdf:Description>
        </dc:contributor>
        <wiki:version>v23</wiki:version>
        <wiki:status>updated</wiki:status>
        <wiki:importance>major</wiki:importance>
        <wiki:diff>http://openwiki.com/?p=SandBox&amp;a=diff</wiki:diff>
        <wiki:history>http://openwiki.com/?p=SandBox&amp;a=changes</wiki:history>
    </item>
</rdf:RDF>

8. Discussion

Discussion about this module takes place at ModWikiDiscussion.


CategoryWikiTechnology CategoryRecentChanges CategoryWikiStandard

Discussion

MeatballWiki | RecentChanges | Random Page | Indices | Categories
Edit text of this page | View other revisions
Search: