edmcouncil / idmp

This repository stores the OWL ontology built on the basis of the ISO standards for identification of medicinal products.
https://spec.edmcouncil.org/idmp/
MIT License
29 stars 9 forks source link

Wrong use of idmp-amp:AmlodipineMolecularFormula #439

Closed mereolog closed 9 months ago

mereolog commented 11 months ago

idmp-amp:Amlodipine has two properties:

  1. idmp-sub:hasDefiningMolecularFormula
  2. idmp-sub:hasDefiningMolecularFormulaByMoiety

with the same value: idmp-amp:AmlodipineMolecularFormula:

https://github.com/edmcouncil/idmp/blob/a2a95960d65df045be25c66c51dd706836531609/EXT/Examples/AmlodipineExample.rdf#L138-L155

This seems wrong and is not congruent with the following constraint on idmp-sub:Moiety:

https://github.com/edmcouncil/idmp/blob/a2a95960d65df045be25c66c51dd706836531609/ISO/ISO11238-Substances.rdf#L1505-L1509

I think https://github.com/edmcouncil/idmp/blob/a2a95960d65df045be25c66c51dd706836531609/EXT/Examples/AmlodipineExample.rdf#L147 should read:

tw-osthus commented 10 months ago

Yes it should be &idmp-amp;AmlodipineMolecularFormulaByMoiety, but in this case the molecular formula is the same as &idmp-amp;AmlodipineBesylateMolecularFormula as you can see if you compare the text value.

A MolecularFormulaByMoiety is a MolecularFormula with a dot in between to separate moieties.

What is actually wrong is the restriction on idmp-sub:moiety. A moiety has a defining molecular formula. It does NOT have a defining molecular formula by moiety, which would mean that the moiety is composed of two or more other moieties. This can be the case, but is typically not.

The other way round makes more sense Amlodipine has a defining molecular formula by moiety "C20H25CIN2O5 . C6H6O3S" It is composed of two moieties: C20H25ClN2O5 and C6H6O3S each of those has a defining molecular formula

The equivalence criteria for molecular formulas is the text value. Two molecular formulas are identical if the formula's text are identical. So it does not make sense to give both a different IRI, at least there should be an owl:sameAs assertion.

I prefer using blank nodes in these cases, as it expresses better, that they do not have an identity by IRI.

ElisaKendall commented 9 months ago

This was addressed via pull request #493