ICO2S / sybiont

1 stars 0 forks source link

SyBiOnt Extension/Replacement: Gene Ontology Term #4

Open chrisAta opened 6 years ago

chrisAta commented 6 years ago

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.

goterm

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.

djskelton commented 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:

  1. bo:10695 a bo:374 -- i.e, an instance of the protein class, not a subclass.
  2. Add the predicate you suggested (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?

goksel commented 6 years ago

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?