# Package com.mapinfo.midev.language

A language consists of a set of syntactic elements and semantic rules for precisely specifying operations to perform.

See: Description

Interface Summary
ILanguage: Identifies an object as a language for interacting with a table.
ILanguageCapabilities: Identifies the capabilities of a particular language implementation.
ISearch: Identifies a query that can be supplied to an `IDataSourceTable` to search for data.

## Package com.mapinfo.midev.language Description

A language consists of a set of syntactic elements and semantic rules for precisely specifying operations to perform. There are several languages that may be used for specifying data retrieval and editing operations.

Spatial Server exposes data as features. Features may be simple features (e.g. records in a table) or collections of features. The interfaces in the `com.mapinfo.midev.data` namespace extend the feature model to expose data and data access operations in a common and extensible fashion. Data access operations must include an ability to query and edit the data in a common way. The ability to access data in a common fashion and the ability to relate that data from disparate data sources, necessitates a common interface with well established semantics for accessing the data regardless of the underlying technology used to retrieve the data.

Spatial Server consists of an extensible language model consisting of a few simple, marker interfaces. Data access interfaces that require communication of an operation to perform, such as specifying a search request to return a desired set of features, are defined in terms of these marker interfaces. The data access interfaces also indicate which language implementations, and which specific capabilities within those languages, are supported for each operation to perform. There are three languages that are defined for communicating data access operations: the Filter Language, the Aggregation Language and the MapInfo SQL Language.

The Filter language is an OGC-like, filter-based language for specifying query operations to perform. This language is intended to be more simplistic in terms of the queries that can be expressed. As such, this language is expected to be more broadly implemented by data providers as a sort of lowest common denominator language that all data sources understand.

The Aggregation language is a query language based on SQL aggregations like MIN, SUM and GROUP BY. This is a simpler language than the MapInfo SQL language and allows a data provider to support delegation of queries with an aggregation.

The MapInfo SQL Language is a more expressive language and is more difficult to support by data providers.

The language model is exensible and allows for additional language implementations to be defined and added as needed or desired. Data providers may choose, for example, to implement a language that exposes more native data source capability.