Semantic Mediawiki and the Semantic Web

From zooid Wiki
Revision as of 14:38, 25 September 2009 by DavidM (talk | contribs)
Jump to navigation Jump to search

Following Web development for 15 years, the Semantic Web has always been in the background. Today XML is commonly used as an interchange language between applications, Web Services are used by systems requiring rich data exchange, and REST is used as a lighter weight exchange system. All these elements contribute to the SemWeb. Yet providing a practical way to create semantic documents is difficult for the typical end user. Most SemWeb approaches use very explicit, requiring linked codes that are painful to enter, so clunky forms based interfaces are often used to develop documents.

Contrast this with the fluidity of wikis, a giant force in the development of the participatory Web. A classic wiki allows anyone to edit pages, with a full 'audit trail.' In creating those pages, hypertext databases can be easily created, with conventions allowing easy organization of documents, and functions like "what links here" enable discovery navigation.

However, to best use a wiki today (rather than using it as a Web based version of MS Word with hyperlinks), one often should use the low level wiki markup. Many people are afraid of working in text, but it adds a lot of fluidity. Over time, we should start to see better 'rich' interfaces, as well as the common pattern of an inexperienced user adding some information, and an expert adding semantic markup. But it's always going to be a benefit to have an idea of how the underlying markup works, similar to how a Web developer knows how a Web page is composed.

As an example, Wikipedia allows easily adding categories, which adds an incredible value to pages. The corpus becomes a set of resources that can be organized from any perspective. A random article is not just about an actress, it is also about 1907 births, 1976 deaths, and deaths from myocardial infarction.

Semantic Mediawiki takes this one step farther, so that the encodings apply directly to the text. Rather than adding a category, one adds a property or relationship.

Looking at the following text, we see lots of opportunties for markup:

 Phyllis Konstam (14 April 1907 – 20 August 1976) 
 was an English film actress.
 She was born in London and died in Somerset
 from a heart attack.

In markup, this can look like:

  Phyllis Konstam ([[born::14 April 1907]] – [[died::20 August 1976]]) 
  was an [[is from: England | English]] [[is a::film actress]].
  She was born in [[born in::London]] and died in [[died in::Somerset]] 
  from a [[died of::heart attack]].

Oh no! Look at all those strange symbols! Well, actually there are just a few and they add a lot of value (and there's a forms-based interface as well). Not only do you not have to add your subject to each of those categories, anyone can also re-use this information on other pages, for embedded queries and views.

I've entered actors using the above syntax. I can query them in embedded views:

 BornDiedIs fromDied inDied of
Arnold Bush3 April 191120 July 1996EnglandHertfordshireDancing accident
Bob Herrelsmorm9 April 190720 August 1976London, UKMysterious causes
Bob Newhart1 June 1942United States
Christina Poulet14 April 190720 August 1976Somerset, UKStage fright
Katherine Cardiff11 April 190120 July 1996London, UKDancing accident
Paul Devonshire10 October 191110 September 1986Scotland, UKPolo accident

The query is phrased as follows:

  {{ #ask: [[born::+]] <-- ask for all entities that have a born field
  |?born
  |?died
  |?is from
  |?died in <-- include these ?fields in the output
  |?died of
  }}

The query will always show the latest information, you'll also see some entries created later in these pages. Fields or parameters can be added easily. You can view the source (edit) of any page to see how queries are composed.

 Next: SMW map