Extension:Semantic Internal Objects

Semantic Internal Objects (SIO) is an extension to Semantic MediaWiki (SMW). It provides two parser functions,  and , both of which are used to define so-called "internal objects" (now "subobjects") within the Semantic MediaWiki system. SIO's main contribution to SMW is in the introduction of certain compound types of information, sometimes known as 'n-ary relations', which ensures that pages can include more than one group of associated property-value pairs. SIO lets you define a two-dimensional table of information on a single page, with a call to  or   being used to store each row.

This functionality has been adopted by SMW so that  and   are now broadly equivalent to SMW's own parser functions   (introduced in ) and   (since ) respectively, both of which are used to define "subobjects". Since SIO 0.7, the differences have become even less significant as SIO's parser functions now serve as a wrapper for SMW subobjects, which are called internally with.

Historical outline

 * The functionality of parser function  was introduced into SMW core with parser function   in.
 * The functionality of parser function  was applied to   in.
 * As of v0.7, SMW subobjects are called when using SMWSQLStore3 (for and later).

SIO's  was created as a solution to a problem with  : in versions of SMW prior to 1.9,   allows you to store recurrent events but individual instances of an event can't be (easily) separated from one another. SIO defines a separate "internal object" for each instance of an event, with a different date for each, and so allows for more precise querying and display of only those event instances that fall within a certain date range. As of SMW 1.9, however, SMW's  adopts a similar approach by defining a separate subobject for each instance of an event. The two parser functions behave alike and they both allow you to separate individual instances of an event.

Syntax
The (abridged) syntax for  is:

Example
Here is an example of such a call, on a page that defines a recurring event:

Using

You could then display a table of all the events that happened in a certain week, along with their date, with the following call:

Calling for events happening in a certain week

Known issues

 * Having more than one call to  in the same page sometimes causes duplicate objects to be stored.