OntologyDBWiki/MAGEOMDiscussion: Difference between revisions
imported>KaiRunte No edit summary |
|||
(7 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
__NOTOC__ | __NOTOC__ | ||
= Discussion of the MAGE object model (MAGE-OM) ontology classes = | = 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: [http://www.ebi.ac.uk/arrayexpress/Schema/MAGE/MAGE.htm]. 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 == | == Overview == | ||
Line 27: | Line 31: | ||
*** description: String [?] | *** description: String [?] | ||
*** name: String [from Identifiable?] | *** name: String [from Identifiable?] | ||
*** db_ref: External BRIDGE reference | *** db_ref: External BRIDGE reference [?] | ||
*** alt_URI: List of Strings [?] | *** alt_URI: List of Strings [?] | ||
*** type: OntologyEntry [?] | *** type: OntologyEntry [?] | ||
*** maintainer_email: String [?] | *** maintainer_email: String [?] | ||
== Comments/Questions == | === Comments/Questions === | ||
* all the attributes marked with [?] were not found in the [http://www.ebi.ac.uk/arrayexpress/Schema/MAGE/MAGE.htm array express object model documentation]. Where do these come from? | * all the attributes marked with [?] were not found in the [http://www.ebi.ac.uk/arrayexpress/Schema/MAGE/MAGE.htm array express object model documentation]. Where do these come from? | ||
== 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! |
Latest revision as of 14:28, 28 October 2011
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 [?]
- Attributes:
- Class DBEntry EBI Documentation
- Attributes:
- accession: String
- accessionVersion: String
- URI: String
- database: Reference to Database
- Attributes:
- 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 [?]
- Attributes:
Comments/Questions
- all the attributes marked with [?] were not found in the array express object model documentation. Where do these come from?
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!