Bancos de dados e Web ( XML, Ontologias)

Slides:



Advertisements
Apresentações semelhantes
Sistemas Distribuídos Baseados na Web
Advertisements

Módulo II – Domine a Internet Introdução a Informática DCC - UFMG.
Ontologias e Web Semântica
HTML - HiperText Markup Language Tecnologia para Web
Curso: Banco de Dados I Análise de Sistemas PUC Campinas
Standard para representar e trocar informação estruturada
Profa. Rudson apostilas.wikidot.com/hipermidia
XML (eXtensible Markup Language) W3C - World Wide Web Consortium Documentos TXT estruturados? Por que XML? XML, ou eXtensible Markup Language, é uma linguagem.
XML - Extensible Markup Language
Aplicação de XML Web Semântica Tópicos Avançados em Bancos de Dados II
Programas Utilitários Básicos
Vânia Maria Ponte Vidal
Tecnologias XML e Aplicações
Gerenciamento de Dados XML
DNS Introdução.
April 05 Prof. Ismael H. F. Santos - 1 Módulo II XML Processing: XSLT, SAX e DOM Prof. Ismael H F Santos.
Alexandre Parra Site: Linguagem Java Alexandre Parra Site:
Ontologias e web semântica
University of Minho, Portugal
Internet Principais conceitos.
EL e JSTL Prof. Danton Cavalcanti Franco Junior
C# Documentando código em XML Sharp Shooters.NET Universidade Federal de Pernambuco Centro de Informática Recife, 10/10/2002 Autor: Marden Menezes Costa.
Desenvolvimento de Projetos e Aplicações Web
Tópicos avançados em internet B Carlos Oberdan Rolim Ciência da Computação.
HTML Básico João Araujo.
I- Introdução A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados.
Web Semântica Mineração na Web – if796 Subtitle.
Aulas ministradas por:
XML Extended Markup Language
Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Computação e Estatística Servidor de Documentos XML Usando.
Tópicos avançados em internet A
Tópicos avançados em internet B Carlos Oberdan Rolim Ciência da Computação.
Tópicos de Sistemas de Informação A
Web Services Uninorte Semana de Tecnologia da Informação
Rodrigo Cristiano Silva
Contornos arquitetônicos Maria Helena Pereira Dias.
PETER ANTONY RAUSCH JOYCE MARTINS
Prof. Kelly E. Medeiros Bacharel em Sistemas de Informação
Profº Cláudio Barbosa XHTML – Introdução  XHTML (eXtensible HyperText Markup Language) – linguagem baseada na XML para.
Professor: Márcio Amador
Paradigmas da Programação – Semestre 1 – Aula 9 Professor: Eduardo Mantovani )
Arquitetura de Desenvolvimento Web MVC vs. Three Tiers
Banco de Dados Aplicado ao Desenvolvimento de Software
Da Introdução à Prática
HyperDE Framework e Ambiente de Desenvolvimento dirigido por Ontologias para Aplicações Hipermídia Bom dia... Vou apresentar o HyperDE, que é o fruto desse.
Inteligência Artificial Web Semântica
TECNOLOGIA WEB XHTML Aula 5 Profa. Rosemary Melo.
Universidade do Estado do Rio de Janeiro Instituto de Matemática e Estatística XML: Extensible Markup Language EquipeEquipe: Adriana Cristina de Oliveira.
XML – Extensible Markup Language [Introdução] Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa.
©Silberschatz, Korth and Sudarshan (modificado)10.1.1Database System Concepts Capítulo 10: XML XML para transferência de dados Estrutura hierárquica do.
Produção de Sites Unidade 9 – XML Prof.: Henrique Santos.
Web Semântica Thiago José Marques Moura. Roteiro Problemática; Descrição; Arquitetura Proposta; Conclusão sobre Web Semântica; Linguagens de Anotação.
The Petri Net Markup Language (PNML) Wellington João da Silva Mestrado Ciência da Computação.
Validando Documentos XML Vânia Maria Ponte Vidal
XML Prof. Dr. Fernando Gauthier INE/UFSC. XML XML (Extensible Markup Language) é uma linguagem para marcar documentos que contêm informações estruturadas.
XML Namespaces XML Namespaces provê um método para evitar conflito de nomes de elementos.
XML – Extensible Markup Language [Sintaxe] Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa Fumagalli.
XML: Conceitos, Tecnologias e Aplicações Vânia Maria Ponte Vidal
Java e XML Eduardo Aranha. Slogans de Java e de XML Java – “Portabilidade de Código” XML – “Portabilidade de Dados” Java e XML – “Portabilidade de Código.
Redes de computadores: Aplicações Prof. Dr. Amine BERQIA
Utilização de Ontologias para Integração de Heterogeneidade Semântica
Inteligência Artificial Web Semântica
Karine Alessandra Córdova
Prof. Wolley Profa. Érika
Introdução a Arquitetura, HTML e CSS
JavaScript Introdução ao JavaScript 1. Objetivos Introdução Sintaxe Básica Arquivo (script) externo Script no HEAD da página Script no BODY da página.
YOUR LOGO Tópicos Avançados em Internet Prof. Lincoln Ferreira Dantas Sistemas de Informação UNIESP – Presidente Epitácio.
Apresentação TI Alunos: Isadora Bernardo, Lucas Medeiros, Marcela Muniz e Renata Coutinho.
Design para Web 3 XHTML.
Rhizome. Roteiro Definição Metas Características Arquitetura Tecnologias envolvidas Referências.
Transcrição da apresentação:

Bancos de dados e Web ( XML, Ontologias) Prof.: Sandro Rigo

Sumário Motivação para uso de XML Características Gerais do XML Exemplo de uso Exercício: XML e BD Web semântica

Motivação para uso de XML

Na Web: - HTML : papel central na Web - Esquema de marcação para as páginas - Tempo curto de uso - Diversidade de modos de conexão: tv digital, handhels, telefones, carros, ... - Diversidade de mídias - Necessidade de custos menores

Dificuldades na Web : - número grande de tags HTML, - interpretação de tags pelo browser - uso de tags pelo criador das páginas - dificuldade de separar conteúdo e forma - pouca necessidade de clientes simples - muita necessidade de clientes complexos - melhorias nos formulários - combinações com: computação gráfica, animação, multimídia, e-commerce, matemática, meta-dados

Com Bases de Dados: - facilidades de exportação, validação e importação de dados - facilidades de modelagem e integração de modelos distintos

Exemplo de ontologia

Detalhes do mapeamento

uso em contextos determinados (navegador) HTML XML marcação de apresentações, orientada para visualização marcação de conteúdo, orientada para dados não exige validação, interpretação livre fortemente validada, interpretação rígida elementos pré-definidos elementos livremente definidos uso em contextos determinados (navegador) uso em diversos contextos de aplicações de SW uso de gramática acesso com DOM acesso com DOM/SAX

- independente de plataforma - dependente de conteúdo - recomendada pelo W3C em 1998 - HTML:aplicação da SGML (Standard Generalized Markup Language ), padrão internacional para descrição de documentos eletrônicos – ISO 8879. - XML criado como aplicação da SGML

- separação de conteúdo e estrutura do documento: o conjunto de dados pode ser exibido (corretamente): -em um monitor de TV, -em um display de fone celular, - traduzido para voz em um dispositivo para cegos, - exibido em um monitor de computador, - recebido em um computador de bordo de carro

