bancos de dados e web ( xml, ontologias) prof.: sandro rigo

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

Upload: internet

Post on 18-Apr-2015

139 views

Category:

Documents


22 download

TRANSCRIPT

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

Bancos de dados e Web( XML,

Ontologias)

Prof.: Sandro Rigo

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

Sumário

1. Motivação para uso de XML

2. Características Gerais do XML

3. Exemplo de uso

4. Exercício: XML e BD

5. Web semântica

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

1. Motivação para uso de XML

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

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

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

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

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

Com Bases de Dados:

- facilidades de exportação, validação e importação de dados

- facilidades de modelagem e integração de modelos distintos

Page 7: Bancos de dados e Web ( XML, Ontologias) Prof.: Sandro Rigo
Page 8: Bancos de dados e Web ( XML, Ontologias) Prof.: Sandro Rigo
Page 9: Bancos de dados e Web ( XML, Ontologias) Prof.: Sandro Rigo

Exemplo de ontologia

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

Detalhes do mapeamento

Page 11: Bancos de dados e Web ( XML, Ontologias) Prof.: Sandro Rigo
Page 12: Bancos de dados e Web ( XML, Ontologias) Prof.: Sandro Rigo
Page 13: Bancos de dados e Web ( XML, Ontologias) Prof.: Sandro Rigo
Page 14: Bancos de dados e Web ( XML, Ontologias) Prof.: Sandro Rigo

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

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

- 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

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

- 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

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

- 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" >

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

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

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

-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

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

ÐÏࡱá > þÿ * , þÿÿÿ ) ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿì¥Á 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>

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

- Dados x Metadados

Carlos Silva NomeDuque de Caxias 456 Endereço90051-102 CEPPorto 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}

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

- 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>

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

- 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>

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

- 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)

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

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

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

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.

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

-usado junto com uma gramática: - DTD- XML Schema

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

- 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

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

- 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 >

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

<!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.

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

<!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)

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

- SchemaSimples: <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>

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

-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

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

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>

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

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

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

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.

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

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>

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

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>

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

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>

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

3. Exemplo de uso

Lista de disciplinas

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

Lista de disciplinas- Versão HTML

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

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&oacute;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>

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

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)>

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

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><DISC>

<NOME_DISC>Tecnologias de Transmissao</NOME_DISC><PROF_DISC>Carlos Silva</PROF_DISC><ASSUNTO_DISC>ATM</ASSUNTO_DISC><COD_DISC>PR4102</COD_DISC>

</DISC>........</LISTA_DISC>

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

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>

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

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>

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

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>

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

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()"

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

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

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

NAMESPACES:Definição de contextos para cada elemento descritoO mesmo marcador pode ter diversas concepçõesExemplo: <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 ........

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

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

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

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 dados2. processador XSLT aplica as instruções do

documento XSL nesta estrutura de dados. 3. o resultado é enviado para um leitor

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

Exemplo:a) 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>

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

Exemplo:a) 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>

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

Exemplo:a) 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>

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

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"/> </TD> </TR>

</xsl:for-each> </TABLE></CENTER></BODY></HTML></xsl:template>

</xsl:stylesheet>

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

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"/> </TD> </TR>

</xsl:for-each> </TABLE></CENTER></BODY></HTML></xsl:template>

</xsl:stylesheet>

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

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"/> </TD> </TR>

</xsl:for-each> </TABLE></CENTER></BODY></HTML></xsl:template>

</xsl:stylesheet>

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

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"/> </TD> </TR>

</xsl:for-each> </TABLE></CENTER></BODY></HTML></xsl:template>

</xsl:stylesheet>

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

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"/> </TD> </TR>

</xsl:for-each> </TABLE></CENTER></BODY></HTML></xsl:template>

</xsl:stylesheet>

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

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"/> </TD> </TR>

</xsl:for-each> </TABLE></CENTER></BODY></HTML></xsl:template>

</xsl:stylesheet>

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

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"/> </TD> </TR>

</xsl:for-each> </TABLE></CENTER></BODY></HTML></xsl:template>

</xsl:stylesheet>

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

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"/> </TD> </TR>

</xsl:for-each> </TABLE></CENTER></BODY></HTML></xsl:template>

</xsl:stylesheet>

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

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"/> </TD> </TR>

</xsl:for-each> </TABLE></CENTER></BODY></HTML></xsl:template>

</xsl:stylesheet>

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

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>

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

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>

