Terceiro Trabalho Prático de GTI

Slides:



Advertisements
Apresentações semelhantes
Programação em Java Prof. Maurício Braga
Advertisements

Programação em Java Prof. Maurício Braga
I/O Carlos Bazilio Depto de Ciência e Tecnologia
Soluções Iterativas com Laços
Programação Orientada a Objetos*
Construção de Algoritmos 2
Programação em Java Prof. Maurício Braga
Estruturas de Repetição
Sockets Marco Antonio – marcoreis.net Arquiteto de Software Dezembro/2007.
Collections Marco Antonio, Arquiteto de Software – TJDF Atualizado Dezembro/2008.
Entrada e Saída Marco Antonio Arquiteto de Software Dezembro/2007.
Métodos, Parâmetros, Argumentos e Contratos
Tratamento de Exceções
Chain of Responsibility
Padrão de Projeto Interpreter
Programação Básica em Java
Streams Java.
Walfredo Cirne walfredo.dsc.ufpb.br
Wagner Santos C. de Jesus
9 Controle de fluxo Seqüenciadores. Jumps. Escapes. Exceções.
Treinamento no GRADEp HelloWorld Args. Slide 2 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - julho 2005 HelloWorld e Args Autoria Autora.
JAVA ENUMS © 2009 by Jorge L. de Souza Leão março de 2009 PEE - COPPE/UFRJ.
A linguagem C#.
Excepções e Streams em Java
Introdução a Programação JAVA
Estrutura de Dados em Java
Paradigmas de Linguagens de Programação Paradima da Programação Orientada à Objetos Professor: Armando Hage Belém-2008.
CRIANDO OBJETOS EM JAVA
Tópicos de Sistemas de Informação A Carlos Oberdan Rolim Ciência da Computação.
Departamento de Estatística e Informática
Tipos Agregados Homogêneos e Listas
C# Sharp Shooters.NET Universidade Federal de Pernambuco Centro de Informática Recife, 23/09/2002 Autor: Marden Menezes Costa Propriedades.
JAVA Orientação a Objetos
Segundo Trabalho Prático de GTI Resolução. Exercício 1 Escreva as expressões regulares correspondentes a cada uma das seguintes situações: Aceitar um.
Quarto Trabalho Prático de GTI
Streams –input e output
Chamada Remota de Procedimentos
Capítulo 2. Generics  Novo recurso de linguagem surgida a partir da versão 5  Permite a utilização de tipos parametrizados por classes e métodos tornando-os.
Os métodos equals() e hashCode()
Capítulo 1 Tipo enumerado.
Orientação a Objetos e Java Graduação em Ciência da Computação
Pilhas Profa. Nádia Félix.
Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa This.
Stream – Fluxo I/O Manipulação de arquivos texto
Linguagem II Exceções.
Listas Simplesmente Encadeadas
Wagner Santos C. de Jesus
Tratamento de Exceções
Implementação Orientada a Objetos – Aula 05 Construtores e sobrecarga de métodos Prof. Danielle Martin Universidade de Mogi das Cruzes
Curso de Linguagem Java
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota (com material da Qualiti Software Process)
Coleções, Genéricos, Threads Marco Antonio. Collection Principais métodos da interface Collection.
Estrutura de Controle em JAVA
Exceções Suzana Fragoso (smpf) Adaptado do material de Guilherme Carvalho (gvc)
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
M ÉTODOS DA C LASSE S TRING. FUNÇÕES COM STRING Uma string é um tipo texto que corresponde à união de um conjunto de caracteres. Em Java, as strings são.
Utilizando UML e Padrões Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Março de 2010.
Linguagem I Strings.
Módulo 9 Strings , Coleções e I/O
Estruturas de Dados I Segundo Período de 2008 Gabarito da Primeira Prova.
Aula Prática 5 05/05/2010. //Estrutura do método public int subtrair (int a, int b){ //Calcule a operação desejada. int resultado = a – b; //Retorne o.
Aula Prática 1 Monitoria IP/CC (~if669) (A partir do slide elaborado por Luís Gabriel)
Coleções em Java - Parte 2
Tecgraf PUC-Rio maio de 2011 Aplicação Java cliente do DataService Openbus.
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Socket em Java.
Aula 3. ListView ListView é um componente que mostra uma lista de itens Os itens da lista são automaticamente inseridos usando um adapter, implementado.
Implementação Orientada a Objetos – Aula 04 Métodos, parâmetros e retorno Prof. Danielle Martin/Marcia Bissaco Universidade de Mogi das Cruzes
IFRN Técnico em Informática para Internet Strings e Arquivos Texto Prof. Gilbert Azevedo.
Transcrição da apresentação:

