Extension:Cargo

Category:GPL licensed extensions
MediaWiki extensions manual
Cargo
Release status: stableCategory:Stable extensions
Implementation Special page Category:Special page extensions, API Category:API extensions, Parser function Category:Parser function extensions
Description An extension that allows for the storage and querying of data contained within templates.
Author(s) Yaron Koren <yaron57@gmail.com> (Yaron Korentalk)
Latest version 3.8 (April 2025)
Compatibility policy Master maintains backward compatibility.Category:Extensions with master compatibility policy
MediaWiki 1.40+Category:Extensions with manual MediaWiki version
Database changes Yes
Composer mediawiki/cargoCategory:Extensions supporting Composer
Tables cargo_tables
cargo_pages
cargo_backlinks
License GNU General Public License 2.0 or later
Download Category:Extensions in Wikimedia version control
Example A page containing various calls to #cargo_query
  • $wgCargoFileDataColumns
  • $wgCargoDrilldownLargestFontSize
  • $wgCargoDecimalMark
  • $wgCargoDefaultStringBytes
  • $wgCargoAllowedSQLFunctions
  • $wgCargoHideNamespaceName
  • $wgCargoPageDataColumns
  • $wgCargoIgnoreBacklinks
  • $wgCargoMaxVisibleHierarchyDrilldownValues
  • $wgCargoDrilldownSmallestFontSize
  • $wgCargoLegacyNullLuaFieldsAsEmptyString
  • $wgCargoRecurringEventMaxInstances
  • $wgCargoDefaultMapService
  • $wgCargoStoreUseTemplateArgsFallback
  • $wgCargoTablesPrioritizeReplacements
  • $wgCargoMaxQueryLimit
  • $wgCargoDigitGroupingCharacter
  • $wgCargoDefaultQueryLimit
  • $wgCargoDrilldownNumRangesForNumbers
  • $wgCargo24HourTime
  • $wgCargoDrilldownUseTabs
  • $wgCargoMapClusteringMinimum
  • $wgCargoDrilldownMinValuesForComboBox
  • recreatecargodata
  • deletecargodata
  • runcargoqueries
Quarterly downloads 41 (Ranked 46th)
Translate the Cargo extension
Issues Open tasks · Report a bug
Category:All extensions

Cargo is an extension to MediaWiki that provides a lightweight way to store and query the data contained within the calls to templates, such as infoboxes. It is similar in concept to the Semantic MediaWiki extension, but offers a number of advantages, including ease of installation and ease of use.

Cargo stores all its data in database tables, which can be placed in either MediaWiki's own database (the default) or a separate database. For the most part, each stored template gets its data stored in a single DB table, with a column for each relevant template parameter. There are a few exceptions to this: the handling of template fields that hold arrays/lists of values, and of fields that hold geographical coordinates, is more complex, due to poor native handling of those data types in most DB systems. And multiple templates can be set to all store their data in one DB table.

The extension defines a number of parser functions; these three are the most important:

  • #cargo_declare - placed within the <noinclude> part of a template; it defines the schema for a table.
  • #cargo_store - stores one row to a Cargo table; usually placed within the <includeonly> part of a template.
  • #cargo_query - queries one or more Cargo data tables, using SQL components.

The other defined parser functions are:

  • #cargo_attach - defines a template as adding rows to a table declared elsewhere.
  • #cargo_compound_query - displays the results of multiple queries in one place.
  • #cargo_display_map - displays a map showing a single point.
  • #recurring_event - prints out the dates for a recurring event; for use by #cargo_store.

Cargo also defines various interfaces for viewing and drilling down through this stored data. As such, it adds the following special pages:

  • Special:CargoQuery
  • Special:CargoTableDiagram
  • Special:CargoTables
  • Special:Drilldown

Cargo has been tested, and works, with the MySQL and PostgreSQL database systems. In theory, it also supports SQLite, but it has not been well-tested with SQLite and may not work.

This version of the Cargo extension requires MediaWiki 1.38+.

Click through the pages in the navigation bar above to learn more about Cargo, how it works, how to use it, and how to install it.

Installation

See Download and Installation.

Configuration

Below are Cargo's global configuration settings along with their default values.

To configure Cargo to use a separate database instead of the MediaWiki database, the following settings are provided:

Separate database configuration settings
Setting Default Description
$wgCargoDBtype null Database type.
$wgCargoDBserver null Host name or IP address of database server.
$wgCargoDBname null Name of the database.
$wgCargoDBuser null Database username.
$wgCargoDBpassword null The password for $wgCargoDBuser.
$wgCargoDBprefix null Database table name prefix.
$wgCargoDBRowFormat null Data base row format.

For character configuration as related to numbers, the following configuring settings are provided:

Character configuration settings
Setting Default Description
$wgCargoDecimalMark . Decimal character for numbers.
$wgCargoDigitGroupingCharacter , Thousands digit separator.

The remaining global configuration settings are as follows:

