anchor.diff:  ~~~~~~~~~~~~~~~~~~~~
   Data source adapters are facades around an existing data source. Data source adapters can be entirely custom for any given implementation or they can use a pre-written adapter if their data source is already in a well-known format such as OMOP, i2b2, OpenEMR, etc
   
  -image:images/figures/data_source_adapters.png[scale="75%"]
  +image:images/figures/data_source_adapters.png[]
   
   * Data source adapters follow the chain-of-responsibility pattern. The process of adapting a query is broken down into several small steps and each output is passed on to the next step. Data source adapters typically have 4 commons steps. 
   
  
positive.code: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  In OpenFurther, the term "FQE" (Federated Query Engine) is broadly referred to as the set of software modules involved in the execution of a federated query.
  
  image:images/figures/fqe.png[scale="75%"]
  
  * A federated query written in FQL (an XML based query language) or an i2b2 query is submitted at *1*.
  * Utilizing the publish-subscribe pattern, one or more data source adapters are subscribed to the Query Topic at *2*. 
  
negative.code: ~~~~~~~~~~~~~~~
  Two important parts of the metadata repository are Query Translation and Result Translation. Data stored within the MDR is used to drive each of these processes.
  
  image:images/figures/translating_metadata.png[]
  
  Query Translation
  ^^^^^^^^^^^^^^^^^
  The objective of a query translation is to convert the OpenFurther Query Language (FQL) query (OpenFurther's classes, attributes, and attribute values) into the physical data source's data classes, attributes, and attribute values while maintaining the integrity of the query logic.
  
  image:images/figures/query_translation.png[]
  
  The user interface, currently i2b2, is responsible for building a query. When a query is submitted to the FQE, the FQE converts i2b2's query into the FQL, an XML representation of the query (see the FQL XML Schema) that consists of logical expressions using OpenFurther's data model classes and attributes.  Class and class attribute names used in FQL are based on OpenFurther classes and attributes and can be found in the OpenFurther's Java code located here: https://github.com/openfurther/further-open-core/tree/master/ds/ds-further/src/main/java/edu/utah/further/ds/further/model/impl/domain
  
  