- tags interpretados pela aplicação/aplicativo - tags case-sensitive - inclui “end tags”: </p> , </li> - inclui “/” para tag vazios: <br />, <hr /> - indica com aspas valores atribuídos: <img src=”teste.jpg" >

- a criação de tags não depende do W3C - é estruturado - família de tecnologias (Xlink, XSL, DOM, XML Namespaces, XML Schemas, RDF)

XML: sucesso? Motivos: documentos e dados independentes de aplicações sintaxe padrão para metadados estrutura padrão para documentos e dados tecnologia antiga (SGML, TEX, ...) custo de processamento: suportável, atualmente

ÐÏࡱá >  þÿ   *  ,  þÿÿÿ ) ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿì¥Á 5@ ð¿     bjbjÏ2Ï2  . ­X ­X  ÿÿ ÿÿ ÿÿ ˆ 2 2 2 2 2 2 2  F j j j j v F “ ¶ Ž Ž Ž Ž Ž Ž Ž Ž         $ I R › \ 8  2 Ž Ž Ž Ž Ž 8 2 2 Ž Ž M  à à à Ž  2 Ž 2 Ž  à Ž  à  à ö 2 2 ö Ž ‚ :øÄ j ž ö  c 0 “ ö ÷ ¨  ÷ ö F F 2 2 2 2 ÷ 2 ö  Ž Ž à Ž <body lang=PT-BR style='tab-interval:35.4pt'> <div class=Section1> <p class=MsoNormal>Teste com xml</p> </div>

