Concepts

From semantic-mediawiki.org
Table of Contents

It is possible to store queries in Semantic MediaWiki on dedicated pages, called concepts. These pages can be viewed as "dynamic categories", i.e. as collections of pages that are not created manually, but that are computed by SMW from the description given by a query. An example could be the concept of European cities. In traditional MediaWiki installations, one may have a category called European cities that holds all such cities. In SMW, one would instead define the concept "European cities" by saying that it contains all cities that are located in Europe. No city page needs to be changed, and yet one can create many concepts about cities (such as "capital", "Italian city", or "large coastal city located at a river").

Creating a concept

A concept is a page in the Concept: namespace that is always described by a semantic query, as explained in Semantic search. For example, a concept called "Concept:Semantic MediaWiki Cons 2012" describes Semantic MediaWiki Cons in 2012. Its concept page contains the following text to do that:

{{#concept:
 [[Category:Event]]
 [[Has planned start::> Jan 1 2012]]
 [[Has planned finish::< Dec 31 2012]] 
 |Semantic MediaWiki Cons in the year 2012 that have been announced on this wiki.
}}

The parser function #concept is used to define concepts. It's first parameter is a concept definition. It selects pages by applying three selection steps:

  1. the page has to be in the Category:Event category
  2. the Property:Has planned start has to have a value later than 2012-01-01
  3. the Property:Has planned finish has to have a value earlier than 2012-12-31

It's second parameter is a short text that describes the concept. This description is optional and can also be left away. It is exploited in some uses of concepts in Semantic MediaWiki to have a concise short description of the concept (e.g. as a default description in RSS feeds). The complete concept page will then show this data, and give a preview of the results.

It is possible to have other content on the concept page as well. Any normal wiki text can go before and after the use of #concept but it will not have any effect on the definition of the concept. The #concept parser function can only be used on pages in the Concept: namespace, and it can only be used once on each such page.

Using a concept

Concept pages as such can be browsed to view the contents of some concept, similar to category pages. But they can also be used in other semantic queries just like categories. For example, the following query would show all pages in the above concept of events and show where the event was located:

Syntax
{{#ask:
 [[Concept:Semantic MediaWiki Cons 2012]]
 |?Has location=Location
 |format=table
 |headers=plain
 |mainlabel=Event
}}
Result
EventLocation
SMWCon Fall 2012Cologne, Germany
SMWCon Spring 2012Carlsbad, CA, USA

Note that this would look almost the same if we would have a category called "Semantic Web events 2012". Therefore, concepts are also like stored queries that can be reused as a kind of variable in other queries if desired.

Inline queries may also use concepts, and in some cases even the concept definition is used to beautify an output. Concept definitions are also included in SMW's RDF export in form of OWL class descriptions, so that other Semantic Web tools can download and reuse the concept descriptions.

Using concepts with Page Forms

Concepts are also a useful feature in conjunction with the extension "Page Forms"Forms for adding and editing pages with and without semantic data extension:

  1. they can be used to define the set of values suggested through autocompletion. See this help page
  2. they can also be used as a "human-readable" argument in a query form. See this help page

Concepts within concepts

Since Semantic MediaWiki 2.1.0Released on 19 January 2015 and compatible with MW 1.19.0 - 1.24.x. it is possible to use concepts within concepts,1 i.e. if one creates concepts Concept:Talk as

{{#concept:
 [[Has_talk_type::+]]
 |Talks of different types
}}

and

Concept:Tutorial as

{{#concept:
 [[Has_talk_type::Tutorial]]
 |Tutorial
}}

then Concept:SMWCon with

{{#concept:
 [[Concept:Event]]
 [[Has conference type::SMWCon]]
 |Semantic MediaWiki Conferences
}}

and concept Concept:SMWCon Talks with

{{#concept:
 [[Concept:Talk]]
 [[Has conference::~SMWCon*]]
 |Talks at an SMWConference
}}

You can also combine concepts e.g. Concept:Tutorial at SMWCon

{{#concept:
 [[Concept:SMWCon Talks]]
 [[Concept:Tutorial]]
 |Tutorials at SMW Conferences
}}

Caching a concept

To improve performance it is advised to implement concept caching on the wiki. See this help page on how to administer this as a site administrator.

References

  1. ^  Semantic MediaWiki: GitHub pull request gh:smw:546