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
1. 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
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 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}
- 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>
- 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 >
<!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)
- 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>
-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
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>
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
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><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>
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 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 ........
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 dados2. processador XSLT aplica as instruções do
documento XSL nesta estrutura de dados. 3. o resultado é enviado para um leitor
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
<TR><TD><I><B><FONT COLOR="#006400"><xsl:for-each select="/LISTA_DISC/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
<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"/>
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">
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
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
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:<?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
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>
- 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
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
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
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
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'))" /> <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>
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>
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
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>
Recurso 3<local>Recurso 4
<local>
biblioteca de links
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
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 listae) #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
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])
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Í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.
Roteiro:
- Cronograma, trabalhos, material
- Recursos Tecnológicos
- Interação por voz
- Indexação – web semântica
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
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> <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> <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> <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
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
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:– 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 LanguageOIL = Ontology Inference Layer
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
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
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
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):
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):
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):
OWL (Ontology Web Language)
d) Relacionando:
Exemplos de uso (1):
Assalto Joao_da_Silva
Notificacao Carlos_Silva
owl:sameIndividualAs
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!
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??
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”