Dados x Metadados Carlos Silva Nome Duque de Caxias 456 Endereço 90051-102 CEP Porto Alegre Cidade Estrutura x Dados \select@language {brazilian} \contentsline {chapter}{\numberline {1}Modelo Cap\IeC {\'\i }tulo SWL}{4} \contentsline {section}{\numberline {1.1.}Introdu\c c\~ao}{4} \contentsline {subsection}{\numberline {1.1.1.}Subse\c c\~ao}{4} \contentsline {subsection}{\numberline {1.1.2.}Programas e Algoritmos}{5} \contentsline {subsection}{\numberline {1.1.3.}Linha de Comando}{5} \contentsline {subsection}{\numberline {1.1.4.}Figura}{5} \contentsline {subsection}{\numberline {1.1.5.}Tabela}{6} \contentsline {section}{\numberline {1.2.}Bibliografia}{6}

expansão Namespaces nomes únicos para elementos e atributos prefixo + nome local <xsd:string> <dc:creator> declaração <xsd:schema xmlns:xsd=”http://www.w3.org/2001/XMLSchema”> expansão <html xmlns=”http://www.w3.org/1999/xhtml”> <head> <title>Teste</title> </head> <body> Corpo do teste </body> </html>

expansão Namespaces nomes únicos para elementos e atributos prefixo + nome local <xsd:string> <dc:creator> declaração <xsd:schema xmlns:xsd=”http://www.w3.org/2001/XMLSchema”> expansão <html xmlns=”http://www.w3.org/1999/xhtml”> <head> <title>Teste</title> </head> <body> Corpo do teste </body> </html> <{http://www.w3.org/1999/xhtml}html> <{http://www.w3.org/1999/xhtml}head> <{http://www.w3.org/1999/xhtml}title>Teste </{http://www.w3.org/1999/xhtml}title>

elementos <email> <assunto>Revisão Geral</assunto> <autor>Carlos Silva</autor> </email> Marcador de início <autor> Marcador de fim </autor> Marcador vazio <img /> Documento bem formado x válido Esquema (DTD/XMLSchema)

Estrutura de documentos XML: Lógica: - elementos e sub-elementos, tipos de dados, atributos, restrições de cardinalidade... Física: - descrição dos dados de acordo com a estrutura lógica definida Documentos: - bem formados: seguem regras de sintaxe - válidos: seguem regras de sintaxe e de estrutura

Definição de estrutura: DTD (Document Type Definition) x XML Schema DTD: mais simples, não tem descreve tipos de dados, não é extensível, sintaxe própria. Schema: linguagem extensível, descreve tipos de dados, descreve cardinalidade, suporta namespaces, sintaxe XML.

usado junto com uma gramática: DTD XML Schema

- usado junto com uma gramática: o DTD DTD - Document Type Definition - definições que descrevem o uso das marcações. - indica elementos, atributos e valores - indica relacionamento entre os elementos - pode definir também entidades

- exemplo de DTD para email: <!ELEMENT Mail (From, To, Cc?, Date?, Subject, Body)> <!ELEMENT From (#PCDATA) > <!ELEMENT To (#PCDATA) > <!ELEMENT Cc (#PCDATA) > <!ELEMENT Date (#PCDATA) > <!ELEMENT Subject (#PCDATA) > <!ELEMENT Body (#PCDATA | P | Br)* > <!ELEMENT P (#PCDATA | Br)* > <!ATTLIST P align (left | right | justify) "left" > <!ELEMENT Br EMPTY >

- apenas um: from, to, subject, body - opcional: cc, date (?) <!ELEMENT Mail (From, To, Cc?, Date?, Subject, Body)> <!ELEMENT From (#PCDATA) > <!ELEMENT To (#PCDATA) > <!ELEMENT Cc (#PCDATA) > <!ELEMENT Date (#PCDATA) > <!ELEMENT Subject (#PCDATA) > <!ELEMENT Body (#PCDATA | P | Br)* > <!ELEMENT P (#PCDATA | Br)* > <!ATTLIST P align (left | right | justify) "left" > <!ELEMENT Br EMPTY > - apenas um: from, to, subject, body - opcional: cc, date (?) - apenas texto: from, to, cc, data. Subject.

<!ELEMENT Mail (From, To, Cc?, Date?, Subject, Body)> <!ELEMENT From (#PCDATA) > <!ELEMENT To (#PCDATA) > <!ELEMENT Cc (#PCDATA) > <!ELEMENT Date (#PCDATA) > <!ELEMENT Subject (#PCDATA) > <!ELEMENT Body (#PCDATA | P | Br)* > <!ELEMENT P (#PCDATA | Br)* > <!ATTLIST P align (left | right | justify) "left" > <!ELEMENT Br EMPTY > - campo body: texto, P, Br - Campo P: texto e zero ou mais Br e um atributo: align (valores: left/right/justify, default:left)

Schema Simples: <xsd:element name=”autor” type=”xsd:string” /> Complexo: <xsd:element name=”livro”> <xsd:complexType> <xsd:attribute name=”titulo” type=”xsd:string” /> <xsd:attribute name=”paginas” type = “xsd:int” /> </xsd:complexType> </xsd:element>

Especificações básicas: XML 1.0: define a sintaxe da XML XPointer e Xlink: define mecanismos de representação de ligações entre documentos, permitindo ligação de recursos múltiplos e em formatos diferentes. XSL: define a linguagem utilizada para descrever estilos para documentos XML

- realiza o leitura do documento e valida o mesmo junto ao DTD. Browser XML: - realiza o leitura do documento e valida o mesmo junto ao DTD. - indicação da localização do DTD: <!DOCTYPE Mail system "http://infowest.com/DTDS/mail.dtd"> <Mail> .. .. </Mail>

- realiza o leitura do documento e valida o mesmo junto ao DTD. Browser XML: - realiza o leitura do documento e valida o mesmo junto ao DTD. - indicação da localização do DTD: <!DOCTYPE Mail system "http://infowest.com/DTDS/mail.dtd"> <Mail> .. .. </Mail> - Documento “well-formed” : dentro das regras básicas

- realiza o leitura do documento e valida o mesmo junto ao DTD. Browser XML: - realiza o leitura do documento e valida o mesmo junto ao DTD. - indicação da localização do DTD: <!DOCTYPE Mail system "http://infowest.com/DTDS/mail.dtd"> <Mail> .. .. </Mail> - Documento “well-formed” : dentro das regras básicas - Documento Válido: “well-formed” e dentro de uma especificação de um DTD.

Exemplo: “well-formed” <?xml version="1.0" standalone=“yes"?> <Mail> <From>Autor</From> <To>Alguém</To> <Date> Terça - 14 de agosto de 2000</Date> <Subject>Introdução ao XML </Subject> <body><p>Obrigado pela leitura<Br/> desta introdução</p> <br/> <p>Esperamos que seja proveitosa</p> </body> </Mail>

Exemplo: “well-formed” & Válido <?xml version="1.0" standalone="no"?> <!DOCTYPE mail system “http://infowest.com/DTDS/mail.dtd”> <Mail> <From>Autor</From> <To>Alguém</To> <Date> Terça - 14 de agosto de 2000</Date> <Subject>Introdução ao XML </Subject> <body>Comentários:<p align=“justify”>Obrigado pela leitura<Br/></p> <p>Esperamos que seja proveitosa</p> </body> </Mail>

Exemplo: “well-formed” & Válido <?xml version="1.0" standalone="no"?> <!DOCTYPE mail system “http://infowest.com/DTDS/mail.dtd”> <Mail> <From>Autor</From> <To>Alguém</To> <Date> Terça - 14 de agosto de 2000</Date> <Subject>Introdução ao XML </Subject> <body>Comentários:<p align=“justify”>Obrigado pela leitura<Br/></p> <p>Esperamos que seja proveitosa</p> </body> </Mail>

3. Exemplo de uso Lista de disciplinas

Lista de disciplinas - Versão HTML

Lista de disciplinas - Versão HTML <html><head><title>Untitled Document</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head> <body bgcolor="#FFFFFF"><div align="center"> <p>Lista de Disciplinas</p> <table width="85%" border="1"> <tr> <td width="25%"> <b><font color="#FF3333">Nome</font></b></td> <td width="25%"><b><font color="#FF3333">Professor</font></b> </td> <td width="25%"><b><font color="#FF3333">Assunto</font></b> </td> <td width="25%"><b><font color="#FF3333">Código</font></b> </td> </tr> <tr> <td width="25%"><b><font color="#0000FF"><i>Redes de Computadores e Protocolo TCP/IP</i></font></b></td> <td width="25%">Valter Nunes</td> <td width="25%">TCP/IP</td> <td width="25%">PR4101</td> </td></tr> ......</body></html>

Lista de disciplinas - DTD <?xml version="1.0" encoding="UTF-8"?> <!ELEMENT LISTA_DISC (DISC)> <!ELEMENT DISC (NOME_DISC, PROF_DISC, ASSUNTO_DISC, COD_DISC)> <!ELEMENT NOME_DISC (#PCDATA)> <!ELEMENT PROF_DISC (#PCDATA)> <!ELEMENT ASSUNTO_DISC (#PCDATA)> <!ELEMENT COD_DISC (#PCDATA)>

Lista de disciplinas - Dados <LISTA_DISC> <DISC> <NOME_DISC>Redes de Computadores e Protocolo TCP/IP</NOME_DISC> <PROF_DISC>Valter Nunes</PROF_DISC> <ASSUNTO_DISC>TCP/IP</ASSUNTO_DISC> <COD_DISC>PR4101</COD_DISC> </DISC> <NOME_DISC>Tecnologias de Transmissao</NOME_DISC> <PROF_DISC>Carlos Silva</PROF_DISC> <ASSUNTO_DISC>ATM</ASSUNTO_DISC> <COD_DISC>PR4102</COD_DISC> ........ </LISTA_DISC>

Lista de disciplinas - Doc.XML <?xml version='1.0'?> <!DOCTYPE teste SYSTEM "listadisc.dtd"> <?xml:stylesheet type="text/xsl" href="lista-disciplinas.xsl"?> <LISTA_DISC> <DISC> <NOME_DISC>Redes de Computadores e Protocolo TCP/IP</NOME_DISC> <PROF_DISC>Valter Nunes</PROF_DISC> <ASSUNTO_DISC>TCP/IP</ASSUNTO_DISC> <COD_DISC>PR4101</COD_DISC> </DISC>

Lista de disciplinas - Estilo.XSL <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl" xmlns="http://www.w3.org /TR/REC-html40" result-ns="" default-space="strip" indent-result="yes"> <xsl:template match="/"> <HTML><HEAD><TITLE>Titulo </TITLE></HEAD> <BODY><CENTER><H3>LISTA DE DISCIPLINAS</H3> <TABLE BORDER="1"> <TR> <TD align="center"><FONT ...>Nome</FONT></TD> <TD align="center"><FONT ...>Professor</FONT></TD> <TD align="center"><FONT ...>Assunto</FONT></TD> <TD align="center"><FONT ...>Codigo</FONT></TD> </TR> <xsl:for-each select="/LISTA_DISC/DISC"> <TR><TD align="left"><I><B><FONT COLOR="#006400"> <xsl:apply-templates select="NOME_DISC"/></FONT></B></I></TD>

Lista de disciplinas - Estilo.XSL <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl" xmlns="http://www.w3.org /TR/REC-html40" result-ns="" default-space="strip" indent-result="yes"> <xsl:template match="/"> <HTML><HEAD><TITLE>Titulo </TITLE></HEAD> <BODY><CENTER><H3>LISTA DE DISCIPLINAS</H3> <TABLE BORDER="1"> <TR> <TD align="center"><FONT ...>Nome</FONT></TD> <TD align="center"><FONT ...>Professor</FONT></TD> <TD align="center"><FONT ...>Assunto</FONT></TD> <TD align="center"><FONT ...>Codigo</FONT></TD> </TR> <xsl:for-each select="/LISTA_DISC/DISC"> <TR><TD align="left"><I><B><FONT COLOR="#006400"> <xsl:apply-templates select="NOME_DISC"/></FONT></B></I></TD>

Lista de disciplinas - Aplicação <HEAD> <SCRIPT FOR="window" EVENT="onload"> var xmlDso = xmldso.XMLDocument; xmlDso.load("listadisc-dados.xml"); </SCRIPT> </HEAD> <BODY> <OBJECT WIDTH="0" HEIGHT="0" CLASSID="clsid:550" ID="xmldso"> </OBJECT> <SPAN STYLE="font-weight:bold">Nome: </SPAN> <SPAN ID="Nome_disciplina" DATASRC=#xmldso DATAFLD="NOME_DISC" STYLE="color:blue"> </SPAN> ..... <INPUT TYPE=button VALUE="Disciplina Anterior" ONCLICK="xmldso.recordset.moveprevious()"> <INPUT TYPE=button VALUE="Proxima Disciplina" ONCLICK="xmldso.recordset.movenext()"

Codificação: Diversos formatos existentes: Latin-1 / ISSO-8859-1 (ASCII+alfabetos latinos) ISO-8859-2 (línguas da Europa central) ISO-8859-3 (esperanto, turco, maltês) ISO-8859-5 (alfabeto cirílico-russo, línguas eslavas) Para faciltar intercâmbio: uso do unicode (http://www.unicode.org) formatos mais usados: UTF-8, UTF-16

NAMESPACES: Definição de contextos para cada elemento descrito O mesmo marcador pode ter diversas concepções Exemplo: <title> Em HTML: título da janela <title> Em um livro: título do livro <title> Em uma aplicação: nome do assunto ! No W3C: http://www.w3.org/TR/REC-xml-names/ Uso: <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl" > ................ <xsl:template ........

Atributos reservados: xml: lang – indica a linguagem utilizada exemplo: <quote xml:lang=“en”>......</quote> <quote xml:lang=“pt”>......</quote> xml:space – indicação de espaço a ser preservado na apresentação dos dados do documento

Criação de documento XSL - O documento XSL permite aplicar formatação de estilo aos dados em documentos XML - Possibilita a transformação de uma mesma fonte para diversos formatos finais - Roteiro: 1. analisador XML monta a estrutura dos dados 2. processador XSLT aplica as instruções do documento XSL nesta estrutura de dados. 3. o resultado é enviado para um leitor

Documento XML com dados e indicação do doc. XSL Exemplo: Documento XML com dados e indicação do doc. XSL <?xml version='1.0'?> <!DOCTYPE teste SYSTEM "listadisc2.dtd"> <?xml:stylesheet type="text/xsl" href="lista-disciplinas2.xsl"?> <LISTA_DISC> <DISC> <NOME_DISC>Redes de Computadores e Protocolo TCP/IP</NOME_DISC> <PROF_DISC>Valter Nunes</PROF_DISC> <ASSUNTO_DISC>TCP/IP</ASSUNTO_DISC> <COD_DISC>PR4101</COD_DISC> </DISC>

Documento XML com dados e indicação do doc. XSL Exemplo: Documento XML com dados e indicação do doc. XSL <?xml version='1.0'?> <!DOCTYPE teste SYSTEM "listadisc2.dtd"> <?xml:stylesheet type="text/xsl" href="lista-disciplinas2.xsl"?> <LISTA_DISC> <DISC> <NOME_DISC>Redes de Computadores e Protocolo TCP/IP</NOME_DISC> <PROF_DISC>Valter Nunes</PROF_DISC> <ASSUNTO_DISC>TCP/IP</ASSUNTO_DISC> <COD_DISC>PR4101</COD_DISC> </DISC>

Documento XML com dados e indicação do doc. XSL Exemplo: Documento XML com dados e indicação do doc. XSL <?xml version='1.0'?> <!DOCTYPE teste SYSTEM "listadisc2.dtd"> <?xml:stylesheet type="text/xsl" href="lista-disciplinas2.xsl"?> <LISTA_DISC> <DISC> <NOME_DISC>Redes de Computadores e Protocolo TCP/IP</NOME_DISC> <PROF_DISC>Valter Nunes</PROF_DISC> <ASSUNTO_DISC>TCP/IP</ASSUNTO_DISC> <COD_DISC>PR4101</COD_DISC> </DISC>

Exemplo: b) Documento XSL <?xml:stylesheet type="text/xsl" href="lista-disciplinas2.xsl"?> ?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl=http://www.w3.org/TR/WD-xsl ...> <xsl:template match="/"> <HTML><HEAD><TITLE>Titulo </TITLE></HEAD> <BODY><CENTER><H3>LISTA DE DISCIPLINAS</H3> <TABLE BORDER="1"> <TR><TD>Nome</TD><TD>Professor</TD></TR> <xsl:for-each select="/LISTA_DISC/DISC"> <TR><TD><I><B><FONT COLOR="#006400"> <xsl:apply-templates select="NOME_DISC"/> </FONT></B></I> </TD> < TD align="center"> <xsl:apply-templates select="PROF_DISC"/> </TR> </xsl:for-each> </TABLE></CENTER></BODY></HTML> </xsl:template> </xsl:stylesheet>

Exemplo: b) Documento XSL <?xml:stylesheet type="text/xsl" href="lista-disciplinas2.xsl"?> ?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl=http://www.w3.org/TR/WD-xsl ...> <xsl:template match="/"> <HTML><HEAD><TITLE>Titulo </TITLE></HEAD> <BODY><CENTER><H3>LISTA DE DISCIPLINAS</H3> <TABLE BORDER="1"> <TR><TD>Nome</TD><TD>Professor</TD></TR> <xsl:for-each select="/LISTA_DISC/DISC"> <TR><TD><I><B><FONT COLOR="#006400"> <xsl:apply-templates select="NOME_DISC"/> </FONT></B></I> </TD> < TD align="center"> <xsl:apply-templates select="PROF_DISC"/> </TR> </xsl:for-each> </TABLE></CENTER></BODY></HTML> </xsl:template> </xsl:stylesheet>

Exemplo: b) Documento XSL <?xml:stylesheet type="text/xsl" href="lista-disciplinas2.xsl"?> ?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl=http://www.w3.org/TR/WD-xsl ...> <xsl:template match="/"> <HTML><HEAD><TITLE>Titulo </TITLE></HEAD> <BODY><CENTER><H3>LISTA DE DISCIPLINAS</H3> <TABLE BORDER="1"> <TR><TD>Nome</TD><TD>Professor</TD></TR> <xsl:for-each select="/LISTA_DISC/DISC"> <TR><TD><I><B><FONT COLOR="#006400"> <xsl:apply-templates select="NOME_DISC"/> </FONT></B></I> </TD> < TD align="center"> <xsl:apply-templates select="PROF_DISC"/> </TR> </xsl:for-each> </TABLE></CENTER></BODY></HTML> </xsl:template> </xsl:stylesheet>

Exemplo: b) Documento XSL <?xml:stylesheet type="text/xsl" href="lista-disciplinas2.xsl"?> ?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl=http://www.w3.org/TR/WD-xsl ...> <xsl:template match="/"> <HTML><HEAD><TITLE>Titulo </TITLE></HEAD> <BODY><CENTER><H3>LISTA DE DISCIPLINAS</H3> <TABLE BORDER="1"> <TR><TD>Nome</TD><TD>Professor</TD></TR> <xsl:for-each select="/LISTA_DISC/DISC"> <TR><TD><I><B><FONT COLOR="#006400"> <xsl:apply-templates select="NOME_DISC"/> </FONT></B></I> </TD> < TD align="center"> <xsl:apply-templates select="PROF_DISC"/> </TR> </xsl:for-each> </TABLE></CENTER></BODY></HTML> </xsl:template> </xsl:stylesheet>

Exemplo: b) Documento XSL <?xml:stylesheet type="text/xsl" href="lista-disciplinas2.xsl"?> ?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl=http://www.w3.org/TR/WD-xsl ...> <xsl:template match="/"> <HTML><HEAD><TITLE>Titulo </TITLE></HEAD> <BODY><CENTER><H3>LISTA DE DISCIPLINAS</H3> <TABLE BORDER="1"> <TR><TD>Nome</TD><TD>Professor</TD></TR> <xsl:for-each select="/LISTA_DISC/DISC"> <TR><TD><I><B><FONT COLOR="#006400"> <xsl:apply-templates select="NOME_DISC"/> </FONT></B></I> </TD> < TD align="center"> <xsl:apply-templates select="PROF_DISC"/> </TR> </xsl:for-each> </TABLE></CENTER></BODY></HTML> </xsl:template> </xsl:stylesheet>

Exemplo: b) Documento XSL <?xml:stylesheet type="text/xsl" href="lista-disciplinas2.xsl"?> ?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl=http://www.w3.org/TR/WD-xsl ...> <xsl:template match="/"> <HTML><HEAD><TITLE>Titulo </TITLE></HEAD> <BODY><CENTER><H3>LISTA DE DISCIPLINAS</H3> <TABLE BORDER="1"> <TR><TD>Nome</TD><TD>Professor</TD></TR> <xsl:for-each select="/LISTA_DISC/DISC"> <TR><TD><I><B><FONT COLOR="#006400"> <xsl:apply-templates select="NOME_DISC"/> </FONT></B></I> </TD> < TD align="center"> <xsl:apply-templates select="PROF_DISC"/> </TR> </xsl:for-each> </TABLE></CENTER></BODY></HTML> </xsl:template> </xsl:stylesheet>

Exemplo: b) Documento XSL <?xml:stylesheet type="text/xsl" href="lista-disciplinas2.xsl"?> ?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl=http://www.w3.org/TR/WD-xsl ...> <xsl:template match="/"> <HTML><HEAD><TITLE>Titulo </TITLE></HEAD> <BODY><CENTER><H3>LISTA DE DISCIPLINAS</H3> <TABLE BORDER="1"> <TR><TD>Nome</TD><TD>Professor</TD></TR> <xsl:for-each select="/LISTA_DISC/DISC"> <TR><TD><I><B><FONT COLOR="#006400"> <xsl:apply-templates select="NOME_DISC"/> </FONT></B></I> </TD> < TD align="center"> <xsl:apply-templates select="PROF_DISC"/> </TR> </xsl:for-each> </TABLE></CENTER></BODY></HTML> </xsl:template> </xsl:stylesheet>

