Escolar Documentos
Profissional Documentos
Cultura Documentos
AGRADECIMENTOS
AGRADECIMENTOS
Deixo aqui minha loucura em forma de agradecimentos, pois é o único lugar em que a
citação é desnecessária, a referência é incerta, o entendimento é subjetivo, a explicação não se
deve, e apesar de tudo, a correção passa em silêncio por esta parte das veredas: os sermões.
Começo aqui meu agradecimento a Deus, por permitir minha existência.
A Cristo, pela sua mania de derrubar dogmas milenares, com simples frases que mal
preenchem linhas, mostrando que o conhecimento por vezes é a extensão da loucura humana.
Agradeço a minha orientadora Rosana Ferrareto, pela sua iniciativa, ousadia e esforço
de buscar seu lugar em um espaço totalmente tecnológico. Agradeço pela sua paciência e
calma e o positivismo de “dará certo!”, embora a minha mente estivesse pensando no que
poderia dar errado.
Ao Gustavo Prietro, meu coorientador, por ser prestativo e emprestar seu tempo e
inteligência para a realização do projeto. Agradeço por ter me apresentado os “Grafos”.
Espero utilizá-los em outras ocasiões, nem que for para desenhar árvores de natal.
Agradeço a Maria Carolina Gonçalves da biblioteca, pela sua contribuição no
trabalho, pela sua visão, e sugestões, o que tornou o trabalho altamente profissional. Que pena
não ter conseguido por a imagem do livro junto de uma estante, mas deixa para o próximo.
Ao Erasmo Roberto Marcelino, pesquisador da UNESP e colaborador da pesquisa,
que tive o prazer de conhecer, por ter contribuído com seu tempo e suas ideias que
enriqueceram muito o trabalho. Peço desculpas ao frio que passou esperando uma carona para
o “de volta para minha terra”, quando da visitação no IFSP.
Ao meu pai, por ter ensinado que todo trabalho é digno.
A minha mãe, por ter sempre incentivado meus estudos.
Ao Leo e ao Filipe, por estarem relacionados a esta pesquisa. Tentei fazer o máximo
para facilitar o entendimento de tudo o que fiz e escrevi.
Agradeço aos meus amigos, por estarem sempre à disposição.
A todos os professores que tive o prazer de conhecer. Cada um sempre será uma
inspiração para seguir em frente.
Agradeço pelas tardes filosóficas em que Rosana, Gustavo, Carol, Erasmo, Leo, Filipe
e este pequeno ser que vos escreve, estivemos reunidos, não nesta ordem, nem mesmo sempre
todos juntos.
E estas linhas vão para aqueles que, por ventura, eu tenha esquecido de agradecer, pois
não deixara de ser uma citação indireta indeterminada.
RESUMO
SILVA, W. C. (2013). Ontologia de Sistemas para Internet: proposta de um catálogo
bibliotecário online baseado em banco de dados orientado a grafos. Trabalho de Conclusão de
Curso - Instituto Federal de Educação, Ciência e Tecnologia de São Paulo, São João da Boa
Vista, 2013.
Esta pesquisa tem como objetivo apresentar uma proposta de desenvolvimento de um catálogo
online para a biblioteca baseado em uma ontologia construída a partir da bibliografia básica do
Curso de Tecnologia em Sistemas para Internet. Uma ontologia, de forma concisa, é a relação
de conceitos, neste caso, no âmbito da informática. Ao estabelecer relações entre esses
conceitos, foi criado um mapa conceitual, que auxiliará o bibliotecário a definir o assunto de
uma obra quando da sua catalogação. De fato, a dificuldade dos bibliotecários no momento da
catalogação é saber em qual assunto determinada obra pode ser inserida, pois a área tecnológica
e muitas outras não são de domínio dos bibliotecários. Diante disso, os dados (corpus) para a
constituição da ontologia foram retirados dos sumários, pois esses contêm palavras que
geralmente não são contempladas no título da obra, o que amplia as possibilidades do alcance
das relações entre as palavras e facilita a determinação do assunto. Para o levantamento do
corpus, foi utilizado o software AntConc, que é uma ferramenta de análise lexical que auxilia o
pesquisador a coletar e organizar os dados. A próxima etapa do trabalho consistiu em fazer o
relacionamento entre os conceitos por meio de um vocabulário controlado na área da
informática. Cada conceito da ontologia foi relacionado à obra de que foi retirado. O próximo
passo foi inserir essa ontologia no banco de dados orientado a grafos, Neo4j, o que possibilitou
o armazenamento e também a otimização na recuperação dos dados, por meio da criação de
uma página Web desenvolvida na linguagem de programação Java. Dessa forma, por meio do
catálogo, foi possível percorrer e recuperar os conceitos e as obras inseridas no banco de dados.
This research aims at presenting a proposal for developing an online catalog for a library based
on an ontology constructed from the basic bibliography of the Technology Course on Internet
Systems. An ontology, concisely, is the relation of concepts, in this case, about computing. In
order to establish relations among these concepts, a conceptual map was created to help the
librarian to define the subject of a document when cataloging it. In fact, the difficulty of the
librarians at the time of cataloging is to know which subject certain document can be inserted
in because the technology area and many others are not of the librarians’ domain. Therefore,
the data (corpus) to form the ontology were removed from the summaries, as these contain
words that are not usually included in the title of the document, which expands the possibilities
of the relation extents among words and thus helps determine their subject. As a
methodological procedure for collecting the data in the corpus, the AntConc software was used.
It is a lexical analysis tool that helps the researcher to collect and organize data. The next stage
consisted of relating the concepts by means of a controlled vocabulary in Computer Science.
Beside, each concept of the ontology was related to the document it belonged to. The next step
was to insert this ontology in a graph-oriented database, Neo4j, which also enabled the storage
and optimization in data recovery, through the creation of a web page developed in the Java
programming language. Thus, through the catalog, it was possible to review and retrieve the
concepts and the documents entered in the database.
1 INTRODUÇÃO ................................................................................ 11
2.3.3 Homonímia.............................................................................................................23
3 METODOLOGIA .............................................................................. 55
4 RESULTADOS ............................................................................... 69
5 CONCLUSÕES ................................................................................ 71
REFERÊNCIAS .................................................................................... 72
11
1 Introdução
1.1 Motivação
Levando em consideração que várias obras são lançadas mensalmente, cada vez mais, o
acervo das bibliotecas aumenta, o que impulsiona a necessidade de uma catalogação eficiente,
de modo que as obras sejam identificadas mais facilmente. Dessa forma, a impossibilidade de
os bibliotecários e os usuários da biblioteca conhecerem a vasta gama de assuntos existentes e,
mesmo conhecendo, não conseguirem visualizar a abrangência da obra a partir do seu título
gera dificuldade de gerenciamento de informação. Buscar uma organização que facilite o
trabalho do bibliotecário consiste na motivação desta pesquisa, baseada em uma ontologia.
Um exemplo desse tipo de trabalho é o BibliOntO, um protótipo de biblioteca digital
baseada em ontologias, desenvolvida por (RAMALHO 2010).
Portanto, neste trabalho, pretendeu-se criar um catálogo online para a biblioteca do
IFSP, campus São João da Boa Vista. Para esse fim, foi utilizado o conceito da ontologia, que
12
vem sendo explorada há tempos por pesquisadores da língua, para assim permitir a otimização
das consultas, sendo utilizados, os sumários dos livros das bibliografias bases do acervo do
curso Sistemas para Internet.
1.2 Objetivos
Este trabalho tem como por objetivo específico criar um catálogo online para a
biblioteca do IFSP campus São João da Boa Vista, a partir de uma ontologia, a fim de
promover a otimização da catalogação e das consultas. Neste trabalho, as buscas serão
delimitadas aos livros da bibliografia básica do curso de Tecnologia em Sistemas para Internet,
mas o trabalho dará possibilidade à expansão em todas as áreas do conhecimento que abrange
todo o acervo da biblioteca.
13
2 Pesquisa Bibliográfica
Já a área de PLN, conforme explicam Othero & Menuzzi (2005, p. 23, 24), preocupa-
se diretamente com “o estudo da linguagem voltado para a construção de softwares e sistemas
computacionais específicos, como tradutores automáticos, chatterbots, parsers,
reconhecedores automáticos de voz, geradores automáticos de resumo etc”.
Como visto, a Linguística de Corpus busca armazenar nos bancos de dados, os dados
da língua natural, de forma que possa ficar disponível para recuperação. Neste trabalho, o
corpus se constituiu de uma ontologia dos sumários dos livros-base do curso Tecnologia em
Sistemas para Internet. Assim, inserindo esse corpus no banco de dados, ele será reutilizado
para o sistema que será desenvolvido, dando suporte ao compartilhamento de conhecimento
para aqueles que não são da área da informática – os usuários do catálogo da biblioteca do
IFSP, campus São João da Boa Vista.
2.2 Ontologia
Para Sowa (1999 apud ALMEIDA, 2003, p. 165): “uma ontologia é um catálogo de
tipos de coisas, as quais assume-se existir em um domínio de interesse, na perspectiva de uma
pessoa que usa uma linguagem”. Nessa perspectiva, a ontologia apresenta-se como um
catálogo de conceitos de determinada área em particular de que uma pessoa possa se valer,
sendo que, estes conceitos relacionados uns aos outros formam uma estrutura.
O objetivo da ontologia é formar um sistema de categorização para representar o
mundo real (BREITMAN 2005). Segundo a autora, um filósofo grego chamado Porfírio, no
século III DC, criou a primeira estrutura de classificação, que ficou conhecida como “árvore
de Porfírio”, apresentado na Figura 1. Este exemplo trata-se de uma ilustração das categorias
de substância, que representam o supertipo mais comum do conhecimento, em que as
categorias mais abaixo de substânca são relacionadas com suas respectivas subcategorias,
como por exemplo, a categoria corpo, é uma subcategoria de mineral, e tem como
subcategorias, animado, e inanimado.
18
1
No capítulo 3 (Metodologia), há considerações sobre esse vocabulário e sua utilização na pesquisa.
20
Segundo Sá (2011, p.1), o termo semântica foi cunhado pelo filólogo francês Michel
Bréal (1832 - 1915) que estudava o corpo e a forma das palavras. A semântica tem como
objeto de estudo o significado. A semântica lexical é uma de suas vertentes, que estuda o
sentido do léxico, conjunto de palavras de uma língua.
Na semântica lexical, as palavras são definidas de acordo com as relações que
possuem entre si, possibilitando assim significações. Assim, é possível dizer que a construção
do significado ocorre por processos tais como “a sinonímia, a antonímia, a
2
Segundo Smullyan e Raymond (2009), uma lógica de primeira ordem consiste em um conjunto de axiomas e
de sentenças dedutíveis a partir deles.
21
um conceito ontológico correto. Se, por outro lado, esses sinônimos forem empregados em
outro contexto, podem não obter coerência. É corretor afirmar que “o carro é novo”, mas não
seria comum afirmar o mesmo em “o carro é jovem”. O adjetivo jovem, neste caso, não se
aplica, já que jovem é correlacionado ao ser humano e não a coisas materiais (cf.
PIETROFORTE ; LOPES, 2007).
Um exemplo de sinônimos na informática seria “programador” e “desenvolvedor”.
Podem-se utilizar essas duas palavras em: “Ele é programador de software” ou ainda “Ele é
desenvolvedor de software”. As duas sentenças corriqueiramente teriam o mesmo sentido.
Contudo, no domínio da informática, as palavras “programador” e “desenvolvedor” são
sempre intercambiáveis, uma vez que a palavra “desenvolvedor” tem um sentido mais amplo,
ou seja, designa alguém que participa mais ativamente do desenvolvimento (análise de
requisitos e testes) de um software e não somente da etapa de “programar”, embora nem
sempre seja assim.
Já a antonímia ocorre quando os termos relacionados são contrários. Por exemplo,
gordo vs. magro, bonito vs. feio, rico vs. pobre são palavras antônimas. Segundo Pietroforte;
Lopes (2007), tanto na sinonímia quanto na antonímia, a relação de sentido entre as palavras
não é absoluta. De acordo com esses autores, tratando-se do conceito de cores de televisão,
“TV preta e branca” pode tornar-se antônimo de “TV em cores”. Do mesmo modo, podemos
considerar como termos opostos, as palavras hacker e cracker, que denominam usuários de
inteligência para utilizar e invadir sistemas de computação. Segundo Kohn (2011, p. 1):
Do mesmo modo que “TV em cores” e “TV preta e branca” podem se tornar termos
antônimos, hacker e cracker revelam sentidos opostos – hacker é bom, mas cracker é mau;
enquanto um busca maneiras de proteção, o outro busca a invasão.
A hiperonímia e a hiponímia são termos a partir dos quais se percorre do mais geral
para o mais específico. Para Pietroforte; Lopes (2007, p.128). “[...] são fenômenos derivados
23
2.3.3 Homonímia
metonímica porque revela apenas uma parte de todo o ambiente de trabalho para se referir à
área de trabalho.
A meronímia (do grego meros: “parte”) descreve a relação “cada parte de um todo”,
em que, por exemplo, a é parte de b, ou a semente é parte da fruta (RIEMER, 2010). Por sua
vez, a holonímia (do grego holo: “todo”) descreve “o todo em relação a cada uma das partes”,
em que o holônimo cozinha tem como merônimos, fogão, geladeira, mesa etc. (HENRIQUES,
2011). Segundo este autor, a hiperonímia e a hiponímia diferem da meronímia e holonímia
pelo fato de que as palavras nesta categoria não partem do princípio X faz parte de Y, ou X é
um tipo de Y porque:
Dessa forma, pode-se supor que um pneu faça parte de um carro, mas pneu não é um
tipo de carro. Também é importante salientar que a meronímia/holonímia não descrevem
sentido de hierarquia, mas sim se inclusão. Seria como dizer que Redes é um tipo de
Segurança. Não faz sentido algum, pois Redes não é um tipo de Segurança. Dessa forma, o
válido é dizer que Redes (holonímia) tem como parte Segurança (meronímia). Mesmo assim,
a utilização da semântica lexical é por vezes maleável, uma vez que, dependendo do contexto
em que atua, possibilita características diferentes aos relacionamentos entre os conceitos.
Muitos outros sistemas de construção de significados poderiam ser aqui descritos,
mas como esse não é o objetivo deste trabalho, que busca definir e separar conceitos para a
ontologia, o foco será nas categorizações de: definição, hiperonímia/hiponímia e meronímia.
Por exemplo, a palavra “segurança”, considerada hiperônimo, teria como hipônimos:
segurança de redes, segurança de banco de dados e segurança da informação, como ilustra a
Figura 3 a seguir:
26
Nessa figura, “redes” comporta-se como hiperônimo em relação aos outros conceitos.
Dessa forma, quando se faz esse tipo de relacionamento hierarquizado, forma-se o que, na
computação, pode-se chamar de árvore. É perceptível que o esquema se parece com uma
árvore de cabeça para baixo, em que o primeiro nó (o hiperônimo “redes”) é chamado de raiz
e os seus hipônimos denominados folhas. A partir do momento em que se começa a cruzar
informações, ou seja, os hiperônimos, tem-se outro tipo de representação de dados: os grafos,
como se pode visualizar na Figura 5:
27
Essa representação já não lembra mais uma árvore, mas sim uma teia, em que os
conceitos se ligam entre si. Isso na computação é denominado grafo, onde os nós
(representados pelos conceitos) ligam-se entre si pelos arcos.
Vê-se, dessa forma, que os sentidos/conceitos das palavras não estão hierarquizados, o
que motiva a escolha, neste trabalho, por grafos. Assim, pode-se trabalhar com os dados
coletados de modo organizado.
Deve-se destacar também que, nem sempre, hiperônimos/hipônimos (é um tipo de/
está contido em) darão um entendimento das relações. Por exemplo, na Figura 6: se for
necessário percorrer algum relacionamento, a partir de alguma linguagem de programação,
como por exemplo, PHP, pode-se fazer então:
3
Disponível em: <http://www.cogsci.princeton.edu/~wn/>.
29
Nas bibliotecas, uma maneira rápida de se fazer consultas no acervo é por meio dos
catálogos. Os catálogos são a representação dos acervos em uma biblioteca (PEREA, 2011).
Para se ter um bom catálogo, faz-se necessária uma eficiente catalogação. Dessa forma, a
catalogação pode ser compreendida, segundo Fiúza (1985, p.257), como “a disciplina ou
conjunto de disciplinas que tratam da representação, nos catálogos de bibliotecas, dos
assuntos contidos no acervo”.
Há diversos tipos de catálogos, que são empregados de acordo com o método e
recurso disponível de cada biblioteca. Existem dois tipos de catálogos mais comuns que são:
manuais – em livro, folhas, fichas; e automatizados – em relatórios (já obsoleto) - em linha
(softwares).
Os catálogos em linha permitem um manuseio mais rápido e eficiente, uma vez que
todo processo se torna automatizado pelo software, cabendo ao bibliotecário (ou como neste
trabalho específico, os envolvidos no projeto) a tarefa de cadastrar as informações, e ao
usuário comum recuperá-las. Os catálogos em linha podem ser construídos para consultas
online. Esse tipo de catálogo é denominado OPAC (Online Public Access Catalog) e pode ser
acessado em qualquer momento já que não há limitações físicas ou temporais (FUJITA,
2009).
Dessa forma, mesmo diante de sistemas automatizados, a catalogação ainda se mostra
como uma tarefa dispendiosa, e nem sempre é reconhecida pela comunidade. Segundo
Gusmão et al (2009), o árduo trabalho da catalogação nem sempre é entendido pelos usuários,
que não fazem uso do catálogo por não acharem relevante. Outras vezes, nem sempre a
abordagem do catálogo consegue alcançar a objetividade de ser de fácil manipulação e
eficiente na busca. Litto (1985, apud AMARAL, 1995, p. 222) pondera que “um dos mitos
que fascina a sociedade brasileira é a idéia de que as novas tecnologias são soluções para toda
a nossa inadequação do passado”.
Embora seja uma ajuda considerável, os catálogos, às vezes, tornam-se dispensáveis,
devido a fatores diversos, como a falta de fomento para pesquisa nos catálogos e a sua
ineficiência nas buscas. Gusmão et al (2009), em sua pesquisa, demonstraram que dentre 75
usuários da biblioteca entrevistados:
• 97% conheciam o catálogo;
• Apenas 1% consultava o catálogo mais de três vezes por mês;
31
É necessário entender que quanto mais o bibliotecário for preciso em sua catalogação,
maior será a chance de resposta correta do software em relação ao seu usuário, e também
maior será a sua satisfação. Assim, essa catalogação só terá logro se o assunto for definido de
maneira correta. Esse ato de definição do assunto é compreendido como a catalogação de
assunto ou indexação. Unisist (1981, p.84 apud FUJITA, et al 2009, p. 23) afirma que indexar
é “a ação de descrever e identificar um documento de acordo com seu assunto”. E ainda para
Chaumier (1988, p.63 apud FUJITA, et al 2009, p. 23):
[...] a opção por assunto é o tipo mais solicitado pelos usuários. Na verdade,
a opção de busca por assunto é a mais contraditória, pois tem o maior índice
de fracasso – cerca de 40% de respostas com o registro nulo de recuperação.
conhecimento. Sendo assim, torna-se mais árdua a tarefa dos bibliotecários organizarem de
maneira mais clara todos os assuntos no acervo já que este se mostra extenso. E, para
organizar as informações de modo que possam ser recuperadas, é preciso seguir sempre os
padrões e métodos já estabelecidos. Segundo Fujita (2003 apud FUJITA et al 2009, p. 21,22):
A partir desse mapa, torna-se mais fácil orientar-se quanto ao assunto Java, uma vez
que fica claro que Java está relacionado à programação, linguagens de programação,
orientado a objetos. É verdade que outros assuntos sobre Java poderiam ser apresentados no
mapa, como áreas de aplicação, mas neste trabalho buscamos apenas inventariar os conceitos
essenciais que definam a rede de significação dos assuntos mais recorrentes em sistemas para
web.
34
2.5.1 Dados
Os dados podem ser obtidos pela percepção através dos sentidos (por exemplo,
observação) ou pela execução de um processo de medição. A Figura 9 a seguir ilustra as
fontes dos dados.
• Pilha
• Fila
• Lista
• Grafos
• Árvores
• Tabela de hashing
estejam ligadas, nem todas se conhecem. De fato, C pode não saber da existência de D. Mas
se levamos em conta que estas representações podem ser expandidas, em um futuro, pode ser
que C tenha conhecimento de D por meio de B ou diretamente, ligando assim C em D.
Como podemos ver, a representação facilita muito o entendimento das relações entre
as pessoas. A Figura 10 representa o conceito de grafos que será apresentado a seguir.
2.5.4 Grafos
É possível representar os grafos por meio de uma matriz: se há n |V| vértices v1, v2,...,
vn, então ela é uma matriz n x n cuja (i, j)-enésima célula é: (DASGUPTA et al, 2009).
Vários problemas representados pelos grafos podem ser resolvidos com buscas
realizadas nessas estruturas. Às vezes, será necessário percorrer todo o grafo, ou parte dele.
Mas tudo depende do tipo do algorítimo que será utilizado. Serão apresentados a seguir dois
algorítimos de percurso: percurso4 em profundidade e percurso em largura.
4
Algumas referências tratam os algorítimos como busca e não percurso. Mas, na realidade, os algorítimos são de
percurso. Por isso, neste trabalho, foram tratados como percurso.
40
5
A lógica booleana consiste em duas afirmações: true e false. É utilizada na computação para representar os bits
1 true ou 0 false
41
Listagem 1:
Procedimento explorar ( G, v )
Entrada: G = ( V, E ) é um grafo; v ϵ V
Saída: visitado (u) é tornado verdadeiro para todos os nós
u, alcançáveis partindo de v.
visitado ( v ) = verdadeiro
pré-visita ( v )
para cada aresta ( v, u ) ϵ E;
se não visitado ( u ): explorar
pós-visita ( v )
Pode-se definir esse grafo como grafo direcionado cíclico, pois ele forma um caminho
circular onde v0 → v2 → v3 → vx → v0. Pode-se notar no grafo um exemplo, A → D → B → C
→ E → A.
Sua propriedade: “um grafo direcionado possui um ciclo se e somente se a sua busca
em profundidade revela uma aresta de retorno” (DASGUPTA et al, 2009, p. 89).
44
O percurso em largura, também conhecido como BSF (do inglês breadth-first search),
trabalha com a junção dos vértices, contando cada vértice como se fosse uma camada. A
contagem inicia-se a partir da fonte do grafo, ou raiz no caso de uma árvore, e adiciona no
contador 1 cada vez que encontra uma nova aresta mais próxima a partir de uma grafo,
(DASGUPTA et al 2009). Dessa forma, a distância d entre os nós é de d + 1, sendo d=0 caso
ainda se esteja na aresta inicial. Diferentemente do percurso em profundidade, a percurso em
largura é implementada em uma fila para garantir a ordem de chegada dos vértices. Para cada
distância subsequente d = 1, 2, 3 é adicionado na fila. À medida que estes nós são
processados, são tirados da fila para que os vizinhos sejam adicionados. Este tipo de percurso
6
http://pt.wikibooks.org/wiki/Processamento_de_Dados_Massivos/Projeto_e_implementa%C3%A7%C3%A3o_
de_aplica%C3%A7%C3%B5es_Big_Data/Identifica%C3%A7%C3%A3o_de_ciclos_em_grafos.
45
tem a propriedade de que todos os seus caminhos são os mais curtos, sendo, portanto, um
algorítimo, para encontrar caminhos mínimos.
Pode-se então escrever o seguinte algorítimo, segundo Dasgupta et al (2009):
Listagem 2:
procedimento bfs (G, s)
Entrada: Grafo G = (V, E), direcionado ou não-
direcionado;
Vértice s ϵ V
Durante o curso de operações, o loop visualiza cada aresta uma vez (em grafos
direcionados) ou duas vezes (em grafos não direcionados) (DASGUPTA et al 2009).
Diante destas descrições dos grafos, neste trabalho, pode ser utilizado7 o conceito de
percurso em profundidade em grafos direcionados. Parte-se da seguinte questão: quais
conceitos estão relacionados a partir de um conceito x, ou seja, quais partes do grafo
direcionado são alcançáveis, a partir de determinado vértice? Dessa questão, consegue-se
7
Pode ser utilizado pelo fato de que o banco de dados orientado a grafos (seção 2.6.1), utilizado neste trabalho,
torna transparente ao usuário a implementação e manipulação dos algorítimos. Dessa forma, não foi necessário o
desenvolvimento de nenhum algorítimo de busca em grafos.
46
extrair o que será preciso: partindo-se de um determinado conceito, que outros conceitos da
ontologia vão estar relacionados com o primeiro?
Banco de dados NoSQL (Not only SQL), em português “Não apenas SQL”, foi
concebido para resolver problemas de escalabilidade e armazenamento de grandes volumes de
dados na Web 2.0, (DIANA; GEROSA, 2010), conhecidos como Big Data, que
conceitualmente se referem às grandes quantidades de dados complexos, o que torna
extremamente difícil realizar alguma operação (e.g, ordenação, remoção, sumarização) sem
perda de desempenho, utilizando Sistemas Gerenciadores de Banco de Dados (SGBD)
relacionais (VIEIRA et al 2012). Com esses problemas, as comunidades de softwares livres e
8
Esse grafo é só um exemplo de relacionamento de conceitos, não sendo ele a representação real da ontologia
desenvolvida, pois os relacionamentos podem não apresentar esses resultados.
47
empresas como Amazon, Google, Linkedln, Twitter, (ORACLE, 2012) começaram a buscar
alternativas próprias e publicaram seus artigos científicos (CHANG et al, 2006), como, por
exemplo, a Google, que publicou um artigo sobre Big Tables, sobre a busca da grande
escalabilidade em um novo tipo de banco de dados, fugindo do conceito relacional. Até então,
esses tipos de banco de dados não eram denominados NoSQL, embora já existissem antes
mesmo dos banco de dados relacionais, só sendo reconhecidos como tal em 2009 pela
comunidade de software livre e código aberto.
O termo NoSQL, apesar de ter um significado, não traz claramente o que esses tipos
de banco de dados são realmente. De fato, a linguagem SQL não é sinônimo de banco
relacional, nem representa suas limitações (DIANA; GEROSA, 2010), sendo assim os bancos
NoSQL, em sua maioria, apresentam as seguintes características: não-relacional, distribuído,
de código aberto e escalável horizontalmente, ausência de esquema ou esquema flexível,
suporte à replicação nativo e acesso via APIs simples (NOSQL, 2010). É importante ressaltar
que os bancos de dados NoSQL não se aplicam a todos os cenários, sendo relativos e
específicos nas áreas de atuação, pois cada uma supera e faz ajuste de escala para alguns
subconjuntos de casos de uso (PERERA, 2012).
Existem vários tipos de banco de dados NoSQL, entre os quais, os mais comuns são:
bancos de dados orientados a documentos, armazéns de chave-valor, bancos de dados de
famílias de colunas e bancos de dados de grafos (DIANA; GEROSA, 2010).
9
Os exemplos de banco de dados NoSql foram retirados do site <nosql-database.org>.
48
Há diversos bancos NoSQL que podem ser utilizados, mas tudo depende da
necessidade e de cada caso. Diante disso, é perceptível que banco de dados orientado a grafos
são bons para armazenar dados por meio de relacionamentos, ou seja, a interconectividade
entre os dados. Neste trabalho, como já foi dito, utiliza-se o relacionamento entre conceitos
(ontologia). Dessa forma, a ontologia, para permitir seu reuso e a fácil manipulação, foi
transferida para um banco de dados orientado a grafos. O banco utilizado foi o Neo4j, onde
foi possível o armazenamento da ontologia em grafos.
2.6.1 Neo4j
Segundo o manual do Neo4j (2013, p. 513), “atualmente ele suporta cerca de 34.4
bilhões de nós, 34.4 bilhões de relacionamentos e no mínimo 68.7 bilhões de propriedades”.
10
Mais informações sobre as licenças do Neo4j estão disponíveis em < http://www.neo4j.org/learn/licensing>.
11
ACID acrônimo de Atomicidade, Consistência, Isolamento e Durabilidade. Propiedades em um banco que
busca garantir a consistência da base de dados (SILBERSCHATZ; KORTH 2006).
12
Representational State Transfer (Transferência do Estado Representativo). Para o criador do conceito,
Fielding (2000), “REST é um estilo de abstração dos elementos arquitetônicos dentro de um sistema hipermídia
distribuído. REST ignora os detalhes de implementação do componente e sintaxe do protocolo, a fim de
concentrar-se nos papéis de componentes, as restrições sobre sua interação com outros componentes[...]”.
13
Acrônimo de Application Programming Interface (Interface de Programação de Aplicativos). Bibliotecas
disponibilizadas por uma tecnologia que serverm para automatizar, padronizar e tornar transparentes as tarefas
na programação (DEITEL, 2010).
50
14
Este tópico não pretende mostrar-se como um manual, mas sim explanar sobre as tecnologias relacionadas ao
Neo4j utilizadas neste trabalho, justificando assim seu uso. Para o download do manual basta fazer o cadastro no
endereço <http://info.neotechnology.com/download-pdf.html?document=milestone>, que será enviado um link
para download no email cadastrado. Para tirar qualquer dúvida sobre o Neo4j e suas tecnologias, pode-se acessar
as comunidades: O Neo4j Stackoverflow: <http://stackoverflow.com/questions/tagged/neo4j> e Neo4j
Comunidade de discussões: <https://groups.google.com/forum/#!forum/neo4j>.
15
localhost representa do servidor local, ou seja, o servidor representado pelo próprio computador em uso.
16
Disponível em: <http://www.neo4j.org/download>.
52
Para se trabalhar com o Neo4j, faz-se necessário o conhecimento das linguagens query
suportada e os tipos de conexão com o banco. A linguagem query Cypher é a linguagem
oficial Neo4j. Com ela, é possível trabalhar tanto em banco de dados embarcado como no
Server. Pelo fato de ser uma linguagem nova, ela está em constante desenvolvimento e
aprimoramento (NEO4J, 2013). A linguagem Cypher procura focar na expressão “diga o que
quer e não como quer”, o que a torna a mais clara possível. Algumas expressões são
inspiradas em SQL como WHERE e ORDER BY, CREATE, DELETE.
Os modos de conexões17 com o banco são basicamente os seguintes:
Cabe assim o estudo de caso para cada necessidade. O Neo4j e suas linguagens de
trabalho apresentam seus prós e contras, tanto pela facilidade de uso, como pelo desempenho.
O desempenho pode ser verificado nos trabalhos de Barmpis; Kolovos (2012) e Holzschuher;
Peinl (2013). Neste trabalho, não se prima pelo desempenho, mas, mesmo assim, foi
escolhida a linguagem Cypher já que é de fácil manuseio e apresenta resultados satisfatórios.
O banco de dados utilizado neste trabalho foi o Server, pois apresenta a interface gráfica
nativa, sendo mais fácil de visualizar a estrutura do grafo em desenvolvimento. Para
17
Há, no apêndice B, alguns exemplos de como conectar no banco do Neo4j.
18
A linguagem Gremlin não será abordada aqui, pois não é o foco deste trabalho e, segundo informações no
manual do Neo4j, traz alguns riscos de segurança. Além disso, a linguagem oficial Neo4j é o Cypher. Para saber
mais sobre o Gremlin, pode-se acessar < http://gremlindocs.com/> e <http://markorodriguez.com/>.
54
19
O Neoclipse 1.8 (última versão até o momento da redação deste trabalho) não foi utilizado neste trabalho pelo
fato de não suportar a versão 2.0 do Neo4j.
20
CRUD (Create, Read, Update, Delete): Operações básicas para Criar, Ler, Atualizar e Deletar dados do banco.
Capítulo
55
3 Metodologia
A proposta deste trabalho foi desenvolver uma seção sobre o assunto Sistemas para
Internet no catálogo online para a biblioteca. Para tanto, no domínio da Linguística
Computacional, utilizou-se ontologia, que é o relacionamento entre conceitos, entrelaçados a
diversos outros sem uma ordem específica, que formam uma rede. Por essa razão, optou-se
por utilizar sistemas de busca em grafos. Parte da ontologia foi inserida no banco de dados
orientado a grafos. Fez-se uso da linguagem de programação Java para desenvolver o
catálogo.
Além disso, para se criar uma ontologia, foi necessário definir um corpus, conjunto de
dados linguísticos coletados. Neste trabalho, esse corpus constituiu-se de palavras existentes
nos sumários dos livros da bibliografia básica do Curso de Tecnologia em Sistemas para
Internet. A limitação na escolha do escopo dos sumários ficou assim definida, pois, além de
ser um trabalho inicial no campus, a coleta e o relacionamento dos dados de um corpus muito
extenso consiste em tarefa árdua.
Foram coletados os sumários de 58 livros. Esses sumários foram digitados ou
coletados na internet por meio de pesquisa no Google ou nos sites das editoras dos livros.
Alguns sumários que estavam em formato de imagem precisaram ser convertidos em textos
com software de conversão OCR.
A partir do corpus coletado, utilizou-se o software AntConc21, que é uma ferramenta
livre de uso multiplataforma para a realização de pesquisa em Linguística de Corpus. Com o
auxílio desse software, todos os sumários podem ser analisados em termos de relevância de
ocorrência de palavras. Para isso, basta inserir no software um ou mais sumários, a partir da
opção File – Open File. A Figura 20 a seguir mostra um exemplo do sumário do livro
21
O freeware Laurence Anthony’s AntConc 3.2.4w é um concordanciador disponível gratuitamente na internet
em <http://www.antlab.sci.waseda.ac.jp/software.html>. Acesso em 10.Nov.2012. O concordanciador é uma
ferramenta de análise lexical que auxilia o pesquisador a coletar e tratar os dados para descrição. Apresenta,
entre outras, as seguintes ferramentas, utilitários, instrumentos e funções: lista de palavras, identificação de
palavras-chave, etiquetador, organização de dados em clusters, etc. Para executar suas tarefas, esse
concordanciador somente aceita receber textos em extensão.txt.
56
DEITEL, Paul; DEITEL, Harvey. Java: como programar. 8.ed. São Paulo: Pearson Prentice
Hall, 2010 inserido no software.
palavras e a frequência com que são encontradas nos sumários, como ilustra a Figura 21 a
seguir.
A pesquisa do software com todos os sumários extraiu 6.839 palavras. Nota-se que
algumas palavras são irrelevantes para a pesquisa, como, por exemplo, as palavras “é”, “das”,
“e”, “o”, “as”, “os”. Essas palavras foram descartadas por não apresentarem relações de
conceitos.
Após essa primeira triagem, foi escolhida aleatoriamente22 uma lista de dezenove
palavras recorrentes com frequencia nos sumários, para assim constituir a ontologia. As
palavras escolhidas foram:
22
Essa decisão foi tomada devido ao fato de se ter um conjunto muito extenso de palavras para se trabalhar em
um tempo escasso, e também, a extensão que os conceitos pode apresentar é por vezes inimaginável.
58
• Dados
• C
• SQL
• Banco de dados
• Marketing
• Sistemas
• Internet
• IP
• Protocolo
• UML
• Redes
• WEB
• Java
• Programação
• Linguagem
• Assembly
• Administração
• IHC
• Segurança
O próximo passo foi identificar de que sumário faz parte cada palavra escolhida. No
exemplo da figura anterior, apresenta-se apenas um sumário, e, naturalmente, todas as
palavras buscadas pertencem à mesma obra. Mas, quando se trabalha com vários sumários, é
indispensável a ajuda dessa ferramenta. A aba Concordance do software AntConc permite
verificar onde a palavra ocorre em cada sumário. Para proceder a essa verificação, como
ilustra a Figura 22, a palavra é escrita no campo destacado por um círculo e, em seguida,
clica-se no botão Start. No centro das frases dispostas no concordanciador, vê-se que a
palavra pesquisada Java está destacada pelo retângulo.
59
No exemplo ilustrado pela Figura 22, pesquisou-se a palavra “Java”. Clicando sobre a
palavra “Java” em cada linha, o software remete ao sumário em que a palavra se encontra,
como mostra a Figura 23 a seguir. Ao clicar na primeira linha, a ferramenta remete o
pesquisador ao livro DEITEL, Paul; DEITEL, Harvey. Java: como programar. 8.ed. São
Paulo: Pearson Prentice Hall, 2010, que está referenciado acima de cada sumário. Nos
cabeçalhos de cada sumário, foi colocada a referência da obra. Dessa forma, pode-se
relacionar a palavra às obras em que aparecem. Para identificação, a cada obra foi atribuído
um número de identificação (id). No caso da Figura 23, o id está representado pelo número
17.
60
Até essa etapa, consegue-se obter as palavras, mas ainda não fica claro com qual
conceito elas se relacionam. Por isso, o próximo procedimento foi fazer um levantamento de
vocabulário controlado da área da computação. O vocabulário controlado é uma ferramenta
criada para auxiliar os profissionais da informação, que trabalham com a descrição de
assuntos e representação das informações contidas em documentos referentes a uma
determinada área de conhecimento. Segundo Maculan (2010),
• PROFISSIONAIS DA INFORMÁTICA
• ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES
• GESTÃO DA SEGURANÇA EM SISTEMAS COMPUTACIONAIS
• MATEMÁTICA DA COMPUTAÇÃO
• REDES E COMUNICAÇÃO DE DADOS
• BANCO DE DADOS
• SOFTWARES
• TEORIA DA COMPUTAÇÃO
• LINGUAGEM DE PROGRAMAÇÃO
• SISTEMAS OPERACIONAIS
• INTERAÇÃO USUÁRIO-COMPUTADOR
• SISTEMAS MULTIMÍDIA
• WORLD WIDE WEB
• LINGUÍSTICA
• MARKETING
• ADMINISTRAÇÃO
• ENGENHARIA DE SOFTWARE
• DISPOSITIVOS MÓVEIS
• PROGRAMAÇÃO
23
Disponível em <http://143.107.73.99/Vocab/Sibix652.dll/ARV?Hier=CE610>. Acesso em 29 Out. 2012.
62
Após essa etapa, as palavras foram agrupadas em conceitos, tarefa para a qual foi
necessária a ajuda de profissionais da área, denominados informantes da pesquisa. Esses
profissionais são os professores que estão ligados diretamente ao curso, no caso os
orientadores. Com os dados já levantados, foi necessário categorizá-los por assunto, pois os
conceitos têm relação direta a um assunto. Para isso, fez-se uso da semântica lexical. Da
semântica lexical, foram utilizados os conceitos de definição (é um(a)), hiponímia e
hiperonímia (é um tipo de / está contido em) e holonímia (tem como parte). Estes são alguns
exemplos da utilização da semântica lexical no conceito “linguagem de programação”:
24
Essa classificação por categorias está no apêndice A.
25
Os scripts estão no apêndice C.
26
Este trabalho não obteve êxito em obter informações da possibilidade da personificação dos ícones, como por
exemplo, inserir imagens próprias, pois nada é referenciado na documentação ou nos fóruns de ajuda.
63
Com os dados armazenados, foi feita uma aplicação web (o catálogo), na linguagem
de programação Java, que possibilitou a recuperação das informações no banco. Na figura 25,
mostra-se o diagrama de classes do desenvolvimento do catálogo.
Para a criação do catálogo27, foi utilizada a IDE28 NetBeans 7.1.2, conceitos de JSP e
Servlet. Para a visualização da página do catálogo, foi utilizado o navegador Mozilla Firefox
21.0.
A aplicação desenvolvida é uma página Web (Figura 26), em que se apresenta um
campo para a inserção do conceito a ser buscado e dois modos de fazer buscas no banco:
Busca por Livro e Busca por Relacionamento.
27
O código da implementação pode ser visualizado no apêndice D.
28
IDE (Integrated Development Environment) é um ambiente integrado para desenvolvimento de software, em
que cada IDE dá suporte ao desenvolvimento em uma ou mais linguagens de programação.
65
29
O sistema não faz diferenciação entre letras maiúsculas e minúsculas (conhecido como case insensitivity na
informática).
66
69
4 Resultados
71
5 Conclusões
Referências
ALMEIDA, M. B. Roteiro para construção de uma ontologia bibliográfica através de
ferramenta automatizada. Belo Horizonte. 2003. v. 8, n.2, p. 164-179, jul/.dez 2003.
FIORIN, J. L. (org.) Introdução à linguística. II. Princípios de análise. São Paulo: Contexto,
2007.
FUJITA, M. S. L.O contexto da indexação para a catalogação de livros: uma introdução. In:
FUJITA M. S. L (org.) Indexação de livros: a percepção de catalogadores e usuários de
bibliotecas universitárias. São Paulo: Cultura Acadêmica, 2009. p. 11-16.Disponível em:
<http://www.culturaacademica.com.br/catalogo-detalhe.asp?ctl_id=56>. Acesso em: 24 jan.
2013.
HAWKING, S. Nosso futuro: jornada nas estrelas? – como a vida biológica e eletrônica
continuarão evoluindo em complexidade a um ritmo sempre crescente. In: HAWKING, S. O
universo numa casca de noz. São Paulo: Mandarin, 2001.
HUNGER M. Good Relationships: The Spring Data Neo4j guide book version 2.0. Neo
Technology. 2011. Disponível para download em: < http://static.springsource.org/spring-
74
JORGE C. A de Figueredo 2003-05-18. Teoria dos Grafos. 2003. p.1. Disponível em:
www.google.com.br/url?sa=i&rct=j&q=&esrc=s&source=images&cd=&docid=S2OpphAXm
KRrdM&tbnid=zJLgiS-
SHqwcJM:&ved=0CAEQjxw&url=http%3A%2F%2Fwww.dsc.ufcg.edu.br%2F~abrantes%2
FCursosAnteriores%2FTG031%2FRepresentacao%2FRepresentacao.html&ei=Il4MUdnpIZO
o8QSavIHoAQ&bvm=bv.41867550,d.dmQ&psig=AFQjCNGuL6QXIFbLVoZsXQuorgkbkA
IhnA&ust=1359851263643015. Acesso 01. Fev. 2013.
LAKOFF, G.; TURNER, M. More than cool reason: a field guide to poetic metaphor.
University of Chicago Press, 1989.
NEO4J. The Neo4j Manual v2.0.0-M01. Neo Technology. 2013. Disponível para download
em: < http://info.neotechnology.com/download-pdf.html?document=milestone>. Acesso: 15.
Abr. 2013.
NEOTECHNOLOGY. Introdução aos bancos de dados NoSQL. 2012. Disponível em: <
http://www.neotechnology.com/2012/10/introducao-aos-bancos-de-dados-nosql/>. Acesso:
21. Maio. 2013.
NETTO P. O. B. Grafos: Teoria, Modelos, Algoritimos. 4ª. São Paulo. E.Blucher, 2006.
PERERA S. Considerações sobre o banco de dados Cassandra. 2012. Disponível em: <
http://www.ibm.com/developerworks/br/library/os-apache-cassandra/>. Acesso: 21. Maio.
2013.
SÁ, E. J. Semântica: Entre (linhas) entre palavras. Revista Conhecimento Prático Língua
Portuguesa. 2011. Disponível em:
<http://linguaportuguesa.uol.com.br/linguaportuguesa/gramatica-ortografia/25/artigo185930-
1.asp>. Acesso em: 10. Jan. 2013.
SMITH, B.; WELTY, C. Ontology: towards a new synthesis. In: International Conference
on Formal Ontology in Information Systems, Ogunquit, Maine, 2001. Disponível em:
<http://www.cs.vassar.edu/~weltyc/papers/fois-intro.pdf> Acesso: 19. Maio. 2013.
APÊNDICE A – Ontologia
segurança 48, 39, 42, 60, 61, 44, 57, 22 segurança física 48, 41
protocolos de segurança 48
segurança da informação 41
segurança de redes 42, 60, 61
segurança da comunicação 60
segurança sem fio 60
segurança na web 61, 44
segurança de banco de dados 44
78
aplicações distribuídas 61
domínios na internet 61
aplicativos internet 44
ICMP 48
Internet group management protocol 48
IGMP 48
Internet route acess protocol 48, 61
protocolo Farrel 48
serviços de busca na internet 3
comunicação multimídia na internet 27
arquitetura internet 27, 61
modelos de comunicação da internet 27
IP 48, 42, 60, 61
comutação 48
roteamento 48
IPV6 48
versão seis 48
transporte sobre IP 48
engenharia de tráfego IP 48
segurança IP 48
encapsulamento IP 48
IP móvel 48, 42
ATM 48
protocolo da internet 48
TCP/IP 48, 60, 61
datagrama 48
OSI 61
camada TCP/IP 60
protocolo 48, 42
protocolo de roteamento multicast 48
protocolo de transporte 48, 60
protocolo de sinalização 48
protocolo DNS 48
80
protocolo dial-up 48
protocolo UDP 27
protocolo TCP 27, 60
protocolo SCTP 27
protocolo MIDI 27
protocolo da internet IP 27
protocolo de mensagens de controle
dainternet (ICMP) 27
protocolo de acesso múltiplo da
EthernetCSMA/CD 27
protocolo de ponto a ponto PPP 27
protocolo de tempo real RTP 27
protocolo de controle RTP (RTCP) 27
protocolo SNMP 27
protocolo simplex 60
protocolo IP 60
arquitetura de protocolo de LAN 61
protocolo de trasnferência de
hipertexto(HTTP) 44
segurança em redes 42, 60
sub-redes 48, 60
81
4. BANCO DE DADOS
(holonímia) tem como parte
(definição) É um (hiponímia e hiperonímia) É um
tipo de / está contido em
banco de dados de clientes 38 dados 61, 36, 2, 48, 38, 53, 31, 43, 36, 44,
database marketing 38 37, 5, 6, 17, 19, 28
banco de dados de voos 28 banco de dados 2, 48, 38, 53, 31, 43, 36, 44,
37
tipos de dados 28, 36, 44, 37
data mining 48
comunicação dos dados 31, 61
transmissão de dados 27, 61
criptografia de dados 31
mineração de dados 31, 36, 44
persistência de dados 54
modelo de dados 43
armazenamento de dados 44, 36
gerenciamento de banco de dados 31
banco de dados relacional 43, 36
banco de dados multidimensional 44
sistemas paralelos 12, 36
sistemas distribuídos 12, 36, 39, 31
sistemas centralizados 12
sistemas de banco de dados 31, 43, 36, 44
sistemas relacionais 31
sistemas baseado em lógica 31
sistemas paralelos 12, 36
sistemas distribuídos 12, 36, 56
sistemas de gerenciamento em banco de
dados 37
82
7. LINGUAGEM DE PROGRAMAÇÃO
(holonímia) tem como parte
8. SISTEMAS OPERACIONAIS
(holonímia) tem como parte
12. LINGUÍSTICA
(holonímia) tem como parte
linguagem científica 21
documentação dos dados 16
representação dos dados 16
defeitos de linguagem 12
sistemas de chamadas 12
sistemas paralelos 12, 36
sistemas distribuidos 12, 36, 56
sistemas centralizados 12
85
13. MARKETING
(holonímia) tem como parte
administração de marketing 38
marketing heloístico 38
marketing de segmento 38
marketing de nicho 38
sistemas informação de venda 38
marketing local 38
marketing e-commerce 38
comunicação de marketing 38
relações públicas de marketing 38
marketing de catálogo 38
marketing de resposta 38
marketing interativo 38
sistemas informação de venda 38
sistemas inteligência de marketing 38
compra e venda de sistemas 38
sistemas verticais de marketing 38
sistemas horizontais de marketing 38
sistemas logísticos integrados 38
pesquisa de marketing 38
database marketing 38
estratégias de marketing 38
86
14. ADMINISTRAÇÃO
(holonímia) tem como parte
gerenciamento de sistemas 39
sistemas sociotecnicos 39
sistemas complexos 39
engenharia de sistemas 39
aquisição de sistemas 39
desenvolvimento de sistemas 39
arquitetura de sistemas 39
sistemas distribuídos 12, 36, 39, 31
sistemas embutidos 39
sistemas operacionais em tempo real 39
construção de sistemas 39, 15
87
17. PROGRAMAÇÃO
(holonímia) tem como parte
(definição) É um (hiponímia e hiperonímia) É um
tipo de / está contido em
Os objetos nativos Neo4j são uma maneira de se trabalhar com Neo4j. Não é
necessário utilizar uma linguagem query. Dessa forma, pode-se trabalhar diretamente com a
linguagem Java para criar os nós e relacionamentos30.
Com a API Rest para conectar-se direto ao banco Server sem linguagens query
trabalhando com HTTP e JSON:
30
Códigos retirados do manual Neo4j.
90
//cria os nós
URI firstNode = createNode();
addProperty( firstNode, "name", "Joe Strummer" );
URI secondNode = createNode();
addProperty( secondNode, "band", "The Clash" );
31
Códigos retirados do repositório colaborativo de software <https://github.com/neo4j/neo4j> e também do
desenvolvimento da aplicação.
91
***************************************
* Script Criação Livros em relação ao conceito *
***************************************
********
* SQL *
********
52 - SOARES, Bruno Augusto Lobo. Aprendendo a linguagem PHP. São Paulo: Ciência
Moderna, 2007.
CREATE n:Livro VALUES {autor: 'SOARES Bruno Augusto Lobo', titulo:'Aprendendo a
linguagem PHP', edicao:'1ª', cidade:'Sao Paulo', editora:'Ciência Moderna', ano: '2007',
p:'182'};
37 - DAMAS, Luis. SQL: structured query language. 6.ed. Rio de Janeiro: LTC, 2007.
CREATE n:Livro VALUES {autor: 'DAMAS Luis', titulo: 'SQL: structure query language',
edicao: '6ª', cidade: 'Rio de Janeiro', editora: 'LTC', ano:'2007', p: '381'};
*****
*C*
*****
6 - SCHILDT, Herbert. C: completo e total. 3.ed. Sao Paulo: Pearson Makron Books, 1997.
CREATE n:Livro VALUES {autor: 'SCHILDT. Herbert', titulo: 'C: Completo e total', edicao:
'3.ed', cidade: 'Sao Paulo', editora: 'Pearon Makron Books', ano:'1997', p: '811'};
21 - KING, K. N. C: programing a modern aproach. 2.ed. New York: W.W. Norton &
Company, 2008.
CREATE n:Livro VALUES {autor: 'King. K. N', titulo: 'C: programing a modern aproach',
edicao: '2.ed', cidade: 'New York', editora: 'Norton & Company', ano:'2008', p: '832'};
19 - DEITEL, Harvey M.; DEITEL, Paul J. C++: como programar. São Paulo: Pearson
Prentice Hall, 2006.
CREATE n:Livro VALUES {autor: 'DEITEL. Harvey M./ DEITEL .Paul J. ', titulo: 'C++:
como programar', edicao: '1.ed', cidade: 'Sao Paulo', editora: 'Pearson Prentice Hall',
ano:'2006', p: '1152'};
93
*******
* C++ *
*******
6 - SCHILDT, Herbert. C: completo e total. 3.ed. Sao Paulo: Pearson Makron Books, 1997.
\\Já inserido em "C". Apenas foi feito a relação entre o conceito C++ e o livro.//
19 - DEITEL, Harvey M.; DEITEL, Paul J. C++: como programar. São Paulo: Pearson
Prentice Hall, 2006.
\\Já inserido em "C". Apenas foi feito a relação entre o conceito C++ e o livro.//
*******
* Java *
*******
27 - GOODRICH, Michael T; TAMASSIA, Roberto. Estruturas de dados e algoritmos em
Java. 4.ed. Porto Alegre: Bookman, 2007.
CREATE n:Livro VALUES {autor: 'GOODRICH, Michael T; TAMASSIA, Roberto', titulo:
'Estruturas de dados e algoritmos em Java', edicao: '4.ed', cidade: 'Porto Alegre', editora:
'Bookman', ano:'2007', p: '597'};
17 - DEITEL, Paul; DEITEL, Harvey. Java: como programar. 8.ed. São Paulo: Pearson
Prentice Hall, 2010.
CREATE n:Livro VALUES {autor: 'DEITEL, Paul; DEITEL, Harvey', titulo: 'Java: como
programar', edicao: '8.ed', cidade: 'Sao Paulo', editora: 'Pearson Prentice Hall', ano:'2010', p:
'1114'};
94
7 - DEITEL, H. M. et. al. XML: como programar. Porto Alegre: Bookman, 2003.
CREATE n:Livro VALUES {autor: 'DEITEL, H. M. et. al', titulo: 'XML: como programar',
edicao: '1.ed', cidade: 'Porto Alegre', editora: 'Bookman', ano:'2003', p: '972'};
*******
* PHP *
*******
52 - SOARES, Bruno Augusto Lobo. Aprendendo a linguagem PHP. São Paulo: Ciência
Moderna, 2007.
\\Já inserido em "SQL". Apenas foi feito a relação entre o conceito PHP e o livro.//
***********
* Assembly *
***********
6 - SCHILDT, Herbert. C: completo e total. 3.ed. Sao Paulo: Pearson Makron Books, 1997.
\\Já inserido em "C". Apenas foi feito a relação entre o conceito Assembly e o livro.//
********
* Pascal *
********
4 - ASCENCIO, Ana Fernanda Gomes; CAMPOS, Edilene Aparecida Veneruchi de.
Fundamentos da programação de computadores: algoritmos, Pascal, C/C++ e Java. 2.ed. São
Paulo: Pearson
\\Já inserido em "C". Apenas foi feito a relação entre o conceito Pascal e o livro.//
*******************
* Orientado a objetos *
*******************
17-DEITEL, Paul; DEITEL, Harvey. Java: como programar. 8.ed. São Paulo: Pearson
Prentice Hall, 2010.
\\já inserido em "JAva". Apenas foi feito a relação entro o conceito Orientado a objetos e o
livro
39 - SOMMERVILLE, Ian. Engenharia de software. 9.ed. São Paulo: Pearson Prentice Hall,
2011.
CREATE n:Livro VALUES {autor: 'SOMMERVILLE, Ian', titulo: 'Engenharia de software',
edicao: '9.ed', cidade: 'São Paulo', editora: 'Pearson Prentice Hall', ano:'2011', p: '567'};
37 - DAMAS, Luis. SQL: structured query language. 6.ed. Rio de Janeiro: LTC, 2007.
\\já inserido em "SQL". Apenas foi feito a relação entro o conceito Orientado a objetos e o
livro
***********************
* Script criação Categoria *
***********************
**********************
* Script criação Conceito *
**********************
***********************************************
* Script criação Relacionamento Conceito - > Categoria *
***********************************************
*******************************************
* Script criação Relacionamento Conceito -> Livro *
*******************************************
*********************************************
* Script criação Relacionamento Conceito -> Conceito *
*********************************************
**********************************************
* Script criação Relacionamento Categoria -> Conceito *
**********************************************
Index.jsp
32
Códigos retirados da implementação do catálogo.
102
103
104
Classe BuscarConceito
105
106
107
Classe Livro
108
Classe PercorreConceito
Classe Servlet