Terceiro Trabalho Prático de GTI Resolução

Exercício 1 Considere dois ficheiros XML descrevendo catálogos de livrarias, dos quais se apresenta um excerto abaixo e que se encontram disponíveis no material de suporte para estes exercícios. Escreva um XML schema que capture uma visão integrada das duas fontes de dados.

Exercício 1 <?xml version="1.0"> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:complexType name="BookType"> <xsd:sequence> <xsd:element name="title" type="xsd:string" /> <xsd:element name="author" type="xsd:string" /> <xsd:element name="isbn" type="xsd:string" /> <xsd:element name="category" type="xsd:string" minOccurs="0" /> <xsd:element name="publisher" type="xsd:string" minOccurs="0" /> <xsd:element name="pages" type="xsd:integer" minOccurs="0" /> <xsd:element name="price" type="xsd:decimal" minOccurs="0" /> <xsd:element name="date" type="xsd:string" minOccurs="0" /> <xsd:element name="description" type="xsd:string" minOccurs="0" /> </xsd:sequence>

Exercício 1 </xsd:complexType> <xsd:complexType name="CatalogueType"> <xsd:sequence><xsd:element name="book" type="BookType" maxOccurs="unbounded" /></xsd:sequence> <xsd:element name="catalogue"> type="CatalogueType"> </xsd:schema>

Exercício 2 Escreva em XQuery dois mapeamentos entre esquemas (views), um para cada um dos ficheiros XML referidos no Exercício 1, que produzam XML em conformidade com o schema dado como resposta. Defina ainda uma view adicional, de nome mediated-schema, que faça a união dos dois mapeamentos sobre um elemento de raiz comum e que produza XML em conformidade com o schema dado como resposta ao exercício 1.