Exemplo: b) Documento XSL <?xml:stylesheet type="text/xsl" href="lista-disciplinas2.xsl"?> ?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl=http://www.w3.org/TR/WD-xsl ...> <xsl:template match="/"> <HTML><HEAD><TITLE>Titulo </TITLE></HEAD> <BODY><CENTER><H3>LISTA DE DISCIPLINAS</H3> <TABLE BORDER="1"> <TR><TD>Nome</TD><TD>Professor</TD></TR> <xsl:for-each select="/LISTA_DISC/DISC"> <TR><TD><I><B><FONT COLOR="#006400"> <xsl:apply-templates select="NOME_DISC"/> </FONT></B></I> </TD> < TD align="center"> <xsl:apply-templates select="PROF_DISC"/> </TR> </xsl:for-each> </TABLE></CENTER></BODY></HTML> </xsl:template> </xsl:stylesheet>

Exemplo: b) Documento XSL <?xml:stylesheet type="text/xsl" href="lista-disciplinas2.xsl"?> ?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl=http://www.w3.org/TR/WD-xsl ...> <xsl:template match="/"> <HTML><HEAD><TITLE>Titulo </TITLE></HEAD> <BODY><CENTER><H3>LISTA DE DISCIPLINAS</H3> <TABLE BORDER="1"> <TR><TD>Nome</TD><TD>Professor</TD></TR> <xsl:for-each select="/LISTA_DISC/DISC"> <TR><TD><I><B><FONT COLOR="#006400"> <xsl:apply-templates select="NOME_DISC"/> </FONT></B></I> </TD> < TD align="center"> <xsl:apply-templates select="PROF_DISC"/> </TR> </xsl:for-each> </TABLE></CENTER></BODY></HTML> </xsl:template> </xsl:stylesheet>

