Help:Adding subobjects

Jump to: navigation, search
Adding subobjects
Create a subobject on a page
Further Information
Provided by: Semantic MediaWiki
Minimum version: 1.7.0
Maximum version: still supported
Function: yes
Tag: no
Name: #subobject
Table of Contents

The parser function #subobject allows SMW annotations to refer to objects that have their own property-value pairs just like wiki pages, but that do not actually have a page in the wiki. This can be used to "group" property-value pairs given on one page without requiring new auxiliary pages to be created. It also integrates the main functionality of the Semantic Internal Objects (SIO) extension into SMW (note the syntax differences below). The pages containing values set with this parser function are stored with special property Has subobject.


  • Like #set, #subobject is a form of silent annotation: it adds values to properties but does not print anything to the page.

Specifying multiple values

(1) Simply add multiple values for the same property:


(2) Multiple values using a pipe

Starting with SMW 1.8.0 multiple values may be set with "|" as a delimiter. This does not create new restrictions on values but provides a convenient short-cut. The following is the same as the above:


(3) Multiple values using a named separator

SMW 1.9.0 introduces |+sep=... to identify the separator (see a demo):


Note Note: To use a named separator is required if multiple values to a single property should be assigned to e.g. multi-instance templates.

Specifying an identifier

Unlike SIO, subobjects have a named 'identifier'. This can be used to ...

Named identifier

This subobject adds the street address to the page as a subobject which is identified by the name street address:

{{#subobject:street address
 |street number=10
 |street name=Parks Road
 |postcode=OX1 3QD

Anonymous identifier

SMW 1.8.0 supports anonymous identifiers (hash-numbering) for objects that do not use a named identifier. If two subobject entities are identical in content (meaning they build an identical hash key) within the same page then only one entity will be stored and available for query representation.


Specifying a sortkey

SMW 2.0 introduces |@sortkey=... allowing to to set an arbitrary sort value for a particular subobject. This will be treated case sensitive, i.e. values are stored as a "string" and further will not appear visible to the end-user. The subobject with a dedicated sortkey will work as a regular wiki page using a sortkey.

{{#subobject:street address
 |street number=10
 |street name=Parks Road
 |postcode=OX1 3QD

The sortkey is thus "A" for this suboject.


  • MediaWiki's native categories cannot be applied to a subobject. If you need the functionality of a category and cannot achieve this with traditional property-value pairs, there is still room for an alternative approach based solely on properties:
    • Name your category-like properties as you would name a category, e.g. "Property:Detective fiction".
    • The values used for this property need not concern us here.
    • Using Property:Subproperty of, you can arrange these category-like properties into a deeply nested hierarchy (e.g. "Property:Detective fiction" is a member of "Property:Crime fiction" is a member of "Property:Genres", etc.). In this way, you can closely mimic a category hierarchy.
    • While with a traditional category-based approach, you would query on [[Category:Crime fiction]] and retrieve only pages belonging to this category and its subcategories, you can now query on [[Crime fiction::+]] and retrieve pages as well as subobjects that belong to this property and its subproperties.

Querying for subobjects

Main page: Help:Subobjects and queries

Subobjects can be treated just like pages (but can't be associated with a given category). The simplest way to query for a set of subobjects is to ask for the existence of a property that is unique to the subobjects, e.g.

 |? street number
 |? street name

(assuming that all 'address' subobjects have the postcode property). For querying purposes, you can define a 'dummy' property for subobjects that you want to group together in this way, e.g. 'is address=1'.

For more information about subobjects and queries, see here.



Problem with subobjects that have a '=' character in a parameter value
See this issue for a workaround.

See also

This documentation page applies to all SMW versions from 1.8.0 to the most current version.
Other versions: 1.7.0 – 1.7.1       Other languages: de

Help:Adding subobjects en 1.8.0