Help:Property declaration

Jump to: navigation, search
Help:Property declarationOutdated properties

Table of Contents

This help page informs about how to declare properties. Semantic MediaWiki has several built-in datatypes from which we can choose for properties. For our previous population example, the appropriate datatype is Number. We want to assign to property "Has population" a special property that specifies it has the datatype "number". To support this, Semantic MediaWiki has a built-in special property called Has type. We use the same syntax for this special property as for any other property, so on the Property:Population page, we write the following which specifies the datatype of the property:

[[Has type::number]]

Semantic MediaWiki knows a number of special properties like Has type. Regardless of whether these properties have their own articles in the wiki, they have a special built-in meaning and are not evaluated like other properties.

Datatypes are very important for evaluating properties. Firstly, the data type determines how tools should handle the given values, e.g. for displaying values and sorting values in search results. Secondly, the data type is required to understand which values have the same meaning, e.g. the values "1532", "1,532", and "1.532e3" all encode the same number. Finally, some data types have special behavior, as will be described below. For these reasons, every property used should be defined with a data type.

The reason we didn't have to specify a data type for the "Is capital of" property above is that the default data type is Page, which displays as a link. Even though the datatype Page is the default, you should explicitly specify a datatype for every property, just to prevent confusion or later redefinition with an unintended type. It is also possible for the administrator of an SMW website to change the default datatype.

The same mark-up for properties that are links to pages also works for properties of other datatypes. Here are some more examples:

What it does What you type
Assign the value 1,234,567 to the property "Has population".
This country has a population of [[Has population::1,234,567]]."
Assign a numeric value, but showing different text in the article.
This country has a population of [[Has population::999,331|about a million]].
Specifying the type in a property's article, e.g.
This property is a number.
This property is a [[Has type::number]].
Display a web link by using a property of type "URL".
Find us online at [[Has website::]].
Display a "mailto" link by using a property of type "Email"
You can reach John at [[Has email]].

NoteNote:  One cannot include a full stop "." like in [[Foo.Bar::Baz]] in a property name since this conflicts with the syntax for creating propery chains.

List of datatypes

Using different datatypes, properties can be used to describe very different kinds of values. A complete list of all 14 datatypes provided by Semantic MediaWiki and 1 provided by other semantic extensions is available from special page "Types". The available datatypes are:

PageDatatypeDescriptionProvided by
Type Annotation URIAnnotation URIHolds URIs, but has some technical differences during export compared to the "URL" typeSemantic MediaWiki
Type BooleanBooleanHolds boolean (true/false) valuesSemantic MediaWiki
Type CodeCodeHolds technical, pre-formatted texts (similar to type Text)Semantic MediaWiki
Type DateDateHolds particular points in timeSemantic MediaWiki
Type EmailEmailHolds e-mail addressesSemantic MediaWiki
Type Geographic coordinateGeographic coordinateHolds coordinates describing geographic locationsSemantic Maps
Type Monolingual textMonolingual textTo associate a text value with a specific language codeSemantic MediaWiki
Type NumberNumberHolds integer and decimal numbers, with an optional exponentSemantic MediaWiki
Type PagePageHolds names of wiki pages, and displays them as a linkSemantic MediaWiki
Type QuantityQuantityHolds values that describe quantities, containing both a number and a unitSemantic MediaWiki
Type RecordRecordAllows saving compound property values that consist of a short list of values with fixed type and orderSemantic MediaWiki
Type Telephone numberTelephone numberHolds international telephone numbers based on the RFC 3966 standardSemantic MediaWiki
Type TemperatureTemperatureHolds temperature values (similar to type Quantity)Semantic MediaWiki
Type TextTextHolds text of arbitrary lengthSemantic MediaWiki
Type URLURLHolds URIs, URNs and URLsSemantic MediaWiki

Example Values and Formatting

Datatype Property Example value Query display Query display using #- (plain)
Annotation URI Property:Has annotation uri
Boolean Property:Has boolean true true true
Code Property:Has code
is preserved but macros are expanded. E.g:
Help:Property declaration
is displayed as the name of this page instead of FULLPAGENAME
is preserved but macros are expanded. E.g:
Help:Property declaration
is displayed as the name of this page instead of FULLPAGENAME
is preserved but macros are expanded. E.g:
Help:Property declaration
is displayed as the name of this page instead of FULLPAGENAME
Date Property:Has date 2015-05-22T17:32 22 May 2015 17:32:00 2015-05-22T17:32:00
EMail Property:Has email address
Geographic coordinate Property:Has coordinates 32° 42' 54", -117° 9' 44" 32° 42' 54", -117° 9' 44" 32° 42' 54", -117° 9' 44"
Number Property:Has number 47000.11 47,000.11 47000.11
Page Property:Has example Semantic MediaWiki Semantic MediaWiki Semantic MediaWiki
Quantity Property:Area 1052km²
406.177 sqmi
1,052 km²
406.177 sqmi
1052 km²
Record Property:Soccer result 22 March 2015 (Bayern München, Borussia Mönchengladbach, 0, 2) 22 March 2015 (Bayern München, Borussia Mönchengladbach, 0, 2) 22 March 2015 (Bayern München, Borussia Mönchengladbach, 0, 2)
Telephone number Property:Telephone number +1-800-225-5288 +1-800-225-5288 +1-800-225-5288
Temperature Property:Has temperatureExample 23°C
296.15 K
73.4 °F
533.07 °R
296.15 K
23 °C
73.4 °F
533.07 °R
296.15 K
Text Property:SomeProperty Did you create the page for Tokyo 東京 ? Yes ✓ Did you create the page for Tokyo 東京 ? Yes ✓ Did you create the page for Tokyo 東京 ? Yes ✓
URL Property:Has_URL

Enumerations and "Allows value"

In addition to assigning a datatype to a property, you can also restrict the allowed values to a given set (like a whitelist for property inputs). This is done by using the special property Property:Allows value to enumerate its permitted values. This works for every datatype.


The datatype Quantity allows a unit after the numeric value to distinguish values (e.g. "30 miles" versus "42 km"). To support automatic conversion and multiple unit formats, one needs to declare each supported unit as described in the documentation on custom units. Property values are then automatically converted between different units, so that users are free to use their preferred unit in each article yet still query and compare with property values in other articles.

Handling in earlier versions

Up to Semantic MediaWiki 1.5.6, datatypes had individual wiki pages in their own namespace called "Type". This was abolished to reduce the number of extra namespaces. You may still find expressions like "Type:Number" in places in this wiki. Both writings are accepted for assigning a datatype to a property.

In very early versions of SMW, properties with datatype Page were known as relations and only those used double colons (::) as the separator between property name and link text. All other properties (numbers, text, etc.) were known as attributes and had to use colon equals (:=) as the separator.

See Upgrading from SMW 0.7 to SMW 1.0 for other changes in SMW 1.0; if you're still using the older version of SMW, see semweb:Help:Annotation (SMW0.7) for documentation of Annotations in version 0.7.

Special properties

We mentioned the special property Property:Has type that you use to define the data type of a property. SMW has other predefined special properties that have special meaning (even if you do not create property pages for them in your wiki). You cannot use these names for your own properties, but since SMW 1.4.0 you can use them in browsing and querying interfaces just like all other properties. For more information, see special properties help and the individual property pages.