Help:Contributing/semanticDynamicContent

From Wikibase
Revision as of 09:14, 10 September 2026 by SeedBot (talk | contribs) (Document the {{#osm-place:jurisdiction}} mode for legal Source: pages (via update-page on MediaWiki MCP Server))
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Languages: English · français · Esperanto

Semantic dynamic content renders item data on a wiki page at view time. Edit the item once; every page that renders its statements updates. Every example below is live against real items.

The two parser functions

Two of the Wikibase client's parser functions are enabled on this wiki. Both take a property — a P-number or its label — and render its statements. They differ in output form:

Function Output form Use it when
#statements Rich wikitext: each value keeps its markup (language attributes, list structure). Default for page content — values stay marked up for styling and screen readers.
#property Escaped plain text: no markup survives. Inside templates or table cells, where markup would interfere.

Same call, both forms — Q96 (quotation, one statement per language):

#property #statements
The Analytical Engine has no pretensions whatever to originate anything. It can do whatever we know how to order it to perform., La machine analytique ne prétend nullement être à l'origine de quoi que ce soit. Elle peut faire tout ce que nous savons lui ordonner d'exécuter., La analiza maŝino tute ne pretendas origini ion ajn. Ĝi povas fari ĉion, kion ni scias ordoni al ĝi plenumi. The Analytical Engine has no pretensions whatever to originate anything. It can do whatever we know how to order it to perform., La machine analytique ne prétend nullement être à l'origine de quoi que ce soit. Elle peut faire tout ce que nous savons lui ordonner d'exécuter., La analiza maŝino tute ne pretendas origini ion ajn. Ĝi povas fari ĉion, kion ni scias ordoni al ĝi plenumi.

The visible text is identical. The difference is in the page source: #statements wraps each value in language markup, #property emits plain text. Item values render as labels, not links, on this wiki.

Examples

Running example: Q99 (Factorial in Python). The from= argument names the entity. The property can be a P-number or a label.

What you want You type You get
Instance
{{#statements:P1|from=Q99}}
code snippet
Programming language
{{#statements:P5|from=Q99}}
Python
Code source
{{#statements:P3|from=Q99}}
factorial = lambda n: 1 if n <= 1 else n * factorial(n - 1)
Attributed to
{{#statements:P6|from=Q99}}
Ada Lovelace
By label instead of P-number
{{#statements:instance of|from=Q99}}
code snippet
Another entity — Q55 (Markdown)
{{#statements:P1|from=Q55}}
programming language

An item with no statements renders nothing — empty output is not an error. Q94 (Ada Lovelace) has no statements:

You type You get
{{#statements:P1|from=Q94}}
person

An unknown property is an explicit error, not empty output — P999 does not exist:

You type You get
{{#statements:P999|from=Q55}}

Failed to render property P999: P999 property not found.

Sitelinks: pages ↔ items

A sitelink links an item to a page title on the wikibase site. It maps the page to the item; the item page shows the link in its Sitelinks section. Without from=, a parser function uses the item sitelinked to the current page.

Live pairs on this wiki: Q55 (Markdown) ↔ Cheatsheets:Markdown, Q77 (SPARQL) ↔ Cheatsheets:SPARQL.

Every content page has a Sitelink tab next to Page/Discussion:

  • Red (not linked): click it to open a small dialog — type a label to search for an item (or enter a Q-id directly), then click Link. The page is linked immediately.
  • Blue (linked): the tab links straight to the item page.

You can also link a page the classic way: open the item, add the page title in the Sitelinks section (site wikibase), or use the API: action=wbsetsitelink with linksite=wikibase.

Without from= the page must be sitelinked to an item. This page is not linked, so {{#statements:P1}} on it renders nothing. Link the page to an item (via the tab) to use the short form.

Limits

Lua modules ({{#invoke:Wikibase}}) are not available — the Scribunto extension is not installed. Use the parser functions above.

See also

FOSS software pages (worked example)

FOSS software pages (FOSS:Main) are thin templates over their items: the page transcludes Template:Tl, whose infobox reads the item's statements at view time — so when a project moves its website or repository, you edit the item once and every page updates. Because the page is sitelinked to its item (see above), the short form works. Live example — FOSS:Flameshot ↔ Item Q180:

What you want You type You get
Official website
{{#statements:official website}}
Source code repository
{{#statements:source code repository}}
Category (instance of)
{{#statements:instance of}}

Create new software pages with Special:AddSoftware — it creates the item, the FOSS:<Name> page and the page↔item sitelink in one flow.

The infobox image cell ()

The classic pages (Person:, Collective:, FOSS:) render their portrait or logo from the item's image statement — the statement the Add\* flows write when you upload one. No page parameter needed: sitelink the page to the item (see above) and the cell fills itself — including on pages created before the image was added.

What you type What you get
{{#item-image:Q880}}

The function takes the item from the current page's sitelink ( with no argument) or an explicit item id (as above — usable on any page). An item without an image statement renders nothing — an empty cell, not an error.

OSM places ()

A person's place of birth/death lives in OpenStreetMap — the item stores the OSM id (place of birth (OSM) / place of death (OSM), e.g. relation/3169865) plus a human-readable display label (place of birth (label) / place of death (label), captured when the place was picked on Special:AddPerson/Special:UpdatePerson). The Person: infobox renders the row with :

What you type What you get
{{#osm-place:birth}}
the place of birth as its display label linked to openstreetmap.org (from the page's sitelinked person item)
{{#osm-place:death|Q1133}}
the place of death of an explicit item (usable on any page)

The argument is birth or death for persons; an optional second argument names an explicit item. An item without that OSM statement renders nothing; an OSM id without a stored label renders the raw id as the link text (the reader still reaches the map).

Territorial jurisdiction (legal sources). The legal source classes (legal case, legislation, bill, treaty) store their territorial jurisdiction the same way — territorial jurisdiction (OSM) + territorial jurisdiction (label), picked on Special:AddSource/Special:UpdateSource. The Source: infobox renders the row with :

What you type What you get
{{#osm-place:jurisdiction}}
the territorial jurisdiction as its display label linked to openstreetmap.org (from the page's sitelinked source item)
{{#osm-place:jurisdiction|Q42}}
the territorial jurisdiction of an explicit item (usable on any page)

As with the person places, an item without that OSM statement renders nothing; an OSM id without a stored label renders the raw id as the link text.

Child items of a source ()

A source that contains other sources lists them on its Source: page: a book lists its book excerpts, a YouTube channel its YouTube videos. The row is rendered by (from the page's sitelinked item, or for an explicit one) and links to the always-live listing Special:ChildItemsOf/Q42, which shows each child linked to its own page — the child's Source: page when it has one (a YouTube video does), its Item page otherwise (a book excerpt creates no classic page). A source with no children renders no row.

Quotation listings render as blockquotes

Special:QuotationsOf/Q42 — the list of quotations citing a source — renders each quotation as a <blockquote> in the same visual style as , with the item link beneath and spacing between entries.