<TR><TD><I><B><FONT COLOR="#006400"><xsl:for-each select="/LISTA_DISC/DISC">

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

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

<TR><TD><I><B><FONT COLOR="#006400"><xsl:for-each select="/LISTA_DISC/DISC">

<NOME_DISC>Redes de Computadores e Protocolo TCP/IP</NOME_DISC>

<xsl:apply-templates select="NOME_DISC"/>

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

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

<TR><TD><I><B><FONT COLOR="#006400"><xsl:for-each select="/LISTA_DISC/DISC">

<NOME_DISC>Redes de Computadores e Protocolo TCP/IP</NOME_DISC>

<xsl:apply-templates select="NOME_DISC"/>

</FONT></B></I></TD>< TD align="center">

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

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>

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

Publicação de dados com XML/XSL

Roteiro:- criação dos documentos- uso de parser (nos navegadores)- visualização dos resultados (em navegadores)

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

- 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)

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

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

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

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

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

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

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

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

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

Exemplo:

Documento:<?xml version=“1.0”>

<mail>

<to>[email protected]</to>

</mail>

Resultado da análise:start document

start element: mail

start element: to

characters: [email protected]

end element: to

end element: mail

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

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.

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

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/

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

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>

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

- 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

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

DOM/nodos: propriedades, métodos

DOM / SAX - Uso

nodeType 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

Conteúdo do nodo CDATA_SECTION_NODE

5 entityreference entity reference name

Nulo ENTITY_REFERENCE_NODE

6 entity entity name

Nulo ENTITY_NODE

7 processinginstruction

target Conteúdo do nodo PROCESSING_INSTRUCTION_NODE

8 comment #comment Texto do comentário COMMENT_NODE

9 document #document Nulo DOCUMENT_NODE

10 documenttype doctype name

Nulo DOCUMENT_TYPE_NODE

11 documentfragment #document fragment

Nulo DOCUMENT_FRAGMENT_NODE

12 notation notation name

Nulo NOTATION_NODE

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

DOM/nodos: propriedades, métodos

DOM / SAX - Uso

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

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

DOM/nodos: propriedades, métodos

DOM / SAX - Uso

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

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

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

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

Recursos para ligação

Exemplo:.......<prod num="23">XMLDecl :...&gt;'</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'])

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

Recursos para ligação

Exemplo:.......<prod num="23">XMLDecl :...&gt;'</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'])

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

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

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

Recursos para ligação

Exemplo:.......<extendedlink xlink:type="extended">

<loc xlink:type="locator" xlink:label="prolog-ref" xlink:href="#xpointer(string-range(//text(),'prolog'))" /> <loc xlink:type="locator" 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>

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

Recursos para ligação

Exemplo:.......<extendedlink xlink:type="extended">

<loc xlink:type="locator" xlink:label="prolog-ref" xlink:href="#xpointer(string-range(//text(),'prolog'))" /> <loc xlink:type="locator" 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>

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

Recursos para ligação

Exemplo:.......<extendedlink xlink:type="extended">

<loc xlink:type="locator" xlink:label="prolog-ref" xlink:href="#xpointer(string-range(//text(),'prolog'))" /> <loc xlink:type="locator" 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>

AB

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

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>

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

XML: especificação Xlink

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

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

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)

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

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

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

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

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

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

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

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>

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

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>

Recurso 3<local>Recurso 4

<local>

biblioteca de links

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

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>

Recurso 3<local>Recurso 4

<local>

biblioteca de links

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

XML: especificação XPointer

- Identificação de fragmentos de documentos XML

- Sintaxe simples:- documento#identificador- documento#esquema

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

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>

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

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 listae) #xpointer(start-point(string-range(/*,’redes’,1,0)) -> início do nome de “d2”

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

Aplicações

- Uso de DOM/SAX como bibliotecas

- Disponibilidade em diversas linguagens

- Uso em diversos contextos

- Maior flexibilidade

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

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

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

XPATH

- Uso no XSL:

<xsl:template match="/">

............

<xsl:for-each select="/LISTA_DISC/DISC">

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

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])

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

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>

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

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

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

EXERCÍCIODescreva 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.

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

Roteiro:

- Cronograma, trabalhos, material

- Recursos Tecnológicos

- Interação por voz

- Indexação – web semântica

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

Indexação - Web Semântica

• 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

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

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.

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

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)

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

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)

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

Indexação - Web Semântica

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

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

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

Indexação - Web Semântica

Sintaxe bem definida: exemplos:

xml descrevendo disciplina professor ministrante anotação em texto

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

