OntologyDBWiki/MAGEOMDiscussion

From BRF-Software
Jump to navigation Jump to search

Discussion of the MAGE object model (MAGE-OM) ontology classes

Introduction

In the section "overview" I introduce the classes as they were defined by Michi in O2DBI. I also highlight differences to the "official" documentation at the EBI: [1]. In the next section, "use case", I create a simple use case to show why it is not such a good idea to try to store a complex ontology like the MGED in this object model.

Overview

The MAGE-OM has three classes that are dedicated to referencing text entries from a controlled vocabulary or ontology. These classes are (O2DBI version):

  • Class OntologyEntry EBI Documentation
    • Attributes:
      • category: String
      • value: String
      • description: String
      • association: References to OntologyEntry
      • ontologyReference: Reference to DBEntry
      • owner: String [?]
      • creator: String [?]
  • Class DBEntry EBI Documentation
    • Attributes:
      • accession: String
      • accessionVersion: String
      • URI: String
      • database: Reference to Database
  • Class Database EBI Documentation
    • Attributes:
      • version: String
      • URI: String
      • description: String [?]
      • name: String [from Identifiable?]
      • db_ref: External BRIDGE reference [?]
      • alt_URI: List of Strings [?]
      • type: OntologyEntry [?]
      • maintainer_email: String [?]

Comments/Questions

Use Case

I want to extract information from the MGED ontology for the experiment design type while keeping the structure as it is defined in this ontology. In detail, the MGED ontology has a class ExperimentDesignType with several sub-classes (e.g. PerturbationalDesign). Each of these sub-classes has in turn instances that define the actual terms to use as values for an experiment design type. Of course, when these terms are stored in the ontology, they should be easily extractable, that is if I ask "Give me all values for ExperimentDesignType", I should receive all instances of ExperimentDesignType including its sub-classes.

I will now describe how the data from the MGED ontology can be stored in the object model mentioned above. This alone should show that the object model make handling and querying an ontology awkward and time-consuming.

First of all, the object model has no distinction between a class and an instance. As a workaround I define a class as an OntologyEntry with empty value attribute. For example, to define the term "disease state design", which is an instance of the PerturbationalDesign class, I create an object OntologyEntry with value="disease state design" and category="PerturbationalDesign". To define it as a sub-class of "ExperimentDesignType", I add as associations attribute a reference to another OntologyEntry object with empty value and category="ExperimentDesignType". To be able to search for all instances of ExperimentDesignType, we would need to add all "instance" OntologyEntry objects to the "ExperimentDesignType" object. As such this is not a problem, but very error-prone.

Please correct me if I misunderstood the concept of the object model. Any other comments/suggestions are of course appreciated!