Exercício 2 declare namespace gti="uri:gti.pt"; declare function gti:view1() { <catalogue xsi:noNamespaceSchemaLocation="schema.xsd"> { for $book in doc("book-catalogue1.xml")//book return <book> <title>{data($book/title)}</title> <author>{data(reverse(tokenize(data($book/author),", ")))}</author> <isbn>{data($book/@id)}</isbn> <category>{data($book/genre)}</category> <price>{replace(data($book/price),"\$","")}</price> <date>{data($book/publish_date)}</date> <description>{data($book/description)}</description> </book> } </catalogue>}

Exercício 2 declare function gti:view2() { <catalogue xsi:noNamespaceSchemaLocation="schema.xsd"> { for $book in doc("book-catalogue2.xml")//book return <book> <title>{data($book/title)}</title> <author>{data(reverse(tokenize(data($book/author),", ")))}</author> <isbn>{data($book/isbn)}</isbn> <category>{data($book/../categoryname)}</category> <publisher>{data($book/publisher)}</publisher> <pages>{data($book/pagecount)}</pages> <price>{replace(data($book/price),"\$","")}</price> <date>{data($book/pubdate)}</date> <description>{data($book/blurb)}</description> </book> } </catalogue>}

Exercício 2 declare function gti:integrated() { let $aux = ( gti:view1()//catalogue union gti:view2()//catalogue )‏ return <catalogue xsi:noNamespaceSchemaLocation="schema.xsd">{$aux}</catalogue> }

Exercício 3 Escreva as seguintes interrogações em XQuery e diga quais os resultados obtidos aquando da sua execução sobre a view mediated-schema:

Exercício 3 Quais os autores que escreveram mais do que um livro? let $doc := gti:integrated()‏ for $a in distinct-values($doc//author) where count($doc//book[author= $a]) > 1 return <author>{$a}</author>

Exercício 3 Qual o livro mais caro? let $doc := gti:integrated()‏ return $doc//book[price = max($doc//price)]/title

Exercício 3 Quais as categorias existentes e quantos livros existem em cada categoria? let $doc := gti:integrated()‏ for $c in distinct-values($doc//category)‏ return <category> <name>{$c}</name> <books>{count($doc//book[category=$c]}</books> </category>

Exercício 4 Usando o algoritmo de "string matching" baseado em programação dinâmica dado nas aulas teóricas, calcule a similaridade e o alinhamento entre as duas cadeias de caracteres abaixo indicadas. Indique também a matriz calculada pelo algoritmo. AATTGGTCCC AACTTGGACC

Exercício 4

Exercício 5 Usando o algoritmo "simple tree matching" dado nas aulas teóricas, calcule a similaridade e o alinhamento das árvores que se seguem. Devem ser mostradas todas as matrizes calculadas pelo algoritmo. A A / | \ / | \ B C D B C M / | | \ / \ E F G J E F / \ |\ / \ H I K L H N

Exercício 5 Nas restantes iteracções o retorno é 0 (porque os nós são diferentes)‏ Para alinhar, basta ligar os nós com o mesmo nome

Exercício 6 Usando as ferramentas de extracção de dados introduzidas nas aulas práticas e tendo como base de conhecimento a lista de filmes e nomes de actores fornecida no material de suporte, indique um processo de extracção de informação às críticas de cinema contidas num ficheiro de texto, que também se encontra fornecido no material de suporte.

Exercício 6 import com.aliasi.chunk.* import com.aliasi.dict.*; import com.aliasi.util.*; import com.aliasi.tokenizer.*; import java.util.*; import java.io.*;

Exercício 6 public class MovieReviews { private MapDictionary dictionary; private ExactDictionaryChunker chunker; private Map movies; public MovieReviews() { this.dictionary = new MapDictionary(); this.movies = new hashMap(); addEntries(new File("actors.txt"),"ACTOR",1.0); addEntries(new File("movies.txt","MOVIE",1.0); this.chunker = new ExactDictionaryChunker(dictionary,IndoEuropeanTokenizerFactory.FACTORY,tr ue,true); }

Exercício 6 public void addReview(String aux) { Chunking chunking = chunker.chunk(review); Set reviewActors = new HashSet(); Set reviewMovies = new HashSet(); for (Chunk chunk : chinking.chunkSet() ) { if(chunk.type().equals("MOVIE"))‏ reviewMovies.add(review.substring(chunk.start(),chunk.end())); else reviewActors.add(review.substring(chunk.start(),chunk.end())); }

Exercício 6 for (String movie : reviewMovies) { Set aux = movies.get(movie); if(aux==null) aux = new HashSet(); aux.addAll(reviewActors); movies.put(movie,aux); }

Exercício 6 public String getNextReview(BufferedReader reader) throws Exception { StringBuffer aux = new StringBuffer(); while((s=reader.readLine())!=null && s.equals("##") == false) { aux.append(s); aux.append(" "); } return aux.toString();

Exercício 6 public void AddEntries ( File file, String cat, double score) throws Exception { BufferedReader reader = new BufferedReader(new FileReader(file)); String s; while((s=reader.readLine())!=null) dictionary.addEntry(new DictionaryEntry(s.trim(),cat,score)); }

Exercício 6 public static void main ( String[] args ) throws Exception { MovieReviews m = new MovieReviews(); BufferedReader reader = new BufferedReader(new FileReader("reviews.txt")); String s; while((s=getNextReview(reader)).length()>0) addReview(s); for (Map.Entry entry : m.movies.entrySet() ) { System.out.println("Actors for movie " + entry.getKey() + "*****"); for (String value : m.getValue()) System.out.println("-----" + value); }

Exercício 6 Possíveis erros Nomes de actores que ocorrem na crítica, mas não pertencem ao elenco Nomes de filmes que aparecem na crítica de outros filmes Nomes de actores em diferentes formatos (e.g., com ou sem iniciais)‏ Nomes de filmes em diferentes formatos, abreviados, etc.