Extension:External Data/Storing data

From Linux Web Expert

You can use External Data to store a table of data that has been retrieved; you can do this using the storage capabilities of either the Semantic MediaWiki or Cargo extensions. Once the data has been stored, it can then be queried, aggregated, displayed etc. on the wiki by that extension.

Semantic MediaWiki

If you store data with Semantic MediaWiki, you should note a common problem, which is that the data stored by SMW does not get automatically updated when the data coming from the external source changes. The best solution for this, assuming you expect the data to change over time, is to create a cron job to call the SMW maintenance script "rebuildData.php" at regular intervals, such as once a day; that way, the data is never more than a day old.

To store a table of data using SMW, you can use the #store_external_table function. This function works as a hybrid of the #for_external_table function and the #subobject function, defined in the Semantic MediaWiki extension. #store_external_table loops over each row, and uses variables, in the same way as #for_external_table. Unlike with #subobject, the first parameter is the name of a property that will link from the subobject to the page it's on. A call to #store_external_table might look like this:

{{#store_external_table:Is fruit in
|Has name={{{name}}}
|Has color={{{color}}}
|Has shape={{{shape}}}
}}

Cargo

There is no special parser function for storing data via Cargo; instead you should simply use #display_external_table, and include Cargo storage code within the template called by that function. You can see an example of Cargo-based storage using #display_external_table here; it uses this template, and you can see the resulting data here.