O modelo de documentos do GDOC é composto de três partes interrelacionadas:
No GDOC cada documento é representado como uma instância da classe Documento, podendo ser especializado nos tipos primitivos texto, figura, atributo, composto e elo, conforme ilustra o modelo de instâncias descrito na figura 3.1. A notação usada para representar este e os outros modelos conceituais ao longo desta dissertação é a UML (Unified Modeling Language) [UML 97] e o termo documento será empregado neste trabalho como sinônimo de instância de documento.

Figura 3.1 O modelo de instâncias
Um documento do tipo primitivo Texto contém um texto não estruturado armazenado no atributo conteúdo, na forma de um "string" HTML. Um texto pode ser de qualquer tamanho, de uma simples palavra a um documento inteiro. Formatos de a apresentação de um documento que não estão relacionados com a estrutura são inseridos diretamente no texto na forma de código HTML, como por exemplo, um parágrafo com palavras em itálico ou negrito.
Um documento do tipo Figura contém um objeto que é manipulado via OLE por uma outra aplicação, como um programa de edição gráfica, por exemplo. Do ponto de vista do GDOC, os documentos do tipo Figura são não-estruturados. Largura e altura são atributos de dimensão definidos pelo usuário para apresentação da figura no documento. Borda define o tamanho do borda da figura. A legenda contém um texto alternativo que é exibido quando não é possível exibir a figura propriamente dita. Por exemplo, quando o programa chamado via OLE não está disponível.
O tipo Composto define um documento composto de outros documentos, denominados seus componentes. O documento composto possui uma estrutura de árvore, de forma análoga aos documentos compostos dos modelos ODA[BRO 89] e NR/SD [MOR 97], e está associado com os seus componentes pelo relacionamento Componente. O componente de um documento pode aparecer numa ordem específica, dada pelo atributo seqüência da classe Componente, além de ele próprio poder ser um documento composto.
Os atributos de um documento também são considerados documentos, mas do tipo primitivo Atributo. Um atributo é utilizado para armazenar propriedades associadas a um documento composto, como a data de criação e o nome do autor. Atributos podem ser empregados para a construção de expressões de consulta na pesquisa de documentos, além de serem utilizados pelo sistema de workflow do GDOC e no controle de versões (ex.: um atributo de comentário para a versão).
Documentos podem estar associados através de elos, ou "hyperlinks" [LEE 93]. Um elo é definido por uma âncora, que é a região (ex.: texto ou figura) que o usuário seleciona para navegar até um documento destino. Neste modelo, um elo é definido como um documento do tipo primitivo Elo associado a dois outros documentos: um que faz o papel da âncora (relacionamento âncora) e outro que é o seu destino (relacionamento destino). Um documento elo é sempre um componente de outro documento.
A figura 3.2 ilustra a estrutura lógica de um documento composto manual_industrial que possui quatro documentos componentes na seguinte ordem:

Figura 3.2 Representação gráfica de um documento manual_industrial
3.2.2 O modelo de apresentação
No GDOC a forma de apresentação de cada documento é armazenada separadamente de seu conteúdo, nas classes definidas pelo modelo de apresentação. Esta abordagem permite que um documento componente tenha diferentes apresentações, dependendo do documento composto no qual ele aparece, ao contrário de linguagens de autoria para a "Web", como HTML, em que o código da apresentação está intercalado com o conteúdo do documento. A relação entre um documento e a sua forma de apresentação é ilustrada na figura 3.3

Figura 3.3 Relação entre o modelo de apresentação e o modelo de instâncias
O código de apresentação de cada documento é armazenado como uma instância da classe Apresentação. Cada instância desta classe contém dois atributos com código HTML, o preScript e o postScript. O primeiro armazena o código HTML que deve ser processado antes do conteúdo do documento ser exibido. O segundo, o código HTML que deve ser processado após a exibição deste conteúdo. Por exemplo, para que o texto título_padrão da figura 3.2 fique em negrito, o preScript da sua apresentação deve ser o código HTML <B>, para inicializar a formatação de negrito e o postScript, </B>, para finalizar a formatação.
O modelo de apresentação do GDOC permite que um documento tenha duas apresentações mutuamente exclusivas: a apresentação do documento, utilizada quando o documento for apresentado isoladamente, ou seja, não como componente de outro, e a apresentação do componente, aplicada quando o documento aparece num contexto, como componente de outro documento. Por exemplo, o texto título_logotipo da figura 3.2 quando manipulado isoladamente é visualizado em negrito, ao passo que quando apresentado como componente de um outro documento, neste caso manual_industrial, pode estar centralizado e com outro tamanho de fonte, como mostra a figura 3.4.
Desta maneira um documento presente em diferentes documentos compostos pode ter diferentes apresentações, uma em cada documento composto no qual ele aparece.

Figura 3.4 Formas de apresentação de um documento
A definição de um documento no GDOC é feita seguindo uma estrutura lógica e de apresentação pré-estabelecidas pelo Tipo do documento, de modo que no momento da autoria o usuário fornece apenas o conteúdo do documento. Os tipos de documentos são armazenados no modelo de esquema, descrito na figura 3.5.
Figura 3.5 O modelo de esquema
Documentos também podem ser criados num estilo ad-hoc. Neste caso, estão associados a um tipo livre que permite que a estrutura do documento seja definida pelo usuário em tempo de autoria.
Cada tipo de documento pode ser especializado nos tipos primitivos texto, atributo, figura, consulta e composto. Esta última especialização permite que a composição de um documento seja feita por uma seqüência, definida pelo relacionamento Componente de Seqüência, que estabelece que os componentes de um documento deste tipo aparecem numa ordem pré-estabelecida, ou por uma alternância, definida pelo relacionamento Componente de Alternância, quando apenas um componente aparece, mas ele pode ser de diferentes tipos. Os atributos minoc e maxoc definem os números mínimo e máximo de instâncias de um tipo de componente que podem aparecer num documento composto.
Como exemplo da definição de um tipo, consideremos o documento manual_industrial (figura 3.2) como do tipo manual genérico, que possui a seginte estrutura lógica:
Na figura 3.6 está ilustrada a estrutura lógica do tipo manual_genérico bem como duas instâncias de documentos deste tipo, manual_interno e manual_industrial.

Figura 3.6 Estrutura lógica de um tipo de documento
A autoria de cada documento é feita por um programa específico, determinado pelo atributo aplicativo. A classe Consulta armazena consultas SQL que são usadas para recuperar atributos de um banco de dados externo, permitindo colocar dados de outras bases de dados em documentos gerenciados pelo GDOC.
O relacionamento de uma instância de documento, definida pelo modelo de instâncias, com o seu tipo, definido pelo modelo de esquema, é ilustrado na figura 3.7.

Figura 3.7 Relação entre o modelo de esquema e o modelo de instâncias
Os tipos de documento também estão associados a formas de apresentação, que são utilizadas para exibir os documentos daquele tipo. Uma forma de apresentação é considerada a padrão. Opcionalmente, o tipo de documento pode ter formas de apresentação alternativas, que podem ser escolhidas pelo usuário durante a autoria do documento.