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 'domain' and 'range' properties for RO terms #790

Open pgaudet opened 7 months ago

pgaudet commented 7 months ago

Hello,

GO needs to specify the domain and the range for which a relation can be used; for example for 'part_of', the domain is BFO:0000001 (entity), and the local range is CL:0000000 GO:0005575 GO:0008150 PO:0009012 PO:0025131 UBERON:0001062 ZFS:0100000 WBls:0000075 WBbt:0004017 WBbt:0005766 NCBITaxon:1 FBbt:10000000 FBdv:00007012 FBbt:00007002

I cannot see how to add this is RO; is this something that can be captured?

@balhoff @alexsign

Thanks, Pascale

dosumis commented 7 months ago

OWL domain and range are straightforward to add and are in place for many relations. Do you have list of table of domain and range assertions you'd like to add?

I think local domain and range are GO-specific concepts, originating with validation of annotation extensions (and perhaps more recently validation of GOCAMs?). Perhaps these are better maintained locally?

wdduncan commented 7 months ago

Yes. Adding domains and ranges is straightforward. The difficulty arises when new classes need to be added to RO in order most accurately specify the domain/range. Do we just use very high-level classes (e.g., cell, biological process) or do we add a more specific class when it is needed (e.g., blood vessel).
This has been an ongoing area of discussion.

cmungall commented 7 months ago

For a very general relation, the domains and ranges have to be very general. And you don't get much more general than part-of.

However, domain and range is not the only way to constrain usage of an object property in OWL. You can use universal restrictions. These can't be expressed in EL, but fortunately they can often be rewritten to existentials + disjoints

You can see this with existing axioms on part-of:

image

Try making a part-of between e.g. a BP and a CC in GO, it will lead to incoherency, as intended. This is despite no domain or range restrictions on the OP.

It would be great if someone could add more documentation on this:

https://oborel.github.io/obo-relations/domain-or-range-specific-relation/

balhoff commented 7 months ago

I think @pgaudet is asking about the 'local range' values we have in the gorel file. We could use schema:rangeIncludes for this. But I think we discussed using this in RO at some point and didn't come to a resolution. We could annotate this in an external file (which I guess is exactly what gorel is), but we could limit gorel to those kinds of statements and continue with deprecating all the relations defined only in that file.

cmungall commented 7 months ago

I think local domain and range are GO-specific concepts, originating with validation of annotation extensions (and perhaps more recently validation of GOCAMs?). Perhaps these are better maintained locally?

This is correct (but not for GOCAMs). To explain to people who are not GO people: GO used to have its own layer of axioms on top of RO in an overlay ontology called GOREL that added annotation assertions called "local domain" and "local range". As annotation assertions, they are silent as far as OWL semantics and reasoners are concerned. However, non-OWL tools could make use of these to implement constraints using simple rule-based semantics.

GO dropped GOREL and thus these non-OWL tools lost the ability to do this additional level of checking

cmungall commented 7 months ago

We could use schema:rangeIncludes for this

I don't think this works unless every ontology maintains their own rangeIncludes, in which case we may as well use the original solution. If we all use the same rangeIncludes then it just grows to encompass everything and becomes useless