Exemplo: b) Documento XSL <xsl:template match="/"> <HTML><HEAD><TITLE>Titulo </TITLE></HEAD> <BODY><CENTER><H3>LISTA DE DISCIPLINAS</H3> <TABLE BORDER="1"> <TR><TD>Nome</TD><TD>Professor</TD></TR>

Exemplo: b) Documento XSL <xsl:template match="/"> <HTML><HEAD><TITLE>Titulo </TITLE></HEAD> <BODY><CENTER><H3>LISTA DE DISCIPLINAS</H3> <TABLE BORDER="1"> <TR><TD>Nome</TD><TD>Professor</TD></TR> <xsl:for-each select="/LISTA_DISC/DISC"> <TR><TD><I><B><FONT COLOR="#006400">

Exemplo: b) Documento XSL <xsl:template match="/"> <HTML><HEAD><TITLE>Titulo </TITLE></HEAD> <BODY><CENTER><H3>LISTA DE DISCIPLINAS</H3> <TABLE BORDER="1"> <TR><TD>Nome</TD><TD>Professor</TD></TR> Redes de Computadores e Protocolo TCP/IP <xsl:for-each select="/LISTA_DISC/DISC"> <TR><TD><I><B><FONT COLOR="#006400"> <xsl:apply-templates select="NOME_DISC"/> <NOME_DISC>Redes de Computadores e Protocolo TCP/IP</NOME_DISC>

Exemplo: b) Documento XSL <xsl:template match="/"> <HTML><HEAD><TITLE>Titulo </TITLE></HEAD> <BODY><CENTER><H3>LISTA DE DISCIPLINAS</H3> <TABLE BORDER="1"> <TR><TD>Nome</TD><TD>Professor</TD></TR> Redes de Computadores e Protocolo TCP/IP <xsl:for-each select="/LISTA_DISC/DISC"> <TR><TD><I><B><FONT COLOR="#006400"> <xsl:apply-templates select="NOME_DISC"/> <NOME_DISC>Redes de Computadores e Protocolo TCP/IP</NOME_DISC> </FONT></B></I></TD>< TD align="center">

Exemplo: b) Documento XSL <HTL><HEAD><TITLE>Titulo </TITLE></HEAD> <BODY><CENTER><H3>LISTA DE DISCIPLINAS</H3> <TABLE BORDER="1"> <TR><TD>Nome</TD><TD>Professor</TD></TR> <TR><TD><I><B><FONT COLOR="#006400"> Redes de Computadores e Protocolo TCP/IP </FONT></B></I></TD>< TD align="center"> Valter Nunes </TD></TR> ....... </TABLE></CENTER> </BODY> </HTML>

Publicação de dados com XML/XSL Roteiro: - criação dos documentos - uso de parser (nos navegadores) - visualização dos resultados (em navegadores)

elementos <email> <assunto>Revisão Geral</assunto> <autor>Carlos Silva</autor> </email> Marcador de início <autor> Marcador de fim </autor> Marcador vazio <img /> Documento bem formado x válido Esquema (DTD/XMLSchema)

DOM / SAX DOM Estrutura de nodos documento, elemento, atributo, texto, comentário Manipulação em memória SAX Estrutura de eventos início, texto, fim manipulação em trechos

http://www.w3.org/DOM DOM: (segundo o W3C) “O modelo de objetos para documentos (DOM) é uma API padrão para a estrutura de documentos e tem por objetivo facilitar o acesso de programadores aos seus conteúdos, para tarefas como apagar, acrescentar ou editar conteúdos, atributos ou estilos.” “...Interface neutra com relação à plataformas e linguagens...” http://www.w3.org/DOM

