Provenance in APPLAUSE DR3
Provenance is defined as "the fact of coming from some particular source or quarter; source, derivation" in the Oxford English dictionary. The term was originally mostly used in relation to works of art but is now used in a similar sense in a wide range of fields, including science and computing. For the APPLAUSE archive, provenance information contains the path between the plate taken at its time and location to the extracted sources we offer in our source_calib or lightcurve table (or: as much information about the steps involved as available, including scanning process, used software, organisations and people who were involved. Provenance is closely related to the workflow creating the digital objects.
All the example queries below are using 'postgres' as query dialect. You can cut and paste the examples directly in APPLAUSES query interface.
First example: how to find out what sources, plates and corresponding scans (with their previews) were involved in the construction of the lightcurve with the UCAC4 id 614-089373:
-- postgres SELECT lc.source_id, lc.scan_id, lc.plate_id, preview.filename FROM APPLAUSE_DR2.lightcurve AS lc INNER JOIN APPLAUSE_DR3.plate AS pl ON lc.plate_id = pl.plate_id INNER JOIN APPLAUSE_DR3.preview AS preview ON preview.plate_id = pl.plate_id WHERE lc.ucac4_id = '614-089373'
The result table has the source ids, plate ids, scan ids and conveniently the previews for the scans.
APPLAUSE DR3 stores the workflow/provenance information alongside the data. Each scan is tied to the plate by the pair (scan_id, plate_id), as well each process is connected to (scan_id, plate_id). The plates are ordered in collections - archives. So each plate also has the information which archive it belongs to.
Example 2: Which version of Pyplate were used on the plate with the number 2180 and the scans taken from this plate:
-- postgres SELECT distinct pr.scan_id, pr.process_id, pr.pyplate_version, pl.archive_id FROM applause_dr3.plate AS pl INNER JOIN applause_dr3.process AS pr ON pr.plate_id = pl.plate_id WHERE pl.plate_id = 2180
Example 3: Get all information on plate 2180 from scanning to source extraction and crossmatching.
-- postgres SELECT sc.plate_id, sc.scan_id AS scan, sc."scan_date" AS scanned_on, sc.filename_scan, pr.pyplate_version AS pyplate, pr.timestamp_end AS processed_on FROM applause_dr3.scan AS sc INNER JOIN applause_dr3.process AS pr ON pr.scan_id = sc.scan_id WHERE sc.plate_id = 2180