Template:Hansard-item-cargo

From PoliticalSG
Revision as of 18:26, 16 July 2026 by SGPolitico (talk | contribs)

This template defines the table "hansard_items". View table.

Usage

Place once per question/speech/bill reading/motion, immediately before (or wrapping) the prose text of that item on the sitting-day page. Renders only an anchor + a small inline type/number tag — the actual Hansard prose (question text, answer, speeches) is written normally around the call, not inside it.

{{Hansard-item-cargo
|item_id=p15-s32-oq1
|sitting_id=p15-s32
|sitting_date=2026-07-07
|parliament_no=15
|item_type=oral_question
|item_no=1
|subject=Probe into social media posts targeting Singapore's Indian community
|asking_mp_id=darryl-david
|answering_mp_id=goh-pei-ming
|speaker_mp_id=
|bill_id=
|debate_id=
|grouped_question_nos=1-2
|topic_tags=Home Affairs, National Security, Social media
|summary=
|verified=yes
|last_updated=2026-07-16
}}
'''Q1.''' [[Darryl David]] asked the Coordinating Minister for National Security and Minister for Home Affairs regarding the 14 online social media posts which seemingly targeted the Indian community... — ''[[Goh Pei Ming]] (for [[K Shanmugam]])''

Bill-linked example (bill_id set, no asking/answering/speaker):

{{Hansard-item-cargo
|item_id=p15-s32-bill1
|sitting_id=p15-s32
|sitting_date=2026-07-07
|parliament_no=15
|item_type=bill_first_reading
|subject=Road Traffic (Miscellaneous Amendments) Bill
|speaker_mp_id=sim-ann
|bill_id=road-traffic-misc-amendments-2026
|topic_tags=Transport, Legislation
|verified=yes
|last_updated=2026-07-16
}}

Motion-linked example (debate_id holds a motion_id, item_type=motion):

{{Hansard-item-cargo
|item_id=p15-s32-mot1
|sitting_id=p15-s32
|sitting_date=2026-07-07
|parliament_no=15
|item_type=motion
|subject=Reinforcing Singapore's Position as a Global Transport Hub
|speaker_mp_id=tin-pei-ling
|debate_id=reinforcing-transport-hub-motion-2026
|topic_tags=Transport, Economy
|verified=yes
|last_updated=2026-07-16
}}

Ministerial statement + clarification example (debate_id holds a statement_id, shared by the statement item and every clarification that follows it):

{{Hansard-item-cargo
|item_id=p15-s32-stmt1
|sitting_id=p15-s32
|sitting_date=2026-07-07
|parliament_no=15
|item_type=ministerial_statement
|subject=[Statement title]
|speaker_mp_id=[minister]
|debate_id=[statement_id]
|verified=yes
|last_updated=2026-07-16
}}

{{Hansard-item-cargo
|item_id=p15-s32-stmt1-c1
|sitting_id=p15-s32
|sitting_date=2026-07-07
|parliament_no=15
|item_type=ministerial_statement_clarification
|subject=[Statement title]
|asking_mp_id=[MP seeking clarification]
|answering_mp_id=[minister]
|debate_id=[statement_id]
|verified=yes
|last_updated=2026-07-16
}}

Adjournment-speech example (no bill_id, no debate_id — just tagged to the speaking MP, visible on their own Parliamentary Record, no dedicated hub page):

{{Hansard-item-cargo
|item_id=p15-s32-adj3
|sitting_id=p15-s32
|sitting_date=2026-07-07
|parliament_no=15
|item_type=adjournment_speech
|subject=Integration with the region
|speaker_mp_id=kenneth-tiong-boon-kiat
|topic_tags=Economy, ASEAN
|verified=yes
|last_updated=2026-07-16
}}

Field reference

Field Type Required Notes
item_id slug Yes Permanent. Format: {sitting_id}-{type_abbr}{item_no or running index}, e.g. p15-s32-oq1, p15-s32-wq21, p15-s32-bill1
sitting_id sitting slug Yes Must match hansard_sittings
sitting_date Date Yes Denormalised from the sitting, for fast per-MP sorting without a join
parliament_no String Yes Denormalised — lets MP-profile queries group by parliament term cheaply
item_type String Yes oral_question / written_question / ministerial_statement / ministerial_statement_clarification / bill_first_reading / bill_second_reading / bill_third_reading / motion / adjournment_speech / other
item_no String No The Hansard question/item number as printed. Blank for unnumbered items
subject String Yes Short title, sentence-cased from the Hansard heading
asking_mp_id mp slug No MP who asked the question, moved the motion, or sought a clarification
answering_mp_id mp slug No Minister who answered on the record (the one actually speaking, even if answering "for" another minister)
speaker_mp_id mp slug No For items with no asker/answerer structure — adjournment-debate speeches, statements, bill presenters, motion movers
bill_id bill slug No Set only if this item is a reading/speech/question directly about a specific bill. Must match bills table
debate_id motion or statement slug No Set to a motion_id (item_type=motion) or a statement_id (item_type=ministerial_statement / ministerial_statement_clarification) — including on the original statement's own item, not just its clarifications, so one query pulls the whole exchange together. Leave blank for adjournment_speech and anything not part of a motion or statement's own record
grouped_question_nos String No If answered together with other questions, e.g. 3-5
question_status String No Defaults to "asked" if left blank. Set to withdrawn / deferred only when applicable. Parliamentary Record queries should filter question_status="asked" by default so withdrawn ones don't inflate an MP's count.
topic_tags String No Comma-separated free text for search
summary Text No One or two factual sentences, no editorialising
verified String Yes yes / no
last_updated Date Yes

An item normally sets at most one of bill_id / debate_id — not both, and often neither (a plain oral/written question, or an adjournment speech with no dedicated hub page).

Cargo table: hansard_items. See also {{Hansard-sitting-cargo}}, {{Bill-cargo}}, {{Motion-cargo}}, {{Ministerial-statement-cargo}}.