• Nenhum resultado encontrado

A LINGUAGEM DE CONSULTA GEOMDQL

5.2 A LINGUAGEM GEOMDQL

5.2.1 Sintaxe da Linguagem GeoMDQL

A sintaxe da linguagem GeoMDQL foi definida utilizando a nota¸c˜ao EBNF (Extended Backus - Naur Form ) [129], por esta ser um formalismo bastante adotado em trabalhos acadˆemicos e em aplica¸c˜oes comerciais, para a defini¸c˜ao da sintaxe de linguagens [183, 170, 124] e tamb´em pelo fato de que a defini¸c˜ao da sintaxe original da linguagem MDX utiliza formalismo semelhante. Nesta se¸c˜ao, os principais elementos da gram´atica da linguagem GeoMDQL s˜ao discutidos. A

5.2 A LINGUAGEM GEOMDQL 64

especifica¸c˜ao completa em EBNF se encontra no Apˆendice A.

Figura 5.1 Principais Elementos da Gram´atica da Linguagem GeoMDQL

A Figura 5.1 mostra os principais elementos de uma consulta elaborada em GeoMDQL. O principal elemento da gram´atica ´e geomdql statement, que foi definido para ser um se- lect statement. De acordo com as regras do formalismo EBNF, o caracter ”?”indica que um elemento ´e opcional, enquanto os elementos em caixa alta (e.g., WITH, SELECT, FROM, WHERE e ON MAP ) s˜ao elementos terminais da linguagem. A Figura 5.2 mostra um exemplo de consulta GeoMDQL. Neste exemplo, ´e selecionada a quantidade de nascidos vivos no ano de 2002 para cada membro do n´ıvel Estado da dimens˜ao Localizacao, pertencente ao cubo de dados BrSaude.

Figura 5.2 Exemplo de Consulta GeoMDQL

O elemento formula specification, exibido na Figura 5.3, mant´em a defini¸c˜ao originalmente especificada para a linguagem MDX [297] e permite a defini¸c˜ao de f´ormulas para a cria¸c˜ao de conjuntos de fatos calculados, com base em valores armazenados em um cubo de dados. Por exemplo, a instru¸c˜ao WITH MEMBER [Measures].[Taxa De Mortalidade] as ‘[Measures].[Obitos Menores de Um Ano]/[Measures].[Nascidos Vivos]’ utilizada na consulta da Figura 5.4, utiliza dois fatos de cubo de dados (i.e. [Obitos Menores de Um Ano] e [Nascidos Vivos] ) para criar um novo fato calculado com o nome Taxa De Mortalidade, cujo valor ser´a calculado em tempo de execu¸c˜ao da consulta. Dessa forma, o novo membro pode ser utilizado na cl´ausula SELECT, conforme demonstrado na Figura 5.4.

5.2 A LINGUAGEM GEOMDQL 65

Figura 5.3 Elemento formula specification da Gram´atica da Linguagem GeoMDQL

Figura 5.4 Exemplo de Defini¸c˜ao de F´ormulas em GeoMDQL

Outro exemplo de utiliza¸c˜ao do elemento formula specification pode ser, por exemplo, para criar uma instru¸c˜ao para gerar um conjunto nomeado de Top10Obitos, contendo os nomes dos dez estados brasileiros com maior n´umero de ´obitos de crian¸cas com idade inferior a um ano, no ano de 2000. Esta instru¸c˜ao utilizaria a fun¸c˜ao TopCount, originalmente definida para a linguagem MDX, e seria semelhante a: WITH SET Top10Obitos AS ‘TopCount( [Localiza- cao].[Estado].Members , 10, ([Tempo].[2000], [Obitos Menores de Um Ano]) )’.

O elemento axis specification list, cuja especifica¸c˜ao pode ser analisada na Figura 5.5, rep- resenta a defini¸c˜ao dos eixos de uma consulta elaborada de acordo com a sintaxe da linguagem GeoMDQL, sendo similar `a sintaxe original da linguagem MDX. Em uma especifica¸c˜ao de eixo, podem ser utilizados operadores multidimensionais e espaciais para navegar em uma hierarquia de um cubo de dados e manipular membros desta hierarquia. Um exemplo de especifica¸c˜ao de eixos pode ser visualizado na cl´ausula SELECT da consulta exibida na Figura 5.2. Como pode ser observado, nesta consulta foram utilizados 2 eixos (i.e. COLUMNS e ROWS ) para compor

5.2 A LINGUAGEM GEOMDQL 66

a especifica¸c˜ao dos eixos e organizar os dados. Entretanto, GeoMDQL possibilita a utiliza¸c˜ao de mais de dois eixos em uma consulta, atrav´es da utiliza¸c˜ao dos elementos terminais PAGES, SECTIONS e CHAPTERS, ou ainda atrav´es da utiliza¸c˜ao do n´umero inteiro que indica o ´ındice de cada eixo.

Como pode ser observado na Figura 5.5, uma especifica¸c˜ao de eixo (axis specification) cont´em um elemento chamado geomdql expression, cuja especifica¸c˜ao parcial ´e exibida na Figura 5.7. Fazem parte da especifica¸c˜ao do elemento geomdql expression, dois outros elementos essen- ciais da linguagem GeoMDQL, que s˜ao geomdql function e member geometry. S˜ao estes dois elementos, os principais respons´aveis por agregar `a linguagem GeoMDQL, o poder de proces- samento espacial, permitindo a utiliza¸c˜ao de opera¸c˜oes espaciais sobre membros geogr´aficos. Como pode ser observado na consulta da Figura 5.6, est´a sendo utilizado uma fun¸c˜ao chamada FILTER na especifica¸c˜ao do eixo linha (ROWS) para recuperar somente os estados que possuem popula¸c˜ao superior a 1 milh˜ao de habitantes.

