The description of the ontology package from the FuGE specification

advertisement
The description of the ontology package from the FuGE specification is shown below.
***********************
Ontology package
The Ontology package provides a mechanism for referencing external ontologies or controlled
vocabularies (Figure 1). The OntologyIndividual class can represent ontological classes,
instances of classes (individuals) and terms from simple controlled vocabularies. The source of a
term SHOULD be specified by the association to OntologySource. The term attribute stores
the term itself (or the name of the ontology class) and termAccession stores the identifier or
accession assigned to the ontology term within the source ontology. If no such accession is
available, the ontology term SHOULD be repeated as the accession (by default). The inherited
identifier attribute stores a unique identifier for the instance of the term used within the scope
of the current FuGE document or instance.
Figure 1 The Ontology package provides slots for referencing classes or properties from
external ontologies or controlled vocabularies.
In an ontology, classes can be related to each other through associations. Such associations are
modeled in FuGE by the abstract class OntologyProperty. If the association is between two
terms, ObjectProperty models the association from the parent ontology class to the child
ontology class that is also modeled by OntologyIndividual. A second type of association
exists in ontologies, modeled by DataProperty, which specifies that a data value can be
entered by the user in a slot provided in the ontology. In various parts of the FuGE model there
are defined associations to OntologyTerm for capturing ontological information, which allow the
user to import an ontology class or instance (OntologyTerm), an ontology property
(OntologyProperty) or a data property (DataProperty). It is expected that in the majority of
instances, the associations will be used to associate with ontology classes or instances, using
OntologyIndividual.
Simple ontology example for the term “hour” from the unit ontology
(http://obo.cvs.sourceforge.net/obo/obo/ontology/phenotype/unit.obo):
<OntologyIndividual identifier="ex001:OntologyIndividual0" term="hour"
termAccession="UO:0000032"OntologySource_ref="ex001:OntologySource2"/>
…
<OntologySource
ontologyURI="http://obo.cvs.sourceforge.net/obo/obo/ontology/phenotype/
unit.obo" identifier="ex001:OntologySource2" name="OBO-unit"/>
Ontology example for “a measurement of 20 minutes” encoded using the MGED Ontology
(http://mged.sourceforge.net/ontologies/index.php):
<OntologyIndividual term="Measurement"
termAccession="http://mged.sourceforge.net/ontologies/MGEDontology.php#
Measurement" identifier="ex01:OntologyIndividual1"
OntologySource_ref="OntologySource:MO">
<DataProperty term="has_value"
termAccession="http://mged.sourceforge.net/ontologies/MGEDontology.php#
has_value" identifier="ex01:DataProperty1" value="20"/>
<ObjectProperty term="has_units"
termAccession="http://mged.sourceforge.net/ontologies/MGEDontology.php#
has_units" identifier="ex01:ObjectProperty1">
<OntologyIndividual term="minutes"
termAccession="http://mged.sourceforge.net/ontologies/MGEDontology.php#
minutes" identifier="ex01:OntologyIndividual2"/>
</OntologyIndividual>
…
<OntologySource ontologyURI="
http://mged.sourceforge.net/ontologies/MGEDontology.php"
identifier="OntologySource:MO" name="MGED Ontology"/>
************************
XML Schema
The equivalent part of the XML Schema is as shown below. Note that the OntologyIndividual,
ObjectProperty and DataProperty inherit from OntologyClass. OntologyClass and
OntologySource inherit from Identifiable in FuGE (http://fuge.sourceforge.net/Version1InProcess/FuGE-v1-RefManual-InProcess.html#Identifiable), which enables every object to be
assigned a unique identifier so it can be referenced anywhere in a FuGE instance, and an
optionally a human-readable name. The inheritance hierarchy in FuGE also provides additional
functionality that may not relevant here (e.g. for adding bibliographic references, auditing and so
on). Without implementing the entire of FuGE, the ontology package could be used by
incorporating the following XML Schema, and simply adding an identifier attribute to
OntologySource.
Where OntologyIndividiual is required elsewhere in the data format, a reference could be given in
the XML Schema to the OntologyIndividual complexType.
Technical note: There is an implementation choice here. In FuGE, all instances of
OntologyIndividual appear once with a (local FuGE) unique identifier, collected together under the
<OntologyCollection> node. Where a term is used in the format, a reference is given to the
unique identifier of this term.
Example 1 (true FuGE-compliant)
<AtomicValue value="15">
<unit OntologyTerm_ref="ex001:OntologyIndividual0"/>
</AtomicValue>
Reference to…
<OntologyIndividual identifier="ex001:OntologyIndividual0" term="hour"
termAccession ="UO:0000032" OntologySource_ref="ex001:OntologySource2"/>
with a further reference to ...
< OntologySource=
"http://obo.cvs.sourceforge.net/obo/obo/ontology/phenotype/unit.obo?view=log"
identifier ="ex001:OntologySource1" name="OBO-unit"/>
If the Ontology package is used outside the context of FuGE, it would be possible to embed a
direct reference to an ontology term in the file (such that ontology terms are not re-used) without
using unique identifiers
Example 2 (FuGE-like)
<AtomicValue value="15">
<unit>
<OntologyIndividual term="hour"
termAccession="UO:0000032"
OntologySource_ref="ex001:OntologySource2"/>
</unit>
</AtomicValue>
Schema:
<xsd:complexType name="FuGE.Common.Ontology.OntologyIndividualType"
abstract="false">
<xsd:annotation>
<xsd:documentation> An instance of an Ontology class.
</xsd:documentation>
</xsd:annotation>
<xsd:complexContent>
<xsd:extension
base="fuge:FuGE.Common.Ontology.OntologyTermType">
<xsd:sequence>
<xsd:element ref="fuge:OntologyProperty"
minOccurs="0" maxOccurs="unbounded">
<xsd:annotation>
<xsd:documentation> A list of properties
associated with the Individual. If based on an external Ontology, the list should be able to be
validated against that Ontology. </xsd:documentation>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="FuGE.Common.Ontology.OntologyPropertyType"
abstract="true">
<xsd:annotation>
<xsd:documentation> Base class for instances of Ontology properties
</xsd:documentation>
</xsd:annotation>
<xsd:complexContent>
<xsd:extension
base="fuge:FuGE.Common.Ontology.OntologyTermType">
<xsd:sequence/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="FuGE.Common.Ontology.DataPropertyType"
abstract="false">
<xsd:annotation>
<xsd:documentation> An instance of an Ontology data property. So an
individual of Age might be restricted to a value of 8. </xsd:documentation>
</xsd:annotation>
<xsd:complexContent>
<xsd:extension
base="fuge:FuGE.Common.Ontology.OntologyPropertyType">
<xsd:sequence/>
<xsd:attribute name="dataType" type="xsd:string">
<xsd:annotation>
<xsd:documentation> An optional data type
attribute which should be either one of the CORBA Any types or one of the XML Schema simple
types. If the Parent Individual is associated with a has_datatype property, instead of stating that
property explicity, it could be used as the value of the datatype attribute, or the datatype can be
provided as a hint to applications on how to store the value. </xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="value" type="xsd:string">
<xsd:annotation>
<xsd:documentation> The value associated with
the DataProperty instance. </xsd:documentation>
</xsd:annotation>
</xsd:attribute>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="FuGE.Common.Ontology.ObjectPropertyType"
abstract="false">
<xsd:annotation>
<xsd:documentation> An instance of an Ontology object property that
restricts the parent individual to its child individual. So an Age individual may be restricted to an
Individual unit of years. </xsd:documentation>
</xsd:annotation>
<xsd:complexContent>
<xsd:extension
base="fuge:FuGE.Common.Ontology.OntologyPropertyType">
<xsd:sequence>
<xsd:element ref="fuge:OntologyIndividual"
maxOccurs="unbounded">
<xsd:annotation>
<xsd:documentation> The instance(s) of
the child OntologyIndividuals referenced by the parent OntologyIndividual. </xsd:documentation>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="FuGE.Common.Ontology.OntologyTermType"
abstract="true">
<xsd:annotation>
<xsd:documentation> A single entry from an ontology or a controlled
vocabulary. If it is a simple controlled vocabulary, there may be no formal accession for the
term. In these cases the local name should be repeated in both term and termAccession. If the
term has a value, the OntologyIndividual will have a single DataProperty whose value was the
value for the property. For instance, for an OntologyIndividual based on the MO ontology the
attributes might be: The term would be what is usually called the local name in the Ontology, for
instance 'Age'; The termAccession could be
'http://mged.sourceforge.net/ontologies/MGEDOntology.owl#Age' or a an arbitrary accession if
one exists; The identifier is a unique identifier for individuals in the scope of the FuGE instance;
The inherited name attribute should not be used; The ontologyURI of OntologySource could be
'http://mged.sourceforge.net/ontologies/MGEDOntology.owl". The OntologyTerm subclasses are
instances of Ontology classes and properties, not the actual terms themselves. An
OntologyIndividual, if based on an existing Ontology, can be considered a statement that can be
validated against the referenced ontology. The subclasses and their associations are based on
the Ontology Definition Model, ad/2005-04-13, submitted to the OMG as a response to RFP
ad/2003-03-40, Copyright © 2005 DSTC Pty Ltd. Copyright © 2005 IBM Copyright © 2005
Sandpiper Software, Inc under the standard OMG license terms. </xsd:documentation>
</xsd:annotation>
<xsd:complexContent>
<xsd:extension base="fuge:FuGE.Common.IdentifiableType">
<xsd:sequence/>
<xsd:attribute name="term" type="xsd:string" use="required">
<xsd:annotation>
<xsd:documentation> The ontology term itself,
also known as the local name in some ontologies. </xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="termAccession" type="xsd:string"
use="required">
<xsd:annotation>
<xsd:documentation> The accession number
assigned to the ontology term in the source ontology. If there is no explicit accession assigned,
then the term (localname) must be repeated (i.e. the term is the unique accession).
</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="OntologySource_ref" type="xsd:string">
<xsd:annotation>
<xsd:documentation> The source ontology or
controlled vocabulary list that ontology terms have been obtained from. </xsd:documentation>
</xsd:annotation>
</xsd:attribute>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="FuGE.Common.Ontology.OntologySourceType"
abstract="false">
<xsd:annotation>
<xsd:documentation> The source ontology or controlled vocabulary list
that ontology terms have been obtained from. </xsd:documentation>
</xsd:annotation>
xsd:complexContent>
Download