Padrões da W3C para representação de conhecimento distribuída na web Luciano Barbosa e Jacques Robin CIn-UFPE Roteiro 1. 2. 3. 4. 5. 6. 7. Infra-estrutura da W3C Namespaces para web semântica CSS DTDs XSLT XML FRODO Stylesheets XML Namespaces Agents Ontobroker Transformations Estruturas de documentos e esquema HornML XML XQL Rules de dados XML Queries RFML RDF XML-QL SHOE Linguagens de consultas Frames RDF[S] Acquisition para XML e RDF XOL Máquinas de inferência Protégé para XML e RDF Infra-estrutura em camadas da W3C para web semântica XML: padrão versátil de codificação de informação eXtensible Markup Language Inicialmente Linguagem de codificação de documentos web Simples alternativa para o HTML: permitindo usuário definir suas próprias tags separando tags marcando conteúdo de tags especificando apresentação Versão aumentada para web de um sub-conjunto de SGML Atualmente Padrão universal para representação, integração e transmissão de documentos, dados, informação, conhecimento e software ! Versatilidade total, invadiu a computação inteira XML é texto: constituintes de um documento XML Sintaxe básica Prólogo: cabeçalho do documento Declaração XML Comentários Exemplo: <!--Comentário--> Informações sobre esquemas (DTDs ou XMLS, opcional) Informações sobre apresentação (opcional) Exemplo: <?xml version=“1.0”?> Exemplo: <?Xml-stylesheet type=“text/CSS” href=“modelo.css” ?> Conteúdo: árvore de elementos Elemento raiz: único Demais Elementos: representam os nós da árvore Exemplo: <exemplo> e </exemplo> Atributos Interno ao tags, conjunto não ordenado XML é texto e é árvore: exemplo de documento <Cliente> <Nome> Luciano </Nome> <Endereço> <Rua> Agamenon </Rua> <Bairro> Centro </Bairro> <Cep> 12345-000 </Cep> <Estado> PE </Estado> </Endereço> <Mail> [email protected] </Mail> </Cliente> Cliente Nome Mail Endereço [email protected] Luciano Rua Bairro Cep Agamenon Centro 12345-000 Estado PE XML: elementos ou atributos? <Cliente Nome = Luciano, Mail = [email protected]> <Endereço Rua = Agamenon, Bairro = Centro, Cep = 12345-000, Estado = PE> </Endereco> </Cliente> Cliente Nome Mail Luciano [email protected] Endereço Rua Bairro Cep Estado Agamenon Centro 12345-000 PE As dualidades de XML 1. codificação para usuários humanos ou para software de processamento? 2. codificação de documentos ou de dados? 3. codificação de dados ou de meta-dados? 4. codificação para interoperabilidade ou para desenvolvimento de aplicações? 5. codificação para comunicação ou para armazenamento? Padrões e tecnologias baseadas em XML XML namespace: distrbuição na web DTD e XML schema: especificação de esquema de dados e validação de documentos segundo especificação XHTML: HTML em sintaxe XML CSS: provê informações de apresentação dos dados XSLT: gramáticas de transformação para XML XSL-FO: bibliotecas de objetos para layout gráficos XPath: caminhos em documentos XML como árvores Xpointer: referências a fragmentos de documentos Xlink: laço web entre documentos e fragmentos XML Sax e DOM: definem interfaces para ler e manipular documentos XML Onipresença atual de XML XML e sistemas distribuídos WWW – Web Server Intranets – gerenciamento de conhecimento Middleware – protocolo de comunicação XML e inteligência artificial Ontologias Comunicação entres agentes XML e bancos de dados: Integração de dados Data warehousing Sistemas de informação heterogêneos XML: should I believe the hype? Pontos fortes de XML Formato estruturado Tecnologia disponível e barata Flexibilidade Padrão aberto Human-readable e machinereadable Dados separado de apresentação Grande base de usuários e software reutilizáveis Pontos fracos de XML Ocupa muito espaço Especificações não estão completas Não otimizado para nada (já que pretende resolver tudo ) XML namespaces (XMLNS): definição e motivação Motivação Identificar unicamente os elementos (recursos) Reuso dos elementos Semelhantes a pacotes de linguagens de programação Definição Coleção de nomes, identificado por uma referência URI Seu escopo vai além do conteúdo de um documento Declaração: xmlns=“URI” XMLNS: URI e URL URI (Unified Resource Identifier) Características Identifica recursos por um nome garantidamente único Garantia de unicidade através de um órgão, que pode ou não estar na web, ou através de URL Problemas Múltiplos URIs podem significar a mesma coisa URL (Unified Resource Location) Subconjunto de URI Além de identificar, localiza o recurso XMLNS: abreviação e default Abreviação: alias para uma URI <h:table xmlns:h="http://www.w3.org/TR/html4/"> <h:tr> <h:td>Apples</h:td> <h:td>Bananas</h:td> </h:tr> </h:table> Default Namespaces: não é necessário prefixar os elementos filhos <table xmlns="http://www.w3.org/TR/html4/"> <tr> <td>Apples</td> <td>Bananas</td> </tr> </table> Exemplo de documento XML usando XMLNS <?xml version=“1.0”?> <book:library xmlns:book=“http://www.library.com/spec”> <book:book> < book: title> Machine Learning </ book: title> </ book: book> </ book:library> Tipos de documentos e esquema de dados XML DTD Herança de SGML quando XML era só para documentos Expressividade adequada apenas para documentos, insuficiente para dados e meta-dados Sintaxe diferente de XML XML Schema (XMLS) Novo padrão, na visão moderna de XML para codificar qualquer coisa Superar limitações de DTD No entanto atualmente DTD permanecem o formalismo mais utilizado DTD: constituintes e características Especifica a estrutura e a sintaxe do documento XML Sintaxe: <!DOCTYPE elemento-raiz [declaração-dos-elementos]> <!ELEMENT nome-do-elemento tipo-do-elemento> <!ATTLIST nome-do-elemento nome-atrib tipo-atrib valordefault> DTD: exemplo Exemplo de DTD <!DOCTYPE Book [ <!ELEMENT Book (Book*)> <!ELEMENT Book (Title, Author)> <!ELEMENT Title (#PCDATA)> <!ELEMENT Author (#PCDATA)> ]> Exemplo de documento válido <book> <Title> Machine Learning </Title> <Author> Tom M. Mitchell </Author> </book> DTD: limitações Não usa sintaxe XML Qualquer caracter é permitido Nenhum suporte para Namespaces Limitado suporte para reusabilidade e modularidade Nenhum suporte para evolução do esquema, extensão ou herança de declarações Valor default para atributos e não para elementos Limitada capacidade para especificar tipos Intervalos Suporta 10 tipos de dados XML Schema (XMLS): constituintes e características Características Sintaxe em XML Usa e suporta Namespaces Sistema de tipo parecido com OO Herança, tipos abstratos Modularidade: inclusão e redefinição de esquema Documentação estruturada Restrição de cardinalidade para elementos Valores nulos Atributo e elemento defaults Não especifica um elemento raiz Grande e complicado XML Schema (XMLS): constituintes e características Constituintes Declaração de elemento: associa um elemento a um tipo Definição de tipos complexos Exemplo: <element name=“Title” type=“xsd:string”/> Exemplo: <complexType name=“book”> Definição de tipos simples Exemplo: <simpleType name=“book”> XMLS: exemplo Exemplo de XMLS Exemplo de documento válido <?xml version=“1.0”?> <xsd:schema xmlns:xsd=“http://www.w3.org/2001/ XMLSChema” xmlns=“http://www.books.org” targetNamespace=“http://www.books.org”> <xsd:elment name=“book”> <xsd:complexType> <xsd:sequence> <xsd:element ref= “Title” minOccurs=“1” maxOccurs=“1”/> <xsd:element ref= “Author” minOccurs=“1” maxOccurs=“1”/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name=“Title” type=“xsd:string”/> <xsd:element name=“Author” type=“xsd:string”/> </xsd:schema> <?xml version=“1.0”?> <book xmlns=“http://www.books.org” xmlns:xsi=“http://www.w3.org/2001/ XMLSChema-instance” xsi:schemaLocation=“http://www.books.org book.xsd”> <book> <Title> Machine Learning </Title> <Author> Tom M. Mitchell </Author> </book> Processamento de XML Verificação: bem formado independentemente do conjunto de tags utilizado, de DTD ou de XMLS Validação: verifica conformidade ao conjunto de tags e suas retrições de ordenamento e aninhamento especificado em uma DTD ou XMLS Parsing: gerar árvore a partir do texto Transformação: XSLT regras de reescrituras baseadas no casamento de padrão com documento de entrada e copiando e reestruturando material que casou em um documento de saída Consultas: enxergando documentos XML como BD, recuperar documentos, elementos, atributos etc. Ex.: XQuery, XSLT, Armazenamento persistente: SGBD nativo XML usando árvores no lugar de tabela como modelo físico e XMLS como modelo lógico, API de transformação de XML de e para modelos de dados relacionais e O-R Raciocínio automático: LoPiX, máquina de inferência aceitando XML com variáveis lógica na conclusão e premissas das suas regras Ontologia acadêmica abaixo da ontologia geral do AIMA em XMLS Exemplo de ontologia em XMLS <complexType name=“Person”> <sequence> <element name=“name” type=“string”/> <element name=“address” type=“string”/> <element name=“email” type=“string”/> <element name=“publication” type=“Publication” minOccurs=“0” maxOccurs=“unbounded”/> </sequence> </complexType> <complexType name=“Employee”> <complexContent> <extension base=“Person”> <element name=“affiliation” type=“Organization”/> </complexContent> </complexType> Exemplo de ontologia em XMLS <complexType name=“Student”> <complexContent> <extension base=“Person”> <element name=“studiesAt” type=“University”/> </complexContent> </complexType> <complexType name=“PhDStudent”> <complexContent> <extension base=“Student”> <extension base=“Researcher”> <element name=“supervisor” type=“AcademicStaff”/> </complexContent> </complexType> RDF: definição e motivação Limitações de XML Schema para representação de: Estabelece ordem de elementos (não natural para metadados) Problema de escalabilidade: manter a ordem de dados Estrutura de árvore força ordem nos elementos, o que limita versatilidade de uso para um determinado conhecimento ou meta-dado Resource Definition Framework Modelo para descrever recursos Usa XML como sintaxe Baseado em um modelo de grafo no lugar de árvore Melhora a descoberta, o acesso e o gerenciamento das informações da Web RDF é texto: constituintes de uma descrição RDF Formas de representação Tripla: Sujeito: recurso Objeto: outro recurso Predicado: relação que associa vários recursos Como grafo: Sujeitos são nós Objetos também são nós ou literais (átomos) Predicados são os arcos que ligam os nós Recursos são unicamente identificados por URI RDF é texto: exemplo [Sujeito = <http://www.cin.ufpe.br/~lab>, Predicado =<http://gosta.exemplo.org/termo/gosta>, Objeto = http://www.cmu.edu/Mitchell/Machine_Learning ] http://www.cin.ufpe.br/~lab http://gosta.exemplo.org/termo/gosta http://www.cmu.edu/Mitchell/Machine_Learning RDF é grafo: ¼ de século depois a volta das redes semânticas Redes semânticas Forma de representar linguagem natural Formato para organizar expressões numa forma fácil de ser computada RDF é uma rede semântica para a Web Redes Semânticas spine has heart vertebrate isa isa hair mammal walk can bird isa canary freddie wings fly isa yellow doesn’t fly ostrich hugo RDF em XML Texto tripla: XML [Sujeito=<http://uri-of-document>, Predicado=<dc:Creator>, Objeto=<Creator_001>] [Sujeito=<Creator_001>, Predicado=<card:name>, Objeto=<Jonh Smith>] [Sujeito=<Creator_001>, Predicado=<card:email>, Objeto=<[email protected]>] <rdf:rdf> <rdf:Description rdf:href=“http://uri-ofdocument”> <dc:Creator rdf:href=“#Creator_001”/> </rdf:Description> <rdf:Description rdf:ID=“Creator_001”> <card:name> Jonh Smith </card:name> <card:email> [email protected] </card:email> </rdf:Description> </rdf:rdf> RDF em XML: Grafo dc:Creator http://uri-of-document Creator_001 card:name “John Smith” card:email “[email protected]” RDF em XML: Árvore rdf:rdf rdf:Description rdf:Description rdf:ID card:name Creator_001 card:email rdf:href http://uri-of-Document dc:Creator rdf:href #Creator_001 “John Smith” “[email protected]” RDF e XMLNS <?xml version=“1.0” ?> <rdf:RDF xmlns:rdf=“http://www.w3.org/1999/02/22-rdf-syntaxns#” Namespace para as especificações RDF Namespace para uma especificação xmlns:dc=“http://purl.org/DC/”> customizada <rdf:Description about=“http://rama.cpe.fr/index.html”> <dc:Creator rdf:resource=“mailto:[email protected]”/> </rdf:Description> </rdf:RDF> Predicado Objeto Sujeito RDF Schema (RDFS): definição e motivação Provê um sistema de tipo básico Provê mapeamento entre recursos e propriedades Permite a construção de estruturas hierárquicas Mesma sintaxe que RDF Interoperabilidade de metadados de diferentes comunidades Permite codificar, trocar e reusar estrutura de metadados RDFS: constituintes de um esquema de descrições Classes básicas rdfs:Resource : todas as coisas descritas são recursos (Objeto) rdfs:Property: propriedades rdfs:Class :similar à noção de classe em OO Propriedades Básicas rdf:type: indica que um recurso é membro de uma classe rdfs:subClassOf: similar à noção de subclasse em OO rdfs:subPropertyOf: indica que uma propriedade é especialização de outra RDFS em XML: exemplo Exemplo de RDFS Exemplo de descrição RDF <? xml version=“1.0” ?> <?xml version=“1.0” ?> < rdf xmlns:rdf = “http://w3.org/TR/Pr<rdf:RDF rdf-syntax#” xmlns:rdf=“http://www.w3.org/1999/0 xmlns:rdfs=“http://w3.org/TR/WD2/22-rdf-syntax-ns#”> rdf-schema#” > xmlns:dc=“http://purl.org/DC/”> <rdf:Description ID = “Title”> <type resource = "http://w3.org/TR/PR- <rdf:Description rdf-syntax#Property" /> about=“http://dstc.com.au/report.htm”> <rdfs:label> Title </RDFS:label> <dc:Creator </rdf:Description> rdf:resource=“mailto:[email protected]”/> <rdf:Description ID = "Creator" > <dc:Title = “Report” /> < rdf:type resource = </rdf:Description> "http://w3.org/TR/PR-rdf</rdf:RDF> syntax#Property" /> <rdfs:label> Author or Creator </rdfds:label> </rdf:Description> </rdf> Ontologia acadêmica abaixo da ontologia geral do AIMA em RDFS Exemplo de ontologia em RDFS: versão triplos [Sujeito=Person, Predicado=subClassOf, Objeto= Resource] [Sujeito=Employee, Predicado=subClassOf, Objeto=Person] [Sujeito=Student, Predicado=subClassOf, Objeto=Person] [Sujeito=PhDStudent, Predicado=subClassOf, Objeto=Student] [Sujeito= PhDStudent, Predicado=subClassOf, Objeto=Researcher] [Sujeito=Person, Predicado=type, Objeto=Class] [Sujeito=Employee, Predicado=type, Objeto=Class] [Sujeito=Student, Predicado=type, Objeto=Class] [Sujeito=PhDStudent, Predicado=type, Objeto=Class] [Sujeito=Researcher, Predicado=type, Objeto=Class] Exemplo de ontologia em RDFS: versão grafo s = rdfs:subClassOf t = rdf:type rdfs:Resource t s rdfs:Class t Person s t s Employee t t t Student s s Researcher PhDStudent Exemplo de ontologia em RDFS: versão XML <rdf:RDF xml:lang="en" xmlns:rdf=http://www.w3.org/1999/02/22-rdf-syntax-ns# RDF Schema Namespace xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"> <rdf:Description ID=“Person"> <rdf:type resource="http://www.w3.org/2000/01/rdf-schema#Class"/> <rdfs:subClassOf rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/> </rdf:Description> Um atributo “ID” define um novo <rdf:Description ID=“Employee"> recurso <rdf:type resource="http://www.w3.org/2000/01/rdf-schema#Class"/> Person herda de Employee <rdfs:subClassOf rdf:resource="#Person"/> </rdf:Description> <rdf:Description ID=“Student"> <rdf:type resource="http://www.w3.org/2000/01/rdf-schema#Class"/> <rdfs:subClassOf rdf:resource="#Person"/> </rdf:Description> <rdf:Description ID=“PhDStudent"> <rdf:type resource="http://www.w3.org/2000/01/rdf-schema#Class"/> Herança múltipla <rdfs:subClassOf rdf:resource="#Student"/> <rdfs:subClassOf rdf:resource="#Researcher"/> </rdf:Description> </rdf:RDF> XQuery: linguagem de consulta para BD XML Baseada na sintaxe XML Derivada de uma linguagem de consulta XML chamada Quilt Projetada para ser pequena Consultas são concisas e de fácil compreensão Pode ser usada em qualquer fonte de dados em XML Linguagem fortemente tipada Sistema de tipo baseado em XML Schema Exemplo de uso de XQuery para consultar ontologia em XML(S) XML - artists.xml <artists> <artist> <name> Cash </name> <album live=“no”> <name> Live and on the Air </name> <year> 1997 </year> </artist> <artist> <name> Denver </name> <album live=“yes”> <name> Denver </name> <year> 1979 </year> </artist> </artists> consulta: document(“artists.xml”)/artists/ artist/album[year=“1997”] Resultado da consulta <album live=“no”> <name> Live and on the Air </name> <year> 1997 </year> <album> RDQL: linguagem de consulta para BD RDF Implementação de um linguagem de consulta SQL para RDF Linguagem derivada do SquishQL Trata RDF como dados Provê uma forma de escrever expressões mais declarativas, para que um sistema a utilize Exemplo de uso de RDQL para consultar ontologia em RDF(S) Exemplo 1: Recuperar o valor de uma dada propriedade de um dado recurso SELECT ?x WHERE (<http://somewhere/res1>, <http://somewhere/pred1>, ?x) Exemplo 2: Restrições SELECT ?a, ?b WHERE (?a, <http://somewhere/pred1>, ?b) AND ?b < 5 TRIPLE: uma máquina de inferência dedutiva para RDF(S) Linguagem de consulta, inferência e transformação para RDF Permite a manipulação de RDF sobre semânticas diferentes Interessante para integração de dados Exemplo de regras dedutiva TRIPLE completando ontologia em RDF(S) // RDFS cars example @cars { // xyz := "http://www.w3.org/2000/03/example/vehicles#". xyz:MotorVehicle[rdfs:subClassOf -> rdfs:Resource]. xyz:PassengerVehicle[rdfs:subClassOf -> xyz:MotorVehicle]. xyz:Truck[rdfs:subClassOf -> xyz:MotorVehicle]. xyz:Van[rdfs:subClassOf -> xyz:MotorVehicle]. xyz:MiniVan[ rdfs:subClassOf -> xyz:Van; rdfs:subClassOf -> xyz:PassengerVehicle]. } // query FORALL X,Y <- X[rdfs:subClassOf->Y]@rdfschema(cars). Recapitulação Infra-estrutura da W3C para web semântica: URI fornece a forma de identificar unicamente os elementos XML fornece a sintaxe básica XML Namespace provê uma forma de disponibilizar para a Web Apesar de XMLS ser uma melhoria em relação à DTD ainda possui restrições de expressibilidade RDF: rede semântica para Web RDF Schema: uso de ontologias