Setting Default Description
$wgCargoAllowedSQLFunctions [] Sets allowed SQL functions. See Using SQL Functions for defaults.
$wgCargoRecurringEventMaxInstances 100 The number of max instances to store for recurring events with no set end date.
$wgCargoDefaultStringBytes 300 The default number of characters for fields of type Page, String, Wikitext string, File, URL, Email
$wgCargoDefaultQueryLimit 100 Number of results to show for #cargo_query if no limit is set
$wgCargoMaxQueryLimit 5000 The maximum allowed number of results for #cargo_query
$wgCargo24HourTime false If true uses 24-hour time for Datetime field types.
$wgCargoDefaultMapService OpenLayers Sets the default map service to Google Maps, if set to googlemaps, to Leaflet if set to leaflet, and to OpenLayers if set to openlayers.
$wgCargoGoogleMapsKey null API key for Google Maps, for the googlemaps display format.
$wgCargoMapClusteringMinimum 80 If the number of map points displayed is greater than the value of $wgCargoMapClusteringMinimum, the map displays the locations in "clusters" instead of individual points, for readability. If set to a very high number, does not display clustering.
$wgCargoDrilldownUseTabs true Displays Special:Drilldown table names as tabs at the top instead of a vertical list at the side.
$wgCargoDrilldownSmallestFontSize -1 If set to a positive number, sets the smallest font size, in pixels, for a tag-cloud-style display of filter values.
$wgCargoDrilldownLargestFontSize -1 If set to a positive number, sets the largest font size, in pixels, for a tag-cloud-style display of filter values.
$wgCargoDrilldownMinValuesForComboBox 40 Sets the minimum number of values before their display is converted to a combo box, instead of individual links.
$wgCargoDrilldownNumRangesForNumbers 5 For fields/filters of type Integer or Float, specifies the number of "buckets" into which values are divided.
$wgCargoMaxVisibleHierarchyDrilldownValues 30 If set to a positive integer, specifies the maximum number of values shown at a time for any hierarchy field (All the top-level values are shown irrespective of this value). The values are hidden beyond a certain depth of the hierarchy such that the count of total visible values is at most this number.
$wgCargoTablesPrioritizeReplacements false If true, all tables having a replacement appear at the top of the Special:CargoTables page, instead displaying them in alphabetical order.
$wgCargoPageDataColumns [] The set of fields to store in the _pageData Cargo table. See Storing page data.
$wgCargoFileDataColumns [] The set of fields to store in the _fileData Cargo table. See Storing file data.
$wgCargoHideNamespaceName [6] Array of namespaces to hide from query results.
$wgCargoLegacyNullLuaFieldsAsEmptyString false Null results to the Lua Cargo query function should return as string rather than nil. This allows you to rollback a breaking change from early 2022. New wikis created after this time should not enable this.
$wgCargoStoreUseTemplateArgsFallback true Enable the behavior that looks for template arguments that match the template's declared table to fill columns.

See also

Category:Data extraction extensions Category:Database extensions Category:Table extensions Category:Calendar extensions Category:Map extensions Category:Google Maps extensions Category:OpenLayers extensions Category:Leaflet extensions Category:Graphical Timelines Category:Graph extensions Category:Math extensions Category:Search extensions Category:Data management extensions
Category:API extensions Category:AdminLinks extensions Category:All extensions Category:ApprovedRevsRevisionApproved extensions Category:ApprovedRevsRevisionUnapproved extensions Category:Calendar extensions Category:CategoryAfterPageAdded extensions Category:CategoryAfterPageRemoved extensions Category:Data extraction extensions Category:Data management extensions Category:Database extensions Category:Extensions in Wikimedia version control Category:Extensions included in Canasta Category:Extensions included in Fandom Category:Extensions included in Miraheze Category:Extensions included in MyWikis Category:Extensions included in WikiForge Category:Extensions included in wiki.gg Category:Extensions supporting Composer Category:Extensions with manual MediaWiki version Category:Extensions with master compatibility policy Category:GPL licensed extensions Category:Google Maps extensions Category:Graph extensions Category:Graphical Timelines Category:Leaflet extensions Category:LinksUpdate extensions Category:LoadExtensionSchemaUpdates extensions Category:MakeGlobalVariablesScript extensions Category:Map extensions Category:Math extensions Category:OpenLayers extensions Category:PageDeleteComplete extensions Category:PageForms::TemplateFieldEnd extensions Category:PageForms::TemplateFieldStart extensions Category:PageMoveComplete extensions Category:PageSaveComplete extensions Category:PageSchemasRegisterHandlers extensions Category:ParserFirstCallInit extensions Category:Parser function extensions Category:ResourceLoaderGetConfigVars extensions Category:ScribuntoExternalLibraries extensions Category:Search extensions Category:SidebarBeforeOutput extensions Category:SkinTemplateNavigation::Universal extensions Category:Special page extensions Category:Stable extensions Category:Table extensions Category:UploadComplete extensions