Open chrisAta opened 6 years ago
So, if you look at the SyBiOnt KB, I think you can do this in the ontology as it stands and the information is in there. Take the following example of a protein in there. Download the turtle file and search for the following:
bo:10695 a
You'll see you the following:
rdfs:subClassOf [ a owl:Restriction ; owl:onProperty sybio:hasFunction ; owl:someValuesFrom <http://purl.org/obo/owl/GO#GO_0003700>
The information is in there, but just not in a way that I'd intuitively know how to use / query over. It's essentially saying that the bo:10695
class has a restriction on the values its sybio:hasFunction
property can take to <http://purl.org/obo/owl/GO#GO_0003700>
. I think, conceptually, I find it odd because I'd expect the bo:10695
to be an instance, not a subclass -- something like the following:
bo:10695 a bo:374
-- i.e, an instance of the protein class, not a subclass.hasGOAnnotation
) or use the existing sybio:hasFunction
, so you can say that a Protein hasGOAnnotation GOTerm.I don't know what implications this has for future work, but I would make an argument that I find the ontology difficult to use because I find the sub-classing non-intuitive (for my dataset). How do others feel?
Let's avoid having the hasGOTerm property. It does not add much useful information. Is it a molecular function or a biological process. Why don't we use sybio:hasFunction, for example?
NOTE: These are abstractions of terms I think should be added, not absolutes. The details of these implementations, especially naming, are definitely up for debate, please give feedback!
Class name: Gene Ontology (GO) Term
Purpose: You have a protein or gene and want to specify one of its GO terms. More specifically, you would want it to point to a URI that describes what the GO term is.
Example use case: You have a ketoreductase enzyme with Uniprot accession P16152, and a GO term GO:0004090. This enzyme would point to a GO Term object using a new hasGOTerm predicate. This GOTerm would then point to that term's GO aspect using a new hasGOAspect predicate, and to its URI: https://www.ebi.ac.uk/QuickGO/term/GO:0004090.
Clashes: At the moment, SyBiOnt has three different classes to describe GO terms, separated into the three main GO aspects: Molecular Function, Cellular Component, and Biological Process. I would argue that having a single GO term class that then points to its respective GO aspect is a better way of representing this. It makes it easier to search for objects with a specific known GO term, because you wouldn't need to know its GO Aspect in the first place.