oborel / obo-relations

RO is an ontology of relations for use with biological ontologies
http://oborel.github.io/
Other
92 stars 47 forks source link

Add conjugate relations from CHEBI and include transitive versions #643

Closed cmungall closed 1 year ago

cmungall commented 1 year ago

CHEBI includes a number of relations that are very useful for queries, in particular conjugate base/acid relations

In CHEBI these have no associated logical axioms other than inverse_of (which of course in OWL obtains on the instance level - chebi makes reciprocal assertions)

    <!-- http://purl.obolibrary.org/obo/chebi#is_conjugate_acid_of -->

    <owl:ObjectProperty rdf:about="http://purl.obolibrary.org/obo/chebi#is_conjugate_acid_of">
        <owl:inverseOf rdf:resource="http://purl.obolibrary.org/obo/chebi#is_conjugate_base_of"/>
        <oboInOwl:hasOBONamespace rdf:datatype="http://www.w3.org/2001/XMLSchema#string">chebi_ontology</oboInOwl:hasOBONamespace>
        <oboInOwl:id rdf:datatype="http://www.w3.org/2001/XMLSchema#string">is_conjugate_acid_of</oboInOwl:id>
        <oboInOwl:is_cyclic rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">true</oboInOwl:is_cyclic>
        <oboInOwl:is_transitive rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oboInOwl:is_transitive>
        <rdfs:label rdf:datatype="http://www.w3.org/2001/XMLSchema#string">is conjugate acid of</rdfs:label>
    </owl:ObjectProperty>

    <!-- http://purl.obolibrary.org/obo/chebi#is_conjugate_base_of -->

    <owl:ObjectProperty rdf:about="http://purl.obolibrary.org/obo/chebi#is_conjugate_base_of">
        <oboInOwl:hasOBONamespace rdf:datatype="http://www.w3.org/2001/XMLSchema#string">chebi_ontology</oboInOwl:hasOBONamespace>
        <oboInOwl:id rdf:datatype="http://www.w3.org/2001/XMLSchema#string">is_conjugate_base_of</oboInOwl:id>
        <oboInOwl:is_transitive rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oboInOwl:is_transitive>
        <rdfs:label rdf:datatype="http://www.w3.org/2001/XMLSchema#string">is conjugate base of</rdfs:label>
    </owl:ObjectProperty>

there is no documentation on these in the OWL, but there is a section in the chebi user guide that details their use:

image

We should coordinate with CHEBI such that there is OWL for these relations that have full documentation

Additionally, these are not transitive in CHEBI - they are used to query the direct conjugate. It would be useful to have transitive versions.

cthoyt commented 1 year ago

Yes! This issue is already so much of a pain that I have created my own ontology resource to help normalize these ChEBI relations (and other important relations haphazardly handled in the hashtag namespaces inside other ontologies)

cthoyt commented 1 year ago

Follow up from meeting on Jan 3, 2023:

  1. I'll make a PR that uses the same nomenclature as what already exists, without transitivity (i.e., only for direct, that uses the same nomenclature that ChEBI uses)
  2. Later we can make a more "generic" one that can have the transitivity
  3. Tomorrow, @cmungall will chat with the ChEBI group about future curation efforts, and see if they would be amenable to using a RO relation for this instead of their own internal one (and maybe I will join)

Why is transitivity important?

What we want to do is make a way of saying that H2CO3 is related to CO32- through a chain of 2 conjugate acid relationships. The interesting thing in this scenario is that HCO3- is both an acid and a base.

While this is a simple example, there could be many more complex examples with multiple hydrogen acceptors/donors (think a complicated protein) that can have lots of different protonation states and have much more interesting networks of conjugate acids/bases.

nataled commented 1 year ago

From chat: Bradley Varner pointed out that conjugate acid / base pairs differ by 1 proton loss / gain. DN has confirmed this using multiple sources. Thus, by definition, there cannot be a transitive version that mentions ‘conjugate’

cmungall commented 1 year ago