Web Semântica

{

Sintaxe bem definida: exemplo:

xml p/ disciplina, página de professor anotação em texto

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

Indexação - Web Semântica

Sintaxe bem definida: exemplos:

xml descrevendo disciplina professor ministrante anotação em texto

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

Indexação - Web Semântica

Sintaxe bem definida: exemplo contrário :

dados similares em HTML

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

<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&oacute;digo</font></b> </td> </tr> <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>

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

<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&oacute;digo</font></b> </td> </tr> <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>

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

<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&oacute;digo</font></b> </td> </tr> <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>

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

Indexação - Web Semântica

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

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

Indexação - Web Semântica

Semântica bem definida: linguagens para descrever ontologias:

RDFS DAML+OIL OWL

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

UNIVERSIDADE

Administração Superior Administração Geral Centros

C 1 C 2 C 3- Centro de Ciências da Comunicação C 4 C 5 C 6

Conselho de Centro Curso Áreas de Conhecimento

Professor Aluno

MERONÍMIA

HIPONÍMIA

Letras

Habilitações

Inglês

Currículo

Disciplina

Sintaxe da Língua Portuguesa

Ementa

HIPONÍMIA

MERONÍMIA

HIPONÍMIA

MERONÍMIA

HIPONÍMIA

MERONÍMIA

MERONÍMIA

Rove Lílian

MINISTRA CURSA

MERONÍMIA

Corpo Docente Corpo Discente

UNISINOS

Pós-Graduação Graduação Extensão

Page 129: Bancos de dados e Web ( XML, Ontologias) Prof.: Sandro Rigo
Page 130: Bancos de dados e Web ( XML, Ontologias) Prof.: Sandro Rigo
Page 131: Bancos de dados e Web ( XML, Ontologias) Prof.: Sandro Rigo

Indexação - Web Semântica

Semântica bem definida: linguagens para descrever (na web) ontologias:

RDFS DAML+OIL OWL

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

Indexação - Web Semântica

Uso dos recursos descritos: recuperação de informações validação de informações obtidas aplicações de software

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

Ontologias

• Em Filosofia:– 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]

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

Ontologias

• Conjuntos de asserções:– relações entre conceitos – regras de raciocínio

• Possibilitam a interpretação do significado das informações

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

Ontologias

• Domínio– ontologias gerais

– ontologias específicas • exemplos: universidade, impressora,

geográfica,...

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

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

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

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)

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

OWL (Ontology Web Language)

DAML

DAML+OIL

OWL: http://w3.org/WebOnt

OIL

OWL

RDF

DAML = DARPA Agent Markup LanguageOIL = Ontology Inference Layer

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

Inferência

• Objetivos da Web semântica – 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

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

Inferência

• Dada uma ontologia– conceitos– Relações

• Dada uma sentença– relação específica– conceito específico

• Usando-se regras de inferência– validação ou descoberta

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

Inferência

Ontologia: -conceitos -relações

Sentença: -relação específica -conceito específico

regras de inferênciavalidação ou descoberta

UsuárioAplicações

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

OWL (Ontology Web Language)

a) 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>

Exemplos de uso (1):

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

OWL (Ontology Web Language)

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>

Exemplos de uso (1):

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

OWL (Ontology Web Language)

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>

Exemplos de uso (1):

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

OWL (Ontology Web Language)

d) Relacionando:

Exemplos de uso (1):

Assalto Joao_da_Silva

Notificacao Carlos_Silva

owl:sameIndividualAs

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

OWL (Ontology Web Language)

d) Relacionando:

Exemplos de uso (1):

Assalto Joao_da_Silva

Notificacao Carlos_Silva

owl:sameIndividualAs

Inferência possível:Joao_da_Silva e Carlos_Silva são a mesma pessoa!

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

OWL (Ontology Web Language)

a) Pesquisa: orçamento de câmera

Exemplos de uso (2):

Agente de software

WebSite

Catálogo solicitado

Envie catálogo

<SLR rdf:ID=“Olympus-OM10”> <lentes>300mm zoom</lentes> <custo>$2500 USD</custo></SLR>

1

Pesquise câmeras 2

3

45

“SLR” é uma câmera??

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

OWL (Ontology Web Language)

b) Consulta ontologia sobre câmeras

Exemplos de uso (2):

camera

DigitalSLR

Relações de subclasse na ontologia Sobre cameras indicamque SLR é um tipo de camera.Inferência possível:“SLR é um tipo de Câmera”