Tema 4. Web Semántica y Web de Datos
Transcripción
Tema 4. Web Semántica y Web de Datos
II. Razonamiento con conocimiento preciso Tema 4 Web Semántica y Web de Datos (Linked Data) Sistemas Basados en el Conocimiento Grado en Ingeniería Informática –1– Razonamiento con conocimiento preciso Tema 2. Sistemas Basados en Reglas Tema 3. Repaso de Lógica Tema 4. Web Semántica y Web de Datos –2– Referencias • W3C Semantic Web Activity (http://www.w3.org/ 2001/sw/) • Foundations of Semantic Web Technologies. P. Hitzler, M. Krötzsch, S. Rudolph. CRC Press. 2009. • A Semantic Web Primer. Grigoris Antoniou y Frank van Harmelen. The MIT Press • Semantic Web: Concepts, Technologies and Applications. K. Breitman, M. A. Casanova, W. Truszkowski. Springer. 2007 –3– Índice • • • • • Introducción a la Web Semántica Lenguajes de Ontologías Consulta de información en la Web Semántica Herramientas y Aplicaciones La Web de Datos (Linked Data) –4– Índice • La Web Semántica • Lenguajes de Ontologías – RDF – RDF Schema – OWL • Consulta de información en la Web Semántica – SPARQL • Herramientas y Aplicaciones • La Web de Datos (Linked Data) –5– La Web Semántica • Visión: “the idea of having data on the Web defined and linked in a way that it can be used by machines not just for display purposes, but for automation, integration and reuse of data across various applications” [W3C Semantic Web Activity (http://www.w3.org/2001/sw/)] • Para ello – Lenguajes para representar conocimiento (ontologías) • RDF, RDF(S), OWL – Lenguajes de consulta • SPARQL – Herramientas –6– Índice • La Web Semántica • Lenguajes de Ontologías – RDF – RDF Schema – OWL • Consulta de información en la Web Semántica – SPARQL • Herramientas y Aplicaciones • La Web de Datos (Linked Data) –7– RDF • Resource Description Framework • Recomendación del W3C – http://www.w3.org/RDF/ – http://www.w3.org/TR/rdf11-primer/ • Expresar información sobre recursos en la Web – documentos, personas, objetos físicos y abstractos, etc. – se identifican con IRIs ("International Resource Identifier”) • • • • http://www.urjc.es/ http://dbpedia.org/resource/King_Juan_Carlos_University http://sws.geonames.org/2510769/ http://example.org/bob#me • Modelo de datos equivalente a una red semántica –8– RDF: Ejemplo –9– RDF • Un grafo RDF es un conjunto de Sentencias (arcos) • Sentencia = tripla (Sujeto, Predicado, Objeto) – Sujeto: recurso (URI) o “blank node” – Predicado/Propiedad: relación binaria (IRI) – Objeto: IRI, literal o “blank node” Predicado Sujeto Objeto – 10 – RDF: Ejemplo – 11 – RDF: Serialización • Varios formatos de representación (serialización) – – – – – – – N-Triples Turtle TriG N-Quads JSON-LD RDFa (para incluir en HTML) RDF/XML – 12 – RDF: Serialización. Turtle <http://www.example.org/index.html> <http://purl.org/dc/elements/1.1/creator> <http://www.example.org/staffid/85740> . <http://www.example.org/index.html> <http://www.example.org/terms/creation-date> "August 16, 1999" . <http://www.example.org/index.html> <http://purl.org/dc/elements/1.1/language> "en" . O más compacto: @prefix ex: <http://www.example.org/>. @prefix exstaff: <http://www.example.org/staffid/>. @prefix exterms: <http://www.example.org/terms/>. @prefix dc: <http://purl.org/dc/elements/1.1/>. ex:index.html dc:creator exstaff:85740 . ex:index.html exterms:creation-date "August 16, 1999" . ex:index.html dc:language "en" . O ex:index.html dc:creator exstaff:85740 ; exterms:creation-date "August 16, 1999" ; dc:language "en" . Abreviaciones – – – – – – @prefix ; (compartir sujeto) , (compartir sujeto-pred) a (rdf:type) [] (blank nodes) () (listas) @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> – 13 – RDF: Sintaxis XML. Ejemplo <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:exterms="http://www.example.org/terms/"> <rdf:Description rdf:about="http://www.example.org/index.html"> <exterms:creation-date>August 16, 1999</exterms:creation-date> </rdf:Description> <rdf:Description rdf:about="http://www.example.org/index.html"> <dc:language>en</dc:language> </rdf:Description> <rdf:Description rdf:about="http://www.example.org/index.html"> <dc:creator rdf:resource="http://www.example.org/staffid/85740"/> </rdf:Description> </rdf:RDF> <rdf:Description rdf:about="http://www.example.org/index.html"> <exterms:creation-date>August 16, 1999</exterms:creation-date> <dc:language>en</dc:language> <dc:creator rdf:resource="http://www.example.org/staffid/85740"/> </rdf:Description> – 14 – RDF: Nodos Anónimos (Blank Nodes) • • Nodos sin URI (no es necesaria) Son independientes entre sí exstaff:85740 _:johnaddress _:johnaddress _:johnaddress _:johnaddress Otra forma: exterms:address exterms:street exterms:city exterms:state exterms:postalCode _:johnaddress . "1501 Grant Avenue" . "Bedford" . "Massachusetts" . "01730" . exstaff:85740 exterms:address [ exterms:street "1501 Grant Avenue" ; exterms:city "Bedford"; exterms:state "Massachusetts"; exterms:postalCode "01730" ]. – 15 – RDF: Literales • Tipos de datos – Se puede asociar un tipo a los literales: “valor”^^<tipo> – Se recomienda usar XML Schema datatypes (xsd=http://www.w3.org/2001/XMLSchema#): • xsd:string, xsd:integer, xsd:date,… – Se pueden etiquetar strings indicando el idioma • Ejemplo ex:index.html exterms:creation-date "1999-08-16"^^xsd:date . exstaff:85740 exterms:postalCode "01730"^^xsd:integer . exstaff:85740 exterms:birthPlaceName "Boston"@en . – 16 – RDF: Contenedores y Colecciones • Contenedores – – – – – rdf:Bag: el orden no importa. Puede contener duplicados. rdf:Seq: el orden es importante rdf:Alt: alternativas propiedades rdf:_1, rdf:_2, rdf:_3, … Observación: los contenedores son “abiertos” • Colecciones – Permiten representar colecciones “cerradas” – rdf:List, rdf:first ,rdf:rest, rdf:nil – 17 – RDF: Reificación • Mecanismo para convertir una sentencia en un recurso • Vocabulario – Sentencia: rdf:Statement – rdf:subject, rdf:predicate, rdf:object • Ejemplo: (ex:index.html dc:creator exstaff:85740 .) ex:triple1 ex:triple1 ex:triple1 ex:triple1 rdf:type rdf:subject rdf:predicate rdf:object rdf:Statement . ex:index.html . dc:creator . exstaff:85740 . ex:triple1 rdf:type rdf:subject rdf:predicate rdf:object rdf:Statement ; ex:index.html ; dc:creator ; exstaff:85740 . – 18 – Índice • La Web Semántica • Lenguajes de Ontologías – RDF – RDF Schema – OWL • Consulta de información en la Web Semántica – SPARQL • Herramientas y Aplicaciones • La Web de Datos (Linked Data) – 19 – RDF Schema (RDFS) • En RDF hablamos de objetos individuales (recursos) • Nos gustaría razonar sobre clases que definen tipos de objetos – Por ejemplo, para evitar sentencias como (válidas en RDF): • SBC es impartida por SBC (restricción de rango) ex:SBC ex:impartida_por ex:SBC. • Casa es impartida por Juan (restricción de domino) ex:Casa ex:impartida_por ex:Juan. • Solución – Clases, relaciones, restricciones de dominio y rango, … – Ejemplo: • Las asignaturas deben ser impartidas por miembros del personal académico – 20 – RDF Schema (RDFS) • Recomendación del W3C – http://www.w3.org/TR/rdf-schema/ • RDFS extiende RDF con nuevas primitivas • Define a un lenguaje básico para describir ontologías – – – – Fija la semántica de “subclase de” Jerarquías de clases y propiedades Herencia Restricciones de dominio y rango – 21 – RDF Schema (RDFS) @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> rdfs:Class • Clases (rdfs:Class) e Instancias (rdf:type) Definición de Clases rdf:type ex:Asignatura rdf:type rdfs:Class. ex:Asignatura Instancias ex:IC rdf:type ex:Asignatura. • Jerarquías de clases (rdfs:subClassOf) rdf:type ex:IC ex:Catedratico rdfs:subClassOf ex:PersonalDocente. ex:Catedrático rdfs:subClassOf ex:PersonalDocente – 22 – RDF Schema (RDFS) • Propiedades (rdf:Property) ex:impartida_por rdf:type rdf:Property . • Restricciones propiedades (rdfs:domain, rdfs:range) ex:impartida_por rdfs:domain ex:Asignatura; rdfs:range ex:PersonalDocente. • Jerarquías de propiedades (rdfs:subPropertyOf) ex:impartida_por rdfs:domain ex:Asignatura; rdfs:range ex:PersonalDocente; rdfs:subPropertyOf ex:involucra. – 23 – RDF Schema (RDFS) Clase rdfs:domain propiedad ex:Asignatura ex:involucra rdfs:range ex:Personal rdfs:subPropertyOf rdfs:range ex:Personal rdfs:subClassOf rdfs:domain ex:impartida_por Docente rdfs:subClassOf rdfs:subClassOf rdf:type ex:Contratado Doctor ex:Profesor Titular RDF Schema RDF ex:IC ex:Profesor Funcionario rdfs:subClassOf rdfs:subClassOf ex:Catedrático rdf:type ex:impartida_por ex:Alberto Fdez – 24 – – 24 – RDF Schema (RDFS) • Primitivas – Clases • rdfs:Resource, rdfs:Literal, rdf:XMLLiteral, rdfs:Class, rdf:Property, rdfs:Datatype – Propiedades • rdf:type, rdfs:subClassOf, rdf:subPropertyOf, rdfs:domain, rdfs:range, rdfs:label, rdfs:comment – Contenedores • rdfs:Container, rdf:Bag, rdf:Seq, rdf:Alt, rdfs:ContainerMembershipProperty, rdfs:member – Colecciones • rdf:List, rdf:first, rdf:rest, rdf:nil – Reificación • rdf:Statement, rdf:predicate, rdf:subject, rdf:object – Otros • rdfs:seeAlso, rdfs:isDefinedBy, rdf:value – 25 – RDF Schema (RDFS) ex:posee rdfs:domain rdfs:range ex:Persona ex:Pez rdf:type ex:Wendy rdf:type ex:posee rdf:type ex:Wanda Violación de la restricción: El rango de posee es Pez. O No hay inconsistencia: Wanda es un pez! – 26 – Sirena? RDF Schema (RDFS) • Algunas otras propiedades – rdfs:comment: descripción legible (por humanos) del recurso – rdfs:label: versión legible del nombre del recurso – rdfs:seeAlso: para indicar un recurso con información adicional dbpedia:Spain rdfs:comment "España es un país..."; rdfs:label "España"; rdfs:seeAlso <http://www.spain.info/> – 27 – RDF Schema (RDFS) • Algunas limitaciones de RDFS – Básicamente permite la organización de vocabularios en jerarquías – Ámbito local de las propiedades • Las restricciones de rango no se pueden aplicar a algunas clases solamente (ej: las vacas sólo comen hierba) – No permite expresar: • Clases disjuntas – Ejemplo: masculino y femenino • Combinación booleana de clases – Ejemplo: Persona = Hombre ∪ Mujer • Restricciones de cardinalidad • Características especiales de las propiedades – Transitiva, simétrica, inversa de, … – 28 – Índice • Introducción a la Web Semántica • Lenguajes de Ontologías – RDF – RDF Schema – OWL • Consulta de información en la Web Semántica – SPARQL • Herramientas y Aplicaciones • La Web de Datos (Linked Data) – 29 – OWL • Web Ontology Language • Recomendación del W3C – http://www.w3.org/OWL/ – http://www.w3.org/TR/2012/REC-owl2-primer-20121211/ • Es un lenguaje para describir ontologías • Se construye sobre RDFS, añadiendo primitivas (IRIs) para aumentar la expresividad @prefix owl: <http://www.w3.org/2002/07/owl#> – 30 – OWL • Cabecera – – – – – – – – owl:Ontology owl:imports: URI ontología owl:versionInfo owl:priorVersion: URI ontología owl:backwardCompatibleWith owl:incompatibleWith: no es compatible hacia atrás owl:DeprecatedClass owl:DeprecatedProperty <owl:Ontology rdf:about=""> <owl:versionInfo>v 1.1</owl:versionInfo> <rdfs:comment>An example ontology</rdfs:comment> <owl:imports rdf:resource="http://www.example.org/foo"/> <owl:backwardCompatibleWith rdf:resource="http://www.example.org/vehicle-1.0"/> <owl:priorVersion rdf:resource="http://www.example.org/veh-1.0"/> </owl:Ontology> – 31 – OWL • Clases – owl:Class • owl:Class es subclase de rdfs:Class ex:Asignatura rdf:type owl:Class . – rdfs:subClassOf (v) – owl:Thing: > (superclase de todas las clases) – owl:Nothing: ? (subclase de todas las clases) – 32 – OWL • Propiedades – owl:ObjectProperty: relaciona instancias de dos clases – owl:DatatypeProperty: relaciona instancias con Literales y tipos de datos XML Schema – rdfs:subPropertyOf (r1 v r2 en H) – rdfs:domain (9r.> v C o > v 8r –.C) – rdfs:range (> v 8r .C) – 33 – OWL • Características de propiedades – owl:TransitiveProperty: (r+) • p(x,y) ∧ p(y,z) → p(x,z) (ej: “antepasado de”) – owl:SymmetricProperty: (r ≡ r –) • p(x,y) ↔ p(y,x) (ej: “familiar de”) – owl:FunctionalProperty: (> v ≤ 1 r) • p(x,y) ∧ p(x,z) → y = z (ej: “año nacimiento”) – owl:inverseOf: (r –) • p1(x,y) ↔ p2(y,x) (ej: p1=“profesor de”, p2=“alumno de”) – owl:InverseFunctionalProperty: (> v ≤ 1 r -) • p(y,x) ∧ p(z,x) → y = z (ej: “nº móvil”) – 34 – OWL • Restricciones de propiedades – owl:Restriction – owl:onProperty – owl:allValuesFrom: (8r.C) ex:Vaca rdf:type owl:Class; rdfs:subClassOf ex:Animal; rdfs:subClassOf [rdf:type owl:Restriction; owl:onProperty ex:come; owl:allValuesFrom ex:Hierba]. – – – – – owl:someValuesFrom: (9r.C) owl:cardinality owl:maxCardinality (≤ n r) owl:minCardinality (≥ n r) owl:hasValue (9r.{a}) – 35 – OWL • Clases complejas – – – – – owl:intersectionOf: (C u D) owl:unionOf: (C t D) owl:complementOf: (¬C) owl:disjointWith: (C v ¬D) clases disjuntas owl:oneOf: ({a,b,c} en O) enumera los individuos que pertenecen a una clase. Ej: {Rojo, Ambar, Verde}. ex:ColorSemaforo rdf:type owl:Class; owl:oneOf (ex:Rojo ex:Ambar ex:Verde). – 36 – OWL • Ontology mapping – owl:equivalentClass (≡) ex:Pais owl:equivalentClass <http://schema.org/Country>. – owl:equivalentProperty (≡ en H) – owl:sameAs: ({x} ≡ {x}) dos URIs representan el mismo individuo ex:Spain owl:sameAs <http://sws.geonames.org/2510769/>. – owl:differentFrom: ({x} ≡ ¬{x}) dos URIs no representan el mismo individuo – owl:AllDifferent – owl:distinctMembers [rdf:type owl:AllDifferent; owl:distinctMembers (ex:Rojo ex:Ambar ex:Verde)]. – 37 – OWL • Anotaciones – – – – – – rdfs:label rdfs:comment rdfs:seeAlso rdfs:isDefinedBy owl:AnnotationProperty owl:OntologyProperty – 38 – OWL: ejemplos de inferencias • Ejemplo disjointWith Profesor owl:subClassOf PersonalDocente . Libro owl:subClassOf Publicación . PersonalDocente owl:disjointWith Publicación . Se infiere: Profesor y Libro son disjuntos • Ejemplo owl:equivalentClass Hombre owl:subClassOf Persona Persona owl:equivalentClass Humano Se infiere: Hombre es subclase de Humano • Ejemplo instancias “A Semantic Web Primer” rdf:type Libro Libro owl:subClassOf Publicación Se infiere: “A Semantic Web Primer” es una Publicación – 39 – OWL y LD: Resumen LD > ? CuD CtD ¬C 8r.C 9r.C CvD C´D r- ≥nr ≤nr OWL LD C v ¬D {a} ´ {b} {a} v ¬{b} r1 v r2 {a,b,c} 9r.{a} r+ Thing Nothing intersectionOf unionOf complementOf allValuesFrom someValuesFrom subclassOf equivalentClass inverseOf minCardinality maxCardinality r´s >v≤1r > v ≤ 1 rr ´ r- – 40 – OWL disjointWith sameAs differentFrom subpropertyOf oneOf hasValue TransitiveProperty equivalentProperty FunctionalProperty InverseFunctionalProperty SymmetricProperty Índice • La Web Semántica • Lenguajes de Ontologías – RDF – RDF Schema – OWL • Consulta de información en la Web Semántica – SPARQL • Herramientas y Aplicaciones • La Web de Datos (Linked Data) – 41 – SPARQL • Query Language for RDF • Recomendación del W3C – http://www.w3.org/TR/sparql11-query/ • Lenguaje de consulta de contenidos RDF • Sintaxis estilo SQL – 42 – SPARQL Estructura de una consulta: [ PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> ... ] SELECT ... [FROM ...] WHERE { ... } [Modificadores] – 43 – SPARQL • Patrones básicos PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX : <http://www.example.org/> SELECT ?nom ?ape WHERE { ?x :nombre ?nom. ?x :apellido ?ape. ?x rdf:type :Empleado. } • Observaciones – SELECT * selecciona todas las variables • En el ejemplo: SELECT * = SELECT ?nom ?ape ?x – También: { ?x :nombre ?nom ; :apellido ?ape ; a :Empleado. } – 44 – SPARQL • Literales – Etiquetas de idioma • “Madrid”, “Madrid”@es y “Madrid”@en son valores distintos – Tipos numéricos • “123"^^<http://www.w3.org/2001/XMLSchema#integer> es lo mismo que 123 (y que "123"^^xsd:integer) con: PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> – Tipos arbitrarios • "abc"^^ex:TipoT SELECT ?s WHERE { ?s ?p "abc"^^ex:TipoT. } – 45 – SPARQL • Crear valores con expresiones – En SELECT SELECT (CONCAT(?nom, " ", ?ape) AS ?nombre) WHERE { ?x :nombre ?nom. ?x :apellido ?ape. } – Con BIND SELECT ?nombre WHERE { ?x :nombre ?nom. ?x :apellido ?ape. BIND(CONCAT(?nom, " ", ?ape) AS ?nombre) } – 46 – SPARQL • Restricciones (FILTER) – Numéricas Algunos Operadores SELECT ?nom ?ape Lógicos: !, &&, || WHERE Aritméticos: +, -, *, / { ?x :nombre ?nom. Comparación: =, !=, >, <,>=,<= ... ?x :apellido ?ape. ?x :nacido_en ?pais. ?pais :poblacion ?hab. FILTER (?hab >= 200000).} – Strings • FILTER (regex(?nom, “Alberto", "i")) • FILTER (regex(str(?nom), “^Al")) • regex como en XQuery 1.0 y XPath 2.0 – Otros • FILTER ( ?fecha > "1980-05-1"^^xsd:date && ?fecha < "1980-06-30"^^xsd:date ) – 47 – SPARQL • Grupos de patrones SELECT ?nom ?ape WHERE { { ?x :nombre ?nom. ?x :apellido ?ape. ?x :nacido_en ?pais. ?pais :poblacion ?hab. FILTER (?hab >= 200000). } { ?x rdf:type :Empleado.} } – 48 – SPARQL • Patrones opcionales (OPTIONAL) SELECT ?nom ?ape ?nac ?email WHERE { ?x :nombre ?nom. ?x :apellido ?ape. ?x rdf:type :Empleado. OPTIONAL {?x :año_nac ?nac. ?x :email ?email.} } • Ojo! es distinto a: SELECT ?nom ?ape ?nac ?email WHERE { ?x :nombre ?nom. ?x :apellido ?ape. ?x rdf:type :Empleado. OPTIONAL {?x :año_nac ?nac.} OPTIONAL {?x :email ?email.} } – 49 – SPARQL • Patrones alternativos (UNION) SELECT ?nom ?a WHERE { {?x :nombre ?nom. ?x rdf:type :Empleado.} UNION {?x :name ?nom. ?x rdf:type :Employee.} ?x :año_nac ?a. } – 50 – SPARQL • Negación – Comprobando ausencia SELECT ?nom ?ape WHERE { ?x :nombre ?nom. ?x :apellido ?ape. FILTER NOT EXISTS {?x rdf:type :Empleado} } – Eliminando posibles soluciones SELECT ?nom ?ape WHERE { ?x :nombre ?nom. ?x :apellido ?ape. MINUS {?x rdf:type :Empleado} } – 51 – SPARQL • Agregados – COUNT, SUM, MIN, MAX, AVG, GROUP_CONCAT, SAMPLE SELECT (SUM(?sueldo) AS ?totalSueldos) WHERE { ?x rdf:type :Futbolista . ?x :equipo ?equi. ?x :salario ?sueldo . } GROUP BY ?equi HAVING (SUM(?sueldo) > 20) – 52 – SPARQL • RDF Datasets – Un RDF dataset representa una colección de grafos RDF • Grafo por defecto (default graph) • Cero o más grafos nombrados (named graphs) PREFIX ex: <http://example.org/> default graph SELECT ?nom ?ape FROM <http://example.org/datos1> FROM NAMED <http://example.org/datos2> FROM NAMED <http://example.org/datos3> WHERE { GRAPH ex:datos2 { ?x :nombre ?nom. ?x :apellido ?ape. } } – 53 – SPARQL • Consultas Federadas SELECT ?nom ?ape WHERE { ?x rdf:type :Empleado. SERVICE <http://datos.personas.com/sparql> { ?x :nombre ?nom. ?x :apellido ?ape. } } – 54 – SPARQL • Otras – Subqueries – Asignaciones • BIND (?precio*(1+?iva) AS ?total) – Property Paths • Ej: { ?x rdf:type/rdfs:subClassOf* ?type } – Modificar los grafos del dataset (UPDATE) • http://www.w3.org/TR/sparql11-update/ – … – 55 – SPARQL • Modificadores de resultados – ORDER BY SELECT ?nom ?ape WHERE { ?x :nombre ?nom. ?x :apellido ?ape. } ORDER BY ?ape DESC(?nom) – DISTINCT: evita soluciones duplicadas SELECT DISTINCT ?nom ?ape – OFFSET / LIMIT SELECT ?nom ?ape WHERE { ?x :nombre ?nom. ?x :apellido ?ape.} ORDER BY ?ape LIMIT 5 OFFSET 3 – 56 – SPARQL • Formas de consulta – SELECT – ASK • devuelve si existe o no alguna solución – DESCRIBE • Grafo RDF con datos de los objetos indicados • depende del servidor DESCRIBE ?pais WHERE { ?x :nombre ?nom. ?x :nacido_en ?pais. ?pais :poblacion ?hab. FILTER (?hab >= 200000).} – CONSTRUCT • genera un grafo RDF – 57 – SPARQL • CONSTRUCT CONSTRUCT {?x :tieneTio ?her. ?her :tieneSobrino ?x.} WHERE { ?x :tienePadre ?padre. ?padre :tieneHermano ?her. } CONSTRUCT {?x o2:hasParent ?padre. ?padre o2:hasBrother ?her.} WHERE { ?x o1:tienePadre ?padre. ?padre o1:tieneHermano ?her. } – 58 – SPARQL Endpoints • Aceptan consultas SPARQL y devuelven los resultados por HTTP • Formatos de resultados – KML, JSON, RDF (RDF/XML, N-Triples, Turtle, etc.), HTML, … • Tipos – Genéricos • • • • http://www.openlinksw.com/sparql http://sparql.org/sparql.html http://librdf.org/query/ … – Específicos – 59 – Índice • Introducción a la Web Semántica • Lenguajes de Ontologías – RDF – RDF Schema – OWL • Consulta de información en la Web Semántica – SPARQL • Herramientas y Aplicaciones • La Web de Datos (Linked Data) – 60 – Herramientas • Validadores – RDF: http://www.w3.org/RDF/Validator/ – OWL: http://owl.cs.manchester.ac.uk/validator/ • Jena – A Semantic Web Framework for Java – Entorno de programación para RDF, RDFS, OWL, SPARQL – http://jena.sourceforge.net/ • SESAME – Entorno de programación para RDF y RDFS – http://rdf4j.org/ • Protégé: editor de ontologías – RDF, RDFS, OWL – http://protege.stanford.edu/ – 61 – Aplicaciones • • • • Anotación de datos no estructurados Integración de datos Web de Datos (Linked Data) … – 62 – Anotación de datos no estructurados • Ejemplo: – Anotación de páginas Web: <div> <h2>The trouble with Bob</h2> <h3>Alice</h3> ... </div> RDFa (http://www.w3.org/TR/xhtml-rdfa-primer/) <div xmlns:dc="http://purl.org/dc/elements/1.1/"> <h2 property="dc:title">The trouble with Bob</h2> <h3 property="dc:creator">Alice</h3> ... </div> – 63 – Integración de datos [http://www.w3.org/People/Ivan/CorePresentations/IntroThroughExample/] – 64 – Integración de datos [http://www.w3.org/People/Ivan/CorePresentations/IntroThroughExample/] [http://www.w3.org/People/Ivan/CorePresentations/IntroThroughExample/] – 65 – Índice • Introducción a la Web Semántica • Lenguajes de Ontologías – RDF – RDF Schema – OWL • Consulta de información en la Web Semántica – SPARQL • Herramientas y Aplicaciones • La Web de Datos (Linked Data) – 66 – Web de Datos (Linked Data) • Queremos consultar información del tipo: Porteros de fútbol, que han jugado en algún equipo con un estadio de más de 40.000 localidades y que han nacido en un país de más de 10 millones de habitantes • Pasar de la Web de Documentos a la Web de los Datos • Linked Data – http://linkeddata.org/ – http://www.w3.org/DesignIssues/LinkedData.html – http://www.ted.com/talks/tim_berners_lee_on_the_next_web.html (vídeo 16 min) • Linking Open Data (LOD) – Web de Datos “Abiertos” – http://datahub.io/group/lodcloud – 67 – Web de Datos (Linked Data) • Principios de Linked Data 1. Usar URIs para identificar cosas 2. Usar el protocolo HTTP para esas URIs 3. Proporcionar información útil en esas direcciones, usando estándares (RDF, SPARQL) 4. Incluir enlaces a otras URIs – 68 – Web de Datos (Linked Data) Mayo 2007 12 datasets “Linking Open Data cloud diagram, by Richard Cyganiak and Anja Jentzsch. http://lod-cloud.net/” – 69 – Web de Datos (Linked Data) Septiembre 2008 45 datasets “Linking Open Data cloud diagram, by Richard Cyganiak and Anja Jentzsch. http://lod-cloud.net/” – 70 – Web de Datos (Linked Data) Julio 2009 95 datasets “Linking Open Data cloud diagram, by Richard Cyganiak and Anja Jentzsch. http://lod-cloud.net/” – 71 – Web de Datos (Linked Data) Sept. 2011 295 datasets – 72 – “Linking Open Data cloud diagram, by Richard Cyganiak and Anja Jentzsch. http://lod-cloud.net/” Web de Datos (Linked Data) Agos. 2014 570 datasets – 73 – "Linking Open Data cloud diagram 2014, by Max Schmachtenberg, Christian Bizer, Anja Jentzsch and Richard Cyganiak. http://lod-cloud.net/” Linked Data • Generación de Datos – A partir de repositorios existentes, p.e. BD Relacionales, XML, CSV y hojas de cálculo, etc. a Linked Data – Transformación de información • • • • • R2O and ODEMapster OBDI NOR2O Jena geometry2rdf – Generación dinámica • D2RQ Platform • Triplify • Ultrawrap – 74 – Linked Data • Publicación de datos – – – – – – Virtuoso Open Source Edition D2R Server AllegroGraph RDFStore Joseki Sesame … – 75 – Linked Data • Visualización de datos – Pubby – SNORQL – Disco – Hyperdata Browser – 76 – Linked Data: integración de datos [http://www.w3.org/People/Ivan/CorePresentations/IntroThroughExample/] [http://www.w3.org/People/Ivan/CorePresentations/IntroThroughExample/] – 77 – Web de Datos (Linked Data) • Algunas fuentes de datos – – – – – – Dbpedia: http://dbpedia.org UK Government: http://data.gov.uk New York Times: http://data.nytimes.com Linked Movie Data Base: http://data.linkedmdb.org Musicbrainz: http://dbtune.org/musicbrainz ... • Información – http://datahub.io/group/lodcloud – http://datahub.io/dataset?tags=lod – http://linkeddata.org/data-sets – 78 – Ejemplo: DBPedia • http://dbpedia.org • Pone disponible a información existente en la Wikipedia • Generación de datos – A partir de información estructurada de la Wikipedia • Publicación de datos – OpenLink Virtuoso – SPARQL endpoint público: • http://dbpedia.org/sparql – 79 – Ejemplo: DBPedia • Visualización de datos • Leipzig query builder – http://querybuilder.dbpedia.org • OpenLink Interactive SPARQL Query Builder (iSPARQL) – http://dbpedia.org/isparql • SNORQL query explorer – http://dbpedia.org/snorql • Cualquier otro cliente SPARQL • Ejemplo de recurso: – http://wikipedia.org/wiki/Berlin à http://dbpedia.org/resource/Berlin – 80 – Ejemplo: DBPedia – 81 –