Exemplos - DOM: Tipo de nodo Exemplo Tipo de documento <!DOCTYPE mail SYSTEM “mail.dtd"> Instrução de processamento <?xml version="1.0"?> Elemento <from >rigo@exatas</from> Atributo ordem=“left" Conteúdo/Texto rigo@exatas

http://www.saxproject.org SAX: (segundo o SaxProject) “SAX (Simple Api for Xml) teve seu início em 1997 e implementa uma interface padrão para análise de documentos XML. Diferencia-se do DOM por ser baseada em eventos e não baseada em árvores.” “Apresenta melhor desempenho em determinadas situações pois não existe a necessidade de percorrer todo o documento e montar uma estrutura em árvore para somente depois iniciar a sua manipulação.” http://www.saxproject.org

Exemplo: Documento: Resultado da análise: <?xml version=“1.0”> <mail> <to>destino@host.br</to> </mail> Resultado da análise: start document start element: mail start element: to characters: destino@host.br end element: to end element: mail

Ferramentas: PARSERS - SAX SAXPROJECT.ORG: The GNU Compiler for Java (GCJ) has for some time derived C++ bindings ("CNI" versus "JNI") directly from the Java interfaces. These allow C++ programs to use SAX2 Java parsers compiled to native code just like C++ classes, with only the overhead of a C++ virtual method invocation, not the significantly larger overhead of JNI. Microsoft's MSXML 3.0 parser defines a COM binding, accessible from C, C++, Visual Basic, and more. Pascal, with a Delphi focus. Version 1.1 is done, supports SAX2r2. Perl (also check CPAN). Python 2.0 and later bundles several SAX packages (xml.sax and so on) as part of its markup processing support. SAX in C++, provides another C++ binding, using standard features of C++ such as namespaces, std::string, and templates. Xerces-C, part of the Apache XML project, defines its own C and C++ bindings. This C++ binding makes minimal use of C++ features. Curl Corporation defines its own web content language, and includes SAX2 support in its runtime environment. ElCel Corporation provides a C++ XML toolkit with a SAX 2.0 binding.

Ferramentas: PARSERS - DOM W3C + GOOGLE: XP - www.jclark.com/xml/xp/ Microsoft - Microsoft's MSXML 3.0 Alphaworks - www.alphaworks.ibm.com/tech/xml4j Expat - expat.sourceforge.net/ Apache – Xerces - xml.apache.org/xerces-j/

DOM / SAX - Uso - Parser XML com Javascript: carga de arquivo <script type="text/javascript"> var xmlDoc = new ActiveXObject("Microsoft.XMLDOM") xmlDoc.async="false" xmlDoc.load(“mail.xml") // ....... processamento </script>

DOM / SAX - Uso Parser XML com Javascript: escrita de arquivo <script type="text/javascript"> var text="<nota>“ text=text+"<para>Carlos</para><de>Silvia</de>" text=text+"<titulo>Lembrete!</titulo>" text=text+"<texto>Não se esqueça ...</texto>" text=text+"</nota>" var xmlDoc = new ActiveXObject("Microsoft.XMLDOM") xmlDoc.async="false" xmlDoc.loadXML(text) // ....... processamento </script>

DOM / SAX - Uso DOM/nodos: propriedades, métodos nodeTypeString nodeName nodeValue Constante 1 element tagName Nulo ELEMENT_NODE 2 attribute name valor ATTRIBUTE_NODE 3 text #text Conteúdo do nodo TEXT_NODE 4 cdatasection #cdata-section CDATA_SECTION_NODE 5 entityreference entity reference name ENTITY_REFERENCE_NODE 6 entity entity name ENTITY_NODE 7 processinginstruction target PROCESSING_INSTRUCTION_NODE 8 comment #comment Texto do comentário COMMENT_NODE 9 document #document DOCUMENT_NODE 10 documenttype doctype name DOCUMENT_TYPE_NODE 11 documentfragment #document fragment DOCUMENT_FRAGMENT_NODE 12 notation notation name NOTATION_NODE

DOM / SAX - Uso DOM/nodos: propriedades, métodos Propriedade Descrição Attributes Retorna um mapa de nodos (NamedNodeMap)com todos os atributos deste nodo ChildNodes Retorna uma lista de nodos (NodeList) com todos os nodos filho FirstChild Retorna o primeiro filho deste nodo LastChild Retorna o último filho deste nodo NextSibling Retorna o próximo nodo irmão (filho do mesmo pai) NodeName Retorna o nome do nodo NodeType Retorna o tipo do nodo NodeValue Retorna o valor do nodo ownerDocument Retorna o nodo raiz do documento parentNode Retorna o nodo pai do nodo atual previousSibling Retorna o nodo irmão (filho do mesmo pai) anterior ao nodo atual

DOM / SAX - Uso DOM/nodos: propriedades, métodos Métodos Descrição appendChild(novo) Insere nodo filho cloneNode(boolean) Retorna um clone do nodo atual. Se o valor nooleano for verdadeiro clona os filhos também hasChildNodes() Retorna verdadeiro se o nodo tem filhos insertBefore(novo,referência) Insere um novo nodo antes do nodo referência removeChild(nome) Remove o nodo especificado pelo nome replaceChild(novo, antigo) Substitui

Recursos para ligação XML: especificação XLink Elementos: link (simplelink, extendedlink) “participantes” do link documento XML ou não (texto, vídeo, .....) parte de documento (identificada c/ XPointer) locais ou remotos (locator = URI) metadados sobre os participantes

Recursos para ligação Exemplo: ....... <prod num="23">XMLDecl :...>'</prod> <prod num="22">prolog ::= XMLDecl? Misc* (doctypedecl Misc*)?</prod> <para>Referências para o documento: veja <simplelink xlink:type="simple" xlink:href="#xpointer(//prod[@num='22'])" xlink:show="replace" xlink:actuate="onRequest">regra 22 </simplelink>. </para> LINK LOCATION: file:///E:/sandro/...../AULA05/xlink01.xml#xpointer(//prod[@num='22'])

Recursos para ligação Exemplo: ....... <prod num="23">XMLDecl :...>'</prod> <prod num="22">prolog ::= XMLDecl? Misc* (doctypedecl Misc*)?</prod> <para>Referências para o documento: veja <simplelink xlink:type="simple" xlink:href="#xpointer(//prod[@num='22'])" xlink:show="replace" xlink:actuate="onRequest">regra 22 </simplelink>. </para> LINK LOCATION: file:///E:/sandro/...../AULA05/xlink01.xml#xpointer(//prod[@num='22'])

Recursos para ligação XML: especificação XLink Elementos: link (simplelink, extendedlink) “participantes” do link documento XML ou não (texto, vídeo, .....) parte de documento (identificada c/ XPointer) locais ou remotos (locator = URI) metadados sobre os participantes “arcos” – início e fim de uma ligação

Recursos para ligação Exemplo: ....... <extendedlink xlink:type="extended"> <loc xlink:type="locator" xlink:label="prolog-ref" xlink:href="#xpointer(string-range(//text(),'prolog'))" /> xlink:label="prolog" xlink:href="#/1/2/5" <arc xlink:type="arc" xlink:from="prolog-ref" xlink:to="prolog" xlink:show="new" xlink:actuate="onRequest" </extendedlink>

Recursos para ligação Exemplo: ....... <extendedlink xlink:type="extended"> <loc xlink:type="locator" xlink:label="prolog-ref" xlink:href="#xpointer(string-range(//text(),'prolog'))" /> xlink:label="prolog" xlink:href="#/1/2/5" <arc xlink:type="arc" xlink:from="prolog-ref" xlink:to="prolog" xlink:show="new" xlink:actuate="onRequest" </extendedlink>

Recursos para ligação Exemplo: ....... A <extendedlink xlink:type="extended"> <loc xlink:type="locator" xlink:label="prolog-ref" xlink:href="#xpointer(string-range(//text(),'prolog'))" /> xlink:label="prolog" xlink:href="#/1/2/5" <arc xlink:type="arc" <arc xlink:type="arc" xlink:from="prolog-ref" xlink:from="prolog" xlink:to="prolog" xlink:to="prolog-ref" xlink:show="new" xlink:show="new" xlink:actuate="onRequest" xlink:actuate="onRequest" xlink:title=“Ref. -> Prolog” Xlink:title=“Prolog -> Ref.” /> /> </extendedlink> A B

XML: especificação Xlink criação de elemento xlink simples <xlink:simple href=“autor.xml” role=“lista de autores” title=“Lista de Autores” show=“replace” actuate=“onRequest”> Lista de autores </xlink:simple>

XML: especificação Xlink - role: string definindo o conteúdo do link; pode ser usada na renderização.

XML: especificação Xlink - role: string definindo o conteúdo do link; pode ser usada na renderização. title: string contendo a descrição do link (alt)

XML: especificação Xlink - role: string definindo o conteúdo do link; pode ser usada na renderização. title: string contendo a descrição do link (alt) show: forma de renderização new: conteúdo exibido em novo contexto replace: substituição de contexto embedded: conteúdo misturado com o contexto atual

XML: especificação Xlink - role: string definindo o conteúdo do link; pode ser usada na renderização. title: string contendo a descrição do link (alt) show: forma de renderização new: conteúdo exibido em novo contexto replace: substituição de contexto embedded: conteúdo misturado com o contexto atual actuate: forma de atuação do link onRequest : quando o usuário solicitar onLoad: quando o documento é carregado

XML: especificação Xlink XML: especificação Xlink : Links Extendidos permitem mais de um recurso ser indicado devem ser descritos em documento separado Atributos: - type : extended - role, title: idem link simples - locator: indica os recursos a serem linkados - arc: indica conexões entre recursos - from: origem do link extendido - to: destino do link extendido - resource: definem sub-elementos do link

Recursos para ligação XML: especificação Xlink: Links Extendidos <xlink:extended role=“xlink:external-linkset” <xlink:locator href=“...” role=“linkdatabase” title=“Catalogo de links”/> </xlink:extended>

XML: especificação Xlink XML: especificação Xlink: Links Extendidos <xlink:extended role=“xlink:external-linkset” <xlink:locator href=“...” role=“linkdatabase” title=“Catalogo de links”/> </xlink:extended> Recurso 1 <local> Recurso 2 <local> biblioteca de links Recurso 3 <local> Recurso 4 <local>

XML: especificação Xlink XML: especificação Xlink: Links Extendidos <xlink:extended role=“xlink:external-linkset” <xlink:locator href=“...” role=“linkdatabase” title=“Catalogo de links”/> </xlink:extended> Recurso 1 <local> Recurso 2 <local> biblioteca de links Recurso 3 <local> Recurso 4 <local>

XML: especificação XPointer Identificação de fragmentos de documentos XML Sintaxe simples: documento#identificador documento#esquema

XML: especificação XPointer Identificação de fragmentos de documentos XML Sintaxe simples: documento#identificador documento#esquema Exemplo: XML: XPointer: <lista> documento#d1 <disc id=“d1” /> documento#element(/1/1) <disc id=“d2” /> </lista>

XML: especificação XPointer Exemplos: Documento XML: <lista> <disc id=“d1” >.....</disc> <disc id=“d2” ><nome>redes...</nome><horario>...</horario></disc> <disc id=“d3” ><nome>...</nome><horario>...</horario><sala>....</sala></disc> </lista> Descrições: a) <link xmlns:xlink="http://www.w3.org/2000/xlink" xlink:type="simple“ xlink:href="documento.xml#xpointer(//LISTA/DISC[1])"> </link> b) #xpointer(/1/3/3) -> sala da disciplina “d3” c) #xpointer(id(“d3”/[3]) -> sala da disciplina “d3” d) #xpointer(start-point(//lista)) -> início da lista e) #xpointer(start-point(string-range(/*,’redes’,1,0)) -> início do nome de “d2”

