biolink / biolink-model

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

Add opposite-of predicate that can be used to state when two nodes have the opposite meaning #656

Closed cmungall closed 3 years ago

cmungall commented 3 years ago

Exact mapping: RO:0002604

see_also: https://doi.org/10.1101/108977

Example of how this is used for phenotypes:

http://www.ontobee.org/sparql SELECT ?x ?y WHERE {?x http://purl.obolibrary.org/obo/RO_0002604 ?y}

Note: many people confuse inverseOf and opposite-of. Remember to clearly state this

Examples of opposites between nodes:

We can also include opposites within the model itself (made a separate ticket for this #657)

We can also define fuzzy property chains:

cbizon commented 3 years ago

Should

We can also include opposites within the model itself

We can also define fuzzy property chains:

be their own issues?

ehinderer commented 3 years ago

The concept of "opposing phenotypes" has come up in drug repurposing (DR) use case discussions. Would these predicates be valid for making a query for finding drugs that might be repurposed because they have adverse effects that may be used to treat a disease with an opposing phenotype? I'm also wondering how to handle some phenotypes which don't have an obvious "opposite." In this case I'm sure the answer is just that the predicate won't exist, so that's probably going to be a problem for the DR use case.

I'm also curious how the inference logic would follow for this relation. Would children of node A which is opposite_of node B also be opposite of node B?

sierra-moxon commented 3 years ago

inverse of is precisely defined,'opposite of' might be less precisely defined? (TODO: sierra make linkml ticket and link it here to discuss in linkml). domain predicate in linkml, but first class object in BMT

sierra-moxon commented 3 years ago

https://github.com/biolink/biolinkml/pull/396 - proposal for adding antonymy to the linkml meta model so that we can set 'opposite' flags (similar to symmetric or inverse).

ehinderer commented 3 years ago

Colleen's PR #681 which includes inverses could be relevant to this discussion. As Sierra mentioned, we could add "opposite" as a new attribute in addition to "inverse" as in:

increases_activity_of / activity_increased_by (inverse) decreases_activity_of / activity_decreased_by (inverse) increases_activity_of / decreases_activity_of (opposite) activity_increased_by / activity_decreased_by (opposite)