GenericsProposal-Generics and everything else are classes/ModifiedIrrelevant

We want to also represent that a certain modification is irrelevant for the effect in question. Here is an attempt to handle that case.

We will change the value of status(property hasModificationStatus used to be called isModified) from a boolean to a objectProperty.

Create the classes


 * `MayOrMayNotHaveModification` (has covering axiom)
 * `MustHaveModification`
 * `MustNotHaveModification`

Change the restriction on `IsSerinePhosAt200` from `isModified has true` to `hasModificationStatus some MustHaveModification`

`PhosphorylatedAt100Irrelevant` represents the position not mattering.



`P53Phos200MustPhos100Irrelevant` represents P53 serine phosphorylated at 200 with a irrelevant phosphorylation at 100.



`P53Phos200MustPhos100IrrelevantInhibitsApoptosis` represents said P53 inhibiting apoptosis.



In addition, in this version I have made the modification status necessary and sufficient properties to define the protein. The reasoner thus correctly classifies `P53Phos200MustPhos100Irrelevant` as a subclass of `P53SerinePhosAt200`.



Here is the OWL file: ModifiedIrrelevant.owl

Note: I'm not 100% sure of this one. I can't tell if we really need to have a three-valued status:


 * `ModificationStatus` (has covering axiom)
 * `MustHaveModification`
 * `MustNotHaveModification`
 * `ModificationDoesntMatter`

The reason I think we may need this is to express sufficient phosphorylation. Namely we want to say that all our modifications must all be either e.g. IsSerinePhosAt200 or ModificationStatus some ModificationDoesntMatter. OTOH, then we don't have ModificationDoesntMatter subsuming MustHaveModification (or in english P53 having phos at 400 being a subclass of P53 doesn't matter phos at 400).

Or maybe we can have both cases if we use the earlier 3 classes and instances of them. Need to consult OWL knowledgeable person.