biolink / biolink-model

Schema and generated objects for biolink data model and upper ontology
https://biolink.github.io/biolink-model/
Other
173 stars 71 forks source link

Add opposite-ofs between predicates #657

Closed cmungall closed 2 years ago

cmungall commented 3 years ago

Depends on #656

This ticket is for collecting all predicate pairs that are opposites, e.g. treats vs causes

kvarforl commented 3 years ago

Sourced from https://github.com/RTXteam/RTX/issues/979 back in september, in an effort for quality control of the RTX knowledge graph:

Here is my go at a list of antonym pairs. I tried to err on the side of too many pairs rather than too few, so that you all have the luxury of looking at them and saying "hmmm that doesn't seem quite right" rather than discovering pairs that I missed... hopefully :)

sierra-moxon commented 3 years ago

@mikebada - it looks like you are working on this one as part of the opposites project?

mikebada commented 3 years ago

I think these are referred to above but with different names: entity_negatively_regulates_entity, entity_positively_regulates_entity process_negatively_regulates_process, process_positively_regulates_process

I'd say that the following don't bear direct oppositeness: contraindicated_for, prevents contraindicated_for, treats disrupts, enables increases_degradation_of, increases_expression_of increases_degradation_of, increases_stability_of lacks_part, part_of subclass_of, derives_into

I'd propose the following changes to predicates mentioned above: decreases_degradation_of, increases_degradation_of decreases_stability_of, increases_stability_of

I'd also suggest: ameliorates, exacerbates broad_match, narrow_match enabled_by, prevented_by OR caused_by, prevented_by: differentiation between enabled_by & caused_by not clear to me enables, prevents OR causes, prevents: differentiation between causes & enables not clear to me decreases_abundance_of, increases_abundance_of decreases_folding_of, increases_folding_of decreases_localization_of, increases_localization_of decreases_metabolic_processing_of, increases_metabolic_processing_of decreases_molecular_interaction, increases_molecular_interaction decreases_molecular_modification_of, increases_molecular_modification_of decreases_mutation_rate_of, increases_mutation_rate_of decreases_response_to, increases_response_to decreases_secretion_of, increases_secretion_of decreases_splicing_of, increases_splicing_of decreases_synthesis_of, increases_synthesis_of decreases_transport_of, increases_transport_of decreases_uptake_of, increases_uptake_of end_interbase_coordinate, start_interbase_coordinate entity_negatively_regulated_by_entity, entity_positively_regulated_by_entity has_active_ingredient, has_excipient has_qualitative_value, has_quantitative_value is_active_ingredient_of, is_excipient_of latitude, longitude molecular_activity_has_input, molecular_activity_has_output negatively_correlated_with, positively_correlated_with negatively_regulated_by, positively_regulated_by preceded_by, precedes process_negatively_regulated_by_process, entity_positively_regulated_by_process subclass_of, superclass_of transcribed_from, transcribed_to translates_to, translation_of

In our lab's work on opposites, we're finding that (1) there are different kinds of oppositeness and (2) there may not always be one opposite for a given concept, as there may be multiple dimensions of oppositeness among the component concepts.

sierra-moxon commented 3 years ago

example of adding opposites to the model:

slots:
  negatively regulates:
   annotations:
     extension_tag: biolink:opposite_of
     extension_value: positively regulates
   opposite_of: positively_regulates

taken from @cmungall's comment in 131: linkml repo

mikebada commented 3 years ago

Do we need to specify the opposite using both the annotation slot (with its subfields and values) and the opposite_of slot? This seems redundant to me...

sierra-moxon commented 3 years ago

in the predicates working group meeting, @mikebada proposed a hierarchy of predicates under "opposite of" to hand certain broad categories of oppositeness (including negation).

ie: opposite of (possibly abstract):

positional/directional oppositeness (ie: start/end) abstract directional oppositeness (ie: forward/backward) negation (ie: related to, not related to - need a better example) some opposites are in more than one higher level grouping.

ie: cation is the opposite of anion, 'cation import' is the opposite directionally and charge wise of 'anion export' "is opposite of" at a high level would/should contain “at least some degree of oppositeness”, but we'd be more specific in the subsequent child-predicates.

We should also have some exploration of opposite classes as well as predicates, but that is explored in a different issue.

sierra-moxon commented 3 years ago

Proposal for declaring opposites:


    aliases: ['is substance that treats']
    is_a: ameliorates
    description: >-
      holds between a therapeutic procedure or chemical substance
      and a disease or phenotypic feature that it is used to treat
    domain: chemical or drug or treatment
    range: disease or phenotypic feature
    in_subset:
      - translator_minimal
    related_mappings:
      - MONDO:disease_responds_to
   annotations:
     - tag: biolink:opposite_of
       value: biolink:xxx
     - tag: biolink:less_granular_opposite_of <-- just an example
        value: biolink:vqy```

(just an example, I am not sure causes is the opposite of treats actually)
sierra-moxon commented 3 years ago

increase and decrease stability of (use these as examples).

sierra-moxon commented 3 years ago

This is being directed by the opposites project, and would wait on the work there. https://github.com/NCATSTranslator/opposites/issues/1

sierra-moxon commented 3 years ago

questions: opposites on inverses? just predicates, classes? (how about mixins) subclasses of oppositeness would be used in the annotation? do we expect people to use these opposites as predicates?

nlharris commented 3 years ago

@sierra-moxon what PR will close this?