<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<opm:opmGraph xmlns:opm="http://openprovenance.org/model/v1.01.a" xmlns:opmext="http://openprovenance.org/model/extension/v1.01.a" xmlns:prn="http://openprovenance.org/model/opmPrinterConfig" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://example.com/">
    <opm:accounts>
        <opm:account id="Provenance Account"/>
    </opm:accounts>
    <opm:processes>
        <opm:process id="http://pc3#IsCSVReadyFileExistsConditional">
            <opm:value xsi:type="xsd:string">IsCSVReadyFileExistsConditional</opm:value>
        </opm:process>
        <opm:process id="http://pc3#Iterator3">
            <opm:value xsi:type="xsd:string">Iterator3</opm:value>
        </opm:process>
        <opm:process id="http://pc3#Iterator2">
            <opm:value xsi:type="xsd:string">Iterator2</opm:value>
        </opm:process>
        <opm:process id="http://pc3#IsCSVReadyFileExistsProcess">
            <opm:value xsi:type="xsd:string">IsCSVReadyFileExistsProcess</opm:value>
        </opm:process>
        <opm:process id="http://pc3#Iterator1">
            <opm:value xsi:type="xsd:string">Iterator1</opm:value>
        </opm:process>
        <opm:process id="http://pc3#Iterator0">
            <opm:value xsi:type="xsd:string">Iterator0</opm:value>
        </opm:process>
        <opm:process id="http://pc3#IsMatchCSVFileTablesConditional">
            <opm:value xsi:type="xsd:string">IsMatchCSVFileTablesConditional</opm:value>
        </opm:process>
        <opm:process id="http://pc3#CompactDatabaseProcess">
            <opm:value xsi:type="xsd:string">CompactDatabaseProcess</opm:value>
        </opm:process>
        <opm:process id="http://pc3#IsMatchCSVFileColumnNamesConditional1">
            <opm:value xsi:type="xsd:string">IsMatchCSVFileColumnNamesConditional1</opm:value>
        </opm:process>
        <opm:process id="http://pc3#IsMatchCSVFileColumnNamesConditional0">
            <opm:value xsi:type="xsd:string">IsMatchCSVFileColumnNamesConditional0</opm:value>
        </opm:process>
        <opm:process id="http://pc3#IsMatchCSVFileColumnNamesConditional2">
            <opm:value xsi:type="xsd:string">IsMatchCSVFileColumnNamesConditional2</opm:value>
        </opm:process>
        <opm:process id="http://pc3#IsMatchTableColumnRangesConditional2">
            <opm:value xsi:type="xsd:string">IsMatchTableColumnRangesConditional2</opm:value>
        </opm:process>
        <opm:process id="http://pc3#UpdateComputedColumnsConditional1">
            <opm:value xsi:type="xsd:string">UpdateComputedColumnsConditional1</opm:value>
        </opm:process>
        <opm:process id="http://pc3#UpdateComputedColumnsConditional0">
            <opm:value xsi:type="xsd:string">UpdateComputedColumnsConditional0</opm:value>
        </opm:process>
        <opm:process id="http://pc3#UpdateComputedColumnsConditional2">
            <opm:value xsi:type="xsd:string">UpdateComputedColumnsConditional2</opm:value>
        </opm:process>
        <opm:process id="http://pc3#IsMatchTableRowCountProcess0">
            <opm:value xsi:type="xsd:string">IsMatchTableRowCountProcess0</opm:value>
        </opm:process>
        <opm:process id="http://pc3#IsMatchTableRowCountProcess1">
            <opm:value xsi:type="xsd:string">IsMatchTableRowCountProcess1</opm:value>
        </opm:process>
        <opm:process id="http://pc3#IsMatchTableRowCountConditional2">
            <opm:value xsi:type="xsd:string">IsMatchTableRowCountConditional2</opm:value>
        </opm:process>
        <opm:process id="http://pc3#IsMatchTableRowCountConditional1">
            <opm:value xsi:type="xsd:string">IsMatchTableRowCountConditional1</opm:value>
        </opm:process>
        <opm:process id="http://pc3#DetectionsHistogramProcess">
            <opm:value xsi:type="xsd:string">DetectionsHistogramProcess</opm:value>
        </opm:process>
        <opm:process id="http://pc3#IsMatchTableRowCountConditional0">
            <opm:value xsi:type="xsd:string">IsMatchTableRowCountConditional0</opm:value>
        </opm:process>
        <opm:process id="http://pc3#IsMatchCSVFileColumnNamesProcess1">
            <opm:value xsi:type="xsd:string">IsMatchCSVFileColumnNamesProcess1</opm:value>
        </opm:process>
        <opm:process id="http://pc3#IsMatchCSVFileColumnNamesProcess2">
            <opm:value xsi:type="xsd:string">IsMatchCSVFileColumnNamesProcess2</opm:value>
        </opm:process>
        <opm:process id="http://pc3#IsMatchTableRowCountProcess2">
            <opm:value xsi:type="xsd:string">IsMatchTableRowCountProcess2</opm:value>
        </opm:process>
        <opm:process id="http://pc3#UpdateComputedColumnsProcess0">
            <opm:value xsi:type="xsd:string">UpdateComputedColumnsProcess0</opm:value>
        </opm:process>
        <opm:process id="http://pc3#UpdateComputedColumnsProcess2">
            <opm:value xsi:type="xsd:string">UpdateComputedColumnsProcess2</opm:value>
        </opm:process>
        <opm:process id="http://pc3#IsExistsCSVFileConditional2">
            <opm:value xsi:type="xsd:string">IsExistsCSVFileConditional2</opm:value>
        </opm:process>
        <opm:process id="http://pc3#IsMatchCSVFileColumnNamesProcess0">
            <opm:value xsi:type="xsd:string">IsMatchCSVFileColumnNamesProcess0</opm:value>
        </opm:process>
        <opm:process id="http://pc3#IsExistsCSVFileConditional1">
            <opm:value xsi:type="xsd:string">IsExistsCSVFileConditional1</opm:value>
        </opm:process>
        <opm:process id="http://pc3#UpdateComputedColumnsProcess1">
            <opm:value xsi:type="xsd:string">UpdateComputedColumnsProcess1</opm:value>
        </opm:process>
        <opm:process id="http://pc3#IsExistsCSVFileConditional0">
            <opm:value xsi:type="xsd:string">IsExistsCSVFileConditional0</opm:value>
        </opm:process>
        <opm:process id="http://pc3#LoadCSVFileIntoTableConditional0">
            <opm:value xsi:type="xsd:string">LoadCSVFileIntoTableConditional0</opm:value>
        </opm:process>
        <opm:process id="http://pc3#LoadCSVFileIntoTableConditional1">
            <opm:value xsi:type="xsd:string">LoadCSVFileIntoTableConditional1</opm:value>
        </opm:process>
        <opm:process id="http://pc3#LoadCSVFileIntoTableConditional2">
            <opm:value xsi:type="xsd:string">LoadCSVFileIntoTableConditional2</opm:value>
        </opm:process>
        <opm:process id="http://pc3#ReadCSVFileColumnNamesProcess0">
            <opm:value xsi:type="xsd:string">ReadCSVFileColumnNamesProcess0</opm:value>
        </opm:process>
        <opm:process id="http://pc3#ReadCSVFileColumnNamesProcess1">
            <opm:value xsi:type="xsd:string">ReadCSVFileColumnNamesProcess1</opm:value>
        </opm:process>
        <opm:process id="http://pc3#ReadCSVFileColumnNamesProcess2">
            <opm:value xsi:type="xsd:string">ReadCSVFileColumnNamesProcess2</opm:value>
        </opm:process>
        <opm:process id="http://pc3#LoadCSVFileIntoTableProcess2">
            <opm:value xsi:type="xsd:string">LoadCSVFileIntoTableProcess2</opm:value>
        </opm:process>
        <opm:process id="http://pc3#IsMatchCSVFileTablesProcess">
            <opm:value xsi:type="xsd:string">IsMatchCSVFileTablesProcess</opm:value>
        </opm:process>
        <opm:process id="http://pc3#ReadCSVReadyFileProcess">
            <opm:value xsi:type="xsd:string">ReadCSVReadyFileProcess</opm:value>
        </opm:process>
        <opm:process id="http://pc3#LoadCSVFileIntoTableProcess0">
            <opm:value xsi:type="xsd:string">LoadCSVFileIntoTableProcess0</opm:value>
        </opm:process>
        <opm:process id="http://pc3#IsMatchTableColumnRangesConditional0">
            <opm:value xsi:type="xsd:string">IsMatchTableColumnRangesConditional0</opm:value>
        </opm:process>
        <opm:process id="http://pc3#LoadCSVFileIntoTableProcess1">
            <opm:value xsi:type="xsd:string">LoadCSVFileIntoTableProcess1</opm:value>
        </opm:process>
        <opm:process id="http://pc3#IsMatchTableColumnRangesConditional1">
            <opm:value xsi:type="xsd:string">IsMatchTableColumnRangesConditional1</opm:value>
        </opm:process>
        <opm:process id="http://pc3#IsMatchTableColumnRangesProcess0">
            <opm:value xsi:type="xsd:string">IsMatchTableColumnRangesProcess0</opm:value>
        </opm:process>
        <opm:process id="http://pc3#IsMatchTableColumnRangesProcess1">
            <opm:value xsi:type="xsd:string">IsMatchTableColumnRangesProcess1</opm:value>
        </opm:process>
        <opm:process id="http://pc3#IsMatchTableColumnRangesProcess2">
            <opm:value xsi:type="xsd:string">IsMatchTableColumnRangesProcess2</opm:value>
        </opm:process>
        <opm:process id="http://pc3#CreateEmptyLoadDBProcess">
            <opm:value xsi:type="xsd:string">CreateEmptyLoadDBProcess</opm:value>
        </opm:process>
        <opm:process id="http://pc3#DisplayPlotProcess">
            <opm:value xsi:type="xsd:string">DisplayPlotProcess</opm:value>
        </opm:process>
        <opm:process id="http://pc3#IsExistsCSVFileProcess2">
            <opm:value xsi:type="xsd:string">IsExistsCSVFileProcess2</opm:value>
        </opm:process>
        <opm:process id="http://pc3#IsExistsCSVFileProcess0">
            <opm:value xsi:type="xsd:string">IsExistsCSVFileProcess0</opm:value>
        </opm:process>
        <opm:process id="http://pc3#PlotHistogramProcess">
            <opm:value xsi:type="xsd:string">PlotHistogramProcess</opm:value>
        </opm:process>
        <opm:process id="http://pc3#IsExistsCSVFileProcess1">
            <opm:value xsi:type="xsd:string">IsExistsCSVFileProcess1</opm:value>
        </opm:process>
    </opm:processes>
    <opm:artifacts>
        <opm:artifact id="http://pc3#IsMatchTableColumnRangesArtifact0">
            <opm:value xsi:type="xsd:string">IsMatchTableColumnRangesArtifact0</opm:value>
        </opm:artifact>
        <opm:artifact id="http://pc3#IsMatchTableColumnRangesArtifact1">
            <opm:value xsi:type="xsd:string">IsMatchTableColumnRangesArtifact1</opm:value>
        </opm:artifact>
        <opm:artifact id="http://pc3#IsMatchTableColumnRangesArtifact2">
            <opm:value xsi:type="xsd:string">IsMatchTableColumnRangesArtifact2</opm:value>
        </opm:artifact>
        <opm:artifact id="http://pc3#IsMatchTableRowCountArtifact0">
            <opm:value xsi:type="xsd:string">IsMatchTableRowCountArtifact0</opm:value>
        </opm:artifact>
        <opm:artifact id="http://pc3#IsMatchTableRowCountArtifact2">
            <opm:value xsi:type="xsd:string">IsMatchTableRowCountArtifact2</opm:value>
        </opm:artifact>
        <opm:artifact id="http://pc3#IsMatchTableRowCountArtifact1">
            <opm:value xsi:type="xsd:string">IsMatchTableRowCountArtifact1</opm:value>
        </opm:artifact>
        <opm:artifact id="http://pc3#UpdateComputedColumnsArtifact0">
            <opm:value xsi:type="xsd:string">UpdateComputedColumnsArtifact0</opm:value>
        </opm:artifact>
        <opm:artifact id="http://pc3#CSVRootPathResource">
            <opm:value xsi:type="xsd:string">CSVRootPathArtifact</opm:value>
        </opm:artifact>
        <opm:artifact id="http://pc3#UpdateComputedColumnsArtifact1">
            <opm:value xsi:type="xsd:string">UpdateComputedColumnsArtifact1</opm:value>
        </opm:artifact>
        <opm:artifact id="http://pc3#UpdateComputedColumnsArtifact2">
            <opm:value xsi:type="xsd:string">UpdateComputedColumnsArtifact2</opm:value>
        </opm:artifact>
        <opm:artifact id="http://pc3#ReadCSVFileColumnNamesArtifact2">
            <opm:value xsi:type="xsd:string">ReadCSVFileColumnNamesArtifact2</opm:value>
        </opm:artifact>
        <opm:artifact id="http://pc3#ReadCSVFileColumnNamesArtifact1">
            <opm:value xsi:type="xsd:string">ReadCSVFileColumnNamesArtifact1</opm:value>
        </opm:artifact>
        <opm:artifact id="http://pc3#IsMatchCSVFileTablesArtifact">
            <opm:value xsi:type="xsd:string">IsMatchCSVFileTablesArtifact</opm:value>
        </opm:artifact>
        <opm:artifact id="http://pc3#IsExistsCSVFileArtifact0">
            <opm:value xsi:type="xsd:string">IsExistsCSVFileArtifact0</opm:value>
        </opm:artifact>
        <opm:artifact id="http://pc3#ReadCSVFileColumnNamesArtifact0">
            <opm:value xsi:type="xsd:string">ReadCSVFileColumnNamesArtifact0</opm:value>
        </opm:artifact>
        <opm:artifact id="http://pc3#IsExistsCSVFileArtifact2">
            <opm:value xsi:type="xsd:string">IsExistsCSVFileArtifact2</opm:value>
        </opm:artifact>
        <opm:artifact id="http://pc3#IsExistsCSVFileArtifact1">
            <opm:value xsi:type="xsd:string">IsExistsCSVFileArtifact1</opm:value>
        </opm:artifact>
        <opm:artifact id="http://pc3#IsCSVReadyFileExistsArtifact">
            <opm:value xsi:type="xsd:string">IsCSVReadyFileExistsArtifact</opm:value>
        </opm:artifact>
        <opm:artifact id="http://pc3#LoadCSVFileIntoTableArtifact0">
            <opm:value xsi:type="xsd:string">LoadCSVFileIntoTableArtifact0</opm:value>
        </opm:artifact>
        <opm:artifact id="http://pc3#CompactedDBseed">
            <opm:value xsi:type="xsd:string">CompactedDBartifact</opm:value>
        </opm:artifact>
        <opm:artifact id="http://pc3#FileEntryArtifact0">
            <opm:value xsi:type="xsd:string">FileEntryArtifact0</opm:value>
        </opm:artifact>
        <opm:artifact id="http://pc3#FileEntryArtifact1">
            <opm:value xsi:type="xsd:string">FileEntryArtifact1</opm:value>
        </opm:artifact>
        <opm:artifact id="http://pc3#FileEntryArtifact2">
            <opm:value xsi:type="xsd:string">FileEntryArtifact2</opm:value>
        </opm:artifact>
        <opm:artifact id="http://pc3#plotPathArtifact">
            <opm:value xsi:type="xsd:string">plotPathArtifact</opm:value>
        </opm:artifact>
        <opm:artifact id="http://pc3#IsMatchCSVFileColumnNamesArtifact1">
            <opm:value xsi:type="xsd:string">IsMatchCSVFileColumnNamesArtifact1</opm:value>
        </opm:artifact>
        <opm:artifact id="http://pc3#IsMatchCSVFileColumnNamesArtifact0">
            <opm:value xsi:type="xsd:string">IsMatchCSVFileColumnNamesArtifact0</opm:value>
        </opm:artifact>
        <opm:artifact id="http://pc3#histogramStringArtifact">
            <opm:value xsi:type="xsd:string">histogramStringArtifact</opm:value>
        </opm:artifact>
        <opm:artifact id="http://pc3#IsMatchCSVFileColumnNamesArtifact2">
            <opm:value xsi:type="xsd:string">IsMatchCSVFileColumnNamesArtifact2</opm:value>
        </opm:artifact>
        <opm:artifact id="http://pc3#LoadCSVFileIntoTableArtifact1">
            <opm:value xsi:type="xsd:string">LoadCSVFileIntoTableArtifact1</opm:value>
        </opm:artifact>
        <opm:artifact id="http://pc3#LoadCSVFileIntoTableArtifact2">
            <opm:value xsi:type="xsd:string">LoadCSVFileIntoTableArtifact2</opm:value>
        </opm:artifact>
        <opm:artifact id="http://pc3#CreateEmptyLoadDBArtifact">
            <opm:value xsi:type="xsd:string">CreateEmptyLoadDBArtifact</opm:value>
        </opm:artifact>
        <opm:artifact id="http://pc3#ReadCSVReadyFileArtifact">
            <opm:value xsi:type="xsd:string">ReadCSVReadyFileArtifact</opm:value>
        </opm:artifact>
        <opm:artifact id="http://pc3#JobIDresource">
            <opm:value xsi:type="xsd:string">JobIDartifact</opm:value>
        </opm:artifact>
    </opm:artifacts>
    <opm:agents/>
    <opm:causalDependencies>
        <opm:used>
            <opm:effect id="http://pc3#IsMatchTableRowCountProcess0"/>
            <opm:role value="expected number of rows and target table name"/>
            <opm:cause id="http://pc3#ReadCSVFileColumnNamesArtifact0"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#UpdateComputedColumnsConditional1"/>
            <opm:role value="boolean input"/>
            <opm:cause id="http://pc3#UpdateComputedColumnsArtifact1"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#LoadCSVFileIntoTableProcess2"/>
            <opm:role value="table data"/>
            <opm:cause id="http://pc3#ReadCSVFileColumnNamesArtifact2"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#IsMatchTableColumnRangesProcess1"/>
            <opm:role value="database connection params"/>
            <opm:cause id="http://pc3#CreateEmptyLoadDBArtifact"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#UpdateComputedColumnsProcess2"/>
            <opm:role value="name of target table"/>
            <opm:cause id="http://pc3#ReadCSVFileColumnNamesArtifact2"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#IsCSVReadyFileExistsConditional"/>
            <opm:role value="boolean input"/>
            <opm:cause id="http://pc3#IsCSVReadyFileExistsArtifact"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#Iterator0"/>
            <opm:role value="list of files"/>
            <opm:cause id="http://pc3#ReadCSVReadyFileArtifact"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#IsMatchCSVFileColumnNamesProcess2"/>
            <opm:role value="file entry"/>
            <opm:cause id="http://pc3#ReadCSVFileColumnNamesArtifact2"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#IsMatchTableRowCountProcess1"/>
            <opm:role value="database connection params"/>
            <opm:cause id="http://pc3#CreateEmptyLoadDBArtifact"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#IsExistsCSVFileConditional1"/>
            <opm:role value="boolean input"/>
            <opm:cause id="http://pc3#IsExistsCSVFileArtifact1"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#CreateEmptyLoadDBProcess"/>
            <opm:role value="database name"/>
            <opm:cause id="http://pc3#JobIDresource"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#Iterator2"/>
            <opm:role value="list of files"/>
            <opm:cause id="http://pc3#ReadCSVReadyFileArtifact"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#LoadCSVFileIntoTableProcess0"/>
            <opm:role value="database connection params"/>
            <opm:cause id="http://pc3#CreateEmptyLoadDBArtifact"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#IsMatchCSVFileTablesConditional"/>
            <opm:role value="boolean input"/>
            <opm:cause id="http://pc3#IsMatchCSVFileTablesArtifact"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#IsMatchCSVFileColumnNamesConditional0"/>
            <opm:role value="boolean input"/>
            <opm:cause id="http://pc3#IsMatchCSVFileColumnNamesArtifact0"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#UpdateComputedColumnsProcess0"/>
            <opm:role value="name of target table"/>
            <opm:cause id="http://pc3#ReadCSVFileColumnNamesArtifact0"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#IsCSVReadyFileExistsProcess"/>
            <opm:role value="path to csv directory"/>
            <opm:cause id="http://pc3#CSVRootPathResource"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#IsMatchCSVFileColumnNamesProcess0"/>
            <opm:role value="file entry"/>
            <opm:cause id="http://pc3#ReadCSVFileColumnNamesArtifact0"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#IsMatchTableColumnRangesProcess1"/>
            <opm:role value="target table name and column ranges"/>
            <opm:cause id="http://pc3#ReadCSVFileColumnNamesArtifact1"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#ReadCSVReadyFileProcess"/>
            <opm:role value="path to csv directory"/>
            <opm:cause id="http://pc3#CSVRootPathResource"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#PlotHistogramProcess"/>
            <opm:role value="plotting input"/>
            <opm:cause id="http://pc3#histogramStringArtifact"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#LoadCSVFileIntoTableProcess1"/>
            <opm:role value="table data"/>
            <opm:cause id="http://pc3#ReadCSVFileColumnNamesArtifact1"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#IsExistsCSVFileConditional0"/>
            <opm:role value="boolean input"/>
            <opm:cause id="http://pc3#IsExistsCSVFileArtifact0"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#LoadCSVFileIntoTableProcess0"/>
            <opm:role value="table data"/>
            <opm:cause id="http://pc3#ReadCSVFileColumnNamesArtifact0"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#LoadCSVFileIntoTableProcess2"/>
            <opm:role value="database connection params"/>
            <opm:cause id="http://pc3#CreateEmptyLoadDBArtifact"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#IsExistsCSVFileConditional1"/>
            <opm:role value="boolean input"/>
            <opm:cause id="http://pc3#IsExistsCSVFileArtifact1"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#IsMatchTableColumnRangesProcess2"/>
            <opm:role value="database connection params"/>
            <opm:cause id="http://pc3#CreateEmptyLoadDBArtifact"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#IsExistsCSVFileProcess2"/>
            <opm:role value="csv file metadata"/>
            <opm:cause id="http://pc3#FileEntryArtifact2"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#LoadCSVFileIntoTableConditional2"/>
            <opm:role value="boolean input"/>
            <opm:cause id="http://pc3#LoadCSVFileIntoTableArtifact2"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#IsExistsCSVFileProcess1"/>
            <opm:role value="csv file metadata"/>
            <opm:cause id="http://pc3#FileEntryArtifact1"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#IsMatchTableColumnRangesProcess0"/>
            <opm:role value="target table name and column ranges"/>
            <opm:cause id="http://pc3#ReadCSVFileColumnNamesArtifact0"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#Iterator1"/>
            <opm:role value="list of files"/>
            <opm:cause id="http://pc3#ReadCSVReadyFileArtifact"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#UpdateComputedColumnsConditional0"/>
            <opm:role value="boolean input"/>
            <opm:cause id="http://pc3#UpdateComputedColumnsArtifact0"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#IsExistsCSVFileConditional2"/>
            <opm:role value="boolean input"/>
            <opm:cause id="http://pc3#IsExistsCSVFileArtifact2"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#UpdateComputedColumnsProcess1"/>
            <opm:role value="database connection params"/>
            <opm:cause id="http://pc3#CreateEmptyLoadDBArtifact"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#LoadCSVFileIntoTableProcess1"/>
            <opm:role value="database connection params"/>
            <opm:cause id="http://pc3#CreateEmptyLoadDBArtifact"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#UpdateComputedColumnsProcess1"/>
            <opm:role value="name of target table"/>
            <opm:cause id="http://pc3#ReadCSVFileColumnNamesArtifact1"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#IsExistsCSVFileProcess0"/>
            <opm:role value="csv file metadata"/>
            <opm:cause id="http://pc3#FileEntryArtifact0"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#LoadCSVFileIntoTableConditional1"/>
            <opm:role value="boolean input"/>
            <opm:cause id="http://pc3#LoadCSVFileIntoTableArtifact1"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#IsExistsCSVFileConditional2"/>
            <opm:role value="boolean input"/>
            <opm:cause id="http://pc3#IsExistsCSVFileArtifact2"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#ReadCSVFileColumnNamesProcess1"/>
            <opm:role value="table column names"/>
            <opm:cause id="http://pc3#FileEntryArtifact1"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#IsMatchTableRowCountProcess1"/>
            <opm:role value="expected number of rows and target table name"/>
            <opm:cause id="http://pc3#ReadCSVFileColumnNamesArtifact1"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#IsMatchTableRowCountProcess2"/>
            <opm:role value="expected number of rows and target table name"/>
            <opm:cause id="http://pc3#ReadCSVFileColumnNamesArtifact2"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#UpdateComputedColumnsConditional2"/>
            <opm:role value="boolean input"/>
            <opm:cause id="http://pc3#UpdateComputedColumnsArtifact2"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#IsMatchTableColumnRangesConditional1"/>
            <opm:role value="boolean input"/>
            <opm:cause id="http://pc3#IsMatchTableColumnRangesArtifact1"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#UpdateComputedColumnsProcess2"/>
            <opm:role value="database connection params"/>
            <opm:cause id="http://pc3#CreateEmptyLoadDBArtifact"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#DetectionsHistogramProcess"/>
            <opm:role value="db connection params"/>
            <opm:cause id="http://pc3#CreateEmptyLoadDBArtifact"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#IsMatchTableRowCountConditional0"/>
            <opm:role value="boolean input"/>
            <opm:cause id="http://pc3#IsMatchTableRowCountArtifact0"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#CompactDatabaseProcess"/>
            <opm:role value="database connection params"/>
            <opm:cause id="http://pc3#CreateEmptyLoadDBArtifact"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#IsMatchTableRowCountProcess2"/>
            <opm:role value="database connection params"/>
            <opm:cause id="http://pc3#CreateEmptyLoadDBArtifact"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#ReadCSVFileColumnNamesProcess0"/>
            <opm:role value="table column names"/>
            <opm:cause id="http://pc3#FileEntryArtifact0"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#IsMatchTableRowCountConditional1"/>
            <opm:role value="boolean input"/>
            <opm:cause id="http://pc3#IsMatchTableRowCountArtifact1"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#IsExistsCSVFileConditional0"/>
            <opm:role value="boolean input"/>
            <opm:cause id="http://pc3#IsExistsCSVFileArtifact0"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#IsMatchTableRowCountConditional2"/>
            <opm:role value="boolean input"/>
            <opm:cause id="http://pc3#IsMatchTableRowCountArtifact2"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#IsMatchCSVFileColumnNamesConditional1"/>
            <opm:role value="boolean input"/>
            <opm:cause id="http://pc3#IsMatchCSVFileColumnNamesArtifact1"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#IsMatchTableColumnRangesConditional2"/>
            <opm:role value="boolean input"/>
            <opm:cause id="http://pc3#IsMatchTableColumnRangesArtifact2"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#UpdateComputedColumnsProcess0"/>
            <opm:role value="database connection params"/>
            <opm:cause id="http://pc3#CreateEmptyLoadDBArtifact"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#IsMatchCSVFileTablesProcess"/>
            <opm:role value="input metadata"/>
            <opm:cause id="http://pc3#ReadCSVReadyFileArtifact"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#IsMatchCSVFileColumnNamesProcess1"/>
            <opm:role value="file entry"/>
            <opm:cause id="http://pc3#ReadCSVFileColumnNamesArtifact1"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#ReadCSVFileColumnNamesProcess2"/>
            <opm:role value="table column names"/>
            <opm:cause id="http://pc3#FileEntryArtifact2"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#IsMatchTableRowCountProcess0"/>
            <opm:role value="database connection params"/>
            <opm:cause id="http://pc3#CreateEmptyLoadDBArtifact"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#IsMatchTableColumnRangesConditional0"/>
            <opm:role value="boolean input"/>
            <opm:cause id="http://pc3#IsMatchTableColumnRangesArtifact0"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#IsMatchTableColumnRangesProcess0"/>
            <opm:role value="database connection params"/>
            <opm:cause id="http://pc3#CreateEmptyLoadDBArtifact"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#IsMatchCSVFileColumnNamesConditional2"/>
            <opm:role value="boolean input"/>
            <opm:cause id="http://pc3#IsMatchCSVFileColumnNamesArtifact2"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#LoadCSVFileIntoTableConditional0"/>
            <opm:role value="boolean input"/>
            <opm:cause id="http://pc3#LoadCSVFileIntoTableArtifact0"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#IsMatchTableColumnRangesProcess2"/>
            <opm:role value="target table name and column ranges"/>
            <opm:cause id="http://pc3#ReadCSVFileColumnNamesArtifact2"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#DisplayPlotProcess"/>
            <opm:role value="show plot"/>
            <opm:cause id="http://pc3#plotPathArtifact"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:used>
            <opm:effect id="http://pc3#IsMatchCSVFileTablesConditional"/>
            <opm:role value="boolean input"/>
            <opm:cause id="http://pc3#IsMatchCSVFileTablesArtifact"/>
            <opm:account id="Provenance Account"/>
        </opm:used>
        <opm:wasGeneratedBy>
            <opm:effect id="http://pc3#FileEntryArtifact2"/>
            <opm:role value="csv file"/>
            <opm:cause id="http://pc3#Iterator2"/>
            <opm:account id="Provenance Account"/>
        </opm:wasGeneratedBy>
        <opm:wasGeneratedBy>
            <opm:effect id="http://pc3#UpdateComputedColumnsArtifact1"/>
            <opm:role value="computed column update result"/>
            <opm:cause id="http://pc3#UpdateComputedColumnsProcess1"/>
            <opm:account id="Provenance Account"/>
        </opm:wasGeneratedBy>
        <opm:wasGeneratedBy>
            <opm:effect id="http://pc3#UpdateComputedColumnsArtifact0"/>
            <opm:role value="computed column update result"/>
            <opm:cause id="http://pc3#UpdateComputedColumnsProcess0"/>
            <opm:account id="Provenance Account"/>
        </opm:wasGeneratedBy>
        <opm:wasGeneratedBy>
            <opm:effect id="http://pc3#IsMatchCSVFileTablesArtifact"/>
            <opm:role value="datafiles/metadata comparison result"/>
            <opm:cause id="http://pc3#IsMatchCSVFileTablesProcess"/>
            <opm:account id="Provenance Account"/>
        </opm:wasGeneratedBy>
        <opm:wasGeneratedBy>
            <opm:effect id="http://pc3#LoadCSVFileIntoTableArtifact2"/>
            <opm:role value="load result"/>
            <opm:cause id="http://pc3#LoadCSVFileIntoTableProcess2"/>
            <opm:account id="Provenance Account"/>
        </opm:wasGeneratedBy>
        <opm:wasGeneratedBy>
            <opm:effect id="http://pc3#plotPathArtifact"/>
            <opm:role value="plot to path"/>
            <opm:cause id="http://pc3#PlotHistogramProcess"/>
            <opm:account id="Provenance Account"/>
        </opm:wasGeneratedBy>
        <opm:wasGeneratedBy>
            <opm:effect id="http://pc3#IsMatchCSVFileColumnNamesArtifact0"/>
            <opm:role value="result of column check"/>
            <opm:cause id="http://pc3#IsMatchCSVFileColumnNamesProcess0"/>
            <opm:account id="Provenance Account"/>
        </opm:wasGeneratedBy>
        <opm:wasGeneratedBy>
            <opm:effect id="http://pc3#IsCSVReadyFileExistsArtifact"/>
            <opm:role value="check result"/>
            <opm:cause id="http://pc3#IsCSVReadyFileExistsProcess"/>
            <opm:account id="Provenance Account"/>
        </opm:wasGeneratedBy>
        <opm:wasGeneratedBy>
            <opm:effect id="http://pc3#LoadCSVFileIntoTableArtifact1"/>
            <opm:role value="load result"/>
            <opm:cause id="http://pc3#LoadCSVFileIntoTableProcess1"/>
            <opm:account id="Provenance Account"/>
        </opm:wasGeneratedBy>
        <opm:wasGeneratedBy>
            <opm:effect id="http://pc3#IsMatchTableRowCountArtifact2"/>
            <opm:role value="number of row check result"/>
            <opm:cause id="http://pc3#IsMatchTableRowCountProcess2"/>
            <opm:account id="Provenance Account"/>
        </opm:wasGeneratedBy>
        <opm:wasGeneratedBy>
            <opm:effect id="http://pc3#IsExistsCSVFileArtifact1"/>
            <opm:role value="file metatdata check result"/>
            <opm:cause id="http://pc3#IsExistsCSVFileProcess1"/>
            <opm:account id="Provenance Account"/>
        </opm:wasGeneratedBy>
        <opm:wasGeneratedBy>
            <opm:effect id="http://pc3#LoadCSVFileIntoTableArtifact0"/>
            <opm:role value="load result"/>
            <opm:cause id="http://pc3#LoadCSVFileIntoTableProcess0"/>
            <opm:account id="Provenance Account"/>
        </opm:wasGeneratedBy>
        <opm:wasGeneratedBy>
            <opm:effect id="http://pc3#ReadCSVFileColumnNamesArtifact1"/>
            <opm:role value="file entry with columns names popluated"/>
            <opm:cause id="http://pc3#ReadCSVFileColumnNamesProcess1"/>
            <opm:account id="Provenance Account"/>
        </opm:wasGeneratedBy>
        <opm:wasGeneratedBy>
            <opm:effect id="http://pc3#IsMatchTableRowCountArtifact1"/>
            <opm:role value="number of row check result"/>
            <opm:cause id="http://pc3#IsMatchTableRowCountProcess1"/>
            <opm:account id="Provenance Account"/>
        </opm:wasGeneratedBy>
        <opm:wasGeneratedBy>
            <opm:effect id="http://pc3#FileEntryArtifact1"/>
            <opm:role value="csv file"/>
            <opm:cause id="http://pc3#Iterator1"/>
            <opm:account id="Provenance Account"/>
        </opm:wasGeneratedBy>
        <opm:wasGeneratedBy>
            <opm:effect id="http://pc3#ReadCSVFileColumnNamesArtifact0"/>
            <opm:role value="file entry with columns names popluated"/>
            <opm:cause id="http://pc3#ReadCSVFileColumnNamesProcess0"/>
            <opm:account id="Provenance Account"/>
        </opm:wasGeneratedBy>
        <opm:wasGeneratedBy>
            <opm:effect id="http://pc3#CreateEmptyLoadDBArtifact"/>
            <opm:role value="connection params"/>
            <opm:cause id="http://pc3#CreateEmptyLoadDBProcess"/>
            <opm:account id="Provenance Account"/>
        </opm:wasGeneratedBy>
        <opm:wasGeneratedBy>
            <opm:effect id="http://pc3#FileEntryArtifact0"/>
            <opm:role value="csv file"/>
            <opm:cause id="http://pc3#Iterator0"/>
            <opm:account id="Provenance Account"/>
        </opm:wasGeneratedBy>
        <opm:wasGeneratedBy>
            <opm:effect id="http://pc3#IsMatchTableColumnRangesArtifact0"/>
            <opm:role value="column range check result"/>
            <opm:cause id="http://pc3#IsMatchTableColumnRangesProcess0"/>
            <opm:account id="Provenance Account"/>
        </opm:wasGeneratedBy>
        <opm:wasGeneratedBy>
            <opm:effect id="http://pc3#IsMatchTableRowCountArtifact0"/>
            <opm:role value="number of row check result"/>
            <opm:cause id="http://pc3#IsMatchTableRowCountProcess0"/>
            <opm:account id="Provenance Account"/>
        </opm:wasGeneratedBy>
        <opm:wasGeneratedBy>
            <opm:effect id="http://pc3#ReadCSVFileColumnNamesArtifact2"/>
            <opm:role value="file entry with columns names popluated"/>
            <opm:cause id="http://pc3#ReadCSVFileColumnNamesProcess2"/>
            <opm:account id="Provenance Account"/>
        </opm:wasGeneratedBy>
        <opm:wasGeneratedBy>
            <opm:effect id="http://pc3#IsExistsCSVFileArtifact0"/>
            <opm:role value="file metatdata check result"/>
            <opm:cause id="http://pc3#IsExistsCSVFileProcess0"/>
            <opm:account id="Provenance Account"/>
        </opm:wasGeneratedBy>
        <opm:wasGeneratedBy>
            <opm:effect id="http://pc3#IsExistsCSVFileArtifact2"/>
            <opm:role value="file metatdata check result"/>
            <opm:cause id="http://pc3#IsExistsCSVFileProcess2"/>
            <opm:account id="Provenance Account"/>
        </opm:wasGeneratedBy>
        <opm:wasGeneratedBy>
            <opm:effect id="http://pc3#ReadCSVReadyFileArtifact"/>
            <opm:role value="list of csv files metadata"/>
            <opm:cause id="http://pc3#ReadCSVReadyFileProcess"/>
            <opm:account id="Provenance Account"/>
        </opm:wasGeneratedBy>
        <opm:wasGeneratedBy>
            <opm:effect id="http://pc3#IsMatchTableColumnRangesArtifact2"/>
            <opm:role value="column range check result"/>
            <opm:cause id="http://pc3#IsMatchTableColumnRangesProcess2"/>
            <opm:account id="Provenance Account"/>
        </opm:wasGeneratedBy>
        <opm:wasGeneratedBy>
            <opm:effect id="http://pc3#IsMatchCSVFileColumnNamesArtifact1"/>
            <opm:role value="result of column check"/>
            <opm:cause id="http://pc3#IsMatchCSVFileColumnNamesProcess1"/>
            <opm:account id="Provenance Account"/>
        </opm:wasGeneratedBy>
        <opm:wasGeneratedBy>
            <opm:effect id="http://pc3#IsMatchCSVFileColumnNamesArtifact2"/>
            <opm:role value="result of column check"/>
            <opm:cause id="http://pc3#IsMatchCSVFileColumnNamesProcess2"/>
            <opm:account id="Provenance Account"/>
        </opm:wasGeneratedBy>
        <opm:wasGeneratedBy>
            <opm:effect id="http://pc3#IsMatchTableColumnRangesArtifact1"/>
            <opm:role value="column range check result"/>
            <opm:cause id="http://pc3#IsMatchTableColumnRangesProcess1"/>
            <opm:account id="Provenance Account"/>
        </opm:wasGeneratedBy>
        <opm:wasGeneratedBy>
            <opm:effect id="http://pc3#UpdateComputedColumnsArtifact2"/>
            <opm:role value="computed column update result"/>
            <opm:cause id="http://pc3#UpdateComputedColumnsProcess2"/>
            <opm:account id="Provenance Account"/>
        </opm:wasGeneratedBy>
        <opm:wasGeneratedBy>
            <opm:effect id="http://pc3#histogramStringArtifact"/>
            <opm:role value="histogram string"/>
            <opm:cause id="http://pc3#DetectionsHistogramProcess"/>
            <opm:account id="Provenance Account"/>
        </opm:wasGeneratedBy>
        <opm:wasGeneratedBy>
            <opm:effect id="http://pc3#CompactedDBseed"/>
            <opm:role value="compacted database"/>
            <opm:cause id="http://pc3#CompactDatabaseProcess"/>
            <opm:account id="Provenance Account"/>
        </opm:wasGeneratedBy>
        <opm:wasTriggeredBy>
            <opm:effect id="http://pc3#CompactDatabaseProcess"/>
            <opm:cause id="http://pc3#Iterator3"/>
            <opm:account id="Provenance Account"/>
        </opm:wasTriggeredBy>
        <opm:wasTriggeredBy>
            <opm:effect id="http://pc3#ReadCSVFileColumnNamesProcess1"/>
            <opm:cause id="http://pc3#IsExistsCSVFileConditional1"/>
            <opm:account id="Provenance Account"/>
        </opm:wasTriggeredBy>
        <opm:wasTriggeredBy>
            <opm:effect id="http://pc3#LoadCSVFileIntoTableProcess0"/>
            <opm:cause id="http://pc3#IsMatchCSVFileColumnNamesConditional0"/>
            <opm:account id="Provenance Account"/>
        </opm:wasTriggeredBy>
        <opm:wasTriggeredBy>
            <opm:effect id="http://pc3#LoadCSVFileIntoTableProcess1"/>
            <opm:cause id="http://pc3#IsMatchCSVFileColumnNamesConditional1"/>
            <opm:account id="Provenance Account"/>
        </opm:wasTriggeredBy>
        <opm:wasTriggeredBy>
            <opm:effect id="http://pc3#IsMatchTableRowCountProcess1"/>
            <opm:cause id="http://pc3#UpdateComputedColumnsConditional1"/>
            <opm:account id="Provenance Account"/>
        </opm:wasTriggeredBy>
        <opm:wasTriggeredBy>
            <opm:effect id="http://pc3#LoadCSVFileIntoTableProcess2"/>
            <opm:cause id="http://pc3#IsMatchCSVFileColumnNamesConditional2"/>
            <opm:account id="Provenance Account"/>
        </opm:wasTriggeredBy>
        <opm:wasTriggeredBy>
            <opm:effect id="http://pc3#ReadCSVReadyFileProcess"/>
            <opm:cause id="http://pc3#IsCSVReadyFileExistsConditional"/>
            <opm:account id="Provenance Account"/>
        </opm:wasTriggeredBy>
        <opm:wasTriggeredBy>
            <opm:effect id="http://pc3#ReadCSVFileColumnNamesProcess2"/>
            <opm:cause id="http://pc3#IsExistsCSVFileConditional2"/>
            <opm:account id="Provenance Account"/>
        </opm:wasTriggeredBy>
        <opm:wasTriggeredBy>
            <opm:effect id="http://pc3#Iterator3"/>
            <opm:cause id="http://pc3#IsMatchTableColumnRangesConditional2"/>
            <opm:account id="Provenance Account"/>
        </opm:wasTriggeredBy>
        <opm:wasTriggeredBy>
            <opm:effect id="http://pc3#IsMatchTableColumnRangesProcess2"/>
            <opm:cause id="http://pc3#IsMatchTableRowCountConditional2"/>
            <opm:account id="Provenance Account"/>
        </opm:wasTriggeredBy>
        <opm:wasTriggeredBy>
            <opm:effect id="http://pc3#IsMatchTableColumnRangesProcess1"/>
            <opm:cause id="http://pc3#IsMatchTableRowCountConditional1"/>
            <opm:account id="Provenance Account"/>
        </opm:wasTriggeredBy>
        <opm:wasTriggeredBy>
            <opm:effect id="http://pc3#IsMatchTableColumnRangesProcess0"/>
            <opm:cause id="http://pc3#IsMatchTableRowCountConditional0"/>
            <opm:account id="Provenance Account"/>
        </opm:wasTriggeredBy>
        <opm:wasTriggeredBy>
            <opm:effect id="http://pc3#DetectionsHistogramProcess"/>
            <opm:cause id="http://pc3#CompactDatabaseProcess"/>
            <opm:account id="Provenance Account"/>
        </opm:wasTriggeredBy>
        <opm:wasTriggeredBy>
            <opm:effect id="http://pc3#ReadCSVFileColumnNamesProcess0"/>
            <opm:cause id="http://pc3#IsExistsCSVFileConditional0"/>
            <opm:account id="Provenance Account"/>
        </opm:wasTriggeredBy>
        <opm:wasTriggeredBy>
            <opm:effect id="http://pc3#Iterator2"/>
            <opm:cause id="http://pc3#IsMatchTableColumnRangesConditional1"/>
            <opm:account id="Provenance Account"/>
        </opm:wasTriggeredBy>
        <opm:wasTriggeredBy>
            <opm:effect id="http://pc3#UpdateComputedColumnsProcess0"/>
            <opm:cause id="http://pc3#LoadCSVFileIntoTableConditional0"/>
            <opm:account id="Provenance Account"/>
        </opm:wasTriggeredBy>
        <opm:wasTriggeredBy>
            <opm:effect id="http://pc3#UpdateComputedColumnsProcess1"/>
            <opm:cause id="http://pc3#LoadCSVFileIntoTableConditional1"/>
            <opm:account id="Provenance Account"/>
        </opm:wasTriggeredBy>
        <opm:wasTriggeredBy>
            <opm:effect id="http://pc3#Iterator0"/>
            <opm:cause id="http://pc3#CreateEmptyLoadDBProcess"/>
            <opm:account id="Provenance Account"/>
        </opm:wasTriggeredBy>
        <opm:wasTriggeredBy>
            <opm:effect id="http://pc3#CreateEmptyLoadDBProcess"/>
            <opm:cause id="http://pc3#IsMatchCSVFileTablesConditional"/>
            <opm:account id="Provenance Account"/>
        </opm:wasTriggeredBy>
        <opm:wasTriggeredBy>
            <opm:effect id="http://pc3#IsMatchTableRowCountProcess2"/>
            <opm:cause id="http://pc3#UpdateComputedColumnsConditional2"/>
            <opm:account id="Provenance Account"/>
        </opm:wasTriggeredBy>
        <opm:wasTriggeredBy>
            <opm:effect id="http://pc3#UpdateComputedColumnsProcess2"/>
            <opm:cause id="http://pc3#LoadCSVFileIntoTableConditional2"/>
            <opm:account id="Provenance Account"/>
        </opm:wasTriggeredBy>
        <opm:wasTriggeredBy>
            <opm:effect id="http://pc3#IsMatchTableRowCountProcess0"/>
            <opm:cause id="http://pc3#UpdateComputedColumnsConditional0"/>
            <opm:account id="Provenance Account"/>
        </opm:wasTriggeredBy>
        <opm:wasTriggeredBy>
            <opm:effect id="http://pc3#Iterator1"/>
            <opm:cause id="http://pc3#IsMatchTableColumnRangesConditional0"/>
            <opm:account id="Provenance Account"/>
        </opm:wasTriggeredBy>
    </opm:causalDependencies>
</opm:opmGraph>
