Skip to content

As a data user, I want to superseded products using PROV LDD metadataΒ #206

Description

@jordanpadams

Checked for duplicates

Yes - I've already checked

πŸ§‘β€πŸ”¬ User Persona(s)

Data User, Data Engineer, Node Operator

πŸ’ͺ Motivation

...so that I can discover provenance relationships between products that have different LIDs (not just different versions of the same LID), enabling more comprehensive tracking of product supersession across the registry.

πŸ“– Additional Details

Current Behavior

The provenance sweeper currently uses version_id to determine if a product has been superseded. This only tracks supersession within the same LID (different versions of the same product).

New Requirement

With the new PROV LDD, products can now explicitly declare that they supersede other products with different LIDs. The provenance sweeper needs to be updated to also process this PROV LDD information.

PROV LDD Structure

The new XML label structure includes:

<prov:SupersededLID>
    <prov:title>urn:nasa:pds:...</prov:title>
    <prov:local_id>Superseded LIDs</prov:local_id>
    <prov:description>Product LID change due to...</prov:description>
    <prov:Entity>
        <prov:title>urn:nasa:pds:...</prov:title>
        <prov:local_id>urn:nasa:pds:...</prov:local_id>
        <prov:description>New LID supersedes old LID.</prov:description>
        <prov:Attributes>
            <prov:attribute>Supersedes</prov:attribute>
            <prov:value>urn:nasa:pds:...[superseded product LID]</prov:value>
        </prov:Attributes>
        <prov:Attributes>
            <prov:attribute>Reason</prov:attribute>
            <prov:value>Duplication</prov:value>
        </prov:Attributes>
    </prov:Entity>
</prov:SupersededLID>

Implementation Approach

In the registry, the sweeper should:

  1. Query for documents where prov:Attributes.prov:attribute = "Supersedes"
  2. Extract the associated prov:Attributes.prov:value to get the LID of the superseded product
  3. Update the superseded product's ops:Provenance/ops:superseded_by field to point to the superseding product

This should work alongside the existing version-based supersession logic, not replace it.


For Internal Dev Team To Complete

Acceptance Criteria

Given a product with PROV LDD metadata declaring it supersedes another product (via prov:Attributes with attribute=Supersedes)
When I perform a provenance sweeper run
Then I expect the superseded product to have its ops:Provenance/ops:superseded_by field populated with the LIDVID of the superseding product

βš™οΈ Engineering Details

To be filled by engineering team

πŸŽ‰ I&T

To be filled by engineering team

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Status
    ToDo
    Status
    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions