Help:Constraint schema

Constraint schema
Shows constraint violation using the page indicator

A constraint defines a limitation or restriction of a value that can be assigned to a property or class hereby making it possible to shape1 its characteristics and the nature of the "fact" or claim.

The very first value restriction a user comes in contact is the definition of a type for a property to describe what a value literal is expected to represent such as a number, a date, a boolean, a page, or a simple text.

Additional declarative properties are available to further restrict and describe characteristics of values including :

Yet, adding more of these properties would make maintenance (technical as well as organizational) difficult therefore a different approach has been introduced with Semantic MediaWiki 3.1.

Constraint schema[edit]

Semantic MediaWiki 3.1.0Released on 23 September 2019 and compatible with MW 1.31.0 - 1.33.x. introduced the Constraint2 class together with some schema types (PROPERTY_CONSTRAINT_SCHEMA3 and CLASS_CONSTRAINT_SCHEMA) to codify and describe constraints using a more formalized and structured approach. Each of the mentioned type supports different properties that can be used to devise an individual schema that can shape a property or members of a class.

The more formalized approach is relying on a structured JSON format to define specific constraint characteristics and include things like:

  • allowed_namespaces3 specifies allowed namespaces
  • must_exists4 specifies that values need to exist before it can be used as annotation element for a property (values of Page type only).
  • non_negative_integer5 specifies that values need to be positive (including 0)
  • shape_constraint6 specifies that a property is expected to have a certain "shape" such as: max_cardinalit, property_type or min_textlength
  • single_value_constraint7 specifies that a property expects only a single value per entity
  • unique_value_constraint8 specifies that values should be unique across the wiki, that the value is likely to be different (distinct) from all other items
  • custom_constraint9 to be used to specify and implement custom constraints

The declarative Constraint schema10 property was introduced to declare and assign one or more schemata to an instance of a property or category to describe constraint requirements of values for a specific instance.

To help users effectively identify and eliminate constraint violations, an indicator11 is placed on top of an article that lists violations for those errors that were classified as constraint errors122.

See also[edit]

For users and admins
For developers


  1. ^
  2. a b  Semantic MediaWiki: GitHub pull request gh:smw:3830
  3. a b  |  Semantic MediaWiki: GitHub pull request gh:smw:3746
  4. ^  Semantic MediaWiki: GitHub pull request gh:smw:3981
  5. ^  Semantic MediaWiki: GitHub pull request gh:smw:3970
  6. ^  Semantic MediaWiki: GitHub pull request gh:smw:4069
  7. ^  Semantic MediaWiki: GitHub pull request gh:smw:4010
  8. ^  Semantic MediaWiki: GitHub pull request gh:smw:3908
  9. ^  Semantic MediaWiki: GitHub pull request gh:smw:3966
  10. ^  Semantic MediaWiki: GitHub pull request gh:smw:3829
  11. ^  Semantic MediaWiki: GitHub pull request gh:smw:3968
  12. ^  Semantic MediaWiki: GitHub pull request gh:smw:3792