UNIVERSIDAD CENTRAL DE VENEZUELA FACULTAD DE CIENCIAS Resource Description Framework RDF Presentado por: Msc. Franklin José Sandoval Sucre 1 Resource Description Framework (RDF) • Marco de trabajo para la descripción de recursos • Descripción mediante lógica declarativa • Solo dos constructos básicos: URIs y valores • URI: http://www.ejemplo.com/Juanito • Valor: “123”, “Valor textual”, “2012-12-21”, verdadero/falso • El Modelo de datos en forma de grafo, cada nodo es un Recurso: URI ó Literal • Las aristas del grafo son también URIs y también pueden ser recursos • Relación es unidireccional http://ejemplo2.org#tieneHijo http://ejemplo.org#Juan http://ejemplo.org#Pedro http://ejemplo2.org#tieneEdad http://ejemplo2.org#viveEn http://ejemplo.org#Venezuela 40 RDF: Modelo de datos El modelo de datos que propone RDF consiste en tres tipos de objetos: Recurso Valor Propiedad Propiedad / descripción De quién se está hablando Recursos Propiedades Descripción Qué se está declarando. Valor de lo declarando . SUJETO (recurso) PREDICADO (tipo de propiedad) OBJETO (valor) Basado en el concepto de Tripleta (RDF triple) Grafos Representación simbólica de los elementos constituidos de un sistema o conjunto, mediante esquemas gráficos 4 Ejemplo RDF RDF: un modelo de metadatos flexible para WEB AUTOR DC: Title DC: Creator BIB:Aff “UC3M” uc3m EVA “Eva Méndez” BIB:Name “Eva Méndez” BIB:Email “[email protected]” Qué es RDF • Ejemplo: Sujeto Predicado Objeto http://ejemplo.com/juan http://ejemplo.com/nacimiento “1945-01-02” http://ejemplo.com/juan http://ejemplo.com/tieneHijo http://ejemplo.com/pedro http://ejemplo.com/juan http://ejemplo.com/viveEn http://wikisiit.ve/petare http://wikisiit.ve/petare http://wikisiit.ve/tiene “501” De quién se habla Qué se está declarando El valor de lo declarado Qué es RDF Las declaraciones se pueden representar como un grafo dirigido: http://ejemplo.com/juan http://ejemplo.com/nacimiento “1945-01-02” http://ejemplo.com/tieneHijo http://ejemplo.com/pedro http://ejemplo.com/viveEn http://wikisiit.ve/petare “501” http://wikisiit.ve/tieneCodigo Qué es RDF Este grafo puede ser declarado como un subconjunto mediante URI: http://www.ejemplo.com/migrafo : grafo nombrado (Named graph) http://ejemplo.com/juan http://ejemplo.com/nacimiento “1945-01-02” RDF es composicional “1990-07-13” http://ejemplo.com/tieneHijo http://ejemplo.com/pedro http://ejemplo.com/nacimiento http://ejemplo.com/tieneHijo http://ejemplo.com/viveEn http://wikisiit.ve/petare “501” http://ejemplo.com/Persona http://wikisiit.cl/tieneCut rdf:type http://ejemplo.com/luis “13” http://wikisiit.ve/tieneCut http://wikisiit.ve/catia http://ejemplo.com/viveEn Qué es RDF • Sujeto siempre es una URI y representan un recurso. • Predicado siempre es una URI y representa una conexión entre un sujeto y un objeto, normalmente una relación del sujeto con algo o un atributo del sujeto. • Objeto puede ser tanto una URI o un valor literal. Sujeto Predicado Objeto http://ejemplo.com/juan http://ejemplo.com/nacimiento “1945-01-02” http://ejemplo.com/juan http://ejemplo.com/tieneHijo http://ejemplo.com/pedro http://ejemplo.com/juan http://ejemplo.com/viveEn http://wikisiit.ve/petare http://wikisiit.ve/petare http://wikisiit.ve/tiene “501” Ejemplo RDF-Abreviado SERIALIZADA <RDF:RDF> <RDF: Description about= ”http://www.bib.uc3m.es/~mendez/rdf.htm”> <Title> Explicando RDF</Title> <Author>Eva Méndez </Author> </RDF: Description> </RDF:RDF> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.0/"> <rdf:Description rdf:about="http://www.bib.uc3m.es/~mendez/rdf.htm" dc:creator=”Eva Méndez" dc:title=”Explicando RDF" dc:date=“2005-04-12" /> </rdf:RDF> RDF Sintaxis básica serializada • • • • • • • • • • • • • • • [1] [2] RDF description ::= ['<rdf:RDF>'] description* ['</rdf:RDF>'] ::= '<rdf:Description' idAboutAttr? '>' propertyElt* '</rdf:Description>' [3] idAboutAttr ::= idAttr | aboutAttr [4] aboutAttr ::= 'about="' URI-reference '"' [5] idAttr ::= 'ID="' IDsymbol '"' [6] propertyElt ::= '<' propName '>' value '</' propName '>' | '<' propName resourceAttr '/>' [7] propName ::= Qname [8] value ::= description | string [9] resourceAttr ::= 'resource="' URI-reference '"' [10] Qname ::= [ NSprefix ':' ] name [11] URI-reference ::= string, interpreted para [URI] [12] IDsymbol ::= (any legal XML Name symbol) [13] name ::= (any legal XML name symbol) [14] NSprefix ::= (any legal XML namáspace prefix) [15] string ::= (any XML texto, with "<", ">", and "&" escaped) RDFs Algunos términos RDFs Estos términos son los elementos constitutivos de RDF Schema, o core primitives Definición del vocabulario Class, property Type, SubClassOf, domain <Country, type, class> <Capital, subClassOf, city> <hasCapital, domain, Country> Estas son sentencias RDF donde: El predicado es un término RDF Schema El sujeto u objeto es un término RDF RDFs Recurso Clase rdfs:Resource rdfs:Class rdf:Property rdfs:ConstraitProperty rdfs:Literal Propiedad •rdf:type •rdf:subClassOf •rdfs:subPropertyOf •rdfs:comment •rdfs:label •rdfs:seeAlso •rdfs:isDefinedBy ConstraintProperty •rdfs:range •rdfs:domain Qué es RDF • Ejemplo en RDF (sintaxis N TRIPLES): <http://ejemplo.com/juan> <http://ejemplo.com/nacimiento> “1945-01-02” . <http://ejemplo.com/juan> <http://ejemplo.com/tieneHijo> <http://ejemplo.com/pedro> . <http://ejemplo.com/juan> <http://ejemplo.com/viveEn> <http://wikisiit.ve/petare> . <http://wikisiit.ve/petare> <http://wikisiit.ve/tieneCodigo> “501”. Archivo ejemplo.ntriples Jerarquía en RDF • Existen clases más generales y más específicas bajo un mismo concepto (Jerarquía) • RDF permite definir jerarquía de clases y propiedades mediante dos predicados: – rdfs:subClassOf – rdfs:subPropertyOf ej:pedro a foaf:Person . foaf:Person rdfs:subClassOf foaf:Agent . foaf:Organization rdfs:subClassOf foaf:Agent . ej:pedro ej:tieneHijo ej:juan. ej:tieneHijo rdfs:subPropertyOf ej:tieneFamiliar . Jerarquía en RDF ej:pedro a foaf:Person . foaf:Person rdfs:subClassOf foaf:Agent . foaf:Organization rdfs:subClassOf foaf:Agent . ej:pedro ej:tieneHijo ej:juan. ej:tieneHijo rdfs:subPropertyOf ej:tieneFamiliar . Con esta información, podríamos inferir cosas “como obtener los familiares de un agente” Propiedades en RDF • Las entidades de una misma clase siempre tienen elementos comunes a nivel estructural. Ejemplo: – Persona: nombre, número de pasaporte, dirección, etc. – Medio de comunicación: director, periodostas, noticias • A estos elementos comunes les llamaremos propiedades asociadas a la clase. • Las propiedades no pertenecen a las clases. • Las propiedades conectan recursos con otros recursos. • Las propiedades son entidades de tipo rdf:Property Propiedades en RDF • Las propiedades o predicados en RDF pueden relacionarse con entidades de múltiples clases. • Se puede restringir su dominio mediante rdfs:domain y su rango mediante rdfs:range • Entidades de distintas clases pueden tener una misma propiedad. Sujeto, propiedad, objeto Elementos del dominio Elementos del rango ej:juan a foaf:Person, ej:Funcionario ; foaf:name “Profesor Juan”; ej:foto <http://www.juan.ve/yo.jpg> . ej:ucv a foaf:Organization; foaf:name “Biblioteca de la UCV”; ej:foto <http://www.ucv.ve/foto.jpg> . foaf:name rdfs:domain foaf:Agent. ej:foto rdfs:domain ej:Funcionario, foaf:Organization . foaf:name rdfs:range xsd:string . ej:foto rdfs:range ej:Foto . Tipos de propiedades Respecto a E-R, las propiedades son relaciones + atributos, en RDF: • Object Properties: Propiedades que tienen como en su objeto (rango) a un recurso declarado en una URI • Datatype Properties: Propiedades que tienen en su objeto (rango) un valor literal. @PREFIX owl: <http://www.w3.org/2002/07/owl#> . @PREFIX ej: <http://ejemplo.com/> . ej:juan ej:nacimiento “1945-01-02” ; ej:tieneHijo ej:pedro . ej:nacimiento a rdf:Property. ej:tieneHijo a rdf:Property . ej:nacimiento a owl:DatatypeProperty . ej:tieneHijo a owl:ObjectProperty . Donde Usar RDF Herramientas de codificación del conocimiento de un dominio • Hay tres niveles de comunicación • Cada nivel proporciona una estructura sobre la que se apoya el inmediatamente superior • Un nivel más alto proporciona mayor expresividad pero conlleva mayor complejidad Comunicación de un dominio Problema esencial Pero las máquinas no entienden el sentido de las palabras, mucho menos el sentido de los textos… ¿No puedes hacer nada bien? • Personas, organizaciones y sistemas de software necesitan comunicarse • Cada uno tiene diferente conocimiento previo, contexto y puntos de vista • Visión compartida dificulta la construcción de sistemas Un ejemplo: ¿qué es la leche? Personas Alimento Empresa Producto Software Código binario ¿Qué es una ontología? Nace en la filosofía, rama de la metafísica que estudia la existencia de las entidades. Es un Vocabulario Controlado Ontología Con el Objetivo de Especificar el Conocimiento Del Para Describir Objetos Relación Con una Gramática Relevantes de un Dominio En informática “Es una especificación de una conceptualización” Thomas Gruber, 1993 Fundamentos teóricos de ontologías: Definición Ontologías usadas_en Ciencias de la Computación Inteligencia Artificial Ingeniería del Conocimiento En la actualidad muchas de las aplicaciones relacionadas con: Comercio electrónico Bioinformática Recuperación de información Web Semántica Educación Gestión de conocimiento Procesamiento lenguaje natural Una solución… Las Ontologías Una ontología permitirá: • Comunicación: unificar puntos de vista • Interoperabilidad: un lenguaje común para todos Beneficios Reusabilidad: podrá usarse en múltiples contextos, tiempo, etc. Fiabilidad: cierta certeza de los datos respecto a un modelo Especificación: homogeneizar realidad, puntos de vista, acuerdo Una Ontología es una especificación formal, explícita de una conceptualización compartida Procesable por una máquina Conocimiento consensual Conceptos, propiedades, relaciones, funciones, restricciones, axiomas. Modelo abstracto de algún fenómeno en el mundo Ejemplo de una ontología Órgano parte_de Aurícula Estructura Anatómica tiene_una es_un parte_de afecta_una Corazón Tabique parte_de Ventrículo parte_de tiene_un Tratamiento tipo_de tipo_de Intervención Medicación Laboratorio Radiología Ontología Guías médicas Farmacia Bases de datos Anatomía Patológica Sistemas Clasificación …….. …….. Requerimiento Historias médicas Resultados Sistemas Aplicaciones Protocolos Sistemas de Información basado en ontologías SIBO Lenguaje humano Requerimiento Formal RDF Sistemas de Información Validación de nuestro RDF Verificación de integridad y consistencia: http://swse.deri.org/RDFAlerts/ Validación RDF y visualización en SVG: http://www.w3.org/RDF/Validator/ Generación de documentación: http://ontorule-project.eu/parrot/parrot Vocabularios y ontologías Para buscar vocabularios existentes relacionados con nuestro dominio, algunas herramientas (http://www.w3.org/wiki/Search_engines): http://kmi-web05.open.ac.uk/WatsonWUI/ http://swoogle.umbc.edu/ http://ws.nju.edu.cn/falcons/objectsearch/ RDF Bases de datos Motores de Grafos basados en RDF Hexastore Seis posibles formas de ordenar los roles (S,P,O) en una tripleta RDF. Uso de mucha memoria para grafos moderadamente grandes RDF-3x Tablas de tripletas, cada registro representa una tripleta. Diccionario para reemplazar los strings por un id; dos índices de diccionario. BitMap Representación en Cubo 3D donde cada dimensión representa sujetos, predicados y objetos. Representación de RDF Basada en Hypergrafos Cada celda de una matriz puede ser 0 o 1. Cada nodo corresponde a un recurso RDF . Los roles que juega un recurso en una tripleta es representado por un hypergrafo. Actualizar la BD puede ser muy costoso. Índice agrupado B+tree para indexar todas las tripletas. Cada cubo 3D al verlo transversalment e representa matrices 2D. La data puede ser replicada muchas veces. Seis permutaciones de sujeto, predicado y objeto. Se implementa compresión para almacenamiento Las tripletas son ordenadas lexicográficamente en cada B+tree. Bhyper Algunos enlaces de Referencias • PlanetRDF – Planetrdf.com/guide/ • RDF Model and Syntax Specification (W3C Recommendation) – http://www.w3.org/TR/REC-rdf-syntax • RDF Schema Specification (W3C Candidate Recommendation) – http://www.w3.org/TR/rdf-schema/ • RDF tutorial (rather technical...) – http://www710.univ-lyon1.fr/~champin/rdf-tutorial/ • W3C's RDF links collection – http://www.w3.org/RDF/ 33