Bradley Varner pointed out that conjugate acid / base pairs differ by 1 proton loss / gain. DN has confirmed this using multiple sources. Thus, by definition, there cannot be a transitive version that mentions ‘conjugate’

Unfortunately, this is inconsistent with how this is used in CHEBI.

CHEBI has this implicit design pattern exemplified by citrate:

  1. 'citrate anion' SubClassOf is_conjugate_base_of some 'citric acid'
  2. 'citrate(4-)' SubClassOf 'citrate anion'

The entailment here is of course:

  1. 'citrate(4-)' SubClassOf is_conjugate_base_of some 'citric acid'

Even though this involves the loss of 4 protons.

It follows from this that the CHEBI relations cannot mean direct/1-proton-loss-gain. It has to be either transitive or uncommitted.

I think the real intent of the relations is that they should be direct at the level of the ontology graph, but this is meaningless in OWL.

If I were CHEBI I would want both transitive and direct/1-proton relations, and I would assert the direct relation for the specific protonated forms, and the transitive for the cation/anion grouping class, but that may be a big lift for them at the moment - what do you think @amalik01?

ghost commented 1 year ago

It seems like the CHEBI modelling needs to be revised. Conjugate acid / base pairs, by definition, involve the gain / loss of only 1 proton. If a transitive property is to be made, it should not invoke the term "conjugate".

amalik01 commented 1 year ago

A conjugate acid carries one unit of positive charge more than the base but historically in ChEBI we have extended the definition of conjugate acid/base to include the gain/loss of more than 1 unit of charge as its not always possible to add every protonated form of a specific compound to the database. The extended definition makes it easier to link ionised forms of a compound that differ by more than 1 unit of charge (E.g. CHEBI:57252) with its neutral form (e.g. CHEBI:10956).

nataled commented 1 year ago

I agree with @bvarner-ebi. CHEBI should use definitions consistent with the broader scientific use. The current conjugate acid/base relations should be restricted to the appropriate set, and a different relation for the transitivity. Off the top of my head, how about something like:

is_protonated_form_of (is_acid_form_of?)
  is_conjugate_acid_of
is_deprotonated_form_of (is_base_form_of?)
  is_conjugate_base_of

So, if A is_conjugate_acid_of B, and B is_conjugate_acid_of C, then A is_protonated_form_of C. Note that this uses the Brønsted–Lowry definitions of acid and base. Precise terminology can be worked out, but hopefully the intent is clear.

cmungall commented 1 year ago

I like your proposal @nataled. As an aside, this is following an established RO design pattern.

However, we risk creating a terminological muddle if the existing CHEBI relations (which don't have numeric IDs) are named for the non-transitive subproperties but are actually equivalent to the transitive superproperties.

Perhaps we just live with this in the short term, and when CHEBI have a new system for generating OBO/OWL in place they can switch to using relations with proper IDs and correct semantics? This still worries me.

Another possibility is that we regard the existing relation names and tainted and instead have:

RO:new1 is_protonated_form_of (is_acid_form_of?)
  RO:new2 is_direct_conjugate_acid_of
RO:new3 is_deprotonated_form_of (is_base_form_of?)
  RO:new4 is_direct_conjugate_base_of

We can then map the existing hopefully soon to be deprecated CHEBI URIs to the parents.

This is not super-satisfactory as my proposed terminology is awkward and a bit redundant, but it has the advantage of not conflicting with the same labels in the current CHEBI meaning something different.

However, because we will be using IDs, we can simply rename RO:new2 and RO:new4 back to Darren's original proposal once the existing confusing CHEBI URIs are deprecated?

ghost commented 1 year ago

RO:new2 is_direct_conjugate_acid_of ... RO:new4 is_direct_conjugate_base_of

This suggests there are "indirect" conjugate acids / bases, which seems semantically incorrect since "conjugate" denotes a pair-based relationship.

Using "is_de/protonated_form_of" or "is_de/protonated_species_of" for the transitive property sounds like a reasonable approach.