The MOBY Data Class Ontology

"Standard" Objects

In the BioMOBY system, all datatypes (Classes) are defined in an ontology, where each node represents a named Class, and each arc represents one of two relationship types - ISA, or HASA / HAS - indicating inheritence or container-relationship respectively. The root of the Class ontology is "Object" as defined above; all data Classes inherit from the "Object" Class, and (with the exception of the special-case primitives) may contain other objects which themselves inherit from the "Object" Class.

Given this structure, the relationship between any two objects can be described in an RDF triple (subject1, predicate, subject2). The full structure of an object is inferred by traversing the relationships back from the Class (node) of interest, to the root node. For example, the following RDF triple describes an object of type "Foo":

       Foo - ISA - Object

The meaning of this triple is that the Class named "Foo" inherits from ("ISA") the class named "Object". As such, all elements that may appear in an "Object" class, may also appear in the "Foo" class; hence the Foo object has all of the attributes of the "Object" Class, and in its minimal form is as we described above:

   <Foo namespace="" id="" >

"Primitive" Objects

The BioMOBY Class ontology contains five special case primitives:

These primitive types are special as they are the only cases where the content of an element is meant to be interpreted by the client or service. New classes MUST NOT inherit from the Primitive Classes. To obtain content in another class, you must be a container of a primitive class. The two relationship types - HASA and HAS - are used to indicate container relationships, and the contained object is "labelled" using the articleName attribute to indicate its role in that object, or more precisely, its semantic relationship with the parent object. HASA indicates that a maximally a single instance of the object is contained, while HAS indicates that zero or more instances of the object are contained. The following RDF triple describes the Integer object:

  Integer - ISA - Object
and as XML takes on the following structure:
  <Integer namespace="" id="" >966754</Integer>

For example, one might imagine a PlainText Object Class that needs to contain some stringified content. This content is achieved by containing (HASA) the String primitive object type, where the plain-text content of the PlainText Object is the content of the contained String primitive Class:

   PlainText ISA Object
   PlainText HASA String
 <moby:PlainText namespace="wormbase"  id="GCt4543" >
      <moby:String namespace="" id="" articleName="MutantPhenotype">
        The mutant has altered vulval development due to apoptosis of the AC (anchor) cell
      </moby:String> 
 </moby:PlainText>

The DateTime class uses the W3C profile of the ISO-8601 specification for specifying dates and times.

The Boolean class uses the XML schema definition for valid boolean values. Hence BioMOBY clients and services can send one of the following literals {true, false, 1, 0} and must understand all of {true, false, 1, 0}. Other commonly used boolean values like {T,F,TRUE,FALSE} etc. are not supported and illegal in BioMOBY lingua.