Information Blocks

There are two kinds of information block used by MOBY:

CrossReference Information Block (CRIB)

The structure of the CRIB is as follows:
         <CrossReference>
              ... one or more cross-references...
         </CrossReference>
The content of the CRIB - the cross-references - may include only two types of element:
  1. A base MOBY Object ('Object' Class) representing a cross-reference to the element that contains the CRIB;
  2. An Xref type Cross-Reference object

Xref type Cross-References have the following structure:

 <Xref namespace='' id='' authURI='' serviceName='' evidenceCode='' xrefType=''>
   ... Description ...
</Xref>
Breaking the Xref style cross-reference down into its component parts we have the following attributes:
  • namespace: This is the MOBY Namespace of the cross-referenced piece of data (as in the base Object)
  • id: This is the ID within that namespace (as in the base Object)
  • authURI: the Authority of a service provider who can execute an appropriate service on the piece of data referred to by this cross-reference such that the intent of the cross-reference will be realized.
  • serviceName: the name of the MOBY Service provided by that Authority that does the appropriate transaction.
  • xrefType: a term indicating the semantic type of this cross-reference.
  • evidenceCode: a term from the GO evidence codes list (http://www.geneontology.org/doc/GO.evidence.html) indicating the type of evidence that supports this cross-reference as being valid for the parent data entity.
  • Description: this is the textual content of the XML element, and contains a human-readable description of the intended interpretation of this cross-reference.

All components are required, with the exception of the human readable description. The namespace and id attributes fulfil the same role as their counterparts in the Object style cross-reference. The authURI and serviceName components together act as a unique identifier to a particular MOBY Service that the current service provider suggests you execute using this cross-reference (namespace/id) in order to correctly interpret its meaning. The xrefType component should get its value from the Cross-Reference-Type Ontology which defines a variety of semantic relationships that may exist between cross-references and the Objects that contain them. This Cross-Reference-Type Ontology doesn't exist yet. Therefore xrefTypes are free form strings for now. Finally, the evidenceCode is a machine-readable attribute that indicates the 'quality' of the evidence that was used to make the cross-reference assertion.

Though it has a similar structure to the serialized Object Class, it is important to note that the Xref construct is not a MOBY Object; however it can be transformed into an object (client side) by simply taking the namespace and id attributes and building a base Object from them.

Thus, we might find cross-reference blocks with the following example structure:

  <moby:CrossReference>
    <moby:Object moby:namespace="PMID" moby:id="12511062"/>
    <moby:Object moby:namespace="PMID" moby:id="12075666"/>
    <moby:Xref moby:namespace="EMBL" moby:id="X112345" 
         authURI="www.illuminae.com" serviceName="getEMBLRecord" 
	 evidenceCode="IEA" xrefType="transform"/>
  </moby:CrossReference>

Provision Information Block (PIB)

The provision information block contains metadata concerning the service that was invoked. Examples of provision data might include the database version, software version, execution time, additional parameters used to invoke the service, or any other information the service provider considers useful.

The structure of the PIB is as follows:

  <ProvisionInformation>
       ... one or more of the provision elements (below) ...
  </ProvisionInformation>

In the current MOBY API, the content of these elements is only loosely defined, and is meant primarily to be human-readable. Only three Provision elements are currently defined: serviceSoftware, serviceDatabase, and serviceComment. These elements have the following structure:

  <serviceSoftware software_name="" software_version="" software_comment=""/>
  <serviceDatabase database_name="" database_version="" database_comment=""/>
  <serviceComment>comment here</serviceComment>