==Motivação Um dos grande problemas da actualidade é a falta de qualidade dos dados. Em todo o trabalho da comunidade aberta, dado o típico envolvimento de uma certa heterogeneidade de pessoas, a questão da correcção e validação dos recursos construídos é um problema ainda mais delicado. Isso leva a que uma enorme quantidade do esforço da comunidade open-source seja ligado ao problema de melhorar e corrigir trabalhos anteriores. Esse problema é reconhecido e está no génese da criação de vários encontros científicos onde se vem discutindo as mais diversas maneiras de conseguir mais agilidade: .1 na delimitação de subconjuntos para os quais se consiga expressar / definir o que é \textbf{estar correcto}; .2 na criação de modos compactos e programáveis de exprimir a correcção; .3 na detecção de elementos inválidos; .4 na correcção ágil de elementos inválidos. # Na nossa experiência real de criação de terminologias, dicionários, e outros recursos de vários tipos temo-nos deparado com este problema. Neste projecto pretende-se construir uma ferramenta \fvc{} para validação e correcção multi-formato, orientada por tipos. == Descrição da ferraments \fvc A ferramenta \fvc{} que se pretende construir vai ser constituída por: .[Um módulo Perl]\mbox{}\\ de definição de tipos: . o módulo permite: . usar tipos predefinidos; . criar novos tipos a partir de esquemas básicos (como expressões regulares); . criar tipos completamente novos através da definição das suas funções básica. # . cada tipo tem associado um conjunto de funções (validate, markit, fixit, etc) para tratamento dos elementos a processar. # .[Um conjunto de plugins]\mbox{}\\ para processamento de diversas classes de documentos estruturados, como sejam: . CSV, gnumeric, Excel, OOo; . XML (orientado ao Schema, ou formas de validação mais restritivas); . Thesauri e terminologias; . Dicionários; . TMX, POs; # Estes plugins vão interpretar uma classe especifica de documentos, dividindo-os nos seu sub-elementos e processando-os estruturalmente. .[Uma Domain Specific Language \fvc{}]\mbox{}\\ para definir critérios de validação e processamento pretendido, usando uma notação simples e uniforme (ou o mais uniforme possível) sobre as múltiplas classes de documentos. O \fvc{} estabelece a associação entre as diversas subunidades documentais (células Excel, colunas CSV, elementos XML, campos de um thesaurus) e os respectivos tipos. # No conjunto de validações pretendidas inclui-se a correcção ortográfica multilingue. === Diversidade de tipos Nesta abordagem a noção de tipo é mais abrangente que a abordagem típica das linguagens de programação. Pretende-se tratar elementos como: . inteiros, reais; . nomes próprios; . idades de pessoas (ou genericamente, inteiros ou reais restringidos a um domínio); . URI; . elementos temporais: ano, hora, data; . texto escrito (numa qualquer língua); . transcrição fonética; . números de visa, telefone, contribuinte, bilhete de identidade, códigos postais, e outros; # A generalidade das validações é parcial. ===*Antecedentes Foi anteriormente desenvolvido um protótipo para validação parcial de XML usando esta abordagem e com o intuito de servir de prova de conceito. Uma apresentação deste protótipo está descrito em: \url{http://natura.di.uminho.pt/wiki/doku.php?id=ferramentas:xml-tx}