Aplicações Uso de DOM/SAX como bibliotecas Disponibilidade em diversas linguagens Uso em diversos contextos Maior flexibilidade

http://www.w3.org/xpath XPATH biblioteca de funções padrão para acesso aos elementos de documento XML Objetivo: suportar XLink/XPointer/XSLT Sintaxe simplificada para identificação de elementos Possibilidades de indicações relativas W3C Recommendation 16 November 1999 http://www.w3.org/xpath

XPATH Uso no XSL: <xsl:template match="/"> ............ <xsl:for-each select="/LISTA_DISC/DISC">

XPATH - Sintaxe Localização de nodos: / - caminho absoluto (/disc -> indica elem. pelo nome) // - critério (//cod_disc -> qualquer caminho até o elemento cod_disc) /* - “curinga” ( /disc/*/nome_prof) [ ] – posição ( /disc[2] – terceira disciplina na lista) [last()] – última posição (/disc[last()] ) [nome] – existência de elemento (/disc[horas_aula]) [nome=valor] – existência de elemento com valor (/disc[horas_aula=50])

<xsl:if test="TURNO_DISC > 1"> .... XPATH - exemplo Com XSLT (aula 3) <xsl:if test="TURNO_DISC > 1"> .... <DISC>  <NOME_DISC>Redes de ...TCP/IP</NOME_DISC> <PROF_DISC>ValterNunes</PROF_DISC>   <ASSUNTO_DISC>TCP/IP</ASSUNTO_DISC>   <COD_DISC>PR4101</COD_DISC>   <TURNO_DISC>2</TURNO_DISC>   </DISC>

XPATH - exemplo Com Xpath: xmlDoc.load("http://www..../aula04/lista.xml") path="/LISTA_DISC/DISC[TURNO_DISC>1]" set nodos=xmlDoc.selectNodes(path) document.write("Lista ...com turno > 1:") for each x in nodos document.write("<xmp>") document.write(x.xml) document.write("</xmp>") next

EXERCÍCIO Descreva um arquivo xml para uso em uma agenda de telefones Elementos mínimos: nome, email, fone, endereço, data de nascimento Permitir: dois tipos de fone e email (residencial e comercial) Após: Implemente uma tabela para comportar estes dados.

Roteiro: Cronograma, trabalhos, material Recursos Tecnológicos Interação por voz Indexação – web semântica

Indexação - Web Semântica Sintaxe: forma de expressão Semântica: conteúdo (significado) Web semântica organização explícita da informação compartilhamento de terminologia informação disponível para programas

Indexação - Web Semântica Tarefa: procurar pela homepage do Sr. e a Sra. Chaves, que são professores universitários Procurando em ferramentas de busca por Chaves, você encontrará várias páginas sobre chaveiros, e procurando por universidade também retornará várias páginas de universidades. Pesquisar os dois termos juntos modifica pouco o resultado.