Figura 5.5 Elemento axis specification list da Gram´atica da Linguagem GeoMDQL

Figura 5.6 Exemplo de Utiliza¸c˜ao de Fun¸c˜oes em GeoMDQL

A defini¸c˜ao do elemento geomdql function, mostrada na Figura 5.7, possibilita a constru¸c˜ao de instru¸c˜oes em uma consulta GeoMDQL, envolvendo qualquer um dos operadores apresenta- dos na Se¸c˜ao 5.3. Como pode ser observado na Figura 5.7 e tamb´em na gram´atica completa exibida no Apˆendice A, em nenhum momento utilizamos os nomes dos operadores multidimen-

5.2 A LINGUAGEM GEOMDQL 67

sionais e geogr´aficos dispon´ıveis na linguagem GeoMDQL. Ao contr´ario da gram´atica original da linguagem MDX, detalhada em [72], que mant´em o nome das opera¸c˜oes permitidas na lin- guagem, optamos por especificar uma gram´atica mais gen´erica, que abstrai certos detalhes. Estes detalhes ficam sob responsabilidade do processador da linguagem, que avalia as opera¸c˜oes poss´ıveis em uma fase de valida¸c˜ao que ´e realizada ap´os a execu¸c˜ao do parser. Com essa abor- dagem, a gram´atica fica mais leg´ıvel, de f´acil manuten¸c˜ao, melhores mensagens de erro podem ser definidas pela aplica¸c˜ao, e por fim, a linguagem pode ser estendida sem a necessidade de altera¸c˜oes na gram´atica.

Figura 5.7 Elemento geomdql expression da Gram´atica da Linguagem GeoMDQL

Dessa forma, tanto os operadores herdados da linguagem MDX quanto os novos operadores definidos para a linguagem GeoMDQL, podem ser utilizados em uma consulta. Por exemplo, o operador Filter, quando utilizado em uma especifica¸c˜ao de eixo em GeoMDQL, retorna um subconjunto de elementos de um outro conjunto, baseado na aplica¸c˜ao de uma restri¸c˜ao. Dessa forma, a instru¸c˜ao

Filter ({[Localizacao].[Cidade].Members}, (Measures.[Populacao])> 500000 ) ON ROWS pode ser utilizada para mostrar no eixo ROWS todos os membros do n´ıvel Cidade, da dimens˜ao Localizacao, que possuem o fato Populacao superior a 500000.

5.2 A LINGUAGEM GEOMDQL 68

uma especifica¸c˜ao de eixo para aplicar uma restri¸c˜ao sobre um fato geogr´afico. Por exemplo, a instru¸c˜ao em GeoMDQL:

GeoF ilter({[Localizacao].[Bairro].Members}, Area([Measures].[AreaLote]) > 10000) pode ser utilizada em uma consulta para retornar, para cada membro do n´ıvel Bairro, os lotes com ´

area superior a dez mil metros quadrados.

Figura 5.8 Elemento member geometry da Gram´atica da Linguagem GeoMDQL

Outro exemplo consiste na utiliza¸c˜ao do operador TopCount, o qual retorna um n´umero espec´ıfico de items do topo de um conjunto ordenado. Assim, a instru¸c˜ao

TopCount({[Localizacao].[Estado].Members}, 5 , Measures.[Mortes NeoNatais])

ON COLUMNS pode ser especificada para mostrar no eixo COLUMNS, os membros do n´ıvel Estado da dimens˜ao Localizacao que est˜ao relacionados com os cinco maiores valores da medida Mortes NeoNatais.

Figura 5.9 Exemplo de Consulta GeoMDQL Envolvendo o Elemento Geometry

Como pode ser observado na Figura 5.7, uma geometria de um membro geogr´afico (mem- ber geometry) tamb´em pode fazer parte de uma express˜ao da linguagem GeoMDQL. Este ele-