clingen-data-model / clingen-interpretation

Allele (variant) interpretation model and API for ClinGen
3 stars 1 forks source link

some "@iri" typed objects have additional attributes #195

Closed bpow closed 6 years ago

bpow commented 6 years ago

splitting off from #193 as a relatively-isolated issue.

The relevant items are:

[
  {
    "id": "CG-EXAMPLE:Ascrt0001",
    "type": "DomainEntity",
    "userLabel": {
      "id": "CG-EX:UsrLabl002",
      "type": "UserLabel",
      "description": "Case group is composed of cases from six cohorts from the GENIUS T2D consortium.  Case status is defined per-cohort."
    }
  },
  {
    "id": "CG-EXAMPLE:Ascrt0002",
    "type": "DomainEntity",
    "userLabel": {
      "id": "CG-EX:UsrLabl002",
      "type": "UserLabel",
      "description": "Case group is composed of cases from six cohorts from the GENIUS T2D consortium.  Case status is defined per-cohort."
    }
  },
  {
    "id": "CG-EXAMPLE:Ascrt0003",
    "type": "DomainEntity",
    "userLabel": {
      "id": "CG-EX:UsrLabl003",
      "type": "UserLabel",
      "description": "Controls group is composed of controls from six cohorts from the GENIUS T2D consortium.  Controls status is defined per-cohort."
    }
  },
  {
    "id": "SEPIO-CG:99300",
    "type": "DomainEntity",
    "description": "This is the description of how the weighting of the satisfied criterion are typically evaluated to arrive at a specific clinical significance."
  },
  {
    "id": "CG-EX:Indiv333",
    "type": "DomainEntity",
    "description": "individual #001"
  },
  {
    "id": "CG-EX:Indiv334",
    "type": "DomainEntity",
    "description": "individual #002"
  },
  {
    "id": "CG-EX:Indiv335",
    "type": "DomainEntity",
    "description": "individual #003"
  },
  {
    "id": "CG-EX:Indiv336",
    "type": "DomainEntity",
    "description": "individual #004"
  },
  {
    "id": "CG-EX:Indiv337",
    "type": "DomainEntity",
    "description": "individual #005"
  },
  {
    "id": "CG-EX:Indiv338",
    "type": "DomainEntity",
    "description": "individual #006"
  },
  {
    "id": "CG-EX:Indiv339",
    "type": "DomainEntity",
    "description": "individual #007"
  },
  {
    "id": "CG-EX:Indiv340",
    "type": "DomainEntity",
    "description": "individual #008"
  },
  {
    "id": "CG-EX:Indiv341",
    "type": "DomainEntity",
    "description": "individual #009"
  },
  {
    "id": "CG-EX:Indiv342",
    "type": "DomainEntity",
    "description": "individual #010"
  },
  {
    "id": "CG-EX:Indiv343",
    "type": "DomainEntity",
    "description": "individual #011"
  },
  {
    "id": "CG-EX:Indiv344",
    "type": "DomainEntity",
    "description": "individual #012"
  },
  {
    "id": "CG-EX:Indiv345",
    "type": "DomainEntity",
    "description": "individual #013"
  },
  {
    "id": "CG-EX:Indiv346",
    "type": "DomainEntity",
    "description": "individual #014"
  },
  {
    "id": "CG-EX:Indiv347",
    "type": "DomainEntity",
    "description": "individual #015"
  },
  {
    "id": "CG-EX:Indiv348",
    "type": "DomainEntity",
    "description": "individual #016"
  },
  {
    "id": "CG-EX:Indiv349",
    "type": "DomainEntity",
    "description": "individual #017"
  },
  {
    "id": "CG-EX:Indiv350",
    "type": "DomainEntity",
    "description": "individual #018"
  },
  {
    "id": "CG-EX:Indiv351",
    "type": "DomainEntity",
    "description": "individual #019"
  },
  {
    "id": "CG-EX:Indiv352",
    "type": "DomainEntity",
    "description": "individual #020"
  },
  {
    "id": "CG-EX:Indiv353",
    "type": "DomainEntity",
    "description": "individual #021"
  },
  {
    "id": "CG-EX:Indiv354",
    "type": "DomainEntity",
    "description": "individual #022"
  },
  {
    "id": "CG-EX:Indiv355",
    "type": "DomainEntity",
    "description": "individual #023"
  },
  {
    "id": "CG-EX:Indiv356",
    "type": "DomainEntity",
    "description": "individual #024"
  },
  {
    "id": "CG-EX:Indiv357",
    "type": "DomainEntity",
    "description": "individual #025"
  },
  {
    "id": "CG-EX:Indiv358",
    "type": "DomainEntity",
    "description": "individual #026"
  },
  {
    "id": "CG-EX:Indiv359",
    "type": "DomainEntity",
    "description": "individual #027"
  },
  {
    "id": "CG-EX:Indiv360",
    "type": "DomainEntity",
    "description": "individual #028"
  },
  {
    "id": "CG-EX:Indiv361",
    "type": "DomainEntity",
    "description": "individual #029"
  },
  {
    "id": "CG-EX:Indiv362",
    "type": "DomainEntity",
    "description": "individual #030"
  },
  {
    "id": "CG-EX:Fam363",
    "type": "DomainEntity",
    "description": "Family #001",
    "label": "12A"
  },
  {
    "id": "CG-EX:Fam364",
    "type": "DomainEntity",
    "description": "Family #002"
  },
  {
    "id": "CG-EX:Fam365",
    "type": "DomainEntity",
    "description": "Family #003"
  },
  {
    "id": "CG-EX:Fam366",
    "type": "DomainEntity",
    "description": "Family #004"
  },
  {
    "id": "CG-EX:Fam367",
    "type": "DomainEntity",
    "description": "Family #005"
  },
  {
    "id": "CG-EX:Fam368",
    "type": "DomainEntity",
    "description": "Family #006"
  },
  {
    "id": "CG-EX:Fam369",
    "type": "DomainEntity",
    "description": "Family #007"
  },
  {
    "id": "CG-EX:Fam370",
    "type": "DomainEntity",
    "description": "Family #008"
  },
  {
    "id": "CG-EX:Fam371",
    "type": "DomainEntity",
    "description": "Family #009"
  },
  {
    "id": "CG-EX:Fam372",
    "type": "DomainEntity",
    "description": "Family #010"
  },
  {
    "id": "CG-EX:Fam373",
    "type": "DomainEntity",
    "description": "Family #011"
  }
]
bpow commented 6 years ago

Most of these items are "Family" entities, which have "description" attributes. And more generally, there are "description" attributes on other items, and a few things that are notated with a UserLabel in the defunct UserLabel model.

Fixing the UserLabel modelling will fix that last few. For the others, I think there are a couple of options for how to move forward:

  1. Allow everything to have a "description" attribute, just like everything can have a "label".
  2. Convert the "description" attributes (at least in "Family" entities) to labels.
  3. Convert "Family" back into a fully-fledged type.
  4. Move the descriptions from items where they currently are to corresponding UserLabels scoped on the objects above them.

By way of editorial comments: I'm a bit hesitant about option 1 since that gives us two special cases. Option 2 is probably OK. I don't think we have to go as far as option 3. Option 4 seems like overkill for the Family objects, but might be reasonable for the others.

bpow commented 6 years ago

Of all of the "Family" entities, one had a label ("12A") in addition to its description (Family #001). In the interests of consistency, I am removing the "12A" label so this is more like the others. @larrybabb : does this seem right? If not, this could be a place to use a UserLabel.

bpow commented 6 years ago

changes to address the UserLabel cases:

Changed entity for A073 from E40 to E01 (Statement), made its cardinality 0..* (was 0..1)

Added A130 to E39 (UserLabel.labelFor)

As I moved descriptions up to UserLabels, I made labels for the Ascrt objects as well, but I am not sure whether the labels should go there or in the UserLabel objects...

for CG-EX:UsrLabl001:

for CG-EX:UsrLabl002:

for CG-EX:UsrLabl003:

While I was at it, I changed all of the CG-EXAMPLE: prefixes to CG-EX: for consistency.

Additional time: about 40 minutes (including figuring out about #198)