Indexação - Web Semântica Seria interessante poder consultar da seguinte forma: Encontre páginas para todo x, y, and z tal que x é uma pessoa, y é uma pessoa, z é uma universidade nome( x,"Chaves") e nome( y,"Chaves") e trabalha_em( z, x) e trabalha_em( z, y) e casado_com( x, y)

Indexação - Web Semântica Tecnologias XML (eXtensible Markup language) RDF (Resource Description Framework) Ontologia (RDFS, DAMIL+OIL, SHOE, OWL) Lógicas (Description Logics) Inferência (Prova)

Indexação - Web Semântica

Indexação - Web Semântica Sintaxe bem definida: conjunto de caracteres interoperabilidade entre plataformas distintas descrição correta da estrutura da informação identificação correta da informação

Indexação - Web Semântica Sintaxe bem definida: exemplos: xml descrevendo disciplina professor ministrante anotação em texto

{ Web Semântica Sintaxe bem definida: exemplo: xml p/ disciplina, página de professor anotação em texto {

Indexação - Web Semântica Sintaxe bem definida: exemplos: xml descrevendo disciplina professor ministrante anotação em texto

Indexação - Web Semântica Sintaxe bem definida: exemplo contrário : dados similares em HTML

<html><head><title>Untitled Document</title> </head> <body bgcolor="#FFFFFF"> <p>Lista de Disciplinas</p> <table width="85%" border="1"> <tr> <td > <b><font color="#FF3333">Nome</font></b></td> <td ><b><font color="#FF3333">Professor</font></b> </td> <td ><b><font color="#FF3333">Assunto</font></b> </td> <td ><b><font color="#FF3333">Código</font></b> </td> </tr> <td ><b><font color="#0000FF"><i>Redes de Computadores </i></font></b></td> <td >Valter Nunes</td> <td >TCP/IP</td> <td >PR4101</td> </tr>..... </table></body></html>

<html><head><title>Untitled Document</title> </head> <body bgcolor="#FFFFFF"> <p>Lista de Disciplinas</p> <table width="85%" border="1"> <tr> <td > <b><font color="#FF3333">Nome</font></b></td> <td ><b><font color="#FF3333">Professor</font></b> </td> <td ><b><font color="#FF3333">Assunto</font></b> </td> <td ><b><font color="#FF3333">Código</font></b> </td> </tr> <td ><b><font color="#0000FF"><i>Redes de Computadores </i></font></b></td> <td >Valter Nunes</td> <td >TCP/IP</td> <td >PR4101</td> </tr>..... </table></body></html>

<html><head><title>Untitled Document</title> </head> <body bgcolor="#FFFFFF"> <p>Lista de Disciplinas</p> <table width="85%" border="1"> <tr> <td > <b><font color="#FF3333">Nome</font></b></td> <td ><b><font color="#FF3333">Professor</font></b> </td> <td ><b><font color="#FF3333">Assunto</font></b> </td> <td ><b><font color="#FF3333">Código</font></b> </td> </tr> <td ><b><font color="#0000FF"><i>Redes de Computadores </i></font></b></td> <td >Valter Nunes</td> <td >TCP/IP</td> <td >PR4101</td> </tr>..... </table></body></html>

Indexação - Web Semântica Semântica bem definida: compartilhamento de terminologia descrição de relações descrição de atributos

Indexação - Web Semântica Semântica bem definida: linguagens para descrever ontologias: RDFS DAML+OIL OWL

Indexação - Web Semântica Semântica bem definida: linguagens para descrever (na web) ontologias: RDFS DAML+OIL OWL

Indexação - Web Semântica Uso dos recursos descritos: recuperação de informações validação de informações obtidas aplicações de software

Ontologias Em Filosofia: Em IA: estudo do que existe no mundo Em IA: especificação das classes, objetos e relações de um domínio “Especificação explícita de uma conceitualização” [GUA97]

Ontologias Conjuntos de asserções: relações entre conceitos regras de raciocínio Possibilitam a interpretação do significado das informações

Ontologias Domínio ontologias gerais ontologias específicas exemplos: universidade, impressora, geográfica,...

Ontologia na web semântica Integração de informações compartilhamento de termos(conceitos) definição de atributos descrição de relações construção de conhecimento manutenção de ontologias inferência recuperação de informações e relações

OWL (Ontology Web Language) W3C: candidate recommendation (8/2003) Extende RDFS Experiências: DAML, OIL, RDFS Vocabulário, em XML, para descrição de classes e relações Suporte para inferência APIs para manipulação (Jena) Suporte em editores (Protege)

OWL (Ontology Web Language) DAML DAML+OIL OWL: http://w3.org/WebOnt OIL OWL RDF DAML = DARPA Agent Markup Language OIL = Ontology Inference Layer

Inferência Objetivos da Web semântica Possibilidades, com inferência informação “inteligível” para a máquina “raciocínio”: validação, descoberta Possibilidades, com inferência verificação de consistência (ontologias) hierarquia de classes (ontologias) integração entre ontologias distintas consultas: classes, instâncias

Inferência Dada uma ontologia Dada uma sentença conceitos Relações Dada uma sentença relação específica conceito específico Usando-se regras de inferência validação ou descoberta

Inferência Usuário Aplicações Ontologia: -conceitos -relações Sentença: -relação específica -conceito específico regras de inferência validação ou descoberta

OWL (Ontology Web Language) Exemplos de uso (1): Identificação de um suspeito <Assalto rdf:ID=“rep-13-10-2003-XT74”> <descricao>…</descricao> <suspeito> <Pessoa rdf:about=“http://www.pessoa.org#Joao_da_Silva”/> </suspeito> </Assalto>

OWL (Ontology Web Language) Exemplos de uso (1): b) Notificação por excesso de velocidade <Notificacao rdf:ID=“rep-13-10-2003-WQ464”> <descricao>…</descricao> <motorista> <Pessoa rdf:about=“http://www.pessoa.org#Carlos_Silva”/> </motorista> </Assalto>

OWL (Ontology Web Language) Exemplos de uso (1): c) No BD da polícia <Pessoa rdf:about=http://www.pessoa.org#Carlos_Silva> <owl:sameIndividualAs rdf:about=http://www.pessoa.org#Joao_da_Silva> </Pessoa>

OWL (Ontology Web Language) Exemplos de uso (1): d) Relacionando: Assalto Joao_da_Silva owl:sameIndividualAs Carlos_Silva Notificacao

OWL (Ontology Web Language) Exemplos de uso (1): Inferência possível: Joao_da_Silva e Carlos_Silva são a mesma pessoa! d) Relacionando: Assalto Joao_da_Silva owl:sameIndividualAs Carlos_Silva Notificacao

OWL (Ontology Web Language) Exemplos de uso (2): a) Pesquisa: orçamento de câmera WebSite 2 Pesquise câmeras Envie catálogo 1 3 Agente de software Catálogo solicitado 4 5 <SLR rdf:ID=“Olympus-OM10”> <lentes>300mm zoom</lentes> <custo>$2500 USD</custo> </SLR> “SLR” é uma câmera??

OWL (Ontology Web Language) Exemplos de uso (2): b) Consulta ontologia sobre câmeras camera Relações de subclasse na ontologia Sobre cameras indicam que SLR é um tipo de camera. Inferência possível: “SLR é um tipo de